+ if ${{ vars.UPDATE_TO_VERIFICATION && 'true' || 'false' }}; then
+ arch="${{ (matrix.architecture == 'armv7' && 'armv7l') || matrix.architecture }}"
+ chmod +x ./dist/yt-dlp_linux_${arch}
+ cp ./dist/yt-dlp_linux_${arch} ./dist/yt-dlp_linux_${arch}_downgraded
+ version="$(./dist/yt-dlp_linux_${arch} --version)"
+ ./dist/yt-dlp_linux_${arch}_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
+ downgraded_version="$(./dist/yt-dlp_linux_${arch}_downgraded --version)"
+ [[ "$version" != "$downgraded_version" ]]
+ fi
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: build-bin-linux_${{ matrix.architecture }}
+ path: | # run-on-arch-action designates armv7l as armv7
+ repo/dist/yt-dlp_linux_${{ (matrix.architecture == 'armv7' && 'armv7l') || matrix.architecture }}
+ compression-level: 0
+
+ macos:
+ needs: process
+ if: inputs.macos
+ runs-on: macos-11
+
+ steps:
+ - uses: actions/checkout@v4
+ # NB: Building universal2 does not work with python from actions/setup-python
+ - name: Install Requirements
+ run: |
+ brew install coreutils
+ python3 devscripts/install_deps.py --user -o --include build
+ python3 devscripts/install_deps.py --print --include pyinstaller > requirements.txt
+ # We need to ignore wheels otherwise we break universal2 builds
+ python3 -m pip install -U --user --no-binary :all: -r requirements.txt
+ # We need to fuse our own universal2 wheels for curl_cffi
+ python3 -m pip install -U --user delocate
+ mkdir curl_cffi_whls curl_cffi_universal2
+ python3 devscripts/install_deps.py --print -o --include curl-cffi > requirements.txt
+ for platform in "macosx_11_0_arm64" "macosx_11_0_x86_64"; do
+ python3 -m pip download \
+ --only-binary=:all: \
+ --platform "${platform}" \
+ --pre -d curl_cffi_whls \
+ -r requirements.txt
+ done
+ python3 -m delocate.cmd.delocate_fuse curl_cffi_whls/curl_cffi*.whl -w curl_cffi_universal2
+ python3 -m delocate.cmd.delocate_fuse curl_cffi_whls/cffi*.whl -w curl_cffi_universal2
+ cd curl_cffi_universal2
+ for wheel in *cffi*.whl; do mv -n -- "${wheel}" "${wheel/x86_64/universal2}"; done
+ python3 -m pip install -U --user *cffi*.whl
+
+ - name: Prepare
+ run: |
+ python3 devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
+ python3 devscripts/make_lazy_extractors.py
+ - name: Build
+ run: |
+ python3 -m bundle.pyinstaller --target-architecture universal2 --onedir
+ (cd ./dist/yt-dlp_macos && zip -r ../yt-dlp_macos.zip .)
+ python3 -m bundle.pyinstaller --target-architecture universal2
+
+ - name: Verify --update-to
+ if: vars.UPDATE_TO_VERIFICATION
+ run: |
+ chmod +x ./dist/yt-dlp_macos
+ cp ./dist/yt-dlp_macos ./dist/yt-dlp_macos_downgraded
+ version="$(./dist/yt-dlp_macos --version)"
+ ./dist/yt-dlp_macos_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
+ downgraded_version="$(./dist/yt-dlp_macos_downgraded --version)"
+ [[ "$version" != "$downgraded_version" ]]
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: build-bin-${{ github.job }}
+ path: |
+ dist/yt-dlp_macos
+ dist/yt-dlp_macos.zip
+ compression-level: 0