runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Needed for changelog
- uses: actions/setup-python@v5
with:
python-version: "3.10"
sudo apt -y install zip pandoc man sed
cat > ./requirements.txt << EOF
python=3.10.*
+ pyinstaller
brotli-python
EOF
python devscripts/install_deps.py --print \
--exclude brotli --exclude brotlicffi \
- --include secretstorage --include pyinstaller >> ./requirements.txt
+ --include secretstorage >> ./requirements.txt
mamba create -n build --file ./requirements.txt
- name: Prepare
run: |
python devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
+ python devscripts/update_changelog.py -vv
python devscripts/make_lazy_extractors.py
- name: Build Unix platform-independent binary
run: |
done
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
+ name: build-bin-${{ github.job }}
path: |
yt-dlp
yt-dlp.tar.gz
yt-dlp_linux
yt-dlp_linux.zip
+ compression-level: 0
linux_arm:
needs: process
fi
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ 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
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: |
[[ "$version" != "$downgraded_version" ]]
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
+ name: build-bin-${{ github.job }}
path: |
dist/yt-dlp_macos
dist/yt-dlp_macos.zip
+ compression-level: 0
macos_legacy:
needs: process
run: |
brew install coreutils
python3 devscripts/install_deps.py --user -o --include build
- python3 devscripts/install_deps.py --user --include pyinstaller
+ python3 devscripts/install_deps.py --user --include pyinstaller --include curl_cffi
- name: Prepare
run: |
[[ "$version" != "$downgraded_version" ]]
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
+ name: build-bin-${{ github.job }}
path: |
dist/yt-dlp_macos_legacy
+ compression-level: 0
windows:
needs: process
- name: Install Requirements
run: | # Custom pyinstaller built with https://github.com/yt-dlp/pyinstaller-builds
python devscripts/install_deps.py -o --include build
- python devscripts/install_deps.py --include py2exe
+ python devscripts/install_deps.py --include py2exe --include curl_cffi
python -m pip install -U "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-5.8.0-py3-none-any.whl"
- name: Prepare
}
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
+ name: build-bin-${{ github.job }}
path: |
dist/yt-dlp.exe
dist/yt-dlp_min.exe
dist/yt-dlp_win.zip
+ compression-level: 0
windows32:
needs: process
}
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
+ name: build-bin-${{ github.job }}
path: |
dist/yt-dlp_x86.exe
+ compression-level: 0
meta_files:
if: inputs.meta_files && always() && !cancelled()
- windows32
runs-on: ubuntu-latest
steps:
- - uses: actions/download-artifact@v3
+ - uses: actions/download-artifact@v4
+ with:
+ path: artifact
+ pattern: build-bin-*
+ merge-multiple: true
- name: Make SHA2-SUMS files
run: |
cd ./artifact/
- sha256sum * > ../SHA2-256SUMS
- sha512sum * > ../SHA2-512SUMS
+ # make sure SHA sums are also printed to stdout
+ sha256sum * | tee ../SHA2-256SUMS
+ sha512sum * | tee ../SHA2-512SUMS
- name: Make Update spec
run: |
done
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
+ name: build-${{ github.job }}
path: |
- SHA*SUMS*
_update_spec
+ SHA*SUMS*
+ compression-level: 0
+ overwrite: true