[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