From c7735deb8cd9f3f6dccb7ec61220827c71d115ed Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 4 Jul 2025 21:28:09 +0100 Subject: [PATCH 1/7] Windows: Add FFmpeg build job --- .github/workflows/build_ffmpeg.yaml | 37 +++++++++++++++++++++++++++++ packaging/build_ffmpeg.bat | 10 ++++++++ 2 files changed, 47 insertions(+) create mode 100644 packaging/build_ffmpeg.bat diff --git a/.github/workflows/build_ffmpeg.yaml b/.github/workflows/build_ffmpeg.yaml index a21145198..e143d2864 100644 --- a/.github/workflows/build_ffmpeg.yaml +++ b/.github/workflows/build_ffmpeg.yaml @@ -70,3 +70,40 @@ jobs: artifact_dir="${RUNNER_ARTIFACT_DIR}/$(date +%Y-%m-%d)/macos_$(uname -m)" mkdir -p "${artifact_dir}" mv ffmpeg.tar.gz "${artifact_dir}/${FFMPEG_VERSION}.tar.gz" + + LGPL-Windows: + strategy: + fail-fast: false + matrix: + ffmpeg-version: ["4.4.4", "5.1.4", "6.1.1", "7.0.1"] + runs-on: windows-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up MSYS2 + uses: msys2/setup-msys2@v2 + with: + update: true + install: >- + base-devel + mingw-w64-x86_64-toolchain + + - name: Build FFmpeg + run: | + export FFMPEG_VERSION="${{ matrix.ffmpeg-version }}" + export FFMPEG_ROOT="${PWD}/ffmpeg" + + .github/scripts/ffmpeg/build.bat + + tar -cf ffmpeg.tar.gz ffmpeg/include ffmpeg/lib + + artifact_dir="${{ runner.temp }}/$(date +%Y-%m-%d)/windows_x86_64" + mkdir -p "${artifact_dir}" + mv ffmpeg.tar.gz "${artifact_dir}/${FFMPEG_VERSION}.tar.gz" + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ffmpeg-lgpl-windows-${{ matrix.ffmpeg-version }} + path: ${{ runner.temp }}/$(date +%Y-%m-%d)/windows_x86_64 diff --git a/packaging/build_ffmpeg.bat b/packaging/build_ffmpeg.bat new file mode 100644 index 000000000..9363b5ee4 --- /dev/null +++ b/packaging/build_ffmpeg.bat @@ -0,0 +1,10 @@ +:: This is stolen from torchaudio +@echo off + +set PROJ_FOLDER=%cd% + +choco install -y --no-progress msys2 --package-parameters "/NoUpdate" +C:\tools\msys64\usr\bin\env MSYSTEM=MINGW64 /bin/bash -l -c "pacman -S --noconfirm --needed base-devel mingw-w64-x86_64-toolchain diffutils" +C:\tools\msys64\usr\bin\env MSYSTEM=MINGW64 /bin/bash -l -c "cd ${PROJ_FOLDER} && packaging/vc_env_helper.bat bash packaging/build_ffmpeg.sh" + +:end From 0504ddcf042025c8bfc1e52ce5bf0a7930c821a0 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 4 Jul 2025 21:32:55 +0100 Subject: [PATCH 2/7] fix --- .github/workflows/build_ffmpeg.yaml | 41 +++++++++-------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build_ffmpeg.yaml b/.github/workflows/build_ffmpeg.yaml index e143d2864..8dbd7588e 100644 --- a/.github/workflows/build_ffmpeg.yaml +++ b/.github/workflows/build_ffmpeg.yaml @@ -76,34 +76,19 @@ jobs: fail-fast: false matrix: ffmpeg-version: ["4.4.4", "5.1.4", "6.1.1", "7.0.1"] - runs-on: windows-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Set up MSYS2 - uses: msys2/setup-msys2@v2 - with: - update: true - install: >- - base-devel - mingw-w64-x86_64-toolchain - - - name: Build FFmpeg - run: | - export FFMPEG_VERSION="${{ matrix.ffmpeg-version }}" - export FFMPEG_ROOT="${PWD}/ffmpeg" - - .github/scripts/ffmpeg/build.bat + uses: pytorch/test-infra/.github/workflows/windows_job.yml@main + with: + job-name: Build + upload-artifact: ffmpeg-lgpl-windows_x86_64-${{ matrix.ffmpeg-version }} + repository: pytorch/torchcodec + script: | + export FFMPEG_VERSION="${{ matrix.ffmpeg-version }}" + export FFMPEG_ROOT="${PWD}/ffmpeg" - tar -cf ffmpeg.tar.gz ffmpeg/include ffmpeg/lib + .github/scripts/ffmpeg/build.bat - artifact_dir="${{ runner.temp }}/$(date +%Y-%m-%d)/windows_x86_64" - mkdir -p "${artifact_dir}" - mv ffmpeg.tar.gz "${artifact_dir}/${FFMPEG_VERSION}.tar.gz" + tar -cf ffmpeg.tar.gz ffmpeg/include ffmpeg/lib - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: ffmpeg-lgpl-windows-${{ matrix.ffmpeg-version }} - path: ${{ runner.temp }}/$(date +%Y-%m-%d)/windows_x86_64 + artifact_dir="${{ runner.temp }}/$(date +%Y-%m-%d)/windows_x86_64" + mkdir -p "${artifact_dir}" + mv ffmpeg.tar.gz "${artifact_dir}/${FFMPEG_VERSION}.tar.gz" From 0078ed54f2b8fa21386d3bb1b37aacee516bfc46 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 4 Jul 2025 21:37:14 +0100 Subject: [PATCH 3/7] Add runner --- .github/workflows/build_ffmpeg.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_ffmpeg.yaml b/.github/workflows/build_ffmpeg.yaml index 8dbd7588e..cdce6fe10 100644 --- a/.github/workflows/build_ffmpeg.yaml +++ b/.github/workflows/build_ffmpeg.yaml @@ -81,6 +81,7 @@ jobs: job-name: Build upload-artifact: ffmpeg-lgpl-windows_x86_64-${{ matrix.ffmpeg-version }} repository: pytorch/torchcodec + runner: windows.4xlarge script: | export FFMPEG_VERSION="${{ matrix.ffmpeg-version }}" export FFMPEG_ROOT="${PWD}/ffmpeg" From 1d885b3daa4ac6a30b5da4d77acdd86d0ef639cb Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 4 Jul 2025 21:42:56 +0100 Subject: [PATCH 4/7] wtf --- .github/workflows/build_ffmpeg.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build_ffmpeg.yaml b/.github/workflows/build_ffmpeg.yaml index cdce6fe10..b9a832199 100644 --- a/.github/workflows/build_ffmpeg.yaml +++ b/.github/workflows/build_ffmpeg.yaml @@ -81,12 +81,11 @@ jobs: job-name: Build upload-artifact: ffmpeg-lgpl-windows_x86_64-${{ matrix.ffmpeg-version }} repository: pytorch/torchcodec - runner: windows.4xlarge script: | export FFMPEG_VERSION="${{ matrix.ffmpeg-version }}" export FFMPEG_ROOT="${PWD}/ffmpeg" - .github/scripts/ffmpeg/build.bat + packaging/build_ffmpeg.bat tar -cf ffmpeg.tar.gz ffmpeg/include ffmpeg/lib From 47e39b86ec2c5b2f76a65fda08b1fe456e1028c5 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 4 Jul 2025 21:44:17 +0100 Subject: [PATCH 5/7] . --- .github/workflows/build_ffmpeg.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_ffmpeg.yaml b/.github/workflows/build_ffmpeg.yaml index b9a832199..352dc457d 100644 --- a/.github/workflows/build_ffmpeg.yaml +++ b/.github/workflows/build_ffmpeg.yaml @@ -89,6 +89,6 @@ jobs: tar -cf ffmpeg.tar.gz ffmpeg/include ffmpeg/lib - artifact_dir="${{ runner.temp }}/$(date +%Y-%m-%d)/windows_x86_64" + artifact_dir="${RUNNER_ARTIFACT_DIR}/$(date +%Y-%m-%d)/windows_$(uname -m)" mkdir -p "${artifact_dir}" mv ffmpeg.tar.gz "${artifact_dir}/${FFMPEG_VERSION}.tar.gz" From d498ff80f5dbfaf0d50af47b3bc0e880bc5fd371 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 4 Jul 2025 21:48:41 +0100 Subject: [PATCH 6/7] Add file --- packaging/build_ffmpeg.bat | 2 +- packaging/vc_env_helper.bat | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 packaging/vc_env_helper.bat diff --git a/packaging/build_ffmpeg.bat b/packaging/build_ffmpeg.bat index 9363b5ee4..53627cead 100644 --- a/packaging/build_ffmpeg.bat +++ b/packaging/build_ffmpeg.bat @@ -1,4 +1,4 @@ -:: This is stolen from torchaudio +:: Taken from torchaudio @echo off set PROJ_FOLDER=%cd% diff --git a/packaging/vc_env_helper.bat b/packaging/vc_env_helper.bat new file mode 100644 index 000000000..cccbb4c2d --- /dev/null +++ b/packaging/vc_env_helper.bat @@ -0,0 +1,42 @@ +:: Taken from torchaudio +@echo on + +set VC_VERSION_LOWER=17 +set VC_VERSION_UPPER=18 + +for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -legacy -products * -version [%VC_VERSION_LOWER%^,%VC_VERSION_UPPER%^) -property installationPath`) do ( + if exist "%%i" if exist "%%i\VC\Auxiliary\Build\vcvarsall.bat" ( + set "VS15INSTALLDIR=%%i" + set "VS15VCVARSALL=%%i\VC\Auxiliary\Build\vcvarsall.bat" + goto vswhere + ) +) + +:vswhere +if "%VSDEVCMD_ARGS%" == "" ( + call "%VS15VCVARSALL%" x64 || exit /b 1 +) else ( + call "%VS15VCVARSALL%" x64 %VSDEVCMD_ARGS% || exit /b 1 +) + +@echo on + +if "%CU_VERSION%" == "xpu" call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" + +set DISTUTILS_USE_SDK=1 + +set args=%1 +shift +:start +if [%1] == [] goto done +set args=%args% %1 +shift +goto start + +:done +if "%args%" == "" ( + echo Usage: vc_env_helper.bat [command] [args] + echo e.g. vc_env_helper.bat cl /c test.cpp +) + +%args% || exit /b 1 From 847127afc5cc2161f7357b5c6af7bf1c76493cb8 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Fri, 4 Jul 2025 22:17:30 +0100 Subject: [PATCH 7/7] Upload bin, not lib --- .github/workflows/build_ffmpeg.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_ffmpeg.yaml b/.github/workflows/build_ffmpeg.yaml index 352dc457d..4d6a22869 100644 --- a/.github/workflows/build_ffmpeg.yaml +++ b/.github/workflows/build_ffmpeg.yaml @@ -87,7 +87,7 @@ jobs: packaging/build_ffmpeg.bat - tar -cf ffmpeg.tar.gz ffmpeg/include ffmpeg/lib + tar -cf ffmpeg.tar.gz ffmpeg/include ffmpeg/bin artifact_dir="${RUNNER_ARTIFACT_DIR}/$(date +%Y-%m-%d)/windows_$(uname -m)" mkdir -p "${artifact_dir}"