From 4d2684848722cb2d469ad4fa60999bf81cf7056e Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Sat, 2 May 2020 02:57:24 +0200 Subject: Adapt the package building scripts to use Python 3 (#231) Since upstream cloud-init has dropped python2 support, adapt remaining package build scripts and tools to python3 only Changes: * Do not template debian/rules as python3 is the only supported version * Drop six from requirements.txt * Makefile: drop everything related to Python 2 * run-container: install the CI deps only on ubuntu|debian * read-version: update the shebang to use Python 3 * brpm: read_dependencies(): drop unused argument * read-dependencies: switch to Py3 and drop the --python-version option * pkg-deps.json: drop the Python version field and update the redhat deps * pkg-deps.json: drop the unittest2 and contextlib2 renames * Update RPM the spec file to use Python 3 when building the RPM * bddeb: drop support for Python 2 --- packages/bddeb | 26 +++++------------- packages/brpm | 2 +- packages/debian/control.in | 3 +-- packages/debian/rules | 26 ++++++++++++++++++ packages/debian/rules.in | 28 ------------------- packages/pkg-deps.json | 55 ++++++++++++-------------------------- packages/redhat/cloud-init.spec.in | 10 +++---- 7 files changed, 55 insertions(+), 95 deletions(-) create mode 100755 packages/debian/rules delete mode 100755 packages/debian/rules.in (limited to 'packages') diff --git a/packages/bddeb b/packages/bddeb index 209765a5..02ac2975 100755 --- a/packages/bddeb +++ b/packages/bddeb @@ -59,15 +59,9 @@ def run_helper(helper, args=None, strip=True): return stdout -def write_debian_folder(root, templ_data, is_python2, cloud_util_deps): +def write_debian_folder(root, templ_data, cloud_util_deps): """Create a debian package directory with all rendered template files.""" print("Creating a debian/ folder in %r" % (root)) - if is_python2: - pyver = "2" - python = "python" - else: - pyver = "3" - python = "python3" deb_dir = util.abs_join(root, 'debian') @@ -83,30 +77,23 @@ def write_debian_folder(root, templ_data, is_python2, cloud_util_deps): # Write out the control file template reqs_output = run_helper( - 'read-dependencies', - args=['--distro', 'debian', '--python-version', pyver]) + 'read-dependencies', args=['--distro', 'debian']) reqs = reqs_output.splitlines() test_reqs = run_helper( 'read-dependencies', ['--requirements-file', 'test-requirements.txt', - '--system-pkg-names', '--python-version', pyver]).splitlines() + '--system-pkg-names']).splitlines() requires = ['cloud-utils | cloud-guest-utils'] if cloud_util_deps else [] # We consolidate all deps as Build-Depends as our package build runs all # tests so we need all runtime dependencies anyway. # NOTE: python package was moved to the front after debuild -S would fail with # 'Please add apropriate interpreter' errors (as in debian bug 861132) - requires.extend([python] + reqs + test_reqs) + requires.extend(['python3'] + reqs + test_reqs) templater.render_to_file(util.abs_join(find_root(), 'packages', 'debian', 'control.in'), util.abs_join(deb_dir, 'control'), - params={'build_depends': ','.join(requires), - 'python': python}) - - templater.render_to_file(util.abs_join(find_root(), - 'packages', 'debian', 'rules.in'), - util.abs_join(deb_dir, 'rules'), - params={'python': python, 'pyver': pyver}) + params={'build_depends': ','.join(requires)}) def read_version(): @@ -208,8 +195,7 @@ def main(): xdir = util.abs_join(tdir, "cloud-init-%s" % ver_data['version_long']) templ_data.update(ver_data) - write_debian_folder(xdir, templ_data, is_python2=args.python2, - cloud_util_deps=args.cloud_utils) + write_debian_folder(xdir, templ_data, cloud_util_deps=args.cloud_utils) print("Running 'debuild %s' in %r" % (' '.join(args.debuild_args), xdir)) diff --git a/packages/brpm b/packages/brpm index 4004fd0e..1be8804c 100755 --- a/packages/brpm +++ b/packages/brpm @@ -42,7 +42,7 @@ def run_helper(helper, args=None, strip=True): return stdout -def read_dependencies(distro, requirements_file='requirements.txt'): +def read_dependencies(distro): """Returns the Python package depedencies from requirements.txt files. @returns a tuple of (requirements, test_requirements) diff --git a/packages/debian/control.in b/packages/debian/control.in index e9ed64f3..72895b47 100644 --- a/packages/debian/control.in +++ b/packages/debian/control.in @@ -10,11 +10,10 @@ Standards-Version: 3.9.6 Package: cloud-init Architecture: all Depends: ${misc:Depends}, - ${${python}:Depends}, + ${python3:Depends}, iproute2, isc-dhcp-client Recommends: eatmydata, sudo, software-properties-common, gdisk -XB-Python-Version: ${python:Versions} Description: Init scripts for cloud instances Cloud instances need special scripts to run during initialisation to retrieve and install ssh keys and to let the user run various scripts. diff --git a/packages/debian/rules b/packages/debian/rules new file mode 100755 index 00000000..d138deeb --- /dev/null +++ b/packages/debian/rules @@ -0,0 +1,26 @@ +#!/usr/bin/make -f +INIT_SYSTEM ?= systemd +export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM) +DEB_VERSION := $(shell dpkg-parsechangelog --show-field=Version) + +%: + dh $@ --with python3,systemd --buildsystem pybuild + +override_dh_install: + dh_install + install -d debian/cloud-init/etc/rsyslog.d + install -d debian/cloud-init/usr/share/apport/package-hooks + cp tools/21-cloudinit.conf debian/cloud-init/etc/rsyslog.d/21-cloudinit.conf + install -D ./tools/Z99-cloud-locale-test.sh debian/cloud-init/etc/profile.d/Z99-cloud-locale-test.sh + install -D ./tools/Z99-cloudinit-warnings.sh debian/cloud-init/etc/profile.d/Z99-cloudinit-warnings.sh + flist=$$(find $(CURDIR)/debian/ -type f -name version.py) && sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' $${flist:-did-not-find-version-py-for-replacement} + +override_dh_auto_test: +ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + http_proxy= make check +else + @echo check disabled by DEB_BUILD_OPTIONS=$(DEB_BUILD_OPTIONS) +endif + +override_dh_systemd_start: + dh_systemd_start --no-restart-on-upgrade --no-start diff --git a/packages/debian/rules.in b/packages/debian/rules.in deleted file mode 100755 index e542c7f1..00000000 --- a/packages/debian/rules.in +++ /dev/null @@ -1,28 +0,0 @@ -## template:basic -#!/usr/bin/make -f -INIT_SYSTEM ?= systemd -export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM) -PYVER ?= python${pyver} -DEB_VERSION := $(shell dpkg-parsechangelog --show-field=Version) - -%: - dh $@ --with $(PYVER),systemd --buildsystem pybuild - -override_dh_install: - dh_install - install -d debian/cloud-init/etc/rsyslog.d - install -d debian/cloud-init/usr/share/apport/package-hooks - cp tools/21-cloudinit.conf debian/cloud-init/etc/rsyslog.d/21-cloudinit.conf - install -D ./tools/Z99-cloud-locale-test.sh debian/cloud-init/etc/profile.d/Z99-cloud-locale-test.sh - install -D ./tools/Z99-cloudinit-warnings.sh debian/cloud-init/etc/profile.d/Z99-cloudinit-warnings.sh - flist=$$(find $(CURDIR)/debian/ -type f -name version.py) && sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' $${flist:-did-not-find-version-py-for-replacement} - -override_dh_auto_test: -ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) - http_proxy= make PYVER=python${pyver} check -else - @echo check disabled by DEB_BUILD_OPTIONS=$(DEB_BUILD_OPTIONS) -endif - -override_dh_systemd_start: - dh_systemd_start --no-restart-on-upgrade --no-start diff --git a/packages/pkg-deps.json b/packages/pkg-deps.json index f02e8348..80028396 100644 --- a/packages/pkg-deps.json +++ b/packages/pkg-deps.json @@ -6,49 +6,31 @@ "dh-systemd" ], "renames" : { - "pyyaml" : { - "2" : "python-yaml", - "3" : "python3-yaml" - }, - "pyserial" : { - "2" : "python-serial", - "3" : "python3-serial" - } + "pyyaml" : "python3-yaml", + "pyserial" : "python3-serial" }, "requires" : [ "procps" ] }, + "centos" : { + "build-requires" : [ + "python3-devel" + ], + "requires" : [ + "e2fsprogs", + "iproute", + "net-tools", + "procps", + "rsyslog", + "shadow-utils", + "sudo" + ] + }, "redhat" : { "build-requires" : [ - "python-devel", - "python-setuptools" + "python3-devel" ], - "renames" : { - "jinja2" : { - "3" : "python36-jinja2" - }, - "jsonschema" : { - "3" : "python36-jsonschema" - }, - "pyflakes" : { - "2" : "pyflakes", - "3" : "python36-pyflakes" - }, - "pyyaml" : { - "2" : "PyYAML", - "3" : "python36-PyYAML" - }, - "pyserial" : { - "2" : "pyserial" - }, - "pytest": { - "3": "python36-pytest" - }, - "requests" : { - "3" : "python36-requests" - } - }, "requires" : [ "e2fsprogs", "iproute", @@ -61,9 +43,6 @@ }, "suse" : { "renames" : { - "pyyaml" : { - "2" : "python-yaml" - } }, "build-requires" : [ "fdupes", diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in index 057a5784..4cff2c97 100644 --- a/packages/redhat/cloud-init.spec.in +++ b/packages/redhat/cloud-init.spec.in @@ -1,6 +1,4 @@ ## template: jinja -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} - %define use_systemd (0%{?fedora} && 0%{?fedora} >= 18) || (0%{?rhel} && 0%{?rhel} >= 7) %if %{use_systemd} @@ -94,11 +92,11 @@ ssh keys and to let the user run various scripts. {% endfor %} %build -%{__python} setup.py build +%{__python3} setup.py build %install -%{__python} setup.py install -O1 \ +%{__python3} setup.py install -O1 \ --skip-build --root $RPM_BUILD_ROOT \ --init-system=%{init_system} @@ -109,7 +107,7 @@ cp -p tools/21-cloudinit.conf \ $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudinit.conf # Remove the tests -rm -rf $RPM_BUILD_ROOT%{python_sitelib}/tests +rm -rf $RPM_BUILD_ROOT%{python3_sitelib}/tests # Required dirs... mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/cloud @@ -213,4 +211,4 @@ fi %dir %{_sharedstatedir}/cloud # Python code is here... -%{python_sitelib}/* +%{python3_sitelib}/* -- cgit v1.2.3