]> jfr.im git - yt-dlp.git/blobdiff - .github/workflows/build.yml
[build] Create armv7l and aarch64 releases (#5449)
[yt-dlp.git] / .github / workflows / build.yml
index b35c35047926e728b35a0b60a8fdf467949e805c..46a775b4db8f621aebd392a5680025e795f7b225 100644 (file)
@@ -114,6 +114,49 @@ jobs:
         git -C taps/ push
 
 
+  build_linux_arm:
+    permissions:
+      packages: write  # for Creating cache
+    runs-on: ubuntu-latest
+    needs: prepare
+    strategy:
+      matrix:
+        architecture:
+        - armv7
+        - aarch64
+
+    steps:
+    - uses: actions/checkout@v3
+      with:
+        path: ./repo
+    - name: Virtualized Install, Prepare & Build
+      uses: yt-dlp/run-on-arch-action@v2
+      with:
+        githubToken: ${{ github.token }}  # To cache image
+        arch: ${{ matrix.architecture }}
+        distro: ubuntu18.04  # Standalone executable should be built on minimum supported OS
+        dockerRunArgs: --volume "${PWD}/repo:/repo"
+        install: |  # Installing Python 3.10 from the Deadsnakes repo raises errors
+          apt update
+          apt -y install zlib1g-dev python3.8 python3.8-dev python3.8-distutils python3-pip
+          python3.8 -m pip install -U pip setuptools wheel
+          # Cannot access requirements.txt from the repo directory at this stage
+          python3.8 -m pip install -U Pyinstaller mutagen pycryptodomex websockets brotli certifi
+
+        run: |
+          cd repo
+          python3.8 -m pip install -U Pyinstaller -r requirements.txt  # Cached version may be out of date
+          python3.8 devscripts/update-version.py ${{ needs.prepare.outputs.version_suffix }}
+          python3.8 devscripts/make_lazy_extractors.py
+          python3.8 pyinst.py
+
+    - name: Upload artifacts
+      uses: actions/upload-artifact@v3
+      with:
+        path: |  # run-on-arch-action designates armv7l as armv7
+          repo/dist/yt-dlp_linux_${{ (matrix.architecture == 'armv7' && 'armv7l') || matrix.architecture }}
+
+
   build_macos:
     runs-on: macos-11
     needs: prepare
@@ -194,8 +237,8 @@ jobs:
           python-version: '3.8'
     - name: Install Requirements
       run: |  # Custom pyinstaller built with https://github.com/yt-dlp/pyinstaller-builds
-          python -m pip install --upgrade pip setuptools wheel py2exe
-          pip install "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-5.3-py3-none-any.whl" -r requirements.txt
+          python -m pip install -U pip setuptools wheel py2exe
+          pip install -U "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-5.3-py3-none-any.whl" -r requirements.txt
 
     - name: Prepare
       run: |
@@ -230,8 +273,8 @@ jobs:
           architecture: 'x86'
     - name: Install Requirements
       run: |
-          python -m pip install --upgrade pip setuptools wheel
-          pip install "https://yt-dlp.github.io/Pyinstaller-Builds/i686/pyinstaller-5.3-py3-none-any.whl" -r requirements.txt
+          python -m pip install -U pip setuptools wheel
+          pip install -U "https://yt-dlp.github.io/Pyinstaller-Builds/i686/pyinstaller-5.3-py3-none-any.whl" -r requirements.txt
 
     - name: Prepare
       run: |
@@ -252,7 +295,7 @@ jobs:
     permissions:
       contents: write  # for action-gh-release
     runs-on: ubuntu-latest
-    needs: [prepare, build_unix, build_windows, build_windows32, build_macos, build_macos_legacy]
+    needs: [prepare, build_unix, build_linux_arm, build_windows, build_windows32, build_macos, build_macos_legacy]
 
     steps:
     - uses: actions/checkout@v3
@@ -279,6 +322,8 @@ jobs:
           sha256sum artifact/yt-dlp_macos | awk '{print $1 "  yt-dlp_macos"}' >> SHA2-256SUMS
           sha256sum artifact/yt-dlp_macos.zip | awk '{print $1 "  yt-dlp_macos.zip"}' >> SHA2-256SUMS
           sha256sum artifact/yt-dlp_macos_legacy | awk '{print $1 "  yt-dlp_macos_legacy"}' >> SHA2-256SUMS
+          sha256sum artifact/yt-dlp_linux_armv7l | awk '{print $1 "  yt-dlp_linux_armv7l"}' >> SHA2-256SUMS
+          sha256sum artifact/yt-dlp_linux_aarch64 | awk '{print $1 "  yt-dlp_linux_aarch64"}' >> SHA2-256SUMS
           sha256sum artifact/dist/yt-dlp_linux | awk '{print $1 "  yt-dlp_linux"}' >> SHA2-256SUMS
           sha256sum artifact/dist/yt-dlp_linux.zip | awk '{print $1 "  yt-dlp_linux.zip"}' >> SHA2-256SUMS
           sha512sum artifact/yt-dlp | awk '{print $1 "  yt-dlp"}' >> SHA2-512SUMS
@@ -290,6 +335,8 @@ jobs:
           sha512sum artifact/yt-dlp_macos | awk '{print $1 "  yt-dlp_macos"}' >> SHA2-512SUMS
           sha512sum artifact/yt-dlp_macos.zip | awk '{print $1 "  yt-dlp_macos.zip"}' >> SHA2-512SUMS
           sha512sum artifact/yt-dlp_macos_legacy | awk '{print $1 "  yt-dlp_macos_legacy"}' >> SHA2-512SUMS
+          sha512sum artifact/yt-dlp_linux_armv7l | awk '{print $1 "  yt-dlp_linux_armv7l"}' >> SHA2-512SUMS
+          sha512sum artifact/yt-dlp_linux_aarch64 | awk '{print $1 "  yt-dlp_linux_aarch64"}' >> SHA2-512SUMS
           sha512sum artifact/dist/yt-dlp_linux | awk '{print $1 "  yt-dlp_linux"}' >> SHA2-512SUMS
           sha512sum artifact/dist/yt-dlp_linux.zip | awk '{print $1 "  yt-dlp_linux.zip"}' >> SHA2-512SUMS
 
@@ -322,6 +369,8 @@ jobs:
           artifact/yt-dlp_macos
           artifact/yt-dlp_macos.zip
           artifact/yt-dlp_macos_legacy
+          artifact/yt-dlp_linux_armv7l
+          artifact/yt-dlp_linux_aarch64
           artifact/dist/yt-dlp_linux
           artifact/dist/yt-dlp_linux.zip
           _update_spec