.PHONY: show-ubuntu-sandbox-repos show-centos-sandbox-repos define yum_local_repo [upstream-local-mirror] name=Local upstream mirror baseurl=file:///mirrors/centos/os/x86_64 gpgcheck=0 enabled=1 priority=10 endef define yum_local_mos_repo [mos-local-mirror] name=Local mirror baseurl=file:///mirrors/mos-centos gpgcheck=0 enabled=1 priority=10 endef define yum_upstream_repo [upstream] name=Upstream mirror baseurl=$(SANDBOX_MIRROR_CENTOS_UPSTREAM)/os/$(CENTOS_ARCH)/ gpgcheck=0 priority=1 sslverify=False [upstream-updates] name=Upstream mirror baseurl=$(SANDBOX_MIRROR_CENTOS_UPSTREAM)/updates/$(CENTOS_ARCH)/ gpgcheck=0 priority=1 sslverify=False endef define yum_epel_repo [epel] name=epel mirror baseurl=$(SANDBOX_MIRROR_EPEL)/$(CENTOS_MAJOR)/$(CENTOS_ARCH)/ gpgcheck=0 priority=3 endef define sandbox_yum_conf [main] cachedir=/tmp/cache keepcache=0 debuglevel=2 logfile=/tmp/yum.log exclude=*.i686.rpm exactarch=1 obsoletes=1 gpgcheck=0 plugins=1 pluginpath=/etc/yum-plugins pluginconfpath=/etc/yum/pluginconf.d reposdir=/etc/yum.repos.d sslverify=False endef define external_sandbox_yum_conf [main] cachedir=$(SANDBOX)/cache keepcache=0 debuglevel=2 logfile=$(SANDBOX)/yum.log exclude=*.i686.rpm exactarch=1 obsoletes=1 gpgcheck=0 plugins=1 pluginpath=$(SANDBOX)/etc/yum-plugins pluginconfpath=$(SANDBOX)/etc/yum/pluginconf.d reposdir=$(SANDBOX)/etc/yum.repos.d sslverify=False endef SANDBOX_PACKAGES:=bash yum define SANDBOX_UP echo "Starting SANDBOX up" mkdir -p $(SANDBOX)/etc/yum.repos.d cat > $(SANDBOX)/etc/yum.conf < $(SANDBOX)/etc/external.yum.conf < $(SANDBOX)/etc/yum.repos.d/base.repo < $(SANDBOX)/etc/yum/pluginconf.d/priorities.conf << EOF [main] enabled=1 check_obsoletes=1 full_match=1 EOF sudo rpm -i --root=$(SANDBOX) `find $(LOCAL_MIRROR_CENTOS_OS_BASEURL) -name "centos-release*rpm" | head -1` || \ echo "centos-release already installed" sudo rm -vf $(SANDBOX)/etc/yum.repos.d/Cent* sudo /bin/sh -c 'export TMPDIR=$(SANDBOX)/tmp/yum TMP=$(SANDBOX)/tmp/yum; yum -c $(SANDBOX)/etc/external.yum.conf --installroot=$(SANDBOX) -y --nogpgcheck install yum' echo 'Rebuilding RPM DB' sudo rpm --root=$(SANDBOX) --rebuilddb echo 'Installing packages for Sandbox' mount | grep -q $(SANDBOX)/mirrors || sudo mount --bind $(LOCAL_MIRROR) $(SANDBOX)/mirrors mount | grep -q $(SANDBOX)/proc || sudo mount --bind /proc $(SANDBOX)/proc mount | grep -q $(SANDBOX)/dev || sudo mount --bind /dev $(SANDBOX)/dev # after installing yum, let's add MOS repos from mounted /mirrors cat > $(SANDBOX)/etc/yum.repos.d/base.repo < $(BUILD_DIR)/policy-rc.d << EOF #!/bin/sh # suppress services start in the staging chroots exit 101 EOF chmod 755 $(BUILD_DIR)/policy-rc.d mkdir -p $(SANDBOX_UBUNTU)/etc/init.d 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) 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 sudo cp /etc/hosts $(SANDBOX_UBUNTU)/etc/hosts echo "Generating utf8 locale" sudo chroot $(SANDBOX_UBUNTU) /usr/bin/env -i \ LC_ALL=C \ DEBIAN_FRONTEND=noninteractive \ DEBCONF_NONINTERACTIVE_SEEN=true \ /bin/sh -c 'locale-gen en_US.UTF-8; dpkg-reconfigure locales' echo "Preparing directory for chroot local mirror" sudo mkdir -p $(SANDBOX_UBUNTU)/etc/apt/preferences.d/ echo "Generating pinning file for Ubuntu SandBox" cat > $(BUILD_DIR)/mirror/ubuntu/preferences << EOF $(apt_preferences) EOF sudo cp $(BUILD_DIR)/mirror/ubuntu/preferences $(SANDBOX_UBUNTU)/etc/apt/preferences.d/ echo "Configuring apt sources.list" cat > $(BUILD_DIR)/mirror/ubuntu/sources.list << EOF $(apt_sources_list) EOF sudo cp $(BUILD_DIR)/mirror/ubuntu/sources.list $(SANDBOX_UBUNTU)/etc/apt/ sudo cp $(BUILD_DIR)/policy-rc.d $(SANDBOX_UBUNTU)/usr/sbin echo "Allowing using unsigned repos" echo "APT::Get::AllowUnauthenticated 1;" | sudo tee $(SANDBOX_UBUNTU)/etc/apt/apt.conf.d/02mirantis-unauthenticated if [ "$(SANDBOX_COPY_CERTS)" = "1" ] ; then echo "Copying local certificates and CA to chroot" sudo bash -c "mkdir -p $(SANDBOX_UBUNTU)/usr/share/ca-certificates/ ; rsync -arzL /etc/ssl/certs/ $(SANDBOX_UBUNTU)/usr/share/ca-certificates/local/" echo "Acquire::https { Verify-Peer \"true\"; Verify-Host \"true\"; }; " | sudo tee -a $(SANDBOX_UBUNTU)/etc/apt/apt.conf.d/05-local-ssl-certs sudo chroot $(SANDBOX_UBUNTU) sh -xc "(cd /usr/share/ca-certificates; find local -type f) >> /etc/ca-certificates.conf" sudo chroot $(SANDBOX_UBUNTU) update-ca-certificates fi echo "Updating apt package database" sudo chroot $(SANDBOX_UBUNTU) bash -c "(mkdir -p /tmp/user/0)" sudo chroot $(SANDBOX_UBUNTU) apt-get update if ! mountpoint -q $(SANDBOX_UBUNTU)/proc; then sudo mount -t proc sandboxproc $(SANDBOX_UBUNTU)/proc; fi echo "Installing additional packages: $(SANDBOX_DEB_PKGS)" sudo chroot $(SANDBOX_UBUNTU) env LC_ALL=C DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get dist-upgrade --yes test -n "$(SANDBOX_DEB_PKGS)" && sudo chroot $(SANDBOX_UBUNTU) env LC_ALL=C DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install --yes $(SANDBOX_DEB_PKGS) echo "SANDBOX_UBUNTU_UP: done" endef define SANDBOX_UBUNTU_DOWN if mountpoint -q $(SANDBOX_UBUNTU)/proc; then sudo umount $(SANDBOX_UBUNTU)/proc; fi sudo umount $(SANDBOX_UBUNTU)/tmp/apt || true endef show-ubuntu-sandbox-repos: export apt_source_content:=$(apt_sources_list) show-ubuntu-sandbox-repos: export apt_pinning_content:=$(apt_preferences) show-ubuntu-sandbox-repos: /bin/echo -e "$${apt_source_content}" /bin/echo -e "$${apt_pinning_content}" show-centos-sandbox-repos: export sandbox_yum_conf_content:=$(sandbox_yum_conf) show-centos-sandbox-repos: export yum_upstream_repo_content:=$(yum_upstream_repo) show-centos-sandbox-repos: export yum_epel_repo_content:=$(yum_epel_repo) show-centos-sandbox-repos: export yum_local_repo_content:=$(yum_local_repo) show-centos-sandbox-repos: export yum_local_mos_repo_content:=$(yum_local_mos_repo) show-centos-sandbox-repos: /bin/echo -e "$${sandbox_yum_conf_content}\n" /bin/echo -e "$${yum_upstream_repo_content}\n" /bin/echo -e "$${yum_epel_repo_content}\n" /bin/echo -e "$${yum_local_repo_content}\n" /bin/echo -e "$${yum_local_mos_repo_content}\n"