From 06cd95f898fa178f2d213ee4092dd4c577477ee9 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 01:21:31 +1000 Subject: [PATCH 01/12] Upload deb packages to PPA --- .github/scripts/apt-ftparchive.conf | 11 ++++++++ .github/scripts/config_gpg.sh | 13 ++++++++++ .github/scripts/updatePPA.sh | 37 +++++++++++++++++++++++++++ .github/workflows/create-packages.yml | 28 ++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 .github/scripts/apt-ftparchive.conf create mode 100755 .github/scripts/config_gpg.sh create mode 100755 .github/scripts/updatePPA.sh diff --git a/.github/scripts/apt-ftparchive.conf b/.github/scripts/apt-ftparchive.conf new file mode 100644 index 00000000000..cbdb8900f4b --- /dev/null +++ b/.github/scripts/apt-ftparchive.conf @@ -0,0 +1,11 @@ +APT::FTPArchive::Release { + Origin "Souffle Repository"; + Label "Souffle"; + Suite "stable"; + Codename "stable"; + Version "1.0"; + Architectures "amd64 arm64"; + Components "main"; + Description "Translator of declarative Datalog programs into the C++ language." +}; + diff --git a/.github/scripts/config_gpg.sh b/.github/scripts/config_gpg.sh new file mode 100755 index 00000000000..0fccc84ad63 --- /dev/null +++ b/.github/scripts/config_gpg.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +if [ "$GPG_SIGNING_KEY" = "" ]; then + echo "ERROR: No GPG_SIGNING_KEY defined" + exit 200 +fi + +mkdir -p ~/.gnupg/ +echo "${GPG_SIGNING_KEY}" > ~/.gnupg/private.key +gpg --import ~/.gnupg/private.key + +git config --global user.email "36495947+souffle-lang-bot@users.noreply.github.com" +git config --global user.name "souffle-lang-bot" diff --git a/.github/scripts/updatePPA.sh b/.github/scripts/updatePPA.sh new file mode 100755 index 00000000000..88f1becfbdc --- /dev/null +++ b/.github/scripts/updatePPA.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +BASEDIR=$(pwd) + +DEBPATH=$BASEDIR/downloads + +# Get current tag +SOUFFLE_TAG=$(git describe --tags) + +# Create a temp directory to work out of +cd $(mktemp -d) + +# clone the ppa repo and move into it +git clone "https://x-access-token:$API_TOKEN_GITHUB@github.com/$GITHUB_REPOSITORY_OWNER/ppa" +cd ppa/ubuntu/ +PPADIR=$(pwd) + +mkdir -p pool/stable +cp $DEBPATH/*/*deb pool/stable/ + + +STABLEDIST=${PPADIR}/dists/stable/ + +mkdir -p $STABLEDIST/main/binary-amd64 + +# Make package file for all packages +apt-ftparchive packages -c $BASEDIR/.github/scripts/apt-ftparchive.conf pool/ | tee dists/stable/main/binary-amd64/Packages | gzip > dists/stable/main/binary-amd64/Packages.gz +# Make Release file +apt-ftparchive release -c $BASEDIR/.github/scripts/apt-ftparchive.conf dists/stable/ > dists/stable/Release + +gpg -u A319AEAB83D9859296F41980194B22AF03FAC2DD -abs > ${STABLEDIST}Release.gpg < ${STABLEDIST}Release +gpg -u A319AEAB83D9859296F41980194B22AF03FAC2DD -abs --clearsign > ${STABLEDIST}InRelease < ${STABLEDIST}Release + +git add pool dists +git commit -m "Added files for $SOUFFLE_TAG" + +git push diff --git a/.github/workflows/create-packages.yml b/.github/workflows/create-packages.yml index 615403f5c87..085ea7572ef 100644 --- a/.github/workflows/create-packages.yml +++ b/.github/workflows/create-packages.yml @@ -134,3 +134,31 @@ jobs: with: files: | result/* + + Upload-Repo-Files: + needs: CPack-Package-Build + + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + clean: false + + - name: Download All Artifacts + uses: actions/download-artifact@v2 + with: + path: ./downloads + + - name: Configure GPG Key + run: |- + .github/scripts/config_gpg.sh + env: + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + + - name: Upload Repo Files + env: + API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }} + run : |- + .github/scripts/updatePPA.sh From 9e32888555efdba34cc3508f4b88f00f7e0de83e Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 01:42:43 +1000 Subject: [PATCH 02/12] Switch from killed centos8 to currently alive oraclelinux8 --- .github/images/{centos-8 => oraclelinux-8}/Dockerfile | 2 +- .github/workflows/create-packages.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename .github/images/{centos-8 => oraclelinux-8}/Dockerfile (96%) diff --git a/.github/images/centos-8/Dockerfile b/.github/images/oraclelinux-8/Dockerfile similarity index 96% rename from .github/images/centos-8/Dockerfile rename to .github/images/oraclelinux-8/Dockerfile index 46925e88c1d..6013b603899 100644 --- a/.github/images/centos-8/Dockerfile +++ b/.github/images/oraclelinux-8/Dockerfile @@ -1,4 +1,4 @@ -FROM centos:8 +FROM oraclelinux:8 WORKDIR /souffle diff --git a/.github/workflows/create-packages.yml b/.github/workflows/create-packages.yml index 085ea7572ef..68feed802a1 100644 --- a/.github/workflows/create-packages.yml +++ b/.github/workflows/create-packages.yml @@ -15,7 +15,7 @@ jobs: - release: ubuntu-2104 extension: ".deb" OS-name: "ubuntu/hirsute" - - release: centos-8 + - release: oraclelinux-8 extension: ".rpm" OS-name: "el/8" - release: fedora-34 From 00cd99c71bc2e3c61bae6bf9f0b2b9f68e77d4d9 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 01:45:08 +1000 Subject: [PATCH 03/12] Remove packagecloud --- .github/workflows/create-packages.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/create-packages.yml b/.github/workflows/create-packages.yml index 68feed802a1..3669f687d13 100644 --- a/.github/workflows/create-packages.yml +++ b/.github/workflows/create-packages.yml @@ -33,9 +33,6 @@ jobs: with: fetch-depth: 0 - - name: Packagecloud CLI - run: sudo apt-get -y install ruby-full && sudo gem install package_cloud - - name: Build Container run: docker build . -f ./.github/images/${{ matrix.release }}/Dockerfile -t package_builder @@ -59,11 +56,6 @@ jobs: name: ${{ steps.extract_pkg.outputs.artifact_name }} path: build/${{ steps.extract_pkg.outputs.artifact_name }} - - name: Packaging - run: |- - cd build && - PACKAGECLOUD_TOKEN=${{ secrets.PACKAGECLOUD_TOKEN }} package_cloud push souffle-lang/souffle/${{ matrix.OS-name }} ${{ steps.extract_pkg.outputs.pkg_name }} - Arch-Package-Build: runs-on: ubuntu-latest steps: From 7bf4941e8805c8ef8faacc497b53a26df013250a Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 01:53:25 +1000 Subject: [PATCH 04/12] Add python dependency to arch --- .github/images/arch-linux/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/images/arch-linux/Dockerfile b/.github/images/arch-linux/Dockerfile index cb46a6c7c42..fc94c72ac77 100644 --- a/.github/images/arch-linux/Dockerfile +++ b/.github/images/arch-linux/Dockerfile @@ -3,6 +3,7 @@ FROM archlinux:latest RUN pacman -Syu --noconfirm RUN pacman -Sy --noconfirm \ + python \ git \ base-devel \ cmake \ From 0fddc65b6e19b8b3fd48d77d585319cfa7edcefd Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 12:42:41 +1000 Subject: [PATCH 05/12] Make arch packages use parent repo for context --- .github/images/arch-linux/PKGBUILD.in | 2 +- .github/workflows/create-packages.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/images/arch-linux/PKGBUILD.in b/.github/images/arch-linux/PKGBUILD.in index 820ec37ed54..f5e0d233949 100644 --- a/.github/images/arch-linux/PKGBUILD.in +++ b/.github/images/arch-linux/PKGBUILD.in @@ -21,7 +21,7 @@ makedepends=('git' 'cmake>=3.15' 'bison>=3.0.4' 'flex' 'libffi' 'ncurses' 'zlib' optdepends=('bash-completion') provides=('souffle') conflicts=('souffle-git') -source=(souffle-${RELEASE_TAG}.tar.gz::https://github.com/souffle-lang/souffle/archive/${RELEASE_TAG}.tar.gz) +source=(souffle-${RELEASE_TAG}.tar.gz::https://github.com/${REPO_OWNER}/souffle/archive/${RELEASE_TAG}.tar.gz) md5sums=('SKIP') build() { diff --git a/.github/workflows/create-packages.yml b/.github/workflows/create-packages.yml index 3669f687d13..41322069963 100644 --- a/.github/workflows/create-packages.yml +++ b/.github/workflows/create-packages.yml @@ -75,7 +75,8 @@ jobs: - name: Packaging run: > docker run - -e RELEASE_TAG=${{ steps.prepare.outputs.release_tag }} + -e RELEASE_TAG=${{ steps.prepare.outputs.release_tag }} + -e REPO_OWNER=${{ github.repository_owner }} --name container -t package_builder From a10c36c9073a69c13cd0a6c381ed5e34a79bf007 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 01:59:26 +1000 Subject: [PATCH 06/12] Use oracle replacement for powertools --- .github/images/oraclelinux-8/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/images/oraclelinux-8/Dockerfile b/.github/images/oraclelinux-8/Dockerfile index 6013b603899..81cfbaf9c71 100644 --- a/.github/images/oraclelinux-8/Dockerfile +++ b/.github/images/oraclelinux-8/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /souffle # https://pagure.io/epel/issue/89 RUN yum -y install dnf-plugins-core -RUN dnf config-manager --set-enabled powertools +RUN dnf config-manager --set-enabled ol8_codeready_builder # Install souffle build dependencies RUN dnf -y install \ autoconf \ From 512bb0cfa6760725c5549aebefd2bbb65c84c9c9 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 10:58:42 +1000 Subject: [PATCH 07/12] Run release steps even if some packages failed to build --- .github/workflows/create-packages.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/create-packages.yml b/.github/workflows/create-packages.yml index 41322069963..8bf28c1d0a5 100644 --- a/.github/workflows/create-packages.yml +++ b/.github/workflows/create-packages.yml @@ -107,6 +107,7 @@ jobs: Upload-Release-Assests: needs: CPack-Package-Build + if: ${{ always() }} runs-on: ubuntu-latest steps: @@ -130,6 +131,7 @@ jobs: Upload-Repo-Files: needs: CPack-Package-Build + if: ${{ always() }} runs-on: ubuntu-latest steps: From a79227a754fab07717c59b39e1c84a1371873343 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 11:17:41 +1000 Subject: [PATCH 08/12] Remove EOL ubuntu distro --- .github/workflows/create-packages.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/create-packages.yml b/.github/workflows/create-packages.yml index 8bf28c1d0a5..de10f785bb9 100644 --- a/.github/workflows/create-packages.yml +++ b/.github/workflows/create-packages.yml @@ -12,9 +12,6 @@ jobs: - release: ubuntu-2004 extension: ".deb" OS-name: "ubuntu/focal" - - release: ubuntu-2104 - extension: ".deb" - OS-name: "ubuntu/hirsute" - release: oraclelinux-8 extension: ".rpm" OS-name: "el/8" From bfe6030c2b3fc107318ef628cbe35e667a72d97b Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 11:42:08 +1000 Subject: [PATCH 09/12] Use generic names to identify repo families for building --- CMakeLists.txt | 8 ++++---- sh/check_os.sh | 9 ++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a93784cb95d..15ee81c5b04 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -407,8 +407,8 @@ SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/changelog" "$ # CPack configuration # -------------------------------------------------- if (CHECK_OS_RESULT EQUAL 0) - if (CHECK_OS_OUTPUT MATCHES "UBUNTU") - # Generate just DEB + if (CHECK_OS_OUTPUT MATCHES "DEBIAN") + # Generate DEB packages SET(CPACK_GENERATOR "DEB") # -------------------------------------------------- # Variables relevent to DEB packages @@ -425,12 +425,12 @@ if (CHECK_OS_RESULT EQUAL 0) INCLUDE(CPack) endif() - if (CHECK_OS_OUTPUT MATCHES "FEDORA" OR CHECK_OS_OUTPUT MATCHES "CENTOS") + if (CHECK_OS_OUTPUT MATCHES "FEDORA") SET(CPACK_RPM_PACKAGE_GROUP "Unspecified") SET(CPACK_RPM_PACKAGE_LICENSE "UPL-1.0 License") SET(CPACK_RPM_PACKAGE_VENDOR "Souffle-lang") - # Generate both DEB and RPM packages + # Generate RPM packages SET(CPACK_GENERATOR "RPM") # -------------------------------------------------- diff --git a/sh/check_os.sh b/sh/check_os.sh index e2099216f3b..b8eb63a1932 100755 --- a/sh/check_os.sh +++ b/sh/check_os.sh @@ -8,4 +8,11 @@ else exit 1 fi -grep -G "^ID=" $file | tr a-z A-Z +ID=$(grep -G "^ID_LIKE=" $file | tr a-z A-Z) + +#Fedora is special and has no ID_LIKE +if [ -z $ID ]; then + ID=$(grep -G "^ID=" $file | tr a-z A-Z) +fi + +echo $ID From 1699ea43de848f1303cd6e49964da984fe1f4f69 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Tue, 12 Apr 2022 13:35:05 +1000 Subject: [PATCH 10/12] Add fedora rpm support to PPA script --- .github/scripts/updatePPA.sh | 43 +++++++++++++++++++++++++-- .github/workflows/create-packages.yml | 2 +- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/.github/scripts/updatePPA.sh b/.github/scripts/updatePPA.sh index 88f1becfbdc..ca34464877e 100755 --- a/.github/scripts/updatePPA.sh +++ b/.github/scripts/updatePPA.sh @@ -8,10 +8,13 @@ DEBPATH=$BASEDIR/downloads SOUFFLE_TAG=$(git describe --tags) # Create a temp directory to work out of -cd $(mktemp -d) +TMPDIR=$(mktemp -d) +cd $TMPDIR # clone the ppa repo and move into it git clone "https://x-access-token:$API_TOKEN_GITHUB@github.com/$GITHUB_REPOSITORY_OWNER/ppa" + +#DEB files cd ppa/ubuntu/ PPADIR=$(pwd) @@ -32,6 +35,42 @@ gpg -u A319AEAB83D9859296F41980194B22AF03FAC2DD -abs > ${STABLEDIST}Release.gpg gpg -u A319AEAB83D9859296F41980194B22AF03FAC2DD -abs --clearsign > ${STABLEDIST}InRelease < ${STABLEDIST}Release git add pool dists -git commit -m "Added files for $SOUFFLE_TAG" +git commit -m "Added deb files for $SOUFFLE_TAG" + +#RPM files +## install repo handlers +sudo apt-get update +sudo apt-get install createrepo rpm + +## Set up rpm signing with gpg +echo "%_gpg_name Bot\n%__gpg_sign_cmd %{__gpg} gpg --force-v3-sigs --batch --verbose --no-armor --no-secmem-warning -u \"%{_gpg_name}\" -sbo %{__signature_filename} --digest-algo sha256 %{__plaintext_filename}'" > ~/.rpmmacros + +## Fedora +mkdir -p $TMPDIR/ppa/fedora/34/x86_64 +cd $TMPDIR/ppa/fedora + +for i in $DEBPATH/*fedora-34*/*rpm +do + rpm --addsign $i +done + +cp $DEBPATH/*fedora-34*/*rpm 34/x86_64/ + +createrepo 34/x86_64 + +git add . +git commit -m "Added fedora rpm files for $SOUFFLE_TAG" + +## oraclelinux +mkdir -p $TMPDIR/ppa/ol/8/x86_64 +cd $TMPDIR/ppa/ol + +cp $DEBPATH/*oracle*8*/*rpm 8/x86_64/ + +createrepo 8/x86_64 + +git add . +git commit -m "Added oraclelinux rpm files for $SOUFFLE_TAG" + git push diff --git a/.github/workflows/create-packages.yml b/.github/workflows/create-packages.yml index de10f785bb9..46f76c455d9 100644 --- a/.github/workflows/create-packages.yml +++ b/.github/workflows/create-packages.yml @@ -130,7 +130,7 @@ jobs: needs: CPack-Package-Build if: ${{ always() }} - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v2 From b5139794207c8b51bc442021e761fe5e29b2e364 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Wed, 13 Apr 2022 15:30:54 +1000 Subject: [PATCH 11/12] Add package description for rpm files --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 15ee81c5b04..73d5c3c84a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -429,6 +429,7 @@ if (CHECK_OS_RESULT EQUAL 0) SET(CPACK_RPM_PACKAGE_GROUP "Unspecified") SET(CPACK_RPM_PACKAGE_LICENSE "UPL-1.0 License") SET(CPACK_RPM_PACKAGE_VENDOR "Souffle-lang") + SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}") # Generate RPM packages SET(CPACK_GENERATOR "RPM") From 7a15b74f49cfe5adde98d1f43375116b823b0258 Mon Sep 17 00:00:00 2001 From: Martin McGrane Date: Wed, 13 Apr 2022 18:18:08 +1000 Subject: [PATCH 12/12] Add oraclelinux rpm support to PPA script --- .github/scripts/updatePPA.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/scripts/updatePPA.sh b/.github/scripts/updatePPA.sh index ca34464877e..d4588f3e60b 100755 --- a/.github/scripts/updatePPA.sh +++ b/.github/scripts/updatePPA.sh @@ -65,6 +65,11 @@ git commit -m "Added fedora rpm files for $SOUFFLE_TAG" mkdir -p $TMPDIR/ppa/ol/8/x86_64 cd $TMPDIR/ppa/ol +for i in $DEBPATH/*oracle*8*/*rpm +do + rpm --addsign $i +done + cp $DEBPATH/*oracle*8*/*rpm 8/x86_64/ createrepo 8/x86_64