packages/deb: build packages using the correct mirror (LP #1390416)
As of now Fuel related deb packages are built using the upstream mirror. This yeilds inconsistent dependencies, for instance, packages depend on both the upstream and the customized python versions, and provisioning of Ubuntu node fails as a result. To resolve the problem setup the build chroot using the official Fuel apt repo. While at it use the locally created apt mirror instead of downloading packages once more, and fix a number of inconsistencies/bugs. * sandbox.mk: - sandbox define is modified so as to use local pre-built mirror. * packages/deb/module.mk: - use the helper script to create build sandbox. * requirements-deb.txt: - make sure tools required for building Debian packages are included into the local apt repo. Change-Id: I9f7b06bba94a65b2d65168cc1122257f4bec78be Related-bug: #1390416
This commit is contained in:
parent
caf72f3e77
commit
a1c07e3cbb
|
@ -14,20 +14,18 @@ clean-deb:
|
|||
define build_deb
|
||||
$(BUILD_DIR)/packages/deb/repo.done: $(BUILD_DIR)/packages/deb/$1.done
|
||||
$(BUILD_DIR)/packages/deb/repo.done: $(BUILD_DIR)/packages/deb/$1-repocleanup.done
|
||||
|
||||
$(BUILD_DIR)/packages/deb/$1.done: $(BUILD_DIR)/mirror/ubuntu/build.done
|
||||
$(BUILD_DIR)/packages/deb/$1.done: $(BUILD_DIR)/packages/source_$1.done
|
||||
|
||||
$(BUILD_DIR)/packages/deb/$1.done: SANDBOX_UBUNTU:=$(BUILD_DIR)/packages/deb/SANDBOX
|
||||
$(BUILD_DIR)/packages/deb/$1.done: SANDBOX_DEB_PKGS:=apt wget bzip2 apt-utils build-essential python-setuptools devscripts debhelper fakeroot
|
||||
$(BUILD_DIR)/packages/deb/$1.done: export SANDBOX_UBUNTU_UP:=$$(SANDBOX_UBUNTU_UP)
|
||||
$(BUILD_DIR)/packages/deb/$1.done: export SANDBOX_UBUNTU_DOWN:=$$(SANDBOX_UBUNTU_DOWN)
|
||||
$(BUILD_DIR)/packages/deb/$1.done: $(BUILD_DIR)/repos/repos.done
|
||||
mkdir -p $(BUILD_DIR)/packages/deb/packages $(BUILD_DIR)/packages/deb/sources
|
||||
mkdir -p $$(SANDBOX_UBUNTU)
|
||||
mkdir -p $$(SANDBOX_UBUNTU)/proc
|
||||
sed -e "s/@@UBUNTU_RELEASE@@/$(UBUNTU_RELEASE)/g" $$(SOURCE_DIR)/packages/multistrap.conf | sudo tee $$(SANDBOX_UBUNTU)/multistrap.conf
|
||||
sudo sh -c "$$$${SANDBOX_UBUNTU_UP}"
|
||||
sudo chroot $$(SANDBOX_UBUNTU) /bin/bash -c "apt-get update"
|
||||
# create sandbox if does not exist
|
||||
test -e $$(SANDBOX_UBUNTU)/etc/debian_version || sudo sh -c "$$$${SANDBOX_UBUNTU_UP}"
|
||||
# mount proc if not mounted
|
||||
mountpoint -q $$(SANDBOX_UBUNTU)/proc || sudo mount -t proc sandbox_ubuntu_proc $$(SANDBOX_UBUNTU)/proc
|
||||
sudo mkdir -p $$(SANDBOX_UBUNTU)/tmp/$1
|
||||
ifeq ($1,$(filter $1,nailgun-net-check python-tasklib))
|
||||
tar zxf $(BUILD_DIR)/packages/sources/$1/$(subst python-,,$1)*.tar.gz -C $(BUILD_DIR)/packages/deb/sources
|
||||
|
|
|
@ -31,6 +31,8 @@ crda
|
|||
curl
|
||||
daemonize
|
||||
debconf-utils
|
||||
devscripts
|
||||
debhelper
|
||||
dhcp-checker
|
||||
diffutils
|
||||
discover
|
||||
|
|
31
sandbox.mk
31
sandbox.mk
|
@ -52,19 +52,30 @@ umount $(SANDBOX)/dev
|
|||
endef
|
||||
|
||||
define SANDBOX_UBUNTU_UP
|
||||
mount | grep -q $(SANDBOX_UBUNTU)/proc || sudo mount -t proc none $(SANDBOX_UBUNTU)/proc
|
||||
[ -f $(SANDBOX_UBUNTU)/etc/debian_version ] || sudo multistrap -a amd64 -f $(SANDBOX_UBUNTU)/multistrap.conf -d $(SANDBOX_UBUNTU)/
|
||||
sudo chroot $(SANDBOX_UBUNTU) /bin/bash -c "locale-gen en_US.UTF-8 ; dpkg-reconfigure locales"
|
||||
sudo chroot $(SANDBOX_UBUNTU) /bin/bash -c "dpkg --configure -a || exit 0"
|
||||
sudo chroot $(SANDBOX_UBUNTU) /bin/bash -c "rm -rf /var/run/*"
|
||||
sudo chroot $(SANDBOX_UBUNTU) /bin/bash -c "dpkg --configure -a || exit 0"
|
||||
echo 'APT::Get::AllowUnauthenticated 1;' | sudo tee $(SANDBOX_UBUNTU)/etc/apt/apt.conf.d/02mirantis-unauthenticated
|
||||
[ -n "$(EXTRA_DEB_REPOS)" ] && echo "$(EXTRA_DEB_REPOS)" | tr '|' '\n' | while read repo; do echo deb $$repo; done | sudo tee $(SANDBOX_UBUNTU)/etc/apt/sources.list.d/extra.list || exit 0
|
||||
echo "SANDBOX_UBUNTU_UP: start"
|
||||
mkdir -p $(SANDBOX_UBUNTU)
|
||||
echo "Running debootstrap"
|
||||
sudo debootstrap --no-check-gpg --arch=$(UBUNTU_ARCH) $(UBUNTU_RELEASE) $(SANDBOX_UBUNTU) file://$(LOCAL_MIRROR)/ubuntu
|
||||
sudo cp /etc/resolv.conf $(SANDBOX_UBUNTU)/etc/resolv.conf
|
||||
mount | grep -q $(SANDBOX_UBUNTU)/proc || sudo mount -t proc none $(SANDBOX_UBUNTU)/proc
|
||||
echo "Generating utf8 locale"
|
||||
sudo chroot $(SANDBOX_UBUNTU) /bin/sh -c 'locale-gen en_US.UTF-8; dpkg-reconfigure locales'
|
||||
echo "Preparing directory for chroot local mirror"
|
||||
test -e $(SANDBOX_UBUNTU)/tmp/apt && sudo rm -rf $(SANDBOX_UBUNTU)/tmp/apt
|
||||
sudo mkdir -p $(SANDBOX_UBUNTU)/tmp/apt
|
||||
echo "Copying local ubuntu mirror into $(SANDBOX_UBUNTU)/tmp/apt"
|
||||
sudo cp -al $(LOCAL_MIRROR)/ubuntu/dists $(LOCAL_MIRROR)/ubuntu/pool $(SANDBOX_UBUNTU)/tmp/apt
|
||||
echo "Configuring apt sources.list: deb file:///tmp/apt $(UBUNTU_RELEASE) main"
|
||||
echo "deb file:///tmp/apt $(UBUNTU_RELEASE) main" | sudo tee $(SANDBOX_UBUNTU)/etc/apt/sources.list
|
||||
echo "Allowing using unsigned repos"
|
||||
echo "APT::Get::AllowUnauthenticated 1;" | sudo tee $(SANDBOX_UBUNTU)/etc/apt/apt.conf.d/02mirantis-unauthenticated
|
||||
echo "Updating apt package database"
|
||||
sudo chroot $(SANDBOX_UBUNTU) apt-get update
|
||||
echo "Installing additional packages: $(SANDBOX_DEB_PKGS)"
|
||||
test -n "$(SANDBOX_DEB_PKGS)" && sudo chroot $(SANDBOX_UBUNTU) apt-get install --yes $(SANDBOX_DEB_PKGS)
|
||||
echo "SANDBOX_UBUNTU_UP: done"
|
||||
endef
|
||||
|
||||
define SANDBOX_UBUNTU_DOWN
|
||||
sync
|
||||
sudo umount $(SANDBOX_UBUNTU)/proc
|
||||
endef
|
||||
endef
|
||||
|
|
Loading…
Reference in New Issue