diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 4c80a4b7..b6f67d64 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -21,9 +21,57 @@ concurrency: permissions: contents: read # to fetch code (actions/checkout) +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}-manylinux2014 + jobs: + build-custom-manylinux: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Get changed Dockerfile + id: changed-files-specific + uses: tj-actions/changed-files@v37 + with: + files: | + Dockerfile-manylinux + + - name: Log in to the Container registry + if: steps.changed-files-specific.outputs.any_changed == 'true' + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + if: steps.changed-files-specific.outputs.any_changed == 'true' + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + if: steps.changed-files-specific.outputs.any_changed == 'true' + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + file: ./Dockerfile-manylinux + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build_wheels: name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }} + needs: build-custom-manylinux runs-on: ${{ matrix.buildplat[0] }} strategy: # Ensure that a wheel builder finishes even if another fails diff --git a/Dockerfile-manylinux b/Dockerfile-manylinux new file mode 100644 index 00000000..a702b8b8 --- /dev/null +++ b/Dockerfile-manylinux @@ -0,0 +1,20 @@ +FROM quay.io/pypa/manylinux2014_x86_64:2023-07-14-55e4124 + +RUN yum -y install epel-release && \ + yum repolist + +RUN yum install -y \ + qt5-qtbase-devel qt5-qtsvg-devel \ + rapidjson-devel bison flex doxygen bzip2-devel flex-devel \ + boost-devel \ + boost-python boost-filesystem \ + boost-regex boost-wave \ + python36-devel libxml2-devel \ + qwt-devel \ + ccache \ + eigen3-devel \ + wget + +RUN wget http://lemon.cs.elte.hu/pub/sources/lemon-1.3.1.tar.gz; +RUN tar -xzf lemon-1.3.1.tar.gz; cd lemon-1.3.1; mkdir build; cd build; cmake ..; make install; cd ../.. +