From 655e777a5adeb633e114d98ffb02f74b227ab437 Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Sat, 18 Jun 2016 19:42:15 +0200 Subject: [PATCH] repo mirror: Allow multi-arch local mirrors Original patch from Stan, signed by me for upstreaming. This patch allows specifying multiple architectures via UBUNTU_ARCH in form of a list of space separated architectures. The first architecture in the list is considered primary and will be used for building all the deb packages by fuel-main. Additional architectures are added to allow targets of other architectures to use the mirror. NOTE: this imposes a requirement that all packages built are arch independent (which is true so far). [ Alexandru Avadanii ] Reworked for applying on top of Fuel@OPNFV. Pass UBUNTU_ARCH to Docker containers. Change-Id: Ibc4ae03223545383813ac58ec34d44c1f97b4694 Signed-off-by: Stanislaw Kardach Signed-off-by: Alexandru Avadanii --- build/Makefile | 1 + build/docker/Dockerfile | 2 +- build/docker/runcontext | 8 ++++- build/repo-multi-arch-local-mirrors.patch | 59 +++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 build/repo-multi-arch-local-mirrors.patch diff --git a/build/Makefile b/build/Makefile index c4775a3da..6f39dc977 100644 --- a/build/Makefile +++ b/build/Makefile @@ -135,6 +135,7 @@ $(ISOCACHE): cd /tmp/fuel-main && git am $(TOPDIR)/bootstrap_admin_node.sh.patch cd /tmp/fuel-main && git am $(TOPDIR)/isolinux.cfg.patch cd /tmp/fuel-main/build/repos/fuel-nailgun && git am $(TOPDIR)/Mark-Intel-82599-10-Gigabit-NIC-as-DPDK-capable.patch + cd /tmp/fuel-main && git am $(TOPDIR)/repo-multi-arch-local-mirrors.patch # Repeat build up to three times sudo -E ./fuel_build_loop cp /tmp/fuel-main/build/artifacts/fuel*.iso . diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index 1bb56b795..b38ea4c64 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -30,7 +30,7 @@ RUN echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy RSYNC # Keeping PWD is needed to build as root RUN echo "Defaults env_keep += \"PWD\"" > /etc/sudoers.d/keep-pwd # Keeping variables for ISO build -RUN echo "Defaults env_keep += \"MIRROR_UBUNTU MIRROR_UBUNTU_ROOT MIRROR_MOS_UBUNTU MIRROR_MOS_UBUNTU_ROOT MIRROR_FUEL LATEST_TARGET_UBUNTU\"" > /etc/sudoers.d/keep-mos +RUN echo "Defaults env_keep += \"MIRROR_UBUNTU MIRROR_UBUNTU_ROOT MIRROR_MOS_UBUNTU MIRROR_MOS_UBUNTU_ROOT MIRROR_FUEL LATEST_TARGET_UBUNTU UBUNTU_ARCH\"" > /etc/sudoers.d/keep-mos RUN chmod 0440 /etc/sudoers.d/open-sudo RUN chmod 0440 /etc/sudoers.d/keep-proxies RUN chmod 0440 /etc/sudoers.d/keep-pwd diff --git a/build/docker/runcontext b/build/docker/runcontext index 9f077764e..daad663ac 100755 --- a/build/docker/runcontext +++ b/build/docker/runcontext @@ -111,7 +111,13 @@ if [ -n "$CACHEBASE" ]; then fi fi -RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm -e HOME=$HOME -e CACHEDEBUG -e CACHETRANSPORT -e CACHEMAXAGE -e CACHEBASE -e BUILD_FUEL_PLUGINS -e MIRROR_UBUNTU -e MIRROR_UBUNTU_ROOT -e MIRROR_MOS_UBUNTU -e MIRROR_MOS_UBUNTU_ROOT -e MIRROR_FUEL -e LATEST_TARGET_UBUNTU -u $USER_ID:$GROUP_ID -w $PWD -v $GITROOT:$GITROOT -v /sys/fs/cgroup:/sys/fs/cgroup:ro $CACHEMOUNT" +RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm \ + -e HOME=$HOME -e CACHEDEBUG -e CACHETRANSPORT -e CACHEMAXAGE -e CACHEBASE \ + -e BUILD_FUEL_PLUGINS -e MIRROR_UBUNTU -e MIRROR_UBUNTU_ROOT \ + -e MIRROR_MOS_UBUNTU -e MIRROR_MOS_UBUNTU_ROOT -e MIRROR_FUEL \ + -e LATEST_TARGET_UBUNTU -e UBUNTU_ARCH \ + -u $USER_ID:$GROUP_ID -w $PWD \ + -v $GITROOT:$GITROOT -v /sys/fs/cgroup:/sys/fs/cgroup:ro $CACHEMOUNT" # Passing "debug" puts up an interactive bash shell if [ "$1" == "debug" ]; then diff --git a/build/repo-multi-arch-local-mirrors.patch b/build/repo-multi-arch-local-mirrors.patch new file mode 100644 index 000000000..d40428743 --- /dev/null +++ b/build/repo-multi-arch-local-mirrors.patch @@ -0,0 +1,59 @@ +From: Stanislaw Kardach +Date: Thu, 25 Feb 2016 13:31:19 +0100 +Subject: repo mirror: Allow multi-arch local mirrors + +This patch allows specifying multiple architectures via UBUNTU_ARCH in +form of a list of space separated architectures. The first architecture +in the list is considered primary and will be used for building all the +deb packages by fuel-main. Additional architectures are added to allow +targets of other architectures to use the mirror. +NOTE: this imposes a requirement that all packages built are arch +independent (which is true so far). + +Signed-off-by: Stanislaw Kardach +Signed-off-by: Alexandru Avadanii +--- + mirror/ubuntu/module.mk | 2 +- + sandbox.mk | 2 +- + config.mk | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/mirror/ubuntu/module.mk b/mirror/ubuntu/module.mk +index 7a9466e..fe1ada2 100644 +--- a/mirror/ubuntu/module.mk ++++ b/mirror/ubuntu/module.mk +@@ -81,7 +81,7 @@ $(BUILD_DIR)/mirror/ubuntu/mirror.done: + --root=$(MIRROR_MOS_UBUNTU_ROOT) \ + --dist=$(MIRROR_MOS_UBUNTU_SUITE) \ + --section=$(subst $(space),$(comma),$(MIRROR_MOS_UBUNTU_SECTION)) \ +- --arch=$(UBUNTU_ARCH) \ ++ --arch=$(shell echo $(UBUNTU_ARCH) | tr ' ' ',') \ + $(LOCAL_MIRROR_UBUNTU)/ + rm -rf $(LOCAL_MIRROR_UBUNTU)/.temp $(LOCAL_MIRROR_UBUNTU)/project + $(ACTION.TOUCH) +diff --git a/sandbox.mk b/sandbox.mk +index 4bc3962..5ffddbd 100644 +--- a/sandbox.mk ++++ b/sandbox.mk +@@ -188,7 +188,7 @@ touch $(SANDBOX_UBUNTU)/etc/init.d/.legacy-bootordering + mkdir -p $(SANDBOX_UBUNTU)/usr/sbin + cp -a $(BUILD_DIR)/policy-rc.d $(SANDBOX_UBUNTU)/usr/sbin + echo "Running debootstrap" +-sudo debootstrap --no-check-gpg --include=ca-certificates --arch=$(UBUNTU_ARCH) $(MIRROR_UBUNTU_SUITE) $(SANDBOX_UBUNTU) $(MIRROR_UBUNTU_METHOD)://$(MIRROR_UBUNTU)$(MIRROR_UBUNTU_ROOT) ++sudo debootstrap --no-check-gpg --include=ca-certificates --arch=$(word 1,$(UBUNTU_ARCH)) $(MIRROR_UBUNTU_SUITE) $(SANDBOX_UBUNTU) $(MIRROR_UBUNTU_METHOD)://$(MIRROR_UBUNTU)$(MIRROR_UBUNTU_ROOT) + if [ -e $(SANDBOX_UBUNTU)/etc/resolv.conf ]; then sudo cp -a $(SANDBOX_UBUNTU)/etc/resolv.conf $(SANDBOX_UBUNTU)/etc/resolv.conf.orig; fi + sudo cp /etc/resolv.conf $(SANDBOX_UBUNTU)/etc/resolv.conf + if [ -e $(SANDBOX_UBUNTU)/etc/hosts ]; then sudo cp -a $(SANDBOX_UBUNTU)/etc/hosts $(SANDBOX_UBUNTU)/etc/hosts.orig; fi +diff --git a/config.mk b/config.mk +index 74ee039..45a3b30 100644 +--- a/config.mk ++++ b/config.mk +@@ -49,7 +49,7 @@ UBUNTU_MINOR:=04 + UBUNTU_RELEASE_NUMBER:=$(UBUNTU_MAJOR).$(UBUNTU_MINOR) + UBUNTU_KERNEL_FLAVOR?=lts-trusty + UBUNTU_NETBOOT_FLAVOR?=netboot +-UBUNTU_ARCH:=amd64 ++UBUNTU_ARCH?=amd64 + UBUNTU_IMAGE_RELEASE:=$(UBUNTU_MAJOR)$(UBUNTU_MINOR) + SEPARATE_IMAGES?=/boot,ext2 /,ext4 + -- 2.16.6