|
|
@ -1,13 +1,5 @@ |
|
|
|
#!/bin/bash -e |
|
|
|
#!/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 |
|
|
|
if test -f /etc/setup-debootstrap.conf; then |
|
|
|
. /etc/setup-debootstrap.conf |
|
|
|
. /etc/setup-debootstrap.conf |
|
|
|
fi |
|
|
|
fi |
|
|
@ -17,7 +9,6 @@ fi |
|
|
|
|
|
|
|
|
|
|
|
tmpdir=${tmpdir:-"/var/tmp/chroots"} |
|
|
|
tmpdir=${tmpdir:-"/var/tmp/chroots"} |
|
|
|
test -d "${tmpdir}" || mkdir -p "${tmpdir}" |
|
|
|
test -d "${tmpdir}" || mkdir -p "${tmpdir}" |
|
|
|
docker_user=${docker_user:-${USER}} |
|
|
|
|
|
|
|
if test -z "${ports[@]}"; then |
|
|
|
if test -z "${ports[@]}"; then |
|
|
|
#ports=( armhf powerpc ppc64el s390x arm64 ) |
|
|
|
#ports=( armhf powerpc ppc64el s390x arm64 ) |
|
|
|
#qemus=( arm ppc ppc64 s390x aarch64 ) |
|
|
|
#qemus=( arm ppc ppc64 s390x aarch64 ) |
|
|
@ -39,14 +30,16 @@ fi |
|
|
|
excludes="precise-armhf stretch-armhf" |
|
|
|
excludes="precise-armhf stretch-armhf" |
|
|
|
no_universe="jessie sid wheezy" |
|
|
|
no_universe="jessie sid wheezy" |
|
|
|
|
|
|
|
|
|
|
|
ubuntu="zesty yakkety xenial trusty" |
|
|
|
ubuntu="bionic artful zesty xenial trusty" |
|
|
|
debian="stretch jessie sid" |
|
|
|
debian="buster stretch jessie sid" |
|
|
|
# not yet successfully installable: ubuntu zesty, debian buster |
|
|
|
# not yet successfully installable: ubuntu zesty, debian buster |
|
|
|
|
|
|
|
|
|
|
|
distros=(${distros:-"${ubuntu[@]}" "${debian[@]}"}) |
|
|
|
distros=(${distros:-"${ubuntu[@]}" "${debian[@]}"}) |
|
|
|
|
|
|
|
|
|
|
|
packages_qt5="libpoppler-qt5-dev libpodofo-dev libqt5designer5 libqt5svg5-dev libqt5webkit5-dev qt5-default qt5-qmake qtbase5-dev qtbase5-dev-tools qttools5-dev qttools5-dev-tools" |
|
|
|
packages_qt5="libpoppler-qt5-dev libpodofo-dev libqt5designer5 libqt5svg5-dev libqt5webkit5-dev qt5-default qt5-qmake qtbase5-dev qtbase5-dev-tools qttools5-dev qttools5-dev-tools" |
|
|
|
packages_base="apt-transport-https automake autotools-dev binutils-dev debhelper default-jdk-headless doxygen dpkg-dev g++ git graphviz libboost-thread-dev libcppunit-dev liblog4cxx-dev libpcsclite-dev libpkcs11-helper1-dev libproxy-dev libssl-dev libtool libz-dev lsb-release mscgen nodejs pandoc pkg-config software-properties-common subversion subversion-tools xvfb texinfo" |
|
|
|
packages_base="apt-transport-https automake autotools-dev binutils-dev debhelper default-jdk-headless doxygen dpkg-dev g++ git graphviz libboost-thread-dev libcppunit-dev liblog4cxx-dev libpcsclite-dev libpkcs11-helper1-dev libproxy-dev libssl-dev libtool libz-dev lsb-release mscgen nodejs pandoc pkg-config software-properties-common subversion subversion-tools xvfb texinfo" |
|
|
|
|
|
|
|
package_not_in_bionic="libpoppler-qt5-dev libqt5webkit5-dev texinfo libcppunit-dev liblog4cxx-dev mscgen nodejs pandoc xvfb libpodofo-dev libqt5designer5 qt5-default qttools5-dev-tools qttools5-dev" |
|
|
|
|
|
|
|
package_not_in_artful="texinfo libcppunit-dev liblog4cxx-dev mscgen nodejs pandoc xvfb libpodofo-dev libqt5designer5 qt5-default qttools5-dev-tools qttools5-dev" |
|
|
|
package_not_in_stretch="libssl-dev" |
|
|
|
package_not_in_stretch="libssl-dev" |
|
|
|
package_not_in_zesty="texinfo libcppunit-dev liblog4cxx-dev mscgen nodejs pandoc xvfb libpodofo-dev libqt5designer5 qt5-default qttools5-dev-tools qttools5-dev" |
|
|
|
package_not_in_zesty="texinfo libcppunit-dev liblog4cxx-dev mscgen nodejs pandoc xvfb libpodofo-dev libqt5designer5 qt5-default qttools5-dev-tools qttools5-dev" |
|
|
|
#package_not_in_yakkety="default-jdk-headless" |
|
|
|
#package_not_in_yakkety="default-jdk-headless" |
|
|
@ -64,11 +57,44 @@ fi |
|
|
|
fastmode=0; |
|
|
|
fastmode=0; |
|
|
|
limit= |
|
|
|
limit= |
|
|
|
arch= |
|
|
|
arch= |
|
|
|
|
|
|
|
docker_user=${docker_user:-${USER:-$(id -un)}} |
|
|
|
while [ $# -gt 0 ]; do |
|
|
|
while [ $# -gt 0 ]; do |
|
|
|
case "$1" in |
|
|
|
case "$1" in |
|
|
|
|
|
|
|
(-h|--help) cat <<EOF |
|
|
|
|
|
|
|
SYNPOSIS: $0 [OPTIONS] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OPTIONS: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-h, --help show this help |
|
|
|
|
|
|
|
-f, --fastmode don't update existing distribution |
|
|
|
|
|
|
|
-l, --limit <distro> limit to given ditribution |
|
|
|
|
|
|
|
-a, --arch <arch> limit to given architecture |
|
|
|
|
|
|
|
-u, --user <name> docker hub user name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VARIABLES: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docker_user docker hub user name (${docker_user}) |
|
|
|
|
|
|
|
tmpdir temporary directory (${tmpdir}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DESCRIPTION: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bootstraps chroots in ${tmpdir} for distro ubuntu and debian |
|
|
|
|
|
|
|
distributions of architecture ${archs// /, }, updates them and creates |
|
|
|
|
|
|
|
docker images on docker hub with tag |
|
|
|
|
|
|
|
${docker_user}/<distro>:<codename>-<architecture>. You should have a |
|
|
|
|
|
|
|
repositories named ubuntu and debian. You can the use these images |
|
|
|
|
|
|
|
e.g. for compiling packages in jenkins. If you have your own |
|
|
|
|
|
|
|
repository, you can also prepend it to docker hub user name, |
|
|
|
|
|
|
|
e.g. 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 hub before you start this script. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
|
|
|
|
exit 0;; |
|
|
|
(-f|--fastmode) fastmode=1;; |
|
|
|
(-f|--fastmode) fastmode=1;; |
|
|
|
(-l|--limit) shift; limit=$1;; |
|
|
|
(-l|--limit) shift; limit=$1;; |
|
|
|
(-a|--arch) shift; arch=$1;; |
|
|
|
(-a|--arch) shift; arch=$1;; |
|
|
|
|
|
|
|
(-u|--user) shift; docker_user=$1;; |
|
|
|
(*) |
|
|
|
(*) |
|
|
|
echo "**** ERROR: unknown option $1" 1>&2 |
|
|
|
echo "**** ERROR: unknown option $1" 1>&2 |
|
|
|
exit 1;; |
|
|
|
exit 1;; |
|
|
@ -89,8 +115,9 @@ error() { |
|
|
|
|
|
|
|
|
|
|
|
for ((i=0; i<${#distros[@]}; ++i)); do |
|
|
|
for ((i=0; i<${#distros[@]}; ++i)); do |
|
|
|
for distro in ${distros[$i]}; do |
|
|
|
for distro in ${distros[$i]}; do |
|
|
|
prevent=package_not_in_${distro}; |
|
|
|
prevent=package_not_in_${distro} |
|
|
|
instpkgs=${packages} |
|
|
|
distropkgs=packages_${distro} |
|
|
|
|
|
|
|
instpkgs="${packages} ${!distropkgs}" |
|
|
|
for pkg in ${!prevent}; do |
|
|
|
for pkg in ${!prevent}; do |
|
|
|
instpkgs=${instpkgs//${pkg}/} |
|
|
|
instpkgs=${instpkgs//${pkg}/} |
|
|
|
done |
|
|
|
done |
|
|
|