| #!/bin/bash |
| |
| set -x |
| set -o errexit |
| |
| sudo apt-get update |
| |
| # Stuff we need to get build support |
| |
| sudo apt install -y debhelper ubuntu-dev-tools equivs "${extra_packages[@]}" |
| |
| # Install the cuttlefish build deps |
| |
| for dsc in *.dsc; do |
| yes | sudo mk-build-deps -i "${dsc}" -t apt-get |
| done |
| |
| # Installing the build dependencies left some .deb files around. Remove them |
| # to keep them from landing on the image. |
| yes | rm -f *.deb |
| |
| for dsc in *.dsc; do |
| # Unpack the source and build it |
| |
| dpkg-source -x "${dsc}" |
| dir="$(basename "${dsc}" .dsc)" |
| dir="${dir/_/-}" |
| pushd "${dir}/" |
| debuild -uc -us |
| popd |
| done |
| |
| # Now gather all of the *.deb files to copy them into the image |
| debs=(*.deb) |
| |
| tmp_debs=() |
| for i in "${debs[@]}"; do |
| tmp_debs+=(/tmp/"$(basename "$i")") |
| done |
| |
| # Now install the packages on the disk |
| sudo mkdir /mnt/image |
| sudo mount /dev/sdb1 /mnt/image |
| cp "${debs[@]}" /mnt/image/tmp |
| sudo mount -t sysfs none /mnt/image/sys |
| sudo mount -t proc none /mnt/image/proc |
| sudo mount --bind /dev/ /mnt/image/dev |
| sudo mount --bind /dev/pts /mnt/image/dev/pts |
| sudo mount --bind /run /mnt/image/run |
| # resolv.conf is needed on Debian but not Ubuntu |
| sudo cp /etc/resolv.conf /mnt/image/etc/ |
| sudo chroot /mnt/image /usr/bin/apt update |
| sudo chroot /mnt/image /usr/bin/apt install -y "${tmp_debs[@]}" |
| # install tools dependencies |
| sudo chroot /mnt/image /usr/bin/apt install -y openjdk-11-jre |
| sudo chroot /mnt/image /usr/bin/apt install -y unzip bzip2 |
| sudo chroot /mnt/image /usr/bin/apt install -y aapt |
| |
| sudo chroot /mnt/image /usr/bin/find /home -ls |
| # Clean up the builder's version of resolv.conf |
| sudo rm /mnt/image/etc/resolv.conf |
| |
| # Skip unmounting: |
| # Sometimes systemd starts, making it hard to unmount |
| # In any case we'll unmount cleanly when the instance shuts down |
| echo IMAGE_WAS_CREATED |