|
|
|
@@ -200,11 +200,25 @@ function ifthenelse() {
|
|
|
|
|
arg="$1"
|
|
|
|
|
shift
|
|
|
|
|
cmd="$*"
|
|
|
|
|
DISTRIBUTOR=$(docker exec ${DOCKER_ID} lsb_release -si | sed 's, .*,,' | tr [:upper:] [:lower:])
|
|
|
|
|
DISTRIBUTOR=$(docker exec ${DOCKER_ID} lsb_release -si | sed 's, .*,,;s,.*,\L&,g')
|
|
|
|
|
CODENAME=$(docker exec ${DOCKER_ID} lsb_release -cs)
|
|
|
|
|
ARCH=$((docker exec ${DOCKER_ID} which dpkg > /dev/null 2> /dev/null && docker exec ${DOCKER_ID} dpkg --print-architecture) || echo amd64)
|
|
|
|
|
case "$DISTRIBUTOR" in
|
|
|
|
|
(opensuse) # code name may be not available, then set leap or tumbleweed
|
|
|
|
|
if test "$CODENAME" = "n/a"; then
|
|
|
|
|
CODENAME=$(docker exec ${DOCKER_ID} lsb_release -ds | sed "s,\($(docker exec ${DOCKER_ID} lsb_release -si | sed 's, ,\\|,g')\) *,,"';s, .*,,g;s,",,g;s,.*,\L&,g')
|
|
|
|
|
fi
|
|
|
|
|
;;
|
|
|
|
|
(fedora|mageia) # numeric code name
|
|
|
|
|
CODENAME=$(docker exec ${DOCKER_ID} lsb_release -rs)
|
|
|
|
|
;;
|
|
|
|
|
(centos) # only look at major number in centos
|
|
|
|
|
CODENAME=$(docker exec ${DOCKER_ID} lsb_release -rs | sed 's,\..*,,')
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
if test "${arg/:::/}" = "${arg}"; then
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${arg//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
|
|
|
|
cmd_tmp="${cmd//ARG/${arg//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "${cmd_tmp//@CODENAME@/${CODENAME}}"
|
|
|
|
|
else
|
|
|
|
|
os="${arg%%:::*}"
|
|
|
|
|
thenpart="${arg#*:::}"
|
|
|
|
@@ -215,11 +229,13 @@ function ifthenelse() {
|
|
|
|
|
fi
|
|
|
|
|
if [[ "${DISTRIBUTOR}-${CODENAME}-${ARCH}" =~ ${os} ]]; then
|
|
|
|
|
if test -n "${thenpart}"; then
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${thenpart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
|
|
|
|
cmd_tmp="${cmd//ARG/${thenpart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "${cmd_tmp//@CODENAME@/${CODENAME}}"
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
if test -n "${elsepart}"; then
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "${cmd//ARG/${elsepart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
|
|
|
|
cmd_tmp="${cmd//ARG/${elsepart//@DISTRIBUTOR@/${DISTRIBUTOR}}}"
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "${cmd_tmp//@CODENAME@/${CODENAME}}"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
@@ -259,12 +275,12 @@ case "$mode" in
|
|
|
|
|
PREVENT='libpam-systemd policykit.* colord dconf-service'
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
|
|
|
|
|
docker exec ${DOCKER_ID} apt-mark hold ${PREVENT}
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get upgrade ${OPTIONS}
|
|
|
|
|
#docker exec ${DOCKER_ID} apt-get upgrade ${OPTIONS}
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} ${PREVENT// /- }- python-software-properties software-properties-common apt-transport-https dpkg-dev lsb-release wget || \
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} ${PREVENT// /- }- software-properties-common apt-transport-https dpkg-dev lsb-release wget || \
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} ${PREVENT// /- }- python-software-properties apt-transport-https dpkg-dev lsb-release wget;
|
|
|
|
|
if [[ "${img}" =~ "ubuntu" ]]; then
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} ${PREVENT} locales
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} ${PREVENT// /- }- locales
|
|
|
|
|
docker exec ${DOCKER_ID} locale-gen ${LANG}
|
|
|
|
|
docker exec ${DOCKER_ID} update-locale LANG=${LANG}
|
|
|
|
|
fi
|
|
|
|
@@ -274,7 +290,7 @@ case "$mode" in
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "echo >> /etc/apt/preferences"
|
|
|
|
|
done
|
|
|
|
|
if test -n "${keys[@]}"; then # fix dependency bug in cosmic and stretch
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} ${PREVENT} gnupg
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} ${PREVENT// /- }- gnupg
|
|
|
|
|
for key in "${keys[@]}"; do
|
|
|
|
|
wget -O- "$key" \
|
|
|
|
|
| docker exec -i ${DOCKER_ID} apt-key add -
|
|
|
|
@@ -286,7 +302,7 @@ case "$mode" in
|
|
|
|
|
|
|
|
|
|
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
|
|
|
|
|
for package in "${packages[@]}"; do
|
|
|
|
|
ifthenelse "${package}" "apt-get install ${OPTIONS} ${PREVENT} ARG"
|
|
|
|
|
ifthenelse "${package}" "apt-get install ${OPTIONS} ${PREVENT// /- }- ARG"
|
|
|
|
|
done
|
|
|
|
|
for command in "${commands[@]}"; do
|
|
|
|
|
ifthenelse "${command}" "ARG"
|
|
|
|
@@ -323,8 +339,8 @@ EOF
|
|
|
|
|
docker exec -i ${DOCKER_ID} rm rpm-key
|
|
|
|
|
done
|
|
|
|
|
for repo in "${repos[@]}"; do
|
|
|
|
|
INSTALL_REPO=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper ar) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo wget -O/etc/yum.repos.d/additional$i.repo) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo false))
|
|
|
|
|
ifthenelse "${repo}" "${INSTALL_REPO} 'ARG'"
|
|
|
|
|
INSTALL_REPO=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper ar) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo yum-config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo false))
|
|
|
|
|
ifthenelse "${repo}" "${INSTALL_REPO} ARG"
|
|
|
|
|
((++i))
|
|
|
|
|
done
|
|
|
|
|
for package in "${packages[@]}"; do
|
|
|
|
@@ -347,7 +363,7 @@ docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${h
|
|
|
|
|
# not supported in trusty and jessie
|
|
|
|
|
if test "$mode" = deb -a "${img//trusty/}" = "${img}" -a "${img//jessie/}" = "${img}"; then
|
|
|
|
|
if test "${targets//deb/}" != "${targets}" && ls *.deb > /dev/null 2> /dev/null; then
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "apt-get install ${OPTIONS} ${PREVENT} /workdir/*.deb"
|
|
|
|
|
docker exec ${DOCKER_ID} bash -c "apt-get install ${OPTIONS} ${PREVENT// /- }- /workdir/*.deb"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
if test "$mode" = rpm -a "${targets//rpm/}" != "${targets}"; then
|
|
|
|
|