diff --git a/contrib/gitian-builder/.gitignore b/contrib/gitian-builder/.gitignore index c33c61603..c0d0ba58c 100644 --- a/contrib/gitian-builder/.gitignore +++ b/contrib/gitian-builder/.gitignore @@ -1,17 +1,18 @@ *-stamp *.substvars *.log *.pyc build var result inputs base* *.qcow2 sigs target-bin/bootstrap-fixup .vagrant docker *.Dockerfile cache target-* +!target-bin/ diff --git a/contrib/gitian-builder/target-bin/bootstrap-fixup.in b/contrib/gitian-builder/target-bin/bootstrap-fixup.in new file mode 100755 index 000000000..3936b4d84 --- /dev/null +++ b/contrib/gitian-builder/target-bin/bootstrap-fixup.in @@ -0,0 +1,40 @@ +#!/bin/sh + +set -e + +DISTRIB_NAME=`lsb_release -is` +DISTRIB_CODENAME=`lsb_release -cs` + +if [ $DISTRIB_NAME = "Ubuntu" ]; then + echo "deb http://HOSTIP:3142/archive.ubuntu.com/ubuntu $DISTRIB_CODENAME main universe" > $1/etc/apt/sources.list + echo "deb http://HOSTIP:3142/security.ubuntu.com/ubuntu $DISTRIB_CODENAME-security main universe" >> $1/etc/apt/sources.list + echo "deb http://HOSTIP:3142/archive.ubuntu.com/ubuntu $DISTRIB_CODENAME-updates main universe" >> $1/etc/apt/sources.list +elif [ $DISTRIB_NAME = "Debian" ]; then + echo "deb http://HOSTIP:3142/ftp.debian.org/debian $DISTRIB_CODENAME main" > $1/etc/apt/sources.list + echo "deb http://HOSTIP:3142/security.debian.org/ $DISTRIB_CODENAME/updates main" >> $1/etc/apt/sources.list + echo "deb http://HOSTIP:3142/ftp.debian.org/debian $DISTRIB_CODENAME-updates main" >> $1/etc/apt/sources.list + # grub-legacy conflicts grub-pc dependencies + # No grub-legacy on Ubuntu, just on Debian + # Work around bcron-run conflict due to cron being removed + # Needed for KVM, but apparently errors out for LXC, so the true ignores the error + apt-get purge -y grub-legacy bcron-run &> /dev/null || true +fi +echo '127.0.1.1 gitian' >> /etc/hosts + +# If LXC +if grep /lxc/gitian /proc/1/cgroup > /dev/null || grep container=lxc /proc/1/environ > /dev/null; then + adduser --disabled-password --gecos ${DISTRIB_NAME,,} --quiet ${DISTRIB_NAME,,} || true + apt-get purge -y rsyslog || true + dpkg-divert --local --rename --add /sbin/initctl + ln -sf /bin/true /sbin/initctl + dpkg-divert --local --rename --add /usr/bin/ischroot + ln -sf /bin/true /usr/bin/ischroot + # Prevent interaction with init during upgrades + dpkg-divert --local --rename --add /usr/sbin/policy-rc.d + echo 'exit 101' > /usr/sbin/policy-rc.d + chmod +x /usr/sbin/policy-rc.d +## These are superceded by the policy-rc.d fix above +# for pkg in lxc cgmanager udev plymouth dmsetup upstart; do +# echo $pkg hold | dpkg --set-selections || true +# done +fi diff --git a/contrib/gitian-builder/target-bin/grab-packages.sh b/contrib/gitian-builder/target-bin/grab-packages.sh new file mode 100644 index 000000000..c06e3e55b --- /dev/null +++ b/contrib/gitian-builder/target-bin/grab-packages.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Get an installed package manifest + +set -e + +cd /var/cache/apt/archives + +# make sure all packages with installed versions are downloaded +# (except for held packages, which may not be available for download) +dpkg-query -W -f '${Status}\t${Package}=${Version}\n' | grep -v ^hold | cut -f2- | xargs -n 50 apt-get install -q --reinstall -y -d > /tmp/download.log +grep "cannot be downloaded" /tmp/download.log && { echo Could not download some packages, please run gbuild --upgrade 1>&2 ; exit 1 ; } +sha256sum *.deb | sort --key 2 diff --git a/contrib/gitian-builder/target-bin/init-build.sh b/contrib/gitian-builder/target-bin/init-build.sh new file mode 100644 index 000000000..bd27dc4dd --- /dev/null +++ b/contrib/gitian-builder/target-bin/init-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +rm -rf install out build cache +mkdir build +mkdir out +mkdir install +mkdir -p cache/common diff --git a/contrib/gitian-builder/target-bin/upgrade-system.sh b/contrib/gitian-builder/target-bin/upgrade-system.sh new file mode 100644 index 000000000..938422949 --- /dev/null +++ b/contrib/gitian-builder/target-bin/upgrade-system.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# Upgrade system + +set -e + +mkdir -p /var/cache/gitian + +# remove obsolete grub, it causes package dependency issues +apt-get -q -y purge grub > /dev/null 2>&1 || true + +# upgrade packages +DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade > /dev/null > /var/cache/gitian/upgrade.log 2>&1 + +touch /var/cache/gitian/initial-upgrade