Explorar o código

Merge pull request #9187 from ThomasWaldmann/fix-binary-build-gh-1.4

CI: install fuse bindings for binary build, fixes #9182
TW hai 1 semana
pai
achega
402dd30388
Modificáronse 1 ficheiros con 41 adicións e 23 borrados
  1. 41 23
      .github/workflows/ci.yml

+ 41 - 23
.github/workflows/ci.yml

@@ -176,9 +176,12 @@ jobs:
       run: |
         sudo apt-get update
         sudo apt-get install -y libssl-dev libacl1-dev liblz4-dev libzstd-dev pkg-config build-essential
-        sudo apt-get install -y libxxhash-dev || true
-        sudo apt-get install -y libfuse-dev fuse || true  # Required for Python llfuse module
-        sudo apt-get install -y libfuse3-dev fuse3 || true  # Required for Python pyfuse3 module
+        sudo apt-get install -y libxxhash-dev
+        if [[ "$TOXENV" == *"fuse2"* ]]; then
+          sudo apt-get install -y libfuse-dev fuse  # Required for Python llfuse module
+        elif [[ "$TOXENV" == *"fuse3"* ]]; then
+          sudo apt-get install -y libfuse3-dev fuse3  # Required for Python pyfuse3 module
+        fi
 
     - name: Install macOS packages
       if: ${{ runner.os == 'macOS' }}
@@ -191,28 +194,21 @@ jobs:
 
     - name: Install BorgBackup
       run: |
-        pip install -ve .
-
-    - name: Run pytest via tox
-      run: |
-        # Do not use fakeroot; run as root. Avoids the dreaded sporadic EISDIR failures; see #2482.
-        #sudo -E bash -c "tox -e py"
-        tox --skip-missing-interpreters
-
-    - name: Upload coverage to Codecov
-      uses: codecov/codecov-action@v4
-      env:
-        OS: ${{ runner.os }}
-        python: ${{ matrix.python-version }}
-      with:
-        token: ${{ secrets.CODECOV_TOKEN }}
-        env_vars: OS, python
+        if [[ "$TOXENV" == *"fuse2"* ]]; then
+          pip install -ve ".[llfuse]"
+        elif [[ "$TOXENV" == *"fuse3"* ]]; then
+          pip install -ve ".[pyfuse3]"
+        else
+          pip install -ve .
+        fi
 
     - name: Build Borg fat binaries (${{ matrix.binary }})
       if: ${{ matrix.binary && startsWith(github.ref, 'refs/tags/') }}
       run: |
         pip install 'pyinstaller==6.14.2'
         mkdir -p dist/binary
+        # Ensure locally built binaries in ./dist/binary are found during tox tests
+        echo "$GITHUB_WORKSPACE/dist/binary" >> "$GITHUB_PATH"
         pyinstaller --clean --distpath=dist/binary scripts/borg.exe.spec
 
     - name: Smoke-test the built binary (${{ matrix.binary }})
@@ -227,6 +223,8 @@ jobs:
         ./borg-dir/borg.exe -V
         tar czf borg.tgz borg-dir
         popd
+        echo "borg.exe binary in PATH"
+        borg.exe -V
 
     - name: Prepare binaries (${{ matrix.binary }})
       if: ${{ matrix.binary && startsWith(github.ref, 'refs/tags/') }}
@@ -255,6 +253,21 @@ jobs:
         path: artifacts/*
         if-no-files-found: error
 
+    - name: Run pytest via tox
+      run: |
+        # Do not use fakeroot; run as root. Avoids the dreaded sporadic EISDIR failures; see #2482.
+        #sudo -E bash -c "tox -e py"
+        tox --skip-missing-interpreters
+
+    - name: Upload coverage to Codecov
+      uses: codecov/codecov-action@v4
+      env:
+        OS: ${{ runner.os }}
+        python: ${{ matrix.python-version }}
+      with:
+        token: ${{ secrets.CODECOV_TOKEN }}
+        env_vars: OS, python
+
   vm_tests:
 
     # Cross-OS tests running inside VMs, aligned with master branch structure.
@@ -317,8 +330,10 @@ jobs:
               export IGNORE_OSVERSION=yes
               sudo -E pkg update -f
               sudo -E pkg install -y xxhash liblz4 zstd pkgconf
-              # Install one of the FUSE libraries; fail if neither is available
-              sudo -E pkg install -y fusefs-libs || sudo -E pkg install -y fusefs-libs3
+              sudo -E pkg install -y fusefs-libs
+              sudo -E kldload fusefs
+              sudo -E sysctl vfs.usermount=1
+              sudo -E chmod 666 /dev/fuse
               sudo -E pkg install -y rust
               sudo -E pkg install -y git
               sudo -E pkg install -y python310 py310-sqlite3
@@ -333,8 +348,7 @@ jobs:
               pip -V
               python -m pip install --upgrade pip wheel
               pip install -r requirements.d/development.txt
-              pip install -e .
-              tox -e py311-none
+              pip install -e ".[llfuse]"
               if [[ "${{ matrix.do_binaries }}" == "true" && "${{ startsWith(github.ref, 'refs/tags/') }}" == "true" ]]; then
                 python -m pip install 'pyinstaller==6.14.2'
                 mkdir -p dist/binary
@@ -355,7 +369,11 @@ jobs:
                 if [ -f dist/binary/borg.tgz ]; then
                   cp -v dist/binary/borg.tgz artifacts/${{ matrix.artifact_prefix }}.tgz
                 fi
+                echo "binary files"
+                ls -l artifacts/
               fi
+              export PATH="$(pwd)/dist/binary:$PATH"
+              tox -e py311-fuse2
               ;;
             netbsd)
               # Ensure a proper hostname/FQDN is set (VMs may not have one by default)