add check whether built package can be installed; fixed typo in debian development dependencie

This commit is contained in:
Marc Wäckerlin
2018-09-10 21:43:30 +00:00
parent a1f5a5551f
commit ed44b3f321
7 changed files with 120 additions and 66 deletions
+44 -17
View File
@@ -6,7 +6,7 @@ myarch=$(dpkg --print-architecture)
if test "${arch}" = "amd64"; then
myarch="amd64|i386"
fi
mode="deb"
mode=
img="mwaeckerlin/ubuntu:latest"
repos=()
keys=()
@@ -241,35 +241,49 @@ if ! docker exec ${DOCKER_ID} getent passwd $(id -u) > /dev/null 2>&1; then
docker exec ${DOCKER_ID} useradd -m -u $(id -u) -g $(id -g) -d"${HOME}" $(id -un)
fi
docker exec ${DOCKER_ID} chown $(id -u):$(id -g) "${HOME}"
case $mode in
if test -z "$mode"; then
case "$targets" in
(*deb*) mode=deb;;
(*rpm*) mode=rpm;;
(*) case "$img" in
(*ubuntu*|*debian*|*mint*) mode=deb;;
(*fedora*|*centos*|*mageia*) mode=rpm;;
(*mingw*|*win*) mode=win;;
(*) mode=deb;;
esac;;
esac
fi
case "$mode" in
(deb|apt|win)
if [[ "${img}" =~ "ubuntu" ]]; then
docker exec ${DOCKER_ID} locale-gen ${LANG}
docker exec ${DOCKER_ID} update-locale LANG=${LANG}
fi
OPTIONS='-o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew -y --force-yes --no-install-suggests --no-install-recommends'
PREVENT='libpam-systemd policykit.* colord dconf-service'
for f in ${PREVENT}; do
docker exec ${DOCKER_ID} bash -c "echo 'Package: ${f}' >> /etc/apt/preferences"
docker exec ${DOCKER_ID} bash -c "echo 'Pin-Priority: -100' >> /etc/apt/preferences"
docker exec ${DOCKER_ID} bash -c "echo >> /etc/apt/preferences"
done
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 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;
for key in "${keys[@]}"; do
wget -O- "$key" \
| docker exec -i ${DOCKER_ID} apt-key add -
if [[ "${img}" =~ "ubuntu" ]]; then
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
for f in ${PREVENT}; do
docker exec ${DOCKER_ID} bash -c "echo 'Package: ${f}' >> /etc/apt/preferences"
docker exec ${DOCKER_ID} bash -c "echo 'Pin-Priority: -100' >> /etc/apt/preferences"
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
for key in "${keys[@]}"; do
wget -O- "$key" \
| docker exec -i ${DOCKER_ID} apt-key add -
done
fi
for repo in "${repos[@]}"; do
ifthenelse "${repo}" "apt-add-repository 'ARG'"
done
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
for package in "${packages[@]}"; do
ifthenelse "${package}" "apt-get install ${OPTIONS} ${PREVENT} ARG"
@@ -281,7 +295,7 @@ case $mode in
;;
(rpm|yum|dnf|zypper|urpmi)
if [[ "$img" =~ "centos" ]]; then
docker exec ${DOCKER_ID} yum install -y redhat-lsb
docker exec ${DOCKER_ID} yum install -y redhat-lsb epel-release
docker exec -i ${DOCKER_ID} bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo' <<EOF
[WandiscoSVN]
name=Wandisco SVN Repo
@@ -328,3 +342,16 @@ for f in "${flags[@]}"; do
done
docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} "${FLAGS[@]}"
# last check: try to install built deb or rpm files (if not already cleaned up)
if test "${targets//deb/}" != "${targets}"; then
if ls *.deb > /dev/null 2> /dev/null; then
docker exec ${DOCKER_ID} bash -c "apt-get install ${OPTIONS} ${PREVENT} /workdir/*.deb"
fi
fi
if test "${targets//rpm/}" != "${targets}"; then
if ls *.rpm > /dev/null 2> /dev/null; then
docker exec ${DOCKER_ID} bash -c "${INSTALL_TOOL} /workdir/*.rpm"
fi
fi
echo "done."