File: wheels.yaml

package info (click to toggle)
breezy 3.3.21-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 40,760 kB
  • sloc: python: 279,676; ansic: 1,093; makefile: 367; sh: 284; lisp: 107
file content (142 lines) | stat: -rw-r--r-- 6,381 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Build Python Wheels

on:
  push:
  pull_request:
  schedule:
    - cron: "0 6 * * *" # Daily 6AM UTC build

jobs:
  define-matrix:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.merged-identifiers.outputs.merged-identifiers }}

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
          cache: pip
      - name: Install jq
        run: sudo apt-get update && sudo apt-get install -y jq
      - name: Install cibuildwheel
        run: pip install 'cibuildwheel>=3.0'
      - name: Find build identifiers using cibuildwheel --print-build-identifiers
        id: all-build-identifiers
        run: |
          echo "linux=$(cibuildwheel --platform linux --print-build-identifiers | tr '\n' ' ')" >> $GITHUB_OUTPUT
          echo "macos=$(cibuildwheel --platform macos --print-build-identifiers | tr '\n' ' ')" >> $GITHUB_OUTPUT
          echo "windows=$(cibuildwheel --platform windows --print-build-identifiers | tr '\n' ' ')" >> $GITHUB_OUTPUT
      - name: Select build identifiers
        id: select-build-identifiers
        run: |
          if [[ "$GITHUB_REF" = "refs/heads/main" ]] || [[ "$GITHUB_REF" = "refs/heads/master" ]] || [[ "$GITHUB_REF" = "refs/tags/"* ]]; then
            echo 'linux=${{ steps.all-build-identifiers.outputs.linux }}' >> $GITHUB_OUTPUT
            echo 'windows=${{ steps.all-build-identifiers.outputs.windows }}' >> $GITHUB_OUTPUT
            echo 'macos=${{ steps.all-build-identifiers.outputs.macos }}' >> $GITHUB_OUTPUT
          else
            echo "linux=$(echo -n '${{ steps.all-build-identifiers.outputs.linux }}' | awk '{print $NF}')" >> $GITHUB_OUTPUT
            echo "macos=$(echo -n '${{ steps.all-build-identifiers.outputs.macos }}' | awk '{print $NF}')" >> $GITHUB_OUTPUT
            echo "windows=$(echo -n '${{ steps.all-build-identifiers.outputs.windows }}' | awk '{print $NF}')" >> $GITHUB_OUTPUT
          fi
      - name: Output build identifiers
        id: json-identifiers
        run: |
          echo "linux=$(echo -n '${{ steps.select-build-identifiers.outputs.linux }}' | jq -R -s -c 'split(" ") | map(select(length > 0)) | [.[] | {os: "ubuntu-latest", "build-identifier": .}]')" >> $GITHUB_OUTPUT
          echo "macos=$(echo -n '${{ steps.select-build-identifiers.outputs.macos }}' | jq -R -s -c 'split(" ") | map(select(length > 0)) | [.[] | {os: "macos-latest", "build-identifier": .}]')" >> $GITHUB_OUTPUT
          echo "windows=$(echo -n '${{ steps.select-build-identifiers.outputs.windows }}' | jq -R -s -c 'split(" ") | map(select(length > 0)) | [.[] | {os: "windows-latest", "build-identifier": .}]')" >> $GITHUB_OUTPUT
      - name: Merge build identifiers
        id: merged-identifiers
        run: |
          echo merged-identifiers=$(echo -n '${{ steps.json-identifiers.outputs.linux }} ${{ steps.json-identifiers.outputs.macos }} ${{ steps.json-identifiers.outputs.windows }}' | jq -c -s 'add') >> $GITHUB_OUTPUT

  build-wheels:
    runs-on: ${{ matrix.os }}
    needs: define-matrix
    strategy:
      matrix:
        include: ${{ fromJSON(needs.define-matrix.outputs.matrix ) }}
      fail-fast: true

    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - name: Install native dependencies (Ubuntu)
        run: sudo apt-get update && sudo apt-get install -y libgpgme-dev libgpg-error-dev
        if: "matrix.os == 'ubuntu-latest'"
      - name: set up rust
        if: matrix.os != 'ubuntu'
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
      - name: Install native dependencies (MacOS)
        run: brew install swig gpgme
        if: "matrix.os == 'macos-latest'"
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install setuptools wheel 'cibuildwheel>=3.0'
      - name: Provide gpgme-config and gpg-error-config
        if: "matrix.os == 'ubuntu-latest'"
        run: |
          mkdir -p "$HOME/.local/bin"
          cp .github/gpgme-config "$HOME/.local/bin/gpgme-config"
          cp .github/gpg-error-config "$HOME/.local/bin/gpg-error-config"
          echo "$HOME/.local/bin" >> $GITHUB_PATH
      - name: Install gpg on supported platforms
        run: pip install -U gpg
        if: "matrix.os != 'windows-latest'"
      - 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
        env:
          CIBW_SKIP: "*musllinux*"
          CIBW_ARCHS_MACOS: x86_64 arm64 universal2
          CIBW_BUILD: "${{ matrix.build-identifier }}*"
          CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH" PYO3_USE_ABI3_FORWARD_COMPATIBILITY="1" MACOSX_DEPLOYMENT_TARGET="10.12"'
          CIBW_BEFORE_BUILD: >
            pip install -U setuptools-rust &&
            curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=nightly --profile=minimal -y &&
            rustup show
          CIBW_BEFORE_BUILD_LINUX: >
            pip install -U setuptools-rust &&
            yum install libatomic -y &&
            curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=nightly --profile=minimal -y &&
            rustup show
          CIBW_BEFORE_BUILD_MACOS: >
            pip install -U setuptools-rust &&
            curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=nightly --profile=minimal -y &&
            rustup target add x86_64-apple-darwin &&
            rustup show
      - name: Upload wheels
        uses: actions/upload-artifact@v4
        with:
          name: artifact-${{ matrix.build-identifier }}
          path: ./wheelhouse/*.whl

  publish:
    runs-on: ubuntu-latest

    needs: build-wheels
    if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/brz-')
    permissions:
      id-token: write
    environment:
      name: pypi
      url: https://pypi.org/p/breezy
    steps:
      - name: Download distributions
        uses: actions/download-artifact@v4
        with:
          merge-multiple: true
          pattern: artifact-*
          path: dist
      - name: Publish package distributions to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1