aboutsummaryrefslogtreecommitdiffstats
path: root/patches/fuel-agent/cross-bootstrap/0004-Prevent-common-cross-debootstrap-newaliases-issue.patch
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2016-10-01 13:18:11 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2016-10-09 16:33:43 +0200
commit42f8585ebb8fffad19a89314659ab9129176c3e9 (patch)
treee2cf6a4797bcbd036e080541cc3925f8b209549b /patches/fuel-agent/cross-bootstrap/0004-Prevent-common-cross-debootstrap-newaliases-issue.patch
parent6f3a054fc95622f0c002f72c0fac6074bb36c36f (diff)
build: Rework patch mechanism for Fuel submodules
While refactoring the patching mechanism, take care of: - Sync submodule handling with Fuel@OPFNV; - build: Investigate/prepare for moving patches to Fuel@OPNFV; - build: Investigate divergent fuel-mirror; - ISO build: cacheid for Fuel comps should not depend on Armband git commit; CHANGE: Rename/shuffle patches while grouping them in "features", preparing for upstreaming them to Fuel@OPNFV and beyond. CHANGE: Allow linking patches for better representing the dependency between one patch and different features. e.g. 0001-Add-arch-to-nailgun-release-and-target-image.patch: - part of `multiarch-fuel`, because it extends Fuel; - part of `direct-kernel-boot`, as arch is required for that; - part of `cross-bootstrap`, target image is arch-dependent; NOTE: Patch links are not staged to Fuel@OPNFV, they only serve as markers that a specific patch is part of a feature. CHANGE: Kill all Fuel component submodules, now handled in Fuel@OPNFV: - fuel-agent - fuel-astute - fuel-library - fuel-mirror - fuel-nailgun-agent - fuel-web CHANGE: Move armband-fuel-config.mk to armband git root. FIXME: m1.micro-Increase-profile-RAM-size-to-128MB.patch is NOT part of `cross-bootstrap` feature, but patch context says so ... FIXME: 0001-Add-arm64-deb-repositories-setup.patch is broken at `make patches-export` by removing spaces at EOL. v2 -> v3: * Phony patch support (links to show a patch belongs to a feature); * Updated README.md v3 -> v7: * Re-export Fuel submodules & plugins patches (update patch context); * Update Cavium mail addresses (s/caviumnetworks.com/cavium.com/); * Ignore submodule changes; * Add armband git repo info to gitinfo_fuel.txt at build time; Implements: ARMBAND-136 Closes-bug: ARMBAND-95 Closes-bug: ARMBAND-93 Closes-bug: ARMBAND-92 Change-Id: I1a236d9f43b2e6dca22055911f696b43c22b5973 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Diffstat (limited to 'patches/fuel-agent/cross-bootstrap/0004-Prevent-common-cross-debootstrap-newaliases-issue.patch')
-rw-r--r--patches/fuel-agent/cross-bootstrap/0004-Prevent-common-cross-debootstrap-newaliases-issue.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/patches/fuel-agent/cross-bootstrap/0004-Prevent-common-cross-debootstrap-newaliases-issue.patch b/patches/fuel-agent/cross-bootstrap/0004-Prevent-common-cross-debootstrap-newaliases-issue.patch
new file mode 100644
index 00000000..75602951
--- /dev/null
+++ b/patches/fuel-agent/cross-bootstrap/0004-Prevent-common-cross-debootstrap-newaliases-issue.patch
@@ -0,0 +1,102 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Tue, 8 Mar 2016 00:44:05 +0100
+Subject: [PATCH] Prevent common cross-debootstrap newaliases issue.
+
+While building target images for a different arch (using qemu-user-static),
+the following issue prevents the succesful image build:
+newaliases: fatal: inet_addr_local[getifaddrs]:
+getifaddrs: Address family not supported by protocol
+
+For more information, see [1].
+
+[1] https://bugs.launchpad.net/ubuntu/+source/postfix/+bug/1531299
+---
+ fuel_agent/manager.py | 14 ++++++++++++++
+ fuel_agent/utils/build.py | 24 ++++++++++++++++++++++++
+ 2 files changed, 38 insertions(+)
+
+diff --git a/fuel_agent/manager.py b/fuel_agent/manager.py
+index 637c99a..86f76b9 100644
+--- a/fuel_agent/manager.py
++++ b/fuel_agent/manager.py
+@@ -1037,10 +1037,15 @@ class Manager(object):
+ direct_repo_addrs=driver_os.proxies.direct_repo_addr_list)
+ self._update_metadata_with_repos(
+ metadata, driver_os.repos)
++ # Prevent common cross-debootstraping problem w/ newaliases & qemu
++ # inet_addr_local[getifaddrs]: getifaddrs: Address family not supp
++ LOG.debug('Preventing newaliases from running inside chroot')
++ bu.prevent_qemu_newaliases(chroot)
+ LOG.debug('Installing packages using apt-get: %s',
+ ' '.join(packages))
+ # disable hosts/resolv files
+ bu.propagate_host_resolv_conf(chroot)
++
+ if hasattr(bs_scheme, 'certs') and bs_scheme.certs:
+ bu.copy_update_certs(bs_scheme.certs, chroot)
+ bu.run_apt_get(chroot, packages=packages,
+@@ -1084,6 +1089,7 @@ class Manager(object):
+ add_multipath_conf=False)
+ # restore disabled hosts/resolv files
+ bu.restore_resolv_conf(chroot)
++ bu.restore_newaliases(chroot)
+ metadata['all_packages'] = bu.get_installed_packages(chroot)
+ # We need to recompress initramfs with new compression:
+ bu.recompress_initramfs(
+@@ -1175,6 +1181,11 @@ class Manager(object):
+ self._update_metadata_with_repos(
+ metadata, driver_os.repos)
+
++ # Prevent common cross-debootstraping problem w/ newaliases & qemu
++ # inet_addr_local[getifaddrs]: getifaddrs: Address family not supp
++ LOG.debug('Preventing newaliases from running inside chroot')
++ bu.prevent_qemu_newaliases(chroot)
++
+ LOG.debug('Installing packages using apt-get: %s',
+ ' '.join(packages))
+ bu.run_apt_get(chroot, packages=packages,
+@@ -1187,6 +1198,9 @@ class Manager(object):
+ allow_unsigned_file=CONF.allow_unsigned_file,
+ force_ipv4_file=CONF.force_ipv4_file)
+
++ LOG.debug('Restoring newaliases command inside chroot')
++ bu.restore_newaliases(chroot)
++
+ LOG.debug('Making sure there are no running processes '
+ 'inside chroot before trying to umount chroot')
+ if not bu.stop_chrooted_processes(chroot, signal=signal.SIGTERM):
+diff --git a/fuel_agent/utils/build.py b/fuel_agent/utils/build.py
+index 1bc0a5f..5761cc5 100644
+--- a/fuel_agent/utils/build.py
++++ b/fuel_agent/utils/build.py
+@@ -339,6 +339,30 @@ def prevent_qemu_replacement(chroot, arch):
+ utils.execute('chroot', chroot, 'ln', '-sf', '/bin/true',
+ '/usr/sbin/update-binfmts')
+
++def prevent_qemu_newaliases(chroot):
++ """Prevents running newaliases under qemu-user-static inside chroot.
++
++ Use dpkg-divert to prevent running newaliases binary through qemu inside
++ chroot which is necessary to avoid a dpkg --configure error:
++ inet_addr_local[getifaddrs]: getifaddrs: Address family not supported ...
++ """
++ utils.execute('chroot', chroot,
++ 'dpkg-divert', '--local', '--rename', '--add',
++ '/usr/bin/newaliases')
++ utils.execute('chroot', chroot, 'ln', '-sf', '/bin/true',
++ '/usr/bin/newaliases')
++
++def restore_newaliases(chroot):
++ """Restores newaliases inside chroot after previous dpkg-divert.
++
++ opposite to prevent_qemu_newaliases
++ """
++ utils.execute('chroot', chroot,
++ 'rm', '-f', '/usr/bin/newaliases')
++ utils.execute('chroot', chroot,
++ 'dpkg-divert', '--local', '--rename', '--remove',
++ '/usr/bin/newaliases')
++
+ def create_sparse_tmp_file(dir, suffix, size=8192):
+ """Creates sparse file.
+