[DEPRECATED, use docker as replacement] Scripts to generate Ubuntu and Debian docker images or chroot environments, i.e. used for building packages for these environments.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

100 lines
4.5 KiB

#!/bin/bash -e
# pass your docker hub login name as $1, defaults to your user name
# you should have a repositories named ubuntu and debian
# if you have your own repository, you can also prepend it:
# my.repo.url:5000/myname the script will then append ubuntu or debian
# e.g. to my.repo.url:5000/myname/ubuntu:trusty-amd64
# please login to docker before you start this script
docker_user=${1:-${docker_user:-$(id -un)}}
if test -f /etc/setup-debootstrap.conf; then
. /etc/setup-debootstrap.conf
fi
tmpdir=${tmpdir:-"/var/tmp"}
docker_user=${docker_user:-${USER}}
if test -z "$archs"; then
case $(dpkg --print-architecture); in
(amd64) archs="i386 amd64";;
(*) archs=$(dpkg --print-architecture)
esac
fi
ubuntu_qt5="yakkety xenial wily vivid trusty"
ubuntu_qt4="precise"
debian_qt5="stretch jessie sid"
debian_qt4="wheezy"
debian_unsupported="buster" # not in /usr/share/debootstrap/scripts
ubuntu=("${ubuntu_qt5}" "${ubuntu_qt4}")
debian=("${debian_qt5}" "${debian_qt4}")
distros=(${distros:-"${ubuntu[@]}" "${debian[@]}"})
packages_qt5="qtbase5-dev qtbase5-dev-tools qtbase5-dev-tools libqt5webkit5-dev libqt5svg5-dev qt5-default qttools5-dev"
# |libqtcore4-qmake|libqt4-core
packages_qt4="qt4-qmake libqt4-dev"
# |software-properties-common|python-software-properties
packages_base="software-properties-common apt-transport-https dpkg-dev lsb-release debhelper git subversion pkg-config automake libtool autotools-dev doxygen graphviz mscgen libcppunit-dev xvfb nodejs"
package_not_in_xenial=""
package_not_in_xenial_qt5=""
packages=(${packages:-"${packages_base} ${packages_qt5}" "${packages_base} ${packages_qt4}" "${packages_base} ${packages_qt5}" "${packages_base} ${packages_qt4}"})
if test -z "${index}" -a "${#distros[@]}" -ne "${#packages[@]}"; then
echo "**** ERROR: number of distribution lists doesn't match package lists" 1>&2
echo " distribution lists: ${#distros[@]}" 1>&2
echo " package lists: ${#packages[@]}" 1>&2
exit 1
fi
for ((i=0; i<${#distros[@]}; ++i)); do
package="${packages[${index:-$i}]}"
for distro in ${distros[$i]}; do
ubuntus="${ubuntu[@]}"
if test "${ubuntus//${distro}/}" != "${ubuntus}"; then
type="ubuntu"
else
type="debian"
fi
for arch in ${archs}; do
echo "******** process $type $distro $arch ********" 1>&2
if test -d "${tmpdir}/${distro}-${arch}"; then
echo " ++++ already exists ${tmpdir}/${distro}-${arch}" 1>&2
else
echo " ---- install ${tmpdir}/${distro}-${arch}" 1>&2
sudo debootstrap --arch="$arch" "$distro" "${tmpdir}/${distro}-${arch}"
fi
echo " ---- prevent packages in ${tmpdir}/${distro}-${arch}" 1>&2
for f in "dbus" "libpam-systemd*" "packagekit*" "policykit*" "colord"; do
sudo chroot "${tmpdir}/${distro}-${arch}" <<EOF1
if ! grep -q "Package: $f" /etc/apt/preferences; then
cat >> /etc/apt/preferences <<EOF2
Package: $f
Pin-Priority: -100
EOF2
fi
EOF1
done
echo " ---- upgrade ${tmpdir}/${distro}-${arch}" 1>&2
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get update
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get -y upgrade
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get install -y python-software-properties software-properties-common || \
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get install -y software-properties-common
if test "${distro}" != "jessie" -a "${distro}" != "sid"; then
sudo chroot "${tmpdir}/${distro}-${arch}" add-apt-repository universe || \
sudo chroot "${tmpdir}/${distro}-${arch}" add-apt-repository "deb http://archive.ubuntu.com/ubuntu ${distro} universe"
fi
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get update
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get -y dist-upgrade
echo " ---- install ${package} to ${tmpdir}/${distro}-${arch}" 1>&2
sudo chroot "${tmpdir}/${distro}-${arch}" apt-get install -y ${package}
echo " ---- import ${tmpdir}/${distro}-${arch} to ${docker_user}/${type}:${distro}-${arch}" 1>&2
cd "${tmpdir}/${distro}-${arch}"
sudo tar c . | docker import - "${docker_user}/${type}:${distro}-${arch}"
echo " ---- push ${tmpdir}/${distro}-${arch} to ${docker_user}/${type}:${distro}-${arch}" 1>&2
docker push "${docker_user}/${type}:${distro}-${arch}"
done
done
done