From a60ae6cea2d28a9ce4abaf0d0d390b0421173739 Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 09:54:23 +0000 Subject: [PATCH 01/24] github: add github workflow --- .github/workflows/build.yml | 158 ++++++++++++++++++++++++++++++++++++ .gitignore | 55 ------------- 2 files changed, 158 insertions(+), 55 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .gitignore diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000000..d5ee9265806a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,158 @@ +name: build + +on: + push: + tags: + - 'v*.*.*' + +jobs: + +# ============================= +# Create release +# ============================= + +# Create release, but only if it's triggered by tag push. +# On pull requests/commits push, this job will always complete. + + maybe-release: + runs-on: ubuntu-latest + steps: + - name: Clone project + if: startsWith(github.ref, 'refs/tags/v') + uses: actions/checkout@v3 + + - name: Build changelog + id: build_changelog + if: startsWith(github.ref, 'refs/tags/v') + uses: simplex-chat/release-changelog-builder-action@v5 + with: + configuration: .github/changelog_conf.json + failOnError: true + ignorePreReleases: true + commitMode: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create release + if: startsWith(github.ref, 'refs/tags/v') + uses: simplex-chat/action-gh-release@v2 + with: + body: ${{ steps.build_changelog.outputs.changelog }} + prerelease: true + files: | + COPYING + fail_on_unmatched_files: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +# ========================= +# Linux Build +# ========================= + + build-linux: + name: "ubuntu-${{ matrix.os }}" + needs: maybe-release + runs-on: ubuntu-${{ matrix.os }} + if: false + strategy: + fail-fast: false + matrix: + include: + - os: 22.04 + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Setup swap + uses: ./.github/actions/swap + with: + swap-size-gb: 30 + +# ========================= +# MacOS Build +# ========================= + + build-macos: + name: "${{ matrix.os }}" + needs: maybe-release + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: macos-latest + brew: /opt/homebrew + arch: aarch64 + - os: macos-13 + brew: /usr/local + arch: x86_64 + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Install tools + shell: bash + run: | + brew install coreutils openjdk@11 + sudo ln -sfn ${{ matrix.brew }}/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk + + - name: Build + shell: bash + run: | + export JAVA_HOME=$(/usr/libexec/java_home -v 11) + + mkdir build + cd build + ../extras/package/macosx/build.sh -c || ../extras/package/macosx/build.sh + + cp ./bin/vlc-cache-gen . + + zip -r "vlc-macos-${{ matrix.arch }}.zip" VLC.app vlc-cache-gen + + - name: Upload binaries + uses: simplex-chat/action-gh-release@v2 + with: + append_body: true + fail_on_unmatched_files: true + files: vlc-macos-${{ matrix.arch }}.zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +# ========================= +# Windows Build +# ========================= + + build-windows: + name: "${{ matrix.os }}" + needs: maybe-release + runs-on: ${{ matrix.os }} + if: false + strategy: + fail-fast: false + matrix: + include: + - os: windows-latest + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Configure pagefile (Windows) + uses: simplex-chat/configure-pagefile-action@v1.4 + with: + minimum-size: 16GB + maximum-size: 16GB + disk-root: "C:" + + - name: 'Setup MSYS2' + uses: simplex-chat/setup-msys2@v2 + with: + msystem: ucrt64 + update: true + install: >- + git + perl + make + pacboy: >- + toolchain:p + cmake:p + diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0b0ee9cc2032..000000000000 --- a/.gitignore +++ /dev/null @@ -1,55 +0,0 @@ -*~ -*.app -*.cache -*.dylib -*.lo -*.lo? -*.la -*.moc.cpp -*.o -*.so -*.trs -*.pc -*.vlt -*.class -*.dmg -.DS_Store -.deps -.libs -.dirstamp -ABOUT-NLS -aclocal.m4 -ChangeLog -compile -config.status -config.h* -config.log -configure -doltcompile -doltlibtool -INSTALL.git -libtool -Makefile -Makefile.in -stamp-* -vlc -vlc.exe -qvlc -rvlc -svlc -cvlc -qvlc -mvlc -nvlc -wxvlc -vlc_install_dir/* -plugins.dat -patches/* - -include/vlc/libvlc_version.h - -# Ignore build dirs -build* -contrib-* -install-* - From b4ae0c9f154764765e2d7f402d95d4a35aee1104 Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 09:55:18 +0000 Subject: [PATCH 02/24] vlc: patch to workaround homebrew and newer compilers --- contrib/src/libarchive/rules.mak | 2 +- extras/package/macosx/build.sh | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/contrib/src/libarchive/rules.mak b/contrib/src/libarchive/rules.mak index 9e094257da3b..448c40d8ba41 100644 --- a/contrib/src/libarchive/rules.mak +++ b/contrib/src/libarchive/rules.mak @@ -30,6 +30,6 @@ endif cd $< && $(HOSTVARS) ./configure $(HOSTCONF) \ --disable-bsdcpio --disable-bsdtar --disable-bsdcat \ --without-nettle --without-cng \ - --without-xml2 --without-lzma --without-iconv --without-expat + --without-xml2 --without-lzma --without-iconv --without-expat --without-zstd --without-lz4 cd $< && $(MAKE) install touch $@ diff --git a/extras/package/macosx/build.sh b/extras/package/macosx/build.sh index 931979fd4407..51e587d7a3ef 100755 --- a/extras/package/macosx/build.sh +++ b/extras/package/macosx/build.sh @@ -8,10 +8,10 @@ info() echo "[${green}build${normal}] $1" } -ARCH="x86_64" -MINIMAL_OSX_VERSION="10.7" +MINIMAL_OSX_VERSION="10.13" OSX_KERNELVERSION=`uname -r | cut -d. -f1` BUILD_ARCH=`uname -m | cut -d. -f1` +ARCH="$BUILD_ARCH" SDKROOT=$(xcrun --show-sdk-path) VLCBUILDDIR="" @@ -160,7 +160,7 @@ export RANLIB="`xcrun --find ranlib`" export STRINGS="`xcrun --find strings`" export STRIP="`xcrun --find strip`" export SDKROOT -export PATH="${vlcroot}/extras/tools/build/bin:${vlcroot}/contrib/${BUILD_TRIPLET}/bin:$python3Path:${VLC_PATH}:/bin:/sbin:/usr/bin:/usr/sbin" +export PATH="${vlcroot}/extras/tools/build/bin:${vlcroot}/contrib/${BUILD_TRIPLET}/bin:$python3Path:${VLC_PATH}:/usr/local/opt/coreutils/libexec/gnubin:/bin:/sbin:/usr/bin:/usr/sbin" # Select avcodec flavor to compile contribs with export USE_FFMPEG=1 @@ -238,9 +238,9 @@ spopd # enabled. (e.g. ffmpeg) # - This will fail the build if a partially available symbol is added later on # in contribs and not mentioned in the list of symbols above. -export CFLAGS="-Werror=partial-availability" -export CXXFLAGS="-Werror=partial-availability" -export OBJCFLAGS="-Werror=partial-availability" +export CFLAGS="-Werror=partial-availability -Wno-implicit-int" +export CXXFLAGS="-Werror=partial-availability -Wno-implicit-int" +export OBJCFLAGS="-Werror=partial-availability -Wno-implicit-int" export EXTRA_CFLAGS="-isysroot $SDKROOT -mmacosx-version-min=$MINIMAL_OSX_VERSION -DMACOSX_DEPLOYMENT_TARGET=$MINIMAL_OSX_VERSION -arch $ACTUAL_ARCH" export EXTRA_LDFLAGS="-Wl,-syslibroot,$SDKROOT -mmacosx-version-min=$MINIMAL_OSX_VERSION -isysroot $SDKROOT -DMACOSX_DEPLOYMENT_TARGET=$MINIMAL_OSX_VERSION -arch $ACTUAL_ARCH" @@ -250,7 +250,7 @@ export XCODE_FLAGS="MACOSX_DEPLOYMENT_TARGET=$MINIMAL_OSX_VERSION -sdk macosx WA info "Building contribs" spushd "${vlcroot}/contrib" mkdir -p contrib-$HOST_TRIPLET && cd contrib-$HOST_TRIPLET -../bootstrap --build=$BUILD_TRIPLET --host=$HOST_TRIPLET > $out +../bootstrap --build=$BUILD_TRIPLET --host=$HOST_TRIPLET --disable-breakpad --disable-growl --disable-sparkle > $out if [ "$REBUILD" = "yes" ]; then make clean fi @@ -322,6 +322,7 @@ if [ "${vlcroot}/configure" -nt Makefile ]; then --host=$HOST_TRIPLET \ --with-macosx-version-min=$MINIMAL_OSX_VERSION \ --with-macosx-sdk=$SDKROOT \ + --disable-sparkle \ $CONFIGFLAGS \ $VLC_CONFIGURE_ARGS > $out fi From 130c7fccf2149022873762e57c77c1f61de7f65c Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 09:57:44 +0000 Subject: [PATCH 03/24] github/workflow: fix second script run --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5ee9265806a..f5820d3fc736 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,7 +103,7 @@ jobs: mkdir build cd build - ../extras/package/macosx/build.sh -c || ../extras/package/macosx/build.sh + ../extras/package/macosx/build.sh -c || ../extras/package/macosx/build.sh -c cp ./bin/vlc-cache-gen . From dbbd0982821f40985ea471cb524fcc51483d3dff Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 13:00:42 +0000 Subject: [PATCH 04/24] vlc: return ARCH variable --- extras/package/macosx/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/package/macosx/build.sh b/extras/package/macosx/build.sh index 51e587d7a3ef..653ee18095ea 100755 --- a/extras/package/macosx/build.sh +++ b/extras/package/macosx/build.sh @@ -8,10 +8,10 @@ info() echo "[${green}build${normal}] $1" } +ARCH="x86_64" MINIMAL_OSX_VERSION="10.13" OSX_KERNELVERSION=`uname -r | cut -d. -f1` BUILD_ARCH=`uname -m | cut -d. -f1` -ARCH="$BUILD_ARCH" SDKROOT=$(xcrun --show-sdk-path) VLCBUILDDIR="" From cf7a2f72048183e5aa22bc636734ffa791a1232e Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 13:00:58 +0000 Subject: [PATCH 05/24] github/workflows: specify arch to build --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f5820d3fc736..ad7245e64b7e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,7 +103,7 @@ jobs: mkdir build cd build - ../extras/package/macosx/build.sh -c || ../extras/package/macosx/build.sh -c + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || ../extras/package/macosx/build.sh -c ${{ matrix.arch }} cp ./bin/vlc-cache-gen . @@ -114,7 +114,7 @@ jobs: with: append_body: true fail_on_unmatched_files: true - files: vlc-macos-${{ matrix.arch }}.zip + files: ./build/vlc-macos-${{ matrix.arch }}.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From b67a311d62915a414bd6b378a8e724043eb27795 Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 13:48:20 +0000 Subject: [PATCH 06/24] disable checking cache --- src/modules/bank.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/bank.c b/src/modules/bank.c index 52037d5b590c..8960a1df2a79 100644 --- a/src/modules/bank.c +++ b/src/modules/bank.c @@ -280,7 +280,7 @@ static int AllocatePluginFile (module_bank_t *bank, const char *abspath, if (plugin != NULL && (plugin->mtime != (int64_t)st->st_mtime - || plugin->size != (uint64_t)st->st_size)) + || plugin->size != (uint64_t)st->st_size) && false) { msg_Err(bank->obj, "stale plugins cache: modified %s", plugin->abspath); From 96b96bb831841516e2c5233751022bab6be28c40 Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 15:17:59 +0000 Subject: [PATCH 07/24] github/workflows: copy right cache-gen --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ad7245e64b7e..9ca4591a051b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -105,7 +105,7 @@ jobs: cd build ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || ../extras/package/macosx/build.sh -c ${{ matrix.arch }} - cp ./bin/vlc-cache-gen . + cp ./macos-install/libexec/vlc/vlc-cache-gen . zip -r "vlc-macos-${{ matrix.arch }}.zip" VLC.app vlc-cache-gen From 86672966651fe324596dd78e33a018c1412457e6 Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 15:37:23 +0000 Subject: [PATCH 08/24] github/workflows: add missing flag --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9ca4591a051b..e6935b41486f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,7 +103,7 @@ jobs: mkdir build cd build - ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || ../extras/package/macosx/build.sh -c ${{ matrix.arch }} + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} cp ./macos-install/libexec/vlc/vlc-cache-gen . From f97d90a3cb5a692fffdee855ada2f0df8b738999 Mon Sep 17 00:00:00 2001 From: shum Date: Mon, 5 May 2025 16:20:22 +0000 Subject: [PATCH 09/24] github/workflow: find path to cache-gen dynamically --- .github/workflows/build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e6935b41486f..ca78ff7da289 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,9 +103,11 @@ jobs: mkdir build cd build - ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} - cp ./macos-install/libexec/vlc/vlc-cache-gen . + cp "$(find . -iname 'vlc-cache-gen' -not -path './bin/*')" . zip -r "vlc-macos-${{ matrix.arch }}.zip" VLC.app vlc-cache-gen From 53c7cec6587c75f13bd7784ec04a171356897881 Mon Sep 17 00:00:00 2001 From: shum Date: Tue, 6 May 2025 13:56:09 +0000 Subject: [PATCH 10/24] github/workflows: add windows build --- .github/workflows/build.yml | 75 ++++++++++++----- .github/workflows/linux_util_free_space.sh | 96 ++++++++++++++++++++++ 2 files changed, 149 insertions(+), 22 deletions(-) create mode 100755 .github/workflows/linux_util_free_space.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ca78ff7da289..b3d442c93826 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -125,36 +125,67 @@ jobs: # ========================= build-windows: - name: "${{ matrix.os }}" + name: "Windows" needs: maybe-release runs-on: ${{ matrix.os }} - if: false strategy: fail-fast: false matrix: include: - - os: windows-latest + - os: ubuntu-latest + arch: x86_64 steps: - name: Checkout Code uses: actions/checkout@v3 - - name: Configure pagefile (Windows) - uses: simplex-chat/configure-pagefile-action@v1.4 - with: - minimum-size: 16GB - maximum-size: 16GB - disk-root: "C:" - - - name: 'Setup MSYS2' - uses: simplex-chat/setup-msys2@v2 - with: - msystem: ucrt64 - update: true - install: >- - git - perl - make - pacboy: >- - toolchain:p - cmake:p + - name: Set up Docker Buildx + uses: simplex-chat/docker-setup-buildx-action@v3 + + # Otherwise we run out of disk space with Docker build + - name: Free disk space + shell: bash + run: ./.github/workflows/linux_util_free_space.sh + + - name: Start container + shell: bash + run: | + docker run -t -d \ + --device /dev/fuse \ + --cap-add SYS_ADMIN \ + --security-opt apparmor:unconfined \ + --name builder \ + -v /home/runner/work/_temp:/home/runner/work/_temp \ + -v ${{ github.workspace }}:/project \ + ubuntu:latest + + - name: Build CLI + shell: docker exec -t builder sh -eu {0} + run: | + apt update && apt upgrade -y + + apt install -y git wget bzip2 file libwine-dev unzip libtool libtool-bin libltdl-dev pkg-config ant \ + build-essential automake texinfo yasm p7zip-full autopoint \ + gettext cmake zip wine nsis g++-mingw-w64-i686 curl gperf flex bison \ + libcurl4-gnutls-dev python3 python3-setuptools python3-mako python3-requests \ + gcc make procps ca-certificates \ + openjdk-11-jdk-headless nasm jq gnupg \ + meson autoconf dos2unix + + wget https://github.com/mstorsjo/llvm-mingw/releases/download/20220906/llvm-mingw-20220906-msvcrt-ubuntu-18.04-x86_64.tar.xz + tar xvf llvm-mingw-20220906-msvcrt-ubuntu-18.04-x86_64.tar.xz -C /opt + export PATH=/opt/llvm-mingw-20220906-msvcrt-ubuntu-18.04-x86_64/bin:$PATH + + update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java + + mkdir /project/build *&& cd /project/build + ../extras/package/win32/build.sh -a x86_64 || + ../extras/package/win32/build.sh -a x86_64 || + ../extras/package/win32/build.sh -a x86_64 + + cd win64 + make package-win-common + + zip -r vlc-win-${{ matrix.arch }}.zip vlc-* + chmod 777 vlc-win-${{ matrix.arch }}.zip + diff --git a/.github/workflows/linux_util_free_space.sh b/.github/workflows/linux_util_free_space.sh new file mode 100755 index 000000000000..ef00eb886e7a --- /dev/null +++ b/.github/workflows/linux_util_free_space.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# Taken from: https://github.com/apache/arrow/blob/main/ci/scripts/util_free_space.sh + +set -eux + +df -h +echo "::group::/usr/local/*" +du -hsc /usr/local/* +echo "::endgroup::" +# ~1GB +sudo rm -rf \ + /usr/local/aws-sam-cil \ + /usr/local/julia* || : +echo "::group::/usr/local/bin/*" +du -hsc /usr/local/bin/* +echo "::endgroup::" +# ~1GB (From 1.2GB to 214MB) +sudo rm -rf \ + /usr/local/bin/aliyun \ + /usr/local/bin/azcopy \ + /usr/local/bin/bicep \ + /usr/local/bin/cmake-gui \ + /usr/local/bin/cpack \ + /usr/local/bin/helm \ + /usr/local/bin/hub \ + /usr/local/bin/kubectl \ + /usr/local/bin/minikube \ + /usr/local/bin/node \ + /usr/local/bin/packer \ + /usr/local/bin/pulumi* \ + /usr/local/bin/sam \ + /usr/local/bin/stack \ + /usr/local/bin/terraform || : +# 142M +sudo rm -rf /usr/local/bin/oc || : \ +echo "::group::/usr/local/share/*" +du -hsc /usr/local/share/* +echo "::endgroup::" +# 506MB +sudo rm -rf /usr/local/share/chromium || : +# 1.3GB +sudo rm -rf /usr/local/share/powershell || : +echo "::group::/usr/local/lib/*" +du -hsc /usr/local/lib/* +echo "::endgroup::" +# 15GB +sudo rm -rf /usr/local/lib/android || : +# 341MB +sudo rm -rf /usr/local/lib/heroku || : +# 1.2GB +sudo rm -rf /usr/local/lib/node_modules || : +echo "::group::/opt/*" +du -hsc /opt/* +echo "::endgroup::" +# 679MB +sudo rm -rf /opt/az || : +echo "::group::/opt/microsoft/*" +du -hsc /opt/microsoft/* +echo "::endgroup::" +# 197MB +sudo rm -rf /opt/microsoft/powershell || : +echo "::group::/opt/hostedtoolcache/*" +du -hsc /opt/hostedtoolcache/* +echo "::endgroup::" +# 5.3GB +sudo rm -rf /opt/hostedtoolcache/CodeQL || : +# 1.4GB +sudo rm -rf /opt/hostedtoolcache/go || : +# 489MB +sudo rm -rf /opt/hostedtoolcache/PyPy || : +# 376MB +sudo rm -rf /opt/hostedtoolcache/node || : +# Remove Web browser packages +sudo apt purge -y \ + firefox \ + google-chrome-stable \ + microsoft-edge-stable +df -h From 4fe67d2784c7660fb94eb8a27c3a5c05f3e3a779 Mon Sep 17 00:00:00 2001 From: shum Date: Tue, 6 May 2025 14:07:03 +0000 Subject: [PATCH 11/24] github/workflows: fix apt --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b3d442c93826..492cdea8ac15 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -161,6 +161,7 @@ jobs: - name: Build CLI shell: docker exec -t builder sh -eu {0} run: | + export TZ='Etc/UTC' DEBIAN_FRONTEND=noninteractive apt update && apt upgrade -y apt install -y git wget bzip2 file libwine-dev unzip libtool libtool-bin libltdl-dev pkg-config ant \ From af029f35280a31827f3b5ac448e915bee511bf78 Mon Sep 17 00:00:00 2001 From: shum Date: Tue, 6 May 2025 14:12:44 +0000 Subject: [PATCH 12/24] github/workflows: fix mark --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 492cdea8ac15..dfb680931133 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -178,7 +178,7 @@ jobs: update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java - mkdir /project/build *&& cd /project/build + mkdir /project/build && cd /project/build ../extras/package/win32/build.sh -a x86_64 || ../extras/package/win32/build.sh -a x86_64 || ../extras/package/win32/build.sh -a x86_64 From 6133886b2beb015c5f6a983d9328589ebe803b3a Mon Sep 17 00:00:00 2001 From: shum Date: Tue, 6 May 2025 14:14:37 +0000 Subject: [PATCH 13/24] github/workflows: upload win archive to release --- .github/workflows/build.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dfb680931133..049ea68c7d26 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -189,4 +189,11 @@ jobs: zip -r vlc-win-${{ matrix.arch }}.zip vlc-* chmod 777 vlc-win-${{ matrix.arch }}.zip - + - name: Upload binaries + uses: simplex-chat/action-gh-release@v2 + with: + append_body: true + fail_on_unmatched_files: true + files: ./build/win64/vlc-win-${{ matrix.arch }}.zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 1208ddb6678646fe8f6c8bb869f1da345b1fbd19 Mon Sep 17 00:00:00 2001 From: shum Date: Tue, 6 May 2025 17:49:05 +0000 Subject: [PATCH 14/24] github/workflows: maybe fix? --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 049ea68c7d26..1aa87d57d795 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -177,6 +177,7 @@ jobs: export PATH=/opt/llvm-mingw-20220906-msvcrt-ubuntu-18.04-x86_64/bin:$PATH update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java + chmod -R 777 /project && git config --global --add safe.directory '*' mkdir /project/build && cd /project/build ../extras/package/win32/build.sh -a x86_64 || From 8f04b3744df80a24ddd4b62d767107af5745c53a Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 15 May 2025 05:15:02 +0000 Subject: [PATCH 15/24] ci: build win release, not debug --- .github/workflows/build.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1aa87d57d795..63363a6e31a7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -180,14 +180,12 @@ jobs: chmod -R 777 /project && git config --global --add safe.directory '*' mkdir /project/build && cd /project/build - ../extras/package/win32/build.sh -a x86_64 || - ../extras/package/win32/build.sh -a x86_64 || - ../extras/package/win32/build.sh -a x86_64 + ../extras/package/win32/build.sh -a x86_64 -l -r -i r || + ../extras/package/win32/build.sh -a x86_64 -l -r -i r || + ../extras/package/win32/build.sh -a x86_64 -l -r -i r || : cd win64 - make package-win-common - - zip -r vlc-win-${{ matrix.arch }}.zip vlc-* + mv vlc-*-win64.zip vlc-win-${{ matrix.arch }}.zip chmod 777 vlc-win-${{ matrix.arch }}.zip - name: Upload binaries From cc7dc9ba130732ff9120d7ba8dd811b5c211137b Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 15 May 2025 07:39:28 +0000 Subject: [PATCH 16/24] ci: macos build release --- .github/workflows/build.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 63363a6e31a7..dbeb4769a4a2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,13 +103,11 @@ jobs: mkdir build cd build - ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || - ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} || - ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} -i u || + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} -i u || + ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} -i u - cp "$(find . -iname 'vlc-cache-gen' -not -path './bin/*')" . - - zip -r "vlc-macos-${{ matrix.arch }}.zip" VLC.app vlc-cache-gen + mv vlc-*-release.zip "vlc-macos-${{ matrix.arch }}.zip" - name: Upload binaries uses: simplex-chat/action-gh-release@v2 From 20e3dd010692a076231f9ea095269b98721310c1 Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 15 May 2025 20:40:05 +0000 Subject: [PATCH 17/24] ci: test building linux --- .github/workflows/build.yml | 64 ++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dbeb4769a4a2..a837fda8f430 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,20 +53,76 @@ jobs: name: "ubuntu-${{ matrix.os }}" needs: maybe-release runs-on: ubuntu-${{ matrix.os }} - if: false strategy: fail-fast: false matrix: include: - os: 22.04 + arch: x86_64 steps: - name: Checkout Code uses: actions/checkout@v3 - - name: Setup swap - uses: ./.github/actions/swap + - name: Set up Docker Buildx + uses: simplex-chat/docker-setup-buildx-action@v3 + + # Otherwise we run out of disk space with Docker build + - name: Free disk space + shell: bash + run: ./.github/workflows/linux_util_free_space.sh + + - name: Start container + shell: bash + run: | + docker run -t -d \ + --device /dev/fuse \ + --cap-add SYS_ADMIN \ + --security-opt apparmor:unconfined \ + --name builder \ + -v /home/runner/work/_temp:/home/runner/work/_temp \ + -v ${{ github.workspace }}:/project \ + ubuntu:latest + + - name: Build CLI + shell: docker exec -t builder sh -eu {0} + run: | + echo "deb-src http://deb.debian.org/debian stable main" >> /etc/apt/sources.list + export TZ='Etc/UTC' DEBIAN_FRONTEND=noninteractive + apt update && apt upgrade -y + + apt build-dep -y vlc && + apt install -y git curl zip git-core libtool automake autoconf autopoint make \ + gettext pkg-config subversion cmake cvs zip bzip2 \ + p7zip-full wget dos2unix ragel yasm g++ protobuf-compiler \ + m4 ant build-essential libtool-bin libavformat-dev \ + libavresample-dev libavutil-dev libpostproc-dev libswscale-dev \ + wayland-protocols qtbase5-private-dev libarchive-dev libmpg123-dev \ + libnfs-dev libqt5svg5-dev flex bison curl qtdeclarative5-dev \ + qtquickcontrols2-5-dev nasm gcovr libxkbcommon-x11-dev meson &&\ + apt-get clean -y && rm -rf /var/lib/apt/lists/* + + chmod -R 777 /project && git config --global --add safe.directory '*' + + cd /project && mkdir vlc-install + + ./bootstrap &&\ + ./configure --prefix="$PWD/vlc-install" &&\ + make -j"$(nproc)" &&\ + make install + + cd vlc-install + zip -r vlc-linux-${{ matrix.arch }}.zip * + mv vlc-linux-${{ matrix.arch }}.zip ../ + chmod 777 vlc-linux-${{ matrix.arch }}.zip + + - name: Upload binaries + uses: simplex-chat/action-gh-release@v2 with: - swap-size-gb: 30 + append_body: true + fail_on_unmatched_files: true + files: ./build/win64/vlc-linux-${{ matrix.arch }}.zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # ========================= # MacOS Build From e39308803492053b36b17d317ab5b43994d9e61a Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 15 May 2025 20:43:47 +0000 Subject: [PATCH 18/24] ci: fix linux docker image --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a837fda8f430..3a58d5221c85 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -81,7 +81,7 @@ jobs: --name builder \ -v /home/runner/work/_temp:/home/runner/work/_temp \ -v ${{ github.workspace }}:/project \ - ubuntu:latest + debian:stable - name: Build CLI shell: docker exec -t builder sh -eu {0} From a2b20a6eeb3b476234b33fbcf0c5555ffc732408 Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 15 May 2025 20:56:48 +0000 Subject: [PATCH 19/24] ci: fix linux packages --- .github/workflows/build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3a58d5221c85..16a543d164b7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -90,15 +90,16 @@ jobs: export TZ='Etc/UTC' DEBIAN_FRONTEND=noninteractive apt update && apt upgrade -y - apt build-dep -y vlc && - apt install -y git curl zip git-core libtool automake autoconf autopoint make \ + apt build-dep -y vlc + apt install -y git curl zip libtool automake autoconf autopoint make \ gettext pkg-config subversion cmake cvs zip bzip2 \ p7zip-full wget dos2unix ragel yasm g++ protobuf-compiler \ m4 ant build-essential libtool-bin libavformat-dev \ - libavresample-dev libavutil-dev libpostproc-dev libswscale-dev \ + libswresample-dev libavutil-dev libpostproc-dev libswscale-dev \ wayland-protocols qtbase5-private-dev libarchive-dev libmpg123-dev \ libnfs-dev libqt5svg5-dev flex bison curl qtdeclarative5-dev \ - qtquickcontrols2-5-dev nasm gcovr libxkbcommon-x11-dev meson &&\ + qtquickcontrols2-5-dev nasm gcovr libxkbcommon-x11-dev meson || : + apt install -y git apt-get clean -y && rm -rf /var/lib/apt/lists/* chmod -R 777 /project && git config --global --add safe.directory '*' From 7daad8723ecab5a27aac5a1bacc8db13d56b2ef3 Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 15 May 2025 21:07:45 +0000 Subject: [PATCH 20/24] ci: final linux fix --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 16a543d164b7..58a35f2bd023 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,7 +114,7 @@ jobs: cd vlc-install zip -r vlc-linux-${{ matrix.arch }}.zip * mv vlc-linux-${{ matrix.arch }}.zip ../ - chmod 777 vlc-linux-${{ matrix.arch }}.zip + chmod 777 ../vlc-linux-${{ matrix.arch }}.zip - name: Upload binaries uses: simplex-chat/action-gh-release@v2 From 85859ec73d2694d9fde559f7dc457571706f17c0 Mon Sep 17 00:00:00 2001 From: shum Date: Fri, 16 May 2025 06:38:57 +0000 Subject: [PATCH 21/24] ci: linux portable build (hopefully) --- .github/workflows/build.yml | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 58a35f2bd023..6a061f7f95b3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -92,14 +92,13 @@ jobs: apt build-dep -y vlc apt install -y git curl zip libtool automake autoconf autopoint make \ - gettext pkg-config subversion cmake cvs zip bzip2 \ + gettext pkg-config subversion cmake cvs zip bzip2 patchelf \ p7zip-full wget dos2unix ragel yasm g++ protobuf-compiler \ m4 ant build-essential libtool-bin libavformat-dev \ libswresample-dev libavutil-dev libpostproc-dev libswscale-dev \ wayland-protocols qtbase5-private-dev libarchive-dev libmpg123-dev \ libnfs-dev libqt5svg5-dev flex bison curl qtdeclarative5-dev \ qtquickcontrols2-5-dev nasm gcovr libxkbcommon-x11-dev meson || : - apt install -y git apt-get clean -y && rm -rf /var/lib/apt/lists/* chmod -R 777 /project && git config --global --add safe.directory '*' @@ -107,11 +106,32 @@ jobs: cd /project && mkdir vlc-install ./bootstrap &&\ - ./configure --prefix="$PWD/vlc-install" &&\ + ./configure --prefix="$PWD/vlc-install" --disable-qt &&\ make -j"$(nproc)" &&\ make install cd vlc-install + + find "./bin" -maxdepth 1 -type f | while read -r exe; do + echo "Patching rpath in: $exe" + patchelf --set-rpath '$ORIGIN/../lib:$ORIGIN' "$exe" || : + done + + find "./lib" -maxdepth 1 -type f | while read -r exe; do + echo "Patching rpath in: $exe" + patchelf --set-rpath '$ORIGIN/../lib:$ORIGIN' "$exe" || : + done + + find "./lib/vlc" -maxdepth 1 -type f | while read -r exe; do + echo "Patching rpath in: $exe" + patchelf --set-rpath '$ORIGIN/../../lib:$ORIGIN' "$exe" || : + done + + find "./lib/vlc/plugins" -type f | while read -r exe; do + echo "Patching rpath in: $exe" + patchelf --set-rpath '$ORIGIN/../../../../lib:$ORIGIN' "$exe" || : + done + zip -r vlc-linux-${{ matrix.arch }}.zip * mv vlc-linux-${{ matrix.arch }}.zip ../ chmod 777 ../vlc-linux-${{ matrix.arch }}.zip @@ -121,7 +141,7 @@ jobs: with: append_body: true fail_on_unmatched_files: true - files: ./build/win64/vlc-linux-${{ matrix.arch }}.zip + files: ./vlc-linux-${{ matrix.arch }}.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 32cebe77733793fbf04043c9bc83eb5370c1c746 Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 22 May 2025 05:28:24 +0000 Subject: [PATCH 22/24] ci: create linux appimage --- .github/workflows/build.yml | 53 +++++++++++++++---------------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6a061f7f95b3..75d97d3bf506 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -94,7 +94,7 @@ jobs: apt install -y git curl zip libtool automake autoconf autopoint make \ gettext pkg-config subversion cmake cvs zip bzip2 patchelf \ p7zip-full wget dos2unix ragel yasm g++ protobuf-compiler \ - m4 ant build-essential libtool-bin libavformat-dev \ + m4 ant build-essential libtool-bin libavformat-dev fuse fuse3 \ libswresample-dev libavutil-dev libpostproc-dev libswscale-dev \ wayland-protocols qtbase5-private-dev libarchive-dev libmpg123-dev \ libnfs-dev libqt5svg5-dev flex bison curl qtdeclarative5-dev \ @@ -103,45 +103,36 @@ jobs: chmod -R 777 /project && git config --global --add safe.directory '*' - cd /project && mkdir vlc-install + cd /project ./bootstrap &&\ - ./configure --prefix="$PWD/vlc-install" --disable-qt &&\ + ./configure --prefix="/usr" &&\ make -j"$(nproc)" &&\ - make install - - cd vlc-install - - find "./bin" -maxdepth 1 -type f | while read -r exe; do - echo "Patching rpath in: $exe" - patchelf --set-rpath '$ORIGIN/../lib:$ORIGIN' "$exe" || : - done - - find "./lib" -maxdepth 1 -type f | while read -r exe; do - echo "Patching rpath in: $exe" - patchelf --set-rpath '$ORIGIN/../lib:$ORIGIN' "$exe" || : - done - - find "./lib/vlc" -maxdepth 1 -type f | while read -r exe; do - echo "Patching rpath in: $exe" - patchelf --set-rpath '$ORIGIN/../../lib:$ORIGIN' "$exe" || : - done - - find "./lib/vlc/plugins" -type f | while read -r exe; do - echo "Patching rpath in: $exe" - patchelf --set-rpath '$ORIGIN/../../../../lib:$ORIGIN' "$exe" || : - done - - zip -r vlc-linux-${{ matrix.arch }}.zip * - mv vlc-linux-${{ matrix.arch }}.zip ../ - chmod 777 ../vlc-linux-${{ matrix.arch }}.zip + make -j"$(nproc)" DESTDIR=$(pwd)/build/ install + + rm /project/build/usr/lib/vlc/plugins/plugins.dat + + find /project/build/usr/lib/vlc/ -maxdepth 1 -name "lib*.so*" -exec patchelf --set-rpath '$ORIGIN/../' {} \; + find /project/build/usr/lib/vlc/plugins/ -name "lib*.so*" -exec patchelf --set-rpath '$ORIGIN/../../:$ORIGIN/../../../' {} \; + + curl -LO 'https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage' &&\ + + chmod a+x linuxdeployqt-continuous-x86_64.AppImage + + # linuxdeployqt workaround + mkdir -p /project/build/usr/share/doc/libc6 &&\ + touch /project/build/usr/share/doc/libc6/copyright + + ./linuxdeployqt-continuous-x86_64.AppImage /project/build/usr/share/applications/vlc.desktop -appimage -unsupported-allow-new-glibc -bundle-non-qt-libs -exclude-libs=libfreetype.so.6 + + mv VLC_media_player-*.AppImage vlc-linux-${{ matrix.arch }}.appimage && chmod 777 vlc-linux-${{ matrix.arch }}.appimage - name: Upload binaries uses: simplex-chat/action-gh-release@v2 with: append_body: true fail_on_unmatched_files: true - files: ./vlc-linux-${{ matrix.arch }}.zip + files: ./vlc-linux-${{ matrix.arch }}.appimage env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 2c11d2a16bf05e34508f1a701a92fcec439ded79 Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 22 May 2025 05:56:32 +0000 Subject: [PATCH 23/24] ci: fix fuse for linux --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 75d97d3bf506..ea80e9755377 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -94,7 +94,7 @@ jobs: apt install -y git curl zip libtool automake autoconf autopoint make \ gettext pkg-config subversion cmake cvs zip bzip2 patchelf \ p7zip-full wget dos2unix ragel yasm g++ protobuf-compiler \ - m4 ant build-essential libtool-bin libavformat-dev fuse fuse3 \ + m4 ant build-essential libtool-bin libavformat-dev fuse \ libswresample-dev libavutil-dev libpostproc-dev libswscale-dev \ wayland-protocols qtbase5-private-dev libarchive-dev libmpg123-dev \ libnfs-dev libqt5svg5-dev flex bison curl qtdeclarative5-dev \ From df6f14bde3362bc747c61d7e9ed3ca97a13b944f Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 22 May 2025 07:51:14 +0000 Subject: [PATCH 24/24] ci: fix vlc zip archive --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ea80e9755377..4fb5ff37a48a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -175,7 +175,8 @@ jobs: ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} -i u || ../extras/package/macosx/build.sh -c -a ${{ matrix.arch }} -i u - mv vlc-*-release.zip "vlc-macos-${{ matrix.arch }}.zip" + unzip -oqq vlc-*-release.zip && cd vlc-*-release + zip -r "vlc-macos-${{ matrix.arch }}.zip" . && mv "vlc-macos-${{ matrix.arch }}.zip" .. - name: Upload binaries uses: simplex-chat/action-gh-release@v2