2023-03-03 18:03:12 +01:00
|
|
|
name: Build Artifacts
|
|
|
|
on:
|
|
|
|
workflow_call:
|
|
|
|
inputs:
|
|
|
|
version:
|
|
|
|
required: true
|
|
|
|
type: string
|
|
|
|
channel:
|
|
|
|
required: false
|
|
|
|
default: stable
|
|
|
|
type: string
|
|
|
|
unix:
|
|
|
|
default: true
|
|
|
|
type: boolean
|
2024-04-29 00:19:25 +02:00
|
|
|
linux_static:
|
|
|
|
default: true
|
|
|
|
type: boolean
|
2023-03-03 18:03:12 +01:00
|
|
|
linux_arm:
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
macos:
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
macos_legacy:
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
windows:
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
windows32:
|
|
|
|
default: true
|
|
|
|
type: boolean
|
2023-11-12 23:12:09 +01:00
|
|
|
origin:
|
|
|
|
required: false
|
|
|
|
default: ''
|
|
|
|
type: string
|
2023-03-03 18:06:30 +01:00
|
|
|
secrets:
|
|
|
|
GPG_SIGNING_KEY:
|
|
|
|
required: false
|
2023-03-03 18:03:12 +01:00
|
|
|
|
|
|
|
workflow_dispatch:
|
|
|
|
inputs:
|
|
|
|
version:
|
2023-11-12 23:12:09 +01:00
|
|
|
description: |
|
|
|
|
VERSION: yyyy.mm.dd[.rev] or rev
|
2023-03-03 18:03:12 +01:00
|
|
|
required: true
|
|
|
|
type: string
|
|
|
|
channel:
|
2023-11-12 23:12:09 +01:00
|
|
|
description: |
|
|
|
|
SOURCE of this build's updates: stable/nightly/master/<repo>
|
2023-03-03 18:03:12 +01:00
|
|
|
required: true
|
|
|
|
default: stable
|
|
|
|
type: string
|
|
|
|
unix:
|
2024-04-29 00:19:25 +02:00
|
|
|
description: yt-dlp, yt-dlp.tar.gz
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
linux_static:
|
|
|
|
description: yt-dlp_linux
|
2023-03-03 18:03:12 +01:00
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
linux_arm:
|
|
|
|
description: yt-dlp_linux_aarch64, yt-dlp_linux_armv7l
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
macos:
|
|
|
|
description: yt-dlp_macos, yt-dlp_macos.zip
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
macos_legacy:
|
|
|
|
description: yt-dlp_macos_legacy
|
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
windows:
|
2024-10-22 08:03:30 +02:00
|
|
|
description: yt-dlp.exe, yt-dlp_win.zip
|
2023-03-03 18:03:12 +01:00
|
|
|
default: true
|
|
|
|
type: boolean
|
|
|
|
windows32:
|
|
|
|
description: yt-dlp_x86.exe
|
|
|
|
default: true
|
|
|
|
type: boolean
|
2023-11-12 23:12:09 +01:00
|
|
|
origin:
|
2023-12-21 22:06:26 +01:00
|
|
|
description: Origin
|
2023-11-12 23:12:09 +01:00
|
|
|
required: false
|
2023-12-21 22:06:26 +01:00
|
|
|
default: 'current repo'
|
2023-11-12 23:12:09 +01:00
|
|
|
type: choice
|
|
|
|
options:
|
2023-12-21 22:06:26 +01:00
|
|
|
- 'current repo'
|
2023-03-03 18:03:12 +01:00
|
|
|
|
2022-11-10 02:41:07 +01:00
|
|
|
permissions:
|
|
|
|
contents: read
|
2020-09-23 03:16:06 +02:00
|
|
|
|
|
|
|
jobs:
|
2023-11-12 23:12:09 +01:00
|
|
|
process:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
outputs:
|
|
|
|
origin: ${{ steps.process_origin.outputs.origin }}
|
|
|
|
steps:
|
|
|
|
- name: Process origin
|
|
|
|
id: process_origin
|
|
|
|
run: |
|
2023-12-21 22:06:26 +01:00
|
|
|
echo "origin=${{ inputs.origin == 'current repo' && github.repository || inputs.origin }}" | tee "$GITHUB_OUTPUT"
|
2023-11-12 23:12:09 +01:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
unix:
|
2023-11-12 23:12:09 +01:00
|
|
|
needs: process
|
2023-03-03 18:03:12 +01:00
|
|
|
if: inputs.unix
|
2022-11-11 02:58:23 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-05-22 13:37:18 +02:00
|
|
|
steps:
|
2023-11-13 01:30:01 +01:00
|
|
|
- uses: actions/checkout@v4
|
2024-03-14 22:10:20 +01:00
|
|
|
with:
|
|
|
|
fetch-depth: 0 # Needed for changelog
|
2024-02-11 15:47:16 +01:00
|
|
|
- uses: actions/setup-python@v5
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
|
|
|
python-version: "3.10"
|
|
|
|
- name: Install Requirements
|
|
|
|
run: |
|
2023-11-13 00:49:15 +01:00
|
|
|
sudo apt -y install zip pandoc man sed
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Prepare
|
|
|
|
run: |
|
2023-11-12 23:12:09 +01:00
|
|
|
python devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
|
2024-03-14 22:10:20 +01:00
|
|
|
python devscripts/update_changelog.py -vv
|
2022-05-22 13:37:18 +02:00
|
|
|
python devscripts/make_lazy_extractors.py
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Build Unix platform-independent binary
|
|
|
|
run: |
|
2022-05-22 13:37:18 +02:00
|
|
|
make all tar
|
2023-05-20 18:12:18 +02:00
|
|
|
- name: Verify --update-to
|
|
|
|
if: vars.UPDATE_TO_VERIFICATION
|
|
|
|
run: |
|
2024-04-29 00:19:25 +02:00
|
|
|
chmod +x ./yt-dlp
|
|
|
|
cp ./yt-dlp ./yt-dlp_downgraded
|
|
|
|
version="$(./yt-dlp --version)"
|
|
|
|
./yt-dlp_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
|
|
|
|
downgraded_version="$(./yt-dlp_downgraded --version)"
|
|
|
|
[[ "$version" != "$downgraded_version" ]]
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Upload artifacts
|
2024-02-11 15:48:09 +01:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
2024-02-24 18:00:27 +01:00
|
|
|
name: build-bin-${{ github.job }}
|
2023-03-03 18:03:12 +01:00
|
|
|
path: |
|
|
|
|
yt-dlp
|
|
|
|
yt-dlp.tar.gz
|
2024-04-29 00:19:25 +02:00
|
|
|
compression-level: 0
|
|
|
|
|
|
|
|
linux_static:
|
|
|
|
needs: process
|
|
|
|
if: inputs.linux_static
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Build static executable
|
|
|
|
env:
|
|
|
|
channel: ${{ inputs.channel }}
|
|
|
|
origin: ${{ needs.process.outputs.origin }}
|
|
|
|
version: ${{ inputs.version }}
|
|
|
|
run: |
|
|
|
|
mkdir ~/build
|
|
|
|
cd bundle/docker
|
|
|
|
docker compose up --build static
|
|
|
|
sudo chown "${USER}:docker" ~/build/yt-dlp_linux
|
|
|
|
- name: Verify --update-to
|
|
|
|
if: vars.UPDATE_TO_VERIFICATION
|
|
|
|
run: |
|
|
|
|
chmod +x ~/build/yt-dlp_linux
|
|
|
|
cp ~/build/yt-dlp_linux ~/build/yt-dlp_linux_downgraded
|
|
|
|
version="$(~/build/yt-dlp_linux --version)"
|
|
|
|
~/build/yt-dlp_linux_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
|
|
|
|
downgraded_version="$(~/build/yt-dlp_linux_downgraded --version)"
|
|
|
|
[[ "$version" != "$downgraded_version" ]]
|
|
|
|
- name: Upload artifacts
|
|
|
|
uses: actions/upload-artifact@v4
|
|
|
|
with:
|
|
|
|
name: build-bin-${{ github.job }}
|
|
|
|
path: |
|
|
|
|
~/build/yt-dlp_linux
|
2024-02-11 15:48:09 +01:00
|
|
|
compression-level: 0
|
2023-03-03 18:03:12 +01:00
|
|
|
|
|
|
|
linux_arm:
|
2023-11-12 23:12:09 +01:00
|
|
|
needs: process
|
2023-03-03 18:03:12 +01:00
|
|
|
if: inputs.linux_arm
|
2022-11-11 02:49:24 +01:00
|
|
|
permissions:
|
2023-03-03 18:03:12 +01:00
|
|
|
contents: read
|
|
|
|
packages: write # for creating cache
|
2022-11-11 02:49:24 +01:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
architecture:
|
2023-03-03 18:03:12 +01:00
|
|
|
- armv7
|
|
|
|
- aarch64
|
2022-11-11 02:49:24 +01:00
|
|
|
|
|
|
|
steps:
|
2023-11-13 01:30:01 +01:00
|
|
|
- uses: actions/checkout@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
|
|
|
path: ./repo
|
|
|
|
- name: Virtualized Install, Prepare & Build
|
|
|
|
uses: yt-dlp/run-on-arch-action@v2
|
|
|
|
with:
|
|
|
|
# Ref: https://github.com/uraimo/run-on-arch-action/issues/55
|
|
|
|
env: |
|
|
|
|
GITHUB_WORKFLOW: build
|
|
|
|
githubToken: ${{ github.token }} # To cache image
|
|
|
|
arch: ${{ matrix.architecture }}
|
2024-10-22 20:09:43 +02:00
|
|
|
distro: ubuntu20.04 # Standalone executable should be built on minimum supported OS
|
2023-03-03 18:03:12 +01:00
|
|
|
dockerRunArgs: --volume "${PWD}/repo:/repo"
|
|
|
|
install: | # Installing Python 3.10 from the Deadsnakes repo raises errors
|
|
|
|
apt update
|
2024-10-22 20:09:43 +02:00
|
|
|
apt -y install zlib1g-dev libffi-dev python3.9 python3.9-dev python3.9-distutils python3-pip \
|
|
|
|
python3-secretstorage # Cannot build cryptography wheel in virtual armv7 environment
|
|
|
|
python3.9 -m pip install -U pip wheel 'setuptools>=71.0.2'
|
|
|
|
# XXX: Keep this in sync with pyproject.toml (it can't be accessed at this stage) and exclude secretstorage
|
|
|
|
python3.9 -m pip install -U Pyinstaller mutagen pycryptodomex brotli certifi cffi \
|
|
|
|
'requests>=2.32.2,<3' 'urllib3>=1.26.17,<3' 'websockets>=13.0'
|
2023-03-03 18:03:12 +01:00
|
|
|
|
|
|
|
run: |
|
|
|
|
cd repo
|
2024-10-22 20:09:43 +02:00
|
|
|
python3.9 devscripts/install_deps.py -o --include build
|
|
|
|
python3.9 devscripts/install_deps.py --include pyinstaller # Cached versions may be out of date
|
|
|
|
python3.9 devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
|
|
|
|
python3.9 devscripts/make_lazy_extractors.py
|
|
|
|
python3.9 -m bundle.pyinstaller
|
2023-03-03 18:03:12 +01:00
|
|
|
|
2023-05-20 18:12:18 +02:00
|
|
|
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
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Upload artifacts
|
2024-02-11 15:48:09 +01:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
2024-02-24 18:00:27 +01:00
|
|
|
name: build-bin-linux_${{ matrix.architecture }}
|
2023-03-03 18:03:12 +01:00
|
|
|
path: | # run-on-arch-action designates armv7l as armv7
|
|
|
|
repo/dist/yt-dlp_linux_${{ (matrix.architecture == 'armv7' && 'armv7l') || matrix.architecture }}
|
2024-02-11 15:48:09 +01:00
|
|
|
compression-level: 0
|
2023-03-03 18:03:12 +01:00
|
|
|
|
|
|
|
macos:
|
2023-11-12 23:12:09 +01:00
|
|
|
needs: process
|
2023-03-03 18:03:12 +01:00
|
|
|
if: inputs.macos
|
2024-06-13 23:13:08 +02:00
|
|
|
permissions:
|
|
|
|
contents: read
|
|
|
|
actions: write # For cleaning up cache
|
2024-10-15 09:07:42 +02:00
|
|
|
runs-on: macos-13
|
2021-10-21 12:48:46 +02:00
|
|
|
|
|
|
|
steps:
|
2023-11-13 01:30:01 +01:00
|
|
|
- uses: actions/checkout@v4
|
2023-04-03 07:06:27 +02:00
|
|
|
# NB: Building universal2 does not work with python from actions/setup-python
|
2024-06-13 23:13:08 +02:00
|
|
|
|
|
|
|
- name: Restore cached requirements
|
|
|
|
id: restore-cache
|
|
|
|
uses: actions/cache/restore@v4
|
|
|
|
env:
|
|
|
|
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 1
|
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/yt-dlp-build-venv
|
|
|
|
key: cache-reqs-${{ github.job }}
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Install Requirements
|
|
|
|
run: |
|
2021-10-21 12:48:46 +02:00
|
|
|
brew install coreutils
|
2024-06-13 23:13:08 +02:00
|
|
|
python3 -m venv ~/yt-dlp-build-venv
|
|
|
|
source ~/yt-dlp-build-venv/bin/activate
|
|
|
|
python3 devscripts/install_deps.py -o --include build
|
2024-03-30 00:24:40 +01:00
|
|
|
python3 devscripts/install_deps.py --print --include pyinstaller > requirements.txt
|
2023-04-03 07:06:27 +02:00
|
|
|
# We need to ignore wheels otherwise we break universal2 builds
|
2024-06-13 23:13:08 +02:00
|
|
|
python3 -m pip install -U --no-binary :all: -r requirements.txt
|
2024-03-17 04:52:38 +01:00
|
|
|
# We need to fuse our own universal2 wheels for curl_cffi
|
2024-09-02 01:56:50 +02:00
|
|
|
python3 -m pip install -U 'delocate==0.11.0'
|
2024-03-17 04:52:38 +01:00
|
|
|
mkdir curl_cffi_whls curl_cffi_universal2
|
2024-04-19 01:11:12 +02:00
|
|
|
python3 devscripts/install_deps.py --print -o --include curl-cffi > requirements.txt
|
2024-03-17 04:52:38 +01:00
|
|
|
for platform in "macosx_11_0_arm64" "macosx_11_0_x86_64"; do
|
|
|
|
python3 -m pip download \
|
|
|
|
--only-binary=:all: \
|
|
|
|
--platform "${platform}" \
|
2024-06-13 23:13:08 +02:00
|
|
|
-d curl_cffi_whls \
|
2024-03-17 04:52:38 +01:00
|
|
|
-r requirements.txt
|
|
|
|
done
|
2024-05-31 00:34:02 +02:00
|
|
|
( # Overwrite x86_64-only libs with fat/universal2 libs or else Pyinstaller will do the opposite
|
|
|
|
# See https://github.com/yt-dlp/yt-dlp/pull/10069
|
|
|
|
cd curl_cffi_whls
|
|
|
|
mkdir -p curl_cffi/.dylibs
|
|
|
|
python_libdir=$(python3 -c 'import sys; from pathlib import Path; print(Path(sys.path[1]).parent)')
|
|
|
|
for dylib in lib{ssl,crypto}.3.dylib; do
|
|
|
|
cp "${python_libdir}/${dylib}" "curl_cffi/.dylibs/${dylib}"
|
|
|
|
for wheel in curl_cffi*macos*x86_64.whl; do
|
|
|
|
zip "${wheel}" "curl_cffi/.dylibs/${dylib}"
|
|
|
|
done
|
|
|
|
done
|
|
|
|
)
|
2024-03-17 04:52:38 +01:00
|
|
|
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
|
2024-06-13 23:13:08 +02:00
|
|
|
for wheel in curl_cffi_universal2/*cffi*.whl; do
|
|
|
|
mv -n -- "${wheel}" "${wheel/x86_64/universal2}"
|
|
|
|
done
|
|
|
|
python3 -m pip install --force-reinstall -U curl_cffi_universal2/*cffi*.whl
|
2022-05-22 13:37:18 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Prepare
|
|
|
|
run: |
|
2023-11-12 23:12:09 +01:00
|
|
|
python3 devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
|
2023-04-03 07:06:27 +02:00
|
|
|
python3 devscripts/make_lazy_extractors.py
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Build
|
|
|
|
run: |
|
2024-06-13 23:13:08 +02:00
|
|
|
source ~/yt-dlp-build-venv/bin/activate
|
2024-02-11 14:58:18 +01:00
|
|
|
python3 -m bundle.pyinstaller --target-architecture universal2 --onedir
|
2022-05-22 13:37:18 +02:00
|
|
|
(cd ./dist/yt-dlp_macos && zip -r ../yt-dlp_macos.zip .)
|
2024-02-11 14:58:18 +01:00
|
|
|
python3 -m bundle.pyinstaller --target-architecture universal2
|
2022-05-22 13:37:18 +02:00
|
|
|
|
2023-05-20 18:12:18 +02:00
|
|
|
- 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" ]]
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Upload artifacts
|
2024-02-11 15:48:09 +01:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
2024-02-24 18:00:27 +01:00
|
|
|
name: build-bin-${{ github.job }}
|
2023-03-03 18:03:12 +01:00
|
|
|
path: |
|
|
|
|
dist/yt-dlp_macos
|
|
|
|
dist/yt-dlp_macos.zip
|
2024-02-11 15:48:09 +01:00
|
|
|
compression-level: 0
|
2022-05-22 13:37:18 +02:00
|
|
|
|
2024-06-13 23:13:08 +02:00
|
|
|
- name: Cleanup cache
|
|
|
|
if: steps.restore-cache.outputs.cache-hit == 'true'
|
|
|
|
env:
|
|
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
cache_key: cache-reqs-${{ github.job }}
|
|
|
|
repository: ${{ github.repository }}
|
|
|
|
branch: ${{ github.ref }}
|
|
|
|
run: |
|
|
|
|
gh extension install actions/gh-actions-cache
|
|
|
|
gh actions-cache delete "${cache_key}" -R "${repository}" -B "${branch}" --confirm
|
|
|
|
|
|
|
|
- name: Cache requirements
|
|
|
|
uses: actions/cache/save@v4
|
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/yt-dlp-build-venv
|
|
|
|
key: cache-reqs-${{ github.job }}
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
macos_legacy:
|
2023-11-12 23:12:09 +01:00
|
|
|
needs: process
|
2023-03-03 18:03:12 +01:00
|
|
|
if: inputs.macos_legacy
|
2024-10-15 09:07:42 +02:00
|
|
|
runs-on: macos-13
|
2022-06-29 03:54:50 +02:00
|
|
|
|
2022-06-28 14:36:30 +02:00
|
|
|
steps:
|
2023-11-13 01:30:01 +01:00
|
|
|
- uses: actions/checkout@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Install Python
|
|
|
|
# We need the official Python, because the GA ones only support newer macOS versions
|
|
|
|
env:
|
|
|
|
PYTHON_VERSION: 3.10.5
|
|
|
|
MACOSX_DEPLOYMENT_TARGET: 10.9 # Used up by the Python build tools
|
|
|
|
run: |
|
2022-06-28 14:36:30 +02:00
|
|
|
# Hack to get the latest patch version. Uncomment if needed
|
|
|
|
#brew install python@3.10
|
|
|
|
#export PYTHON_VERSION=$( $(brew --prefix)/opt/python@3.10/bin/python3 --version | cut -d ' ' -f 2 )
|
2024-05-31 00:34:02 +02:00
|
|
|
curl "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-macos11.pkg" -o "python.pkg"
|
2022-06-28 14:36:30 +02:00
|
|
|
sudo installer -pkg python.pkg -target /
|
|
|
|
python3 --version
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Install Requirements
|
|
|
|
run: |
|
2022-06-28 14:36:30 +02:00
|
|
|
brew install coreutils
|
2024-02-11 15:17:08 +01:00
|
|
|
python3 devscripts/install_deps.py --user -o --include build
|
2024-04-09 01:20:58 +02:00
|
|
|
python3 devscripts/install_deps.py --user --include pyinstaller
|
2022-06-28 14:36:30 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Prepare
|
|
|
|
run: |
|
2023-11-12 23:12:09 +01:00
|
|
|
python3 devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
|
2022-06-28 14:36:30 +02:00
|
|
|
python3 devscripts/make_lazy_extractors.py
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Build
|
|
|
|
run: |
|
2024-02-11 14:58:18 +01:00
|
|
|
python3 -m bundle.pyinstaller
|
2022-08-08 21:24:30 +02:00
|
|
|
mv dist/yt-dlp_macos dist/yt-dlp_macos_legacy
|
2022-06-28 14:36:30 +02:00
|
|
|
|
2023-05-20 18:12:18 +02:00
|
|
|
- name: Verify --update-to
|
|
|
|
if: vars.UPDATE_TO_VERIFICATION
|
|
|
|
run: |
|
|
|
|
chmod +x ./dist/yt-dlp_macos_legacy
|
|
|
|
cp ./dist/yt-dlp_macos_legacy ./dist/yt-dlp_macos_legacy_downgraded
|
|
|
|
version="$(./dist/yt-dlp_macos_legacy --version)"
|
|
|
|
./dist/yt-dlp_macos_legacy_downgraded -v --update-to yt-dlp/yt-dlp@2023.03.04
|
|
|
|
downgraded_version="$(./dist/yt-dlp_macos_legacy_downgraded --version)"
|
|
|
|
[[ "$version" != "$downgraded_version" ]]
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Upload artifacts
|
2024-02-11 15:48:09 +01:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
2024-02-24 18:00:27 +01:00
|
|
|
name: build-bin-${{ github.job }}
|
2023-03-03 18:03:12 +01:00
|
|
|
path: |
|
|
|
|
dist/yt-dlp_macos_legacy
|
2024-02-11 15:48:09 +01:00
|
|
|
compression-level: 0
|
2022-06-28 14:36:30 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
windows:
|
2023-11-12 23:12:09 +01:00
|
|
|
needs: process
|
2023-03-03 18:03:12 +01:00
|
|
|
if: inputs.windows
|
2020-09-23 03:16:06 +02:00
|
|
|
runs-on: windows-latest
|
2021-02-15 20:16:23 +01:00
|
|
|
|
2020-09-23 03:16:06 +02:00
|
|
|
steps:
|
2023-11-13 01:30:01 +01:00
|
|
|
- uses: actions/checkout@v4
|
2024-02-11 15:47:16 +01:00
|
|
|
- uses: actions/setup-python@v5
|
2024-10-23 08:33:50 +02:00
|
|
|
with:
|
|
|
|
python-version: "3.10"
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Install Requirements
|
|
|
|
run: | # Custom pyinstaller built with https://github.com/yt-dlp/pyinstaller-builds
|
2024-02-11 15:17:08 +01:00
|
|
|
python devscripts/install_deps.py -o --include build
|
2024-05-22 16:22:25 +02:00
|
|
|
python devscripts/install_deps.py --include curl-cffi
|
2024-09-26 01:07:17 +02:00
|
|
|
python -m pip install -U "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-6.10.0-py3-none-any.whl"
|
2022-05-22 13:37:18 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Prepare
|
|
|
|
run: |
|
2023-11-12 23:12:09 +01:00
|
|
|
python devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
|
2022-05-22 13:37:18 +02:00
|
|
|
python devscripts/make_lazy_extractors.py
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Build
|
|
|
|
run: |
|
2024-02-11 14:58:18 +01:00
|
|
|
python -m bundle.pyinstaller
|
|
|
|
python -m bundle.pyinstaller --onedir
|
2022-05-22 13:37:18 +02:00
|
|
|
Compress-Archive -Path ./dist/yt-dlp/* -DestinationPath ./dist/yt-dlp_win.zip
|
2022-08-08 21:24:30 +02:00
|
|
|
|
2023-05-20 18:12:18 +02:00
|
|
|
- name: Verify --update-to
|
|
|
|
if: vars.UPDATE_TO_VERIFICATION
|
|
|
|
run: |
|
2024-10-22 06:20:20 +02:00
|
|
|
foreach ($name in @("yt-dlp")) {
|
2023-05-20 18:12:18 +02:00
|
|
|
Copy-Item "./dist/${name}.exe" "./dist/${name}_downgraded.exe"
|
|
|
|
$version = & "./dist/${name}.exe" --version
|
|
|
|
& "./dist/${name}_downgraded.exe" -v --update-to yt-dlp/yt-dlp@2023.03.04
|
|
|
|
$downgraded_version = & "./dist/${name}_downgraded.exe" --version
|
|
|
|
if ($version -eq $downgraded_version) {
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Upload artifacts
|
2024-02-11 15:48:09 +01:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
2024-02-24 18:00:27 +01:00
|
|
|
name: build-bin-${{ github.job }}
|
2023-03-03 18:03:12 +01:00
|
|
|
path: |
|
|
|
|
dist/yt-dlp.exe
|
|
|
|
dist/yt-dlp_win.zip
|
2024-02-11 15:48:09 +01:00
|
|
|
compression-level: 0
|
2021-10-21 14:56:56 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
windows32:
|
2023-11-12 23:12:09 +01:00
|
|
|
needs: process
|
2023-03-03 18:03:12 +01:00
|
|
|
if: inputs.windows32
|
2020-09-23 03:16:06 +02:00
|
|
|
runs-on: windows-latest
|
2021-02-15 20:16:23 +01:00
|
|
|
|
2020-09-23 03:16:06 +02:00
|
|
|
steps:
|
2023-11-13 01:30:01 +01:00
|
|
|
- uses: actions/checkout@v4
|
2024-02-11 15:47:16 +01:00
|
|
|
- uses: actions/setup-python@v5
|
2023-11-16 19:39:00 +01:00
|
|
|
with:
|
2024-10-23 08:33:50 +02:00
|
|
|
python-version: "3.10"
|
2023-03-03 18:03:12 +01:00
|
|
|
architecture: "x86"
|
|
|
|
- name: Install Requirements
|
|
|
|
run: |
|
2024-02-11 15:17:08 +01:00
|
|
|
python devscripts/install_deps.py -o --include build
|
2024-07-12 01:50:44 +02:00
|
|
|
python devscripts/install_deps.py
|
2024-09-26 01:07:17 +02:00
|
|
|
python -m pip install -U "https://yt-dlp.github.io/Pyinstaller-Builds/i686/pyinstaller-6.10.0-py3-none-any.whl"
|
2022-05-22 13:37:18 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Prepare
|
|
|
|
run: |
|
2023-11-12 23:12:09 +01:00
|
|
|
python devscripts/update-version.py -c "${{ inputs.channel }}" -r "${{ needs.process.outputs.origin }}" "${{ inputs.version }}"
|
2022-05-22 13:37:18 +02:00
|
|
|
python devscripts/make_lazy_extractors.py
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Build
|
|
|
|
run: |
|
2024-02-11 14:58:18 +01:00
|
|
|
python -m bundle.pyinstaller
|
2022-05-22 13:37:18 +02:00
|
|
|
|
2023-05-20 18:12:18 +02:00
|
|
|
- name: Verify --update-to
|
|
|
|
if: vars.UPDATE_TO_VERIFICATION
|
|
|
|
run: |
|
|
|
|
foreach ($name in @("yt-dlp_x86")) {
|
|
|
|
Copy-Item "./dist/${name}.exe" "./dist/${name}_downgraded.exe"
|
|
|
|
$version = & "./dist/${name}.exe" --version
|
|
|
|
& "./dist/${name}_downgraded.exe" -v --update-to yt-dlp/yt-dlp@2023.03.04
|
|
|
|
$downgraded_version = & "./dist/${name}_downgraded.exe" --version
|
|
|
|
if ($version -eq $downgraded_version) {
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Upload artifacts
|
2024-02-11 15:48:09 +01:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
2024-02-24 18:00:27 +01:00
|
|
|
name: build-bin-${{ github.job }}
|
2023-03-03 18:03:12 +01:00
|
|
|
path: |
|
|
|
|
dist/yt-dlp_x86.exe
|
2024-02-11 15:48:09 +01:00
|
|
|
compression-level: 0
|
2023-03-03 18:03:12 +01:00
|
|
|
|
|
|
|
meta_files:
|
2024-04-29 00:19:25 +02:00
|
|
|
if: always() && !cancelled()
|
2023-03-03 18:03:12 +01:00
|
|
|
needs:
|
2023-11-12 23:12:09 +01:00
|
|
|
- process
|
2023-03-03 18:03:12 +01:00
|
|
|
- unix
|
2024-04-29 00:19:25 +02:00
|
|
|
- linux_static
|
2023-03-03 18:03:12 +01:00
|
|
|
- linux_arm
|
|
|
|
- macos
|
|
|
|
- macos_legacy
|
|
|
|
- windows
|
|
|
|
- windows32
|
2021-06-05 21:14:34 +02:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2024-11-10 00:26:02 +01:00
|
|
|
- name: Download artifacts
|
|
|
|
uses: actions/download-artifact@v4
|
2024-02-11 15:48:09 +01:00
|
|
|
with:
|
|
|
|
path: artifact
|
2024-02-24 18:00:27 +01:00
|
|
|
pattern: build-bin-*
|
2024-02-11 15:48:09 +01:00
|
|
|
merge-multiple: true
|
2022-06-29 03:13:24 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Make SHA2-SUMS files
|
|
|
|
run: |
|
|
|
|
cd ./artifact/
|
2024-04-01 19:02:25 +02:00
|
|
|
# make sure SHA sums are also printed to stdout
|
2024-05-31 00:34:02 +02:00
|
|
|
sha256sum -- * | tee ../SHA2-256SUMS
|
|
|
|
sha512sum -- * | tee ../SHA2-512SUMS
|
2024-07-02 00:51:27 +02:00
|
|
|
# also print as permanent annotations to the summary page
|
|
|
|
while read -r shasum; do
|
|
|
|
echo "::notice title=${shasum##* }::sha256: ${shasum% *}"
|
|
|
|
done < ../SHA2-256SUMS
|
2022-08-08 21:24:30 +02:00
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Make Update spec
|
|
|
|
run: |
|
|
|
|
cat >> _update_spec << EOF
|
|
|
|
# This file is used for regulating self-update
|
2023-11-16 19:39:00 +01:00
|
|
|
lock 2022.08.18.36 .+ Python 3\.6
|
|
|
|
lock 2023.11.16 (?!win_x86_exe).+ Python 3\.7
|
|
|
|
lock 2023.11.16 win_x86_exe .+ Windows-(?:Vista|2008Server)
|
2024-10-22 08:03:30 +02:00
|
|
|
lock 2024.10.22 py2exe .+
|
2024-10-23 08:33:50 +02:00
|
|
|
lock 2024.10.22 linux_(?:armv7l|aarch64)_exe .+-glibc2\.(?:[12]?\d|30)\b
|
|
|
|
lock 2024.10.22 (?!\w+_exe).+ Python 3\.8
|
|
|
|
lock 2024.10.22 win(?:_x86)?_exe Python 3\.[78].+ Windows-(?:7-|2008ServerR2)
|
2023-11-16 19:39:00 +01:00
|
|
|
lockV2 yt-dlp/yt-dlp 2022.08.18.36 .+ Python 3\.6
|
|
|
|
lockV2 yt-dlp/yt-dlp 2023.11.16 (?!win_x86_exe).+ Python 3\.7
|
|
|
|
lockV2 yt-dlp/yt-dlp 2023.11.16 win_x86_exe .+ Windows-(?:Vista|2008Server)
|
2024-10-22 08:03:30 +02:00
|
|
|
lockV2 yt-dlp/yt-dlp 2024.10.22 py2exe .+
|
2024-10-23 08:33:50 +02:00
|
|
|
lockV2 yt-dlp/yt-dlp 2024.10.22 linux_(?:armv7l|aarch64)_exe .+-glibc2\.(?:[12]?\d|30)\b
|
|
|
|
lockV2 yt-dlp/yt-dlp 2024.10.22 (?!\w+_exe).+ Python 3\.8
|
|
|
|
lockV2 yt-dlp/yt-dlp 2024.10.22 win(?:_x86)?_exe Python 3\.[78].+ Windows-(?:7-|2008ServerR2)
|
2023-11-16 19:39:00 +01:00
|
|
|
lockV2 yt-dlp/yt-dlp-nightly-builds 2023.11.15.232826 (?!win_x86_exe).+ Python 3\.7
|
|
|
|
lockV2 yt-dlp/yt-dlp-nightly-builds 2023.11.15.232826 win_x86_exe .+ Windows-(?:Vista|2008Server)
|
2024-10-22 08:03:30 +02:00
|
|
|
lockV2 yt-dlp/yt-dlp-nightly-builds 2024.10.22.051025 py2exe .+
|
2024-10-23 08:33:50 +02:00
|
|
|
lockV2 yt-dlp/yt-dlp-nightly-builds 2024.10.22.051025 linux_(?:armv7l|aarch64)_exe .+-glibc2\.(?:[12]?\d|30)\b
|
|
|
|
lockV2 yt-dlp/yt-dlp-nightly-builds 2024.10.22.051025 (?!\w+_exe).+ Python 3\.8
|
|
|
|
lockV2 yt-dlp/yt-dlp-nightly-builds 2024.10.22.051025 win(?:_x86)?_exe Python 3\.[78].+ Windows-(?:7-|2008ServerR2)
|
2023-11-16 19:39:00 +01:00
|
|
|
lockV2 yt-dlp/yt-dlp-master-builds 2023.11.15.232812 (?!win_x86_exe).+ Python 3\.7
|
|
|
|
lockV2 yt-dlp/yt-dlp-master-builds 2023.11.15.232812 win_x86_exe .+ Windows-(?:Vista|2008Server)
|
2024-10-22 08:03:30 +02:00
|
|
|
lockV2 yt-dlp/yt-dlp-master-builds 2024.10.22.045052 py2exe .+
|
2024-10-23 08:33:50 +02:00
|
|
|
lockV2 yt-dlp/yt-dlp-master-builds 2024.10.22.060347 linux_(?:armv7l|aarch64)_exe .+-glibc2\.(?:[12]?\d|30)\b
|
|
|
|
lockV2 yt-dlp/yt-dlp-master-builds 2024.10.22.060347 (?!\w+_exe).+ Python 3\.8
|
|
|
|
lockV2 yt-dlp/yt-dlp-master-builds 2024.10.22.060347 win(?:_x86)?_exe Python 3\.[78].+ Windows-(?:7-|2008ServerR2)
|
2023-03-03 18:03:12 +01:00
|
|
|
EOF
|
|
|
|
|
2023-03-03 18:06:30 +01:00
|
|
|
- name: Sign checksum files
|
|
|
|
env:
|
|
|
|
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
|
|
|
|
if: env.GPG_SIGNING_KEY != ''
|
|
|
|
run: |
|
|
|
|
gpg --batch --import <<< "${{ secrets.GPG_SIGNING_KEY }}"
|
|
|
|
for signfile in ./SHA*SUMS; do
|
|
|
|
gpg --batch --detach-sign "$signfile"
|
|
|
|
done
|
|
|
|
|
2023-03-03 18:03:12 +01:00
|
|
|
- name: Upload artifacts
|
2024-02-11 15:48:09 +01:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-03 18:03:12 +01:00
|
|
|
with:
|
2024-02-11 15:48:09 +01:00
|
|
|
name: build-${{ github.job }}
|
2023-03-03 18:03:12 +01:00
|
|
|
path: |
|
|
|
|
_update_spec
|
2024-02-11 15:48:09 +01:00
|
|
|
SHA*SUMS*
|
|
|
|
compression-level: 0
|
2024-02-24 18:00:27 +01:00
|
|
|
overwrite: true
|