| Index: build/install-chroot.sh
|
| diff --git a/build/install-chroot.sh b/build/install-chroot.sh
|
| index ad0dafadcab612e5ea021956bd590e767968a083..65bda044122cb9c2e30c2708369980dabf5790f7 100755
|
| --- a/build/install-chroot.sh
|
| +++ b/build/install-chroot.sh
|
| @@ -10,6 +10,49 @@
|
| # N. B. it is unlikely that this script will ever work on anything other than a
|
| # Debian-derived system.
|
|
|
| +usage() {
|
| + echo "usage: ${0##*/} [-m mirror]"
|
| + echo "-m mirror an alternate repository mirror for package downloads"
|
| + echo "-h this help message"
|
| +}
|
| +
|
| +process_opts() {
|
| + local OPTNAME OPTIND OPTERR OPTARG
|
| + while getopts ":m:h" OPTNAME; do
|
| + case "$OPTNAME" in
|
| + m)
|
| + if [ -n "${mirror}" ]; then
|
| + echo "You can only specify exactly one mirror location"
|
| + usage
|
| + exit 1
|
| + fi
|
| + mirror="$OPTARG"
|
| + ;;
|
| + h)
|
| + usage
|
| + exit 0
|
| + ;;
|
| + \:)
|
| + echo "'-$OPTARG' needs an argument."
|
| + usage
|
| + exit 1
|
| + ;;
|
| + *)
|
| + echo "invalid command-line option: $OPTARG"
|
| + usage
|
| + exit 1
|
| + ;;
|
| + esac
|
| + done
|
| +
|
| + if [ $# -ge ${OPTIND} ]; then
|
| + eval echo "Unexpected command line argument: \${${OPTIND}}"
|
| + usage
|
| + exit 1
|
| + fi
|
| +}
|
| +
|
| +
|
| # Check that we are running as a regular user
|
| [ "$(id -nu)" = root ] && {
|
| echo "Run this script as a regular user and provide your \"sudo\"" \
|
| @@ -18,6 +61,8 @@
|
| }
|
| mkdir -p "$HOME/chroot/"
|
|
|
| +process_opts "$@"
|
| +
|
| # Error handler
|
| trap 'exit 1' INT TERM QUIT
|
| trap 'sudo apt-get clean; tput bel; echo; echo Failed' EXIT
|
| @@ -81,6 +126,25 @@ target="${distname}${arch}"
|
| }
|
| sudo mkdir -p /var/lib/chroot/"${target}"
|
|
|
| +# Offer to include additional standard repositories for Ubuntu-based chroots.
|
| +alt_repos=
|
| +grep ubuntu.com /usr/share/debootstrap/scripts/"${distname}" >&/dev/null && {
|
| + while :; do
|
| + echo "Would you like to add ${distname}-updates and ${distname}-security "
|
| + echo -n "to the chroot's sources.list (y/n)? "
|
| + read alt_repos
|
| + case "${alt_repos}" in
|
| + y|Y)
|
| + alt_repos="y"
|
| + break
|
| + ;;
|
| + n|N)
|
| + break
|
| + ;;
|
| + esac
|
| + done
|
| +}
|
| +
|
| # Remove stale entry from /etc/schroot/schroot.conf. Entries start
|
| # with the target name in square brackets, followed by an arbitrary
|
| # number of lines. The entry stops when either the end of file has
|
| @@ -92,9 +156,11 @@ sudo sed -ni '/^[[]'"${target%bit}"']$/,${:1;n;/^[[]/b2;b1;:2;p;n;b2};p' \
|
| /etc/schroot/schroot.conf
|
|
|
| # Download base system. This takes some time
|
| -grep ubuntu.com /usr/share/debootstrap/scripts/"${distname}" >&/dev/null &&
|
| - mirror="http://archive.ubuntu.com/ubuntu" ||
|
| - mirror="http://ftp.us.debian.org/debian"
|
| +if [ -z "${mirror}" ]; then
|
| + grep ubuntu.com /usr/share/debootstrap/scripts/"${distname}" >&/dev/null &&
|
| + mirror="http://archive.ubuntu.com/ubuntu" ||
|
| + mirror="http://ftp.us.debian.org/debian"
|
| +fi
|
| sudo debootstrap ${archflag} "${distname}" /var/lib/chroot/"${target}" \
|
| "$mirror"
|
|
|
| @@ -139,15 +205,26 @@ EOF
|
| sudo chown root:root /usr/local/bin/"${target%bit}"
|
| sudo chmod 755 /usr/local/bin/"${target%bit}"
|
|
|
| +# Add the standard Ubuntu update repositories if requested.
|
| +[ "${alt_repos}" = "y" -a -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] &&
|
| +sudo sed -i '/^deb .* [^ -]\+ main$/p
|
| + s/^\(deb .* [^ -]\+\) main/\1-security main/
|
| + p
|
| + t1
|
| + d
|
| + :1;s/-security main/-updates main/
|
| + t
|
| + d' "/var/lib/chroot/${target}/etc/apt/sources.list"
|
| +
|
| # Add a few more repositories to the chroot
|
| -[ -r /var/lib/chroot/${target}/etc/apt/sources.list ] &&
|
| +[ -r "/var/lib/chroot/${target}/etc/apt/sources.list" ] &&
|
| sudo sed -i 's/ main$/ main restricted universe multiverse/
|
| p
|
| t1
|
| d
|
| :1;s/^deb/deb-src/
|
| t
|
| - d' /var/lib/chroot/${target}/etc/apt/sources.list
|
| + d' "/var/lib/chroot/${target}/etc/apt/sources.list"
|
|
|
| # Update packages
|
| sudo schroot -c "${target%bit}" -p -- /bin/sh -c '
|
| @@ -186,17 +263,17 @@ if [ "${arch}" = 32bit ] && file /bin/bash 2>/dev/null | grep -q x86-64; then
|
| [ -d /usr/share/doc/"$i" ] || dep="$dep $i"
|
| done
|
| [ -n "$dep" ] && sudo apt-get -y install $dep
|
| - sudo cp /usr/bin/gdb /var/lib/chroot/${target}/usr/local/bin/
|
| - sudo cp /usr/bin/ld /var/lib/chroot/${target}/usr/local/bin/
|
| + sudo cp /usr/bin/gdb "/var/lib/chroot/${target}/usr/local/bin/"
|
| + sudo cp /usr/bin/ld "/var/lib/chroot/${target}/usr/local/bin/"
|
| for i in libbfd libpython; do
|
| lib="$({ ldd /usr/bin/ld; ldd /usr/bin/gdb; } |
|
| grep "$i" | awk '{ print $3 }')"
|
| if [ -n "$lib" -a -r "$lib" ]; then
|
| - sudo cp "$lib" /var/lib/chroot/${target}/usr/lib64/
|
| + sudo cp "$lib" "/var/lib/chroot/${target}/usr/lib64/"
|
| fi
|
| done
|
| for lib in libssl libcrypt; do
|
| - sudo cp /usr/lib/$lib* /var/lib/chroot/${target}/usr/lib64/ || :
|
| + sudo cp /usr/lib/$lib* "/var/lib/chroot/${target}/usr/lib64/" || :
|
| done
|
| fi
|
|
|
|
|