[vlc-commits] [Git][videolan/vlc][3.0.x] Add Flatpak build and CI
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat May 23 11:01:34 UTC 2026
Steve Lhomme pushed to branch 3.0.x at VideoLAN / VLC
Commits:
4c608da1 by Mathieu Velten at 2026-05-23T09:44:03+00:00
Add Flatpak build and CI
- - - - -
6 changed files:
- extras/ci/gitlab-ci.yml
- + extras/package/flatpak/README.md
- + extras/package/flatpak/org.videolan.VLC.yaml
- + extras/package/flatpak/package.mak
- + extras/package/flatpak/vlc-fix-appdata.patch
- + extras/package/flatpak/vlc.sh
Changes:
=====================================
extras/ci/gitlab-ci.yml
=====================================
@@ -1,5 +1,6 @@
stages:
- build
+ - repo
default:
before_script:
@@ -22,6 +23,8 @@ variables:
VLC_DEBIAN_QT6_IMAGE: registry.videolan.org/vlc-debian-unstable:20260121072258
VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android-3.0:20260504124015
VLC_ANDROID4_IMAGE: registry.videolan.org/vlc-debian-android:20250626142950
+ VLC_FLATPAK_IMAGE: registry.videolan.org/vlc-flatpak:20260516184439
+ VLC_FLATPAK_AARCH64_IMAGE: registry.videolan.org/vlc-flatpak-aarch64:20260520052237
.variables-debian: &variables-debian
HOST_ARCH: x86_64
@@ -341,6 +344,93 @@ nightly-debian:
after_script:
artifacts:
+.flatpak-common:
+ extends: .docker-template
+ variables:
+ FLATPAK_BRANCH: 3.0.x
+ MANIFEST_PATH: extras/package/flatpak/org.videolan.VLC.yaml
+ script:
+ - flatpak-builder-lint --exceptions manifest ${MANIFEST_PATH}
+ - flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
+ - flatpak-builder --default-branch ${FLATPAK_BRANCH} --user --install-deps-from=flathub --disable-rofiles-fuse --disable-updates --force-clean --ccache --mirror-screenshots-url=https://dl.flathub.org/media/ build-${HOST_ARCH} ${MANIFEST_PATH}
+ cache:
+ key: flatpak-ccache-${HOST_ARCH}
+ paths:
+ - .flatpak-builder/ccache/
+ artifacts:
+ paths:
+ - build-${HOST_ARCH}
+ expire_in: 1 day
+
+flatpak-x86_64:
+ extends: .flatpak-common
+ image:
+ name: $VLC_FLATPAK_IMAGE
+ entrypoint: [""]
+ variables:
+ HOST_ARCH: x86_64
+ tags:
+ - dind-amd64
+
+flatpak-aarch64:
+ extends: .flatpak-common
+ image:
+ name: $VLC_FLATPAK_AARCH64_IMAGE
+ entrypoint: [""]
+ variables:
+ HOST_ARCH: aarch64
+ tags:
+ - dind-aarch64
+
+.release-flatpak:
+ extends: .flatpak-common
+ only:
+ - tags
+ variables:
+ FLATPAK_BRANCH: stable
+
+release-flatpak-x86_64:
+ extends: .release-flatpak
+ image:
+ name: $VLC_FLATPAK_IMAGE
+ entrypoint: [""]
+ variables:
+ HOST_ARCH: x86_64
+ tags:
+ - dind-amd64
+
+release-flatpak-aarch64:
+ extends: .release-flatpak
+ image:
+ name: $VLC_FLATPAK_AARCH64_IMAGE
+ entrypoint: [""]
+ variables:
+ HOST_ARCH: aarch64
+ tags:
+ - dind-aarch64
+
+flatpak-repo:
+ stage: repo
+ extends: .docker-template
+ image:
+ name: $VLC_FLATPAK_IMAGE
+ entrypoint: [""]
+ script:
+ - flatpak build-export --exclude=/lib/debug/* --include=/lib/debug/app repo build-x86_64
+ - flatpak build-export --metadata=metadata.debuginfo --files=files/lib/debug repo build-x86_64
+ - flatpak build-export --exclude=/lib/debug/* --include=/lib/debug/app repo build-aarch64
+ - flatpak build-export --metadata=metadata.debuginfo --files=files/lib/debug repo build-aarch64
+ - ostree commit --repo=repo --canonical-permissions --branch=screenshots/x86_64 build-x86_64/files/share/app-info/media
+ - ostree commit --repo=repo --canonical-permissions --branch=screenshots/aarch64 build-aarch64/files/share/app-info/media
+ - flatpak-builder-lint --exceptions repo repo || true
+ artifacts:
+ paths:
+ - repo
+ expire_in: 1 week
+ dependencies:
+ - flatpak-x86_64
+ - flatpak-aarch64
+
#
# macOS
#
=====================================
extras/package/flatpak/README.md
=====================================
@@ -0,0 +1,12 @@
+# VLC plugin extension
+
+To package independent plugins for VLC you can create an extension org.videolan.VLC.Plugin.myplugin.
+
+The files in your extension will be available in /app/share/vlc/extra/myplugin.
+
+The lib folder will automatically be added in the runtime LD search paths so you can link your plugin to whatever is there.
+
+To add a VLC plugin put the .so inside a plugins directory at the root of your extension. It will then be available to VLC.
+
+All the .sh files available at the root of the extension will be sourced before launching VLC. You can then mess around with environment variables, and also modify VLC_ARGS which will be prepend to the args passed by the user.
+
=====================================
extras/package/flatpak/org.videolan.VLC.yaml
=====================================
@@ -0,0 +1,113 @@
+app-id: org.videolan.VLC
+runtime: org.kde.Platform
+runtime-version: 5.15-25.08
+sdk: org.kde.Sdk
+sdk-extensions: [org.freedesktop.Sdk.Extension.openjdk17]
+command: vlc
+finish-args:
+ - --require-version=0.11.4
+ - --share=ipc
+ - --socket=x11
+ - --socket=pulseaudio
+ - --share=network
+ - --filesystem=host
+ - --talk-name=org.freedesktop.PowerManagement
+ - --talk-name=org.freedesktop.ScreenSaver
+ - --talk-name=org.freedesktop.secrets
+ - --talk-name=org.kde.kwalletd5
+ - --talk-name=org.kde.kwalletd
+ - --talk-name=org.kde.StatusNotifierWatcher
+ - --talk-name=org.mpris.MediaPlayer2.Player
+ - --own-name=org.mpris.MediaPlayer2.vlc
+ - --device=all
+ - --filesystem=xdg-run/gvfs
+add-extensions:
+ org.videolan.VLC.Plugin:
+ versions: 3-5.15-25.08;3-25.08
+ directory: share/vlc/extra
+ subdirectories: true
+ merge-dirs: plugins
+ add-ld-path: lib
+ no-autodownload: true
+ autodelete: true
+rename-appdata-file: org.videolan.vlc.appdata.xml
+rename-desktop-file: vlc.desktop
+rename-icon: vlc
+copy-icon: true
+separate-locales: false
+cleanup:
+ - /share/doc
+ - /share/gtk-doc
+ - /share/info
+ - /share/man
+ - '*.la'
+ - '*.a'
+cleanup-commands:
+ - mv /app/contrib/share/java /app/share
+ - rm -rf /app/contrib
+ - rm -rf /app/jre/ant
+ - mkdir -p /app/share/vlc/extra
+ - ln -s /app/share/vlc/extra/plugins /app/lib/vlc/plugins/extra
+ - rm -f /app/lib/vlc/plugins/plugins.dat
+ - TZ=UTC find /app/lib/vlc/plugins -exec touch -t 197001010000 {} \;
+ - /app/lib/vlc/vlc-cache-gen /app/lib/vlc/plugins
+build-options:
+ env:
+ JAVA_HOME: /usr/lib/sdk/openjdk17
+ prepend-path: /app/contrib/bin:/usr/lib/sdk/openjdk17/bin:/app/jre/ant/bin
+ prepend-pkg-config-path: /app/contrib/lib/pkgconfig
+ cflags: -I/app/contrib/include -L/app/contrib/lib
+ cxxflags: -I/app/contrib/include -L/app/contrib/lib
+modules:
+ - name: openjdk
+ buildsystem: simple
+ build-commands:
+ - /usr/lib/sdk/openjdk17/install.sh
+ - name: ant
+ buildsystem: simple
+ build-commands:
+ - mkdir -p /app/jre/ant
+ - tar xf apache-ant-bin.tar.bz2 --strip-components=1 --directory=/app/jre/ant
+ sources:
+ - type: file
+ url: https://dlcdn.apache.org/ant/binaries/apache-ant-1.10.17-bin.tar.bz2
+ dest-filename: apache-ant-bin.tar.bz2
+ sha256: 5210fc9d77e96bf5f4639287f29826da85e54a542e0a409463b1642bc3caaee7
+ - name: contrib
+ buildsystem: simple
+ build-options:
+ build-args:
+ - --share=network
+ build-commands:
+ - mkdir -p contrib/linux
+ - cd contrib/linux && ../bootstrap --prefix=/app/contrib --enable-ffmpeg --enable-dav1d --disable-fluid --enable-fluidlite --disable-chromaprint --disable-cddb --disable-gnutls --disable-nfs --disable-sidplay2
+ - cd contrib/linux && make -j $FLATPAK_BUILDER_N_JOBS
+ sources:
+ - type: dir
+ path: ../../..
+ skip:
+ - extras
+ - name: vlc
+ config-opts:
+ - BUILDCC=/usr/bin/gcc
+ cleanup:
+ - /share/macosx
+ post-install:
+ - mv /app/bin/vlc /app/bin/vlc.bin
+ - mv vlc.sh /app/bin/vlc
+ - chmod +x /app/bin/vlc
+ - echo "StartupWMClass=VLC" >> /app/share/applications/vlc.desktop
+ - sed -i -e 's/Icon=vlc/Icon=org.videolan.VLC/g' /app/share/applications/vlc-*.desktop
+ - for s in openbd opendvd opencda openvcd; do mv /app/share/applications/vlc-$s.desktop
+ /app/share/applications/org.videolan.VLC-$s.desktop; done
+ - rm /app/share/icons/hicolor/16x16/apps/vlc.xpm /app/share/icons/hicolor/32x32/apps/vlc.xpm
+ sources:
+ - type: dir
+ path: ../../..
+ skip:
+ - contrib
+ - type: patch
+ path: vlc-fix-appdata.patch
+ - type: file
+ path: vlc.sh
+
=====================================
extras/package/flatpak/package.mak
=====================================
@@ -0,0 +1,5 @@
+flatpak:
+ flatpak-builder --user --install-deps-from=flathub --disable-rofiles-fuse --disable-updates --force-clean --ccache --repo=repo build org.videolan.VLC.yaml
+
+flatpak-clean:
+ rm -rf build repo
=====================================
extras/package/flatpak/vlc-fix-appdata.patch
=====================================
@@ -0,0 +1,12 @@
+diff --git a/share/org.videolan.vlc.appdata.xml.in.in b/share/org.videolan.vlc.appdata.xml.in.in
+index 62bd7ee443..28fc24fd94 100644
+--- a/share/org.videolan.vlc.appdata.xml.in.in
++++ b/share/org.videolan.vlc.appdata.xml.in.in
+@@ -39,4 +39,7 @@
+ </screenshot>
+ </screenshots>
+ <content_rating type="oars-1.1" />
++ <custom>
++ <value key="flathub::manifest">https://code.videolan.org/videolan/vlc/-/blob/@GIT_HASH@/extras/package/flatpak/org.videolan.VLC.yaml</value>
++ </custom>
+ </component>
=====================================
extras/package/flatpak/vlc.sh
=====================================
@@ -0,0 +1,13 @@
+#!/bin/sh
+shopt -s nullglob
+
+export PATH=/app/jre/bin:$PATH
+export JAVA_HOME=/app/jre
+export LIBBLURAY_CP=/app/share/java/
+
+for f in /app/share/vlc/extra/*/*.sh; do
+ source $f
+done
+
+exec /app/bin/vlc.bin $VLC_ARGS "$@"
+
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/4c608da16c33560821be7e5c1ad4e34bf5a65398
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/4c608da16c33560821be7e5c1ad4e34bf5a65398
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help
More information about the vlc-commits
mailing list