diff --git a/.github/action.sh b/.github/action.sh new file mode 100755 index 0000000..1184ab8 --- /dev/null +++ b/.github/action.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -e +set -o pipefail + +ACTION="$(basename "$0")" +ACTION="${ACTION%.sh}" + +SCRIPT_CANDIDATES=( + "$PWD/.github/${ACTION}/${IMAGE//\//-}.sh" + "$PWD/.github/${ACTION}/${IMAGE%/*}.sh" +) + +for SCRIPT in "${SCRIPT_CANDIDATES[@]}"; do + if [[ -f "${SCRIPT}" ]]; then + bash "${SCRIPT}" | cat + exit $? + fi +done + +echo "Could not find script in any of these paths:" +for SCRIPT in "${SCRIPT_CANDIDATES[@]}"; do + echo " ${SCRIPT}" +done +echo "" +echo "Don't know how to do step '${ACTION}' for ${IMAGE}!" +echo "" +exit 1 diff --git a/.github/install-debian.sh b/.github/install-debian.sh deleted file mode 120000 index 88ef419..0000000 --- a/.github/install-debian.sh +++ /dev/null @@ -1 +0,0 @@ -install-ubuntu.sh \ No newline at end of file diff --git a/.github/install.sh b/.github/install.sh deleted file mode 100755 index ac1d074..0000000 --- a/.github/install.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -e -set -o pipefail - -INSTALL_SCRIPT_CANDIDATES=( - "$PWD/.github/install-${IMAGE//\//-}.sh" - "$PWD/.github/install-${IMAGE%/*}.sh" -) - -for INSTALL_SCRIPT in "${INSTALL_SCRIPT_CANDIDATES[@]}"; do - if [[ -f "${INSTALL_SCRIPT}" ]]; then - bash "${INSTALL_SCRIPT}" | cat - exit $? - fi -done - -echo "Could not find install script in any of these paths:" -for INSTALL_SCRIPT in "${INSTALL_SCRIPT_CANDIDATES[@]}"; do - echo " ${INSTALL_SCRIPT}" -done -echo "" -echo "Don't know how to install packages for ${IMAGE}!" -echo "" -exit 1 diff --git a/.github/install.sh b/.github/install.sh new file mode 120000 index 0000000..2ed4666 --- /dev/null +++ b/.github/install.sh @@ -0,0 +1 @@ +action.sh \ No newline at end of file diff --git a/.github/install-alpine.sh b/.github/install/alpine.sh similarity index 96% rename from .github/install-alpine.sh rename to .github/install/alpine.sh index c5b68e9..267426a 100755 --- a/.github/install-alpine.sh +++ b/.github/install/alpine.sh @@ -4,8 +4,6 @@ # set -ex -apk update - # Base build packages PACKAGES=( clang diff --git a/.github/install-archlinux.sh b/.github/install/archlinux.sh similarity index 92% rename from .github/install-archlinux.sh rename to .github/install/archlinux.sh index 3c1e2f5..0ea61a9 100755 --- a/.github/install-archlinux.sh +++ b/.github/install/archlinux.sh @@ -19,7 +19,6 @@ PACKAGES+=(protobuf) PACKAGES+=(openssl) PACKAGES+=(libsodium) -pacman --noconfirm -Syu pacman --noconfirm -Sy "${PACKAGES[@]}" exit 0 diff --git a/.github/install/debian.sh b/.github/install/debian.sh new file mode 120000 index 0000000..f215cf2 --- /dev/null +++ b/.github/install/debian.sh @@ -0,0 +1 @@ +ubuntu.sh \ No newline at end of file diff --git a/.github/install-fedora.sh b/.github/install/fedora.sh similarity index 73% rename from .github/install-fedora.sh rename to .github/install/fedora.sh index 41b393e..4fd0ebc 100755 --- a/.github/install-fedora.sh +++ b/.github/install/fedora.sh @@ -23,12 +23,6 @@ PACKAGES+=(protobuf-compiler protobuf-devel) PACKAGES+=(openssl-devel) PACKAGES+=(libsodium-devel) -if ! grep '^fastestmirror' /etc/dnf/dnf.conf; then - echo 'fastestmirror=1' >> /etc/dnf/dnf.conf -fi - -dnf clean all -dnf update -y dnf install -y "${PACKAGES[@]}" exit 0 diff --git a/.github/install-opensuse.sh b/.github/install/opensuse.sh similarity index 94% rename from .github/install-opensuse.sh rename to .github/install/opensuse.sh index 4c9d0b9..5d32de9 100755 --- a/.github/install-opensuse.sh +++ b/.github/install/opensuse.sh @@ -21,7 +21,6 @@ PACKAGES+=(protobuf-devel) PACKAGES+=(libopenssl-devel) PACKAGES+=(libsodium-devel) -zypper update -y zypper install -y "${PACKAGES[@]}" exit 0 diff --git a/.github/install-ubuntu.sh b/.github/install/ubuntu.sh similarity index 86% rename from .github/install-ubuntu.sh rename to .github/install/ubuntu.sh index 395506b..792a39d 100755 --- a/.github/install-ubuntu.sh +++ b/.github/install/ubuntu.sh @@ -8,8 +8,6 @@ APT_FLAGS=(-q -oDpkg::Use-Pty=0) export DEBIAN_FRONTEND=noninteractive -apt-get ${APT_FLAGS[@]} update -apt-get ${APT_FLAGS[@]} dist-upgrade -y apt-get ${APT_FLAGS[@]} install -y locales locale-gen en_US.UTF-8 diff --git a/.github/update-packages.sh b/.github/update-packages.sh new file mode 120000 index 0000000..2ed4666 --- /dev/null +++ b/.github/update-packages.sh @@ -0,0 +1 @@ +action.sh \ No newline at end of file diff --git a/.github/update-packages/alpine.sh b/.github/update-packages/alpine.sh new file mode 100755 index 0000000..00cdc56 --- /dev/null +++ b/.github/update-packages/alpine.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# This is an install script for Alpine-specific package updates. +# +set -ex + +apk update + +exit 0 diff --git a/.github/update-packages/archlinux.sh b/.github/update-packages/archlinux.sh new file mode 100755 index 0000000..c636095 --- /dev/null +++ b/.github/update-packages/archlinux.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# This is an install script for Arch Linux-specific package updates. +# +set -ex + +pacman --noconfirm -Syu + +exit 0 diff --git a/.github/update-packages/debian.sh b/.github/update-packages/debian.sh new file mode 120000 index 0000000..f215cf2 --- /dev/null +++ b/.github/update-packages/debian.sh @@ -0,0 +1 @@ +ubuntu.sh \ No newline at end of file diff --git a/.github/update-packages/fedora.sh b/.github/update-packages/fedora.sh new file mode 100755 index 0000000..4b6fa4d --- /dev/null +++ b/.github/update-packages/fedora.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# +# This is an install script for Fedora-specific package updates. +# +set -ex + +if ! grep '^fastestmirror' /etc/dnf/dnf.conf; then + echo 'fastestmirror=1' >> /etc/dnf/dnf.conf +fi + +dnf clean all +dnf update -y + +exit 0 diff --git a/.github/update-packages/opensuse.sh b/.github/update-packages/opensuse.sh new file mode 100755 index 0000000..e972f93 --- /dev/null +++ b/.github/update-packages/opensuse.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# This is an install script for OpenSuSE-specific package updates. +# +set -ex + +zypper update -y + +exit 0 diff --git a/.github/update-packages/ubuntu.sh b/.github/update-packages/ubuntu.sh new file mode 100755 index 0000000..a092133 --- /dev/null +++ b/.github/update-packages/ubuntu.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# +# This is an install script for Debian/Ubuntu-specific package updates. +# +set -ex + +APT_FLAGS=(-q -oDpkg::Use-Pty=0) + +export DEBIAN_FRONTEND=noninteractive + +apt-get ${APT_FLAGS[@]} update +apt-get ${APT_FLAGS[@]} dist-upgrade -y + +exit 0 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1ce5f5f..304688d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,6 +44,9 @@ jobs: docker run -d --rm --name github-docker-builder -e LC_ALL="C" -e LANG="C" -v ${{ github.workspace }}:/build -w /build ${{ matrix.docker_image }}:${{ matrix.docker_tag }} tail -f /dev/null docker ps docker exec -e CI_BUILD=1 -e IMAGE=${{ matrix.docker_image }} -e IMAGE_TAG=${{ matrix.docker_tag }} -t github-docker-builder sh .github/preinstall.sh + - name: Update packages + run: | + docker exec -e CI_BUILD=1 -e IMAGE=${{ matrix.docker_image }} -e IMAGE_TAG=${{ matrix.docker_tag }} -t github-docker-builder bash .github/update-packages.sh - name: Install dependencies run: | docker exec -e CI_BUILD=1 -e IMAGE=${{ matrix.docker_image }} -e IMAGE_TAG=${{ matrix.docker_tag }} -t github-docker-builder bash .github/install.sh diff --git a/.travis.yml b/.travis.yml index 6bd4d7a..3fae085 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,6 +45,7 @@ before_install: - docker run -d --rm --cap-add SYS_PTRACE --name $CONTAINER_NAME -e LC_ALL="C" -e LANG="C" -v $(pwd):/build -w /build $IMAGE_PREFIX$IMAGE:$IMAGE_TAG tail -f /dev/null - docker ps - docker exec -e CI_BUILD=1 -e IMAGE=$IMAGE -e IMAGE_TAG=$IMAGE_TAG -t $CONTAINER_NAME sh .github/preinstall.sh + - docker exec -e CI_BUILD=1 -e IMAGE=$IMAGE -e IMAGE_TAG=$IMAGE_TAG -t $CONTAINER_NAME bash .github/update-packages.sh install: - docker exec -e CI_BUILD=1 -e IMAGE=$IMAGE -e IMAGE_TAG=$IMAGE_TAG -t $CONTAINER_NAME bash .github/install.sh