From ec531bee31556ae1a1e42ced364d97b56a493a5d Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Sun, 23 May 2021 20:42:27 +0200 Subject: [PATCH] Create sdist packages Adapted from the psycopg2-wheels project --- .github/workflows/packages.yml | 52 ++++++++++++++++++++++++++++++++++ scripts/build/build_sdist.sh | 26 +++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 .github/workflows/packages.yml create mode 100755 scripts/build/build_sdist.sh diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml new file mode 100644 index 00000000..aa0f9c52 --- /dev/null +++ b/.github/workflows/packages.yml @@ -0,0 +1,52 @@ +--- +name: Build packages +on: + - workflow_dispatch + + +jobs: + build-sdist: + strategy: + fail-fast: false + matrix: + include: + - package_name: psycopg2 + - package_name: psycopg2-binary + + runs-on: ubuntu-20.04 + steps: + - name: Checkout repos + uses: actions/checkout@v2 + + - name: Build sdist + run: ./scripts/build/build_sdist.sh + env: + PACKAGE_NAME: ${{ matrix.package_name }} + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: packages_sdist + path: | + dist/*/*.tar.gz + + env: + PSYCOPG2_TESTDB: postgres + PSYCOPG2_TESTDB_HOST: 172.17.0.1 + PSYCOPG2_TESTDB_USER: postgres + PSYCOPG2_TESTDB_PASSWORD: password + PSYCOPG2_TEST_FAST: 1 + + services: + postgresql: + image: postgres:13 + env: + POSTGRES_PASSWORD: password + ports: + - 5432:5432 + # Set health checks to wait until postgres has started + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 diff --git a/scripts/build/build_sdist.sh b/scripts/build/build_sdist.sh new file mode 100755 index 00000000..ef7ec518 --- /dev/null +++ b/scripts/build/build_sdist.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +set -euo pipefail +set -x + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PRJDIR="$( cd "${DIR}/../.." && pwd )" + +# Find psycopg version +export VERSION=$(grep -e ^PSYCOPG_VERSION setup.py | sed "s/.*'\(.*\)'/\1/") +# A gratuitous comment to fix broken vim syntax file: '") +export DISTDIR="${PRJDIR}/dist/psycopg2-$VERSION" + +# Replace the package name +if [[ "${PACKAGE_NAME:-}" ]]; then + sed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \ + setup.py +fi + +# Build the source package +python setup.py sdist -d "$DISTDIR" + +# install and test +pip install "${DISTDIR}"/*.tar.gz + +python -c "import tests; tests.unittest.main(defaultTest='tests.test_suite')"