Merge pull request #101 from mlocati/restore-apt-packages

Restore previously installed APT packages
pull/102/head
Michele Locati 2020-01-23 14:58:17 +01:00 committed by GitHub
commit b09dce66d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 1 deletions

View File

@ -62,6 +62,10 @@ jobs:
name: Test extensions on Debian 10 (buster)
env: DOCKER_DISTRO=buster
- <<: *test-extensions-job-template
name: Test restoring previous packages
script: docker run --rm --volume "$TRAVIS_BUILD_DIR:/app" --workdir /app php:7.3-stretch ./scripts/test-restore-apt
- stage: Update docs
name: Update README.md
if: branch = master AND type = push

View File

@ -199,6 +199,7 @@ sortModulesToInstall() {
# Set:
# PACKAGES_PERSISTENT
# PACKAGES_VOLATILE
# PACKAGES_PREVIOUS
buildRequiredPackageLists() {
buildRequiredPackageLists_persistent=''
buildRequiredPackageLists_volatile=''
@ -634,6 +635,7 @@ buildRequiredPackageLists() {
done
PACKAGES_PERSISTENT=''
PACKAGES_VOLATILE=''
PACKAGES_PREVIOUS=''
if test -z "$buildRequiredPackageLists_persistent$buildRequiredPackageLists_volatile"; then
return
fi
@ -643,7 +645,6 @@ buildRequiredPackageLists() {
;;
debian)
DEBIAN_FRONTEND=noninteractive apt-get update -q
DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y -q
;;
esac
if test -n "$buildRequiredPackageLists_persistent"; then
@ -665,6 +666,13 @@ buildRequiredPackageLists() {
done
PACKAGES_VOLATILE="${PACKAGES_VOLATILE# }"
fi
if test -n "$PACKAGES_PERSISTENT$PACKAGES_VOLATILE"; then
case "$buildRequiredPackageLists_distro" in
debian)
PACKAGES_PREVIOUS="$(dpkg --get-selections | grep -E '\sinstall$' | awk '{ print $1 }')"
;;
esac
fi
}
# Get the full list of APT/APK packages that will be installed, given the required packages
@ -1290,6 +1298,14 @@ cleanup() {
;;
esac
fi
if test -n "$PACKAGES_PREVIOUS"; then
case "$cleanup_distro" in
debian)
printf '### RESTORING PREVIOUSLY INSTALLED PACKAGES ###\n'
DEBIAN_FRONTEND=noninteractive apt-get install -qqy $PACKAGES_PREVIOUS
;;
esac
fi
case "$cleanup_distro" in
alpine)
rm -rf /var/cache/apk/*

View File

@ -23,6 +23,7 @@ shfmt $PARAMS \
scripts/common \
scripts/invoke-shfmt \
scripts/lint \
scripts/test-restore-apt \
scripts/travisci-test-extensions \
scripts/travisci-update-readme \
scripts/update-readme

18
scripts/test-restore-apt Executable file
View File

@ -0,0 +1,18 @@
#!/bin/sh
# Let's set a sane environment
set -o errexit
set -o nounset
apt-get update -qq
apt-get upgrade -qqy
apt-get install -qqy libssl-dev
./install-php-extensions zip
if test -z "$(dpkg --get-selections | grep -E '^libssl-dev[:\s].*install$')"; then
echo 'The libssl-dev APT package has not been restored.' >&2
exit 1
fi
echo 'The libssl-dev APT package has been correctly restored.'