From 74ee0e871c62e4028a3430072a3062684e3a93da Mon Sep 17 00:00:00 2001 From: Zsolt Parragi Date: Wed, 23 Aug 2023 09:07:33 +0200 Subject: [PATCH] Adding basic github actions which test different build modes It also fixes a build error introduced by a recent commit in the PG16 branch. Note: the make build still has warnings in it, this commit doesn't try to fix it. A later commit will add -Werror to the make CI job and fix the warnings. --- .../postgresql-16-pgdg-package-pgxs.yml | 50 ++++++++++++++++ .github/workflows/postgresql-16-src-make.yml | 57 +++++++++++++++++++ .github/workflows/postgresql-16-src-meson.yml | 53 +++++++++++++++++ src/access/pg_tde_io.c | 2 +- src/access/pg_tde_visibilitymap.c | 2 +- 5 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/postgresql-16-pgdg-package-pgxs.yml create mode 100644 .github/workflows/postgresql-16-src-make.yml create mode 100644 .github/workflows/postgresql-16-src-meson.yml diff --git a/.github/workflows/postgresql-16-pgdg-package-pgxs.yml b/.github/workflows/postgresql-16-pgdg-package-pgxs.yml new file mode 100644 index 00000000..77a3812f --- /dev/null +++ b/.github/workflows/postgresql-16-pgdg-package-pgxs.yml @@ -0,0 +1,50 @@ +name: postgresql-16-pgdg-package-pgxs +on: [pull_request, workflow_dispatch] + +jobs: + build: + name: pg-16-pgdg-package-pgxs-build + runs-on: ubuntu-22.04 + steps: + - name: Remove old postgres + run: | + sudo apt-get update + sudo apt purge postgresql-client-common postgresql-common \ + postgresql postgresql* + sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \ + /usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \ + /etc/postgresql + sudo rm -f /usr/bin/pg_config + + - name: Install dependencies + run: | + sudo apt-get install -y libreadline6-dev systemtap-sdt-dev wget \ + zlib1g-dev libssl-dev libpam0g-dev bison flex libipc-run-perl + sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN' + sudo /usr/bin/perl -MCPAN -e 'install Text::Trim' + + - name: Install PG Distribution Postgresql 16 + run: | + sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt \ + $(lsb_release -cs)-pgdg main 16" > /etc/apt/sources.list.d/pgdg.list' + sudo wget --quiet -O - \ + https://www.postgresql.org/media/keys/ACCC4CF8.asc | + sudo apt-key add - + sudo apt update + sudo apt -y install postgresql-16 postgresql-server-dev-16 + + - name: Clone postgres-tde-ext repository + uses: actions/checkout@master + with: + path: 'src/postgres-tde-ext' + + - name: Change src owner to postgres + run: | + sudo chmod o+rx ~ + sudo chown -R postgres:postgres src + + - name: Build postgres-tde-ext + run: | + sudo -u postgres bash -c 'make USE_PGXS=1' + sudo make USE_PGXS=1 install + working-directory: src/postgres-tde-ext diff --git a/.github/workflows/postgresql-16-src-make.yml b/.github/workflows/postgresql-16-src-make.yml new file mode 100644 index 00000000..773839ce --- /dev/null +++ b/.github/workflows/postgresql-16-src-make.yml @@ -0,0 +1,57 @@ +name: postgresql-16-src-make +on: [pull_request, workflow_dispatch] + +jobs: + build: + name: pg-16-src-make-test + runs-on: ubuntu-22.04 + steps: + + + - name: Remove old postgres + run: | + sudo apt purge postgresql-client-common postgresql-common \ + postgresql postgresql* + sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \ + /usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \ + /etc/postgresql + sudo rm -f /usr/bin/pg_config + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libreadline6-dev systemtap-sdt-dev \ + zlib1g-dev libssl-dev libpam0g-dev bison flex \ + libipc-run-perl -y docbook-xsl docbook-xsl libxml2 libxml2-utils \ + libxml2-dev libxslt-dev xsltproc libkrb5-dev libldap2-dev \ + libsystemd-dev gettext tcl-dev libperl-dev pkg-config clang-11 \ + llvm-11 llvm-11-dev libselinux1-dev python3-dev \ + uuid-dev liblz4-dev + sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN' + sudo /usr/bin/perl -MCPAN -e 'install Text::Trim' + + - name: Clone postgres repository + uses: actions/checkout@v2 + with: + repository: 'postgres/postgres' + ref: 'REL_16_STABLE' + path: 'src' + + - name: Clone postgres-tde-ext repository + uses: actions/checkout@v2 + with: + path: 'src/contrib/postgres-tde-ext' + + - name: Create pgsql dir + run: mkdir -p /opt/pgsql + + - name: Build postgres + run: | + ./configure --prefix=/usr --with-openssl + make -j + working-directory: src + + - name: Build postgres-tde-ext + run: | + make -j + working-directory: src/contrib/postgres-tde-ext diff --git a/.github/workflows/postgresql-16-src-meson.yml b/.github/workflows/postgresql-16-src-meson.yml new file mode 100644 index 00000000..777d09e8 --- /dev/null +++ b/.github/workflows/postgresql-16-src-meson.yml @@ -0,0 +1,53 @@ +name: postgresql-16-src-meson +on: [pull_request, workflow_dispatch] + +jobs: + build: + name: pg-16-src-meson-test + runs-on: ubuntu-22.04 + steps: + + + - name: Remove old postgres + run: | + sudo apt purge postgresql-client-common postgresql-common \ + postgresql postgresql* + sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \ + /usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \ + /etc/postgresql + sudo rm -f /usr/bin/pg_config + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libreadline6-dev systemtap-sdt-dev \ + zlib1g-dev libssl-dev libpam0g-dev bison flex \ + libipc-run-perl -y docbook-xsl docbook-xsl libxml2 libxml2-utils \ + libxml2-dev libxslt-dev xsltproc libkrb5-dev libldap2-dev \ + libsystemd-dev gettext tcl-dev libperl-dev pkg-config clang-11 \ + llvm-11 llvm-11-dev libselinux1-dev python3-dev \ + uuid-dev liblz4-dev meson ninja-build + sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN' + sudo /usr/bin/perl -MCPAN -e 'install Text::Trim' + + - name: Clone postgres repository + uses: actions/checkout@v2 + with: + repository: 'postgres/postgres' + ref: 'REL_16_STABLE' + path: 'src' + + - name: Clone postgres-tde-ext repository + uses: actions/checkout@v2 + with: + path: 'src/contrib/postgres-tde-ext' + + - name: Include postgres-tde-ext in meson build + run: | + echo "subdir('postgres-tde-ext')" >> src/contrib/meson.build + + - name: Build postgres + run: | + meson setup build + cd build && ninja + working-directory: src diff --git a/src/access/pg_tde_io.c b/src/access/pg_tde_io.c index 4bab31bb..ae7ed0d2 100644 --- a/src/access/pg_tde_io.c +++ b/src/access/pg_tde_io.c @@ -325,7 +325,7 @@ RelationAddBlocks(Relation relation, BulkInsertState bistate, * [auto]vacuum trying to truncate later pages as REL_TRUNCATE_MINIMUM is * way larger. */ - first_block = ExtendBufferedRelBy(EB_REL(relation), MAIN_FORKNUM, + first_block = ExtendBufferedRelBy(BMR_REL(relation), MAIN_FORKNUM, bistate ? bistate->strategy : NULL, EB_LOCK_FIRST, extend_by_pages, diff --git a/src/access/pg_tde_visibilitymap.c b/src/access/pg_tde_visibilitymap.c index 71c24bff..296927e4 100644 --- a/src/access/pg_tde_visibilitymap.c +++ b/src/access/pg_tde_visibilitymap.c @@ -631,7 +631,7 @@ vm_extend(Relation rel, BlockNumber vm_nblocks) { Buffer buf; - buf = ExtendBufferedRelTo(EB_REL(rel), VISIBILITYMAP_FORKNUM, NULL, + buf = ExtendBufferedRelTo(BMR_REL(rel), VISIBILITYMAP_FORKNUM, NULL, EB_CREATE_FORK_IF_NEEDED | EB_CLEAR_SIZE_CACHE, vm_nblocks,