From 6a0370aea9750b22c05a1acb8651e599317dea6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Mon, 6 May 2024 13:00:15 +0100 Subject: [PATCH 1/5] Build wheels from github --- .github/workflows/wheels.yaml | 88 +++++++++++++++++++++++++++++++++++ pyproject.toml | 3 ++ 2 files changed, 91 insertions(+) create mode 100644 .github/workflows/wheels.yaml diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml new file mode 100644 index 00000000..63a7dbcf --- /dev/null +++ b/.github/workflows/wheels.yaml @@ -0,0 +1,88 @@ +name: Build Python distributions + +on: + push: + pull_request: + schedule: + - cron: "0 6 * * *" # Daily 6AM UTC build + +jobs: + build-wheels: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + fail-fast: true + + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel fastimport paramiko urllib3 cibuildwheel setuptools-rust + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + if: "matrix.os == 'ubuntu-latest'" + - name: Build wheels + run: python -m cibuildwheel --output-dir wheelhouse + - name: Upload wheels + uses: actions/upload-artifact@v3 + with: + path: ./wheelhouse/*.whl + + build-sdist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install build + - name: Build sdist + run: python -m build --sdist + - name: Upload sdist + uses: actions/upload-artifact@v3 + with: + path: ./dist/*.tar.gz + + test-sdist: + needs: + - build-sdist + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v5 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install twine + - name: Download sdist + uses: actions/download-artifact@v2 + with: + name: artifact + path: dist + - name: Test sdist + run: twine check dist/* + - name: Test installation from sdist + run: pip install dist/*.tar.gz + + publish: + runs-on: ubuntu-latest + needs: + - build-wheels + - build-sdist + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/subvertpy-') + permissions: + id-token: write + environment: + name: pypi + url: https://pypi.org/p/subvertpy + steps: + - name: Download distributions + uses: actions/download-artifact@v2 + with: + name: artifact + path: dist + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/pyproject.toml b/pyproject.toml index f131a1bf..ed674101 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,9 @@ dev = ["ruff==0.4.3"] environment = {PATH="$HOME/.cargo/bin:$PATH"} before-build = "pip install -U setuptools-rust && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && rustup show" +[tool.cibuildwheel.linux] +before-build = "yum install -y apr-devel apr-util-devel lz4-devel sqlite-devel zlib-devel sasl2-devel db5-devel neon-devel utf8proc-devel serf-devel subversion-devel" + [tool.ruff.lint] select = [ "ANN", From 77f466413a7a29dcb59e54809b78fb6b085be7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Mon, 6 May 2024 13:40:53 +0100 Subject: [PATCH 2/5] Fix sdist building --- .github/workflows/wheels.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index 63a7dbcf..d91c0a6a 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -36,6 +36,10 @@ jobs: steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 + - name: Install dependencies (apt) + run: | + sudo apt update + sudo apt install libapr1-dev libaprutil1-dev libdb5.3-dev liblz4-dev libsasl2-dev libperl-dev libserf-dev libsqlite3-dev libtool python-all-dev libneon27-gnutls-dev libutf8proc-dev - name: Install dependencies run: | python -m pip install --upgrade pip @@ -53,6 +57,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/setup-python@v5 + - name: Install dependencies (apt) + run: | + sudo apt update + sudo apt install libapr1-dev libaprutil1-dev libdb5.3-dev liblz4-dev libsasl2-dev libperl-dev libserf-dev libsqlite3-dev libtool python-all-dev libneon27-gnutls-dev libutf8proc-dev - name: Install dependencies run: | python -m pip install --upgrade pip From 549cbf711bababe473ed7e9d4d70566dc3437e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Mon, 6 May 2024 13:42:03 +0100 Subject: [PATCH 3/5] Fix cyrus-sasl-devel package name for RH --- .github/workflows/wheels.yaml | 6 +++--- MANIFEST.in | 2 ++ pyproject.toml | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/wheels.yaml b/.github/workflows/wheels.yaml index d91c0a6a..13f433b7 100644 --- a/.github/workflows/wheels.yaml +++ b/.github/workflows/wheels.yaml @@ -20,7 +20,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel fastimport paramiko urllib3 cibuildwheel setuptools-rust + pip install --upgrade setuptools wheel fastimport paramiko urllib3 cibuildwheel setuptools-rust - name: Set up QEMU uses: docker/setup-qemu-action@v3 if: "matrix.os == 'ubuntu-latest'" @@ -39,7 +39,7 @@ jobs: - name: Install dependencies (apt) run: | sudo apt update - sudo apt install libapr1-dev libaprutil1-dev libdb5.3-dev liblz4-dev libsasl2-dev libperl-dev libserf-dev libsqlite3-dev libtool python-all-dev libneon27-gnutls-dev libutf8proc-dev + sudo apt install libapr1-dev libaprutil1-dev libdb5.3-dev liblz4-dev libsasl2-dev libperl-dev libserf-dev libsqlite3-dev libtool python-all-dev libneon27-gnutls-dev libutf8proc-dev libsvn-dev - name: Install dependencies run: | python -m pip install --upgrade pip @@ -60,7 +60,7 @@ jobs: - name: Install dependencies (apt) run: | sudo apt update - sudo apt install libapr1-dev libaprutil1-dev libdb5.3-dev liblz4-dev libsasl2-dev libperl-dev libserf-dev libsqlite3-dev libtool python-all-dev libneon27-gnutls-dev libutf8proc-dev + sudo apt install libapr1-dev libaprutil1-dev libdb5.3-dev liblz4-dev libsasl2-dev libperl-dev libserf-dev libsqlite3-dev libtool python-all-dev libneon27-gnutls-dev libutf8proc-dev libsvn-dev - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/MANIFEST.in b/MANIFEST.in index d7fcd217..1cbfe5f6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -7,3 +7,5 @@ include README.md include Makefile include subvertpy.cfg include man/*.1 +recursive-include subr Cargo.toml *.rs +include Cargo.lock Cargo.toml diff --git a/pyproject.toml b/pyproject.toml index ed674101..b2982bbc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=61.2", "setuptools_rust"] +requires = ["setuptools", "setuptools_rust"] build-backend = "setuptools.build_meta" [project.optional-dependencies] @@ -10,7 +10,7 @@ environment = {PATH="$HOME/.cargo/bin:$PATH"} before-build = "pip install -U setuptools-rust && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && rustup show" [tool.cibuildwheel.linux] -before-build = "yum install -y apr-devel apr-util-devel lz4-devel sqlite-devel zlib-devel sasl2-devel db5-devel neon-devel utf8proc-devel serf-devel subversion-devel" +before-build = "pip install -U setuptools-rust && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && yum install -y apr-devel apr-util-devel lz4-devel sqlite-devel zlib-devel cyrus-sasl-devel neon-devel utf8proc-devel subversion-devel" [tool.ruff.lint] select = [ From 4cbb99ffe30eafe5a33c3679e3feed8a220843fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Mon, 6 May 2024 15:04:18 +0100 Subject: [PATCH 4/5] Require at least Python 3.8 --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index b2982bbc..909c7b17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,6 +79,7 @@ classifiers = [ ] urls = {Homepage = "https://github.com/jelmer/subvertpy"} dynamic = ["version"] +requires-python = ">=3.8" [tool.setuptools] include-package-data = false From 338cc8fc6240f29b36b4f8aab184dc97b97d7ce9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Mon, 6 May 2024 15:21:13 +0100 Subject: [PATCH 5/5] Install clang --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 909c7b17..5b8df0b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ environment = {PATH="$HOME/.cargo/bin:$PATH"} before-build = "pip install -U setuptools-rust && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && rustup show" [tool.cibuildwheel.linux] -before-build = "pip install -U setuptools-rust && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && yum install -y apr-devel apr-util-devel lz4-devel sqlite-devel zlib-devel cyrus-sasl-devel neon-devel utf8proc-devel subversion-devel" +before-build = "pip install -U setuptools-rust && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && yum install -y apr-devel apr-util-devel lz4-devel sqlite-devel zlib-devel cyrus-sasl-devel neon-devel utf8proc-devel subversion-devel clang clang-devel" [tool.ruff.lint] select = [