From 77bb1ff47960eb8c1e8f8f3b2a00facae100ea3d Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Fri, 6 May 2022 15:01:38 +0100 Subject: [PATCH] Switch the Windows installer from NSIS to MSI This means we get a few bugs fixed: * We appear in the Add/Remove Programs UI * We have an uninstaller that works on Windows 10 * The installation is pretty, and scriptable * We actually install the translations --- .circleci/config.yml | 29 +------- contrib/build-windows.sh | 92 +++++++++++++++++++++++ contrib/ci/build_windows.sh | 141 ++++++++++++++++++++++++++++++------ contrib/ci/dependencies.xml | 30 ++++++++ contrib/fwupd.wxs.in | 40 ++++++++++ contrib/meson.build | 7 +- contrib/setup-win32.nsi.in | 101 -------------------------- data/fwupd.ico | Bin 0 -> 67646 bytes meson.build | 10 --- subprojects/gcab.wrap | 5 ++ 10 files changed, 290 insertions(+), 165 deletions(-) create mode 100755 contrib/build-windows.sh create mode 100644 contrib/fwupd.wxs.in delete mode 100644 contrib/setup-win32.nsi.in create mode 100644 data/fwupd.ico diff --git a/.circleci/config.yml b/.circleci/config.yml index 7534bb47d..2a30a4f75 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -20,33 +20,6 @@ jobs: docker: - image: fedora:36 steps: - - run: - name: "Install deps" - command: dnf install -y diffutils - gettext - glib2-devel - git-core - gnutls-utils - jq - meson - git - gcc - gcab - ca-certificates - python3-pip - mingw32-nsis - mingw64-brotli - mingw64-gcc - mingw64-gettext - mingw64-pkg-config - mingw64-glib2 - mingw64-gnutls - mingw64-libusbx - mingw64-sqlite - mingw64-libarchive - mingw64-json-glib - mingw64-curl - wine - checkout - run: name: "Build Win32" @@ -54,7 +27,7 @@ jobs: - persist_to_workspace: root: . paths: - - "dist/setup/*.exe" + - "dist/setup/*.msi" - "dist/VERSION" - "dist/news.txt" - store_artifacts: diff --git a/contrib/build-windows.sh b/contrib/build-windows.sh new file mode 100755 index 000000000..6a8f33769 --- /dev/null +++ b/contrib/build-windows.sh @@ -0,0 +1,92 @@ +#!/bin/sh +set -e + +root=$(pwd) +export DESTDIR=${root}/dist +build=$root/build-win32 +mkdir -p "$build" && cd "$build" + +# install deps +if [ ! -f /usr/share/mingw/toolchain-mingw64.meson ]; then + ./contrib/ci/fwupd_setup_helpers.py -v mingw64 install-dependencies +fi + +# try to keep this and ../contrib/ci/build_windows.sh in sync as much as makes sense +meson .. \ + --cross-file=/usr/share/mingw/toolchain-mingw64.meson \ + --prefix=/ \ + --sysconfdir="etc" \ + --libexecdir="bin" \ + --bindir="bin" \ + -Dbuild=all \ + -Ddocs=none \ + -Dhsi=false \ + -Dman=false \ + -Dfish_completion=false \ + -Dbash_completion=false \ + -Dfirmware-packager=false \ + -Dmetainfo=false \ + -Dcompat_cli=false \ + -Dsoup_session_compat=false \ + -Dgcab:introspection=false \ + -Dgcab:docs=false \ + -Dgcab:nls=false \ + -Dgcab:vapi=false \ + -Dgcab:tests=false \ + -Dlibxmlb:introspection=false \ + -Dlibxmlb:gtkdoc=false \ + -Dlibjcat:man=false \ + -Dlibjcat:gpg=false \ + -Dlibjcat:tests=false \ + -Dlibjcat:introspection=false \ + -Dgusb:tests=false \ + -Dgusb:docs=false \ + -Dgusb:introspection=false \ + -Dgusb:vapi=false + +# run tests +export WINEPATH="/usr/x86_64-w64-mingw32/sys-root/mingw/bin/;$build/libfwupd/;$build/libfwupdplugin/;$build/subprojects/libxmlb/src/;$build/subprojects/gcab/libgcab/;$build/subprojects/libjcat/libjcat/;$build/subprojects/gusb/gusb/" +ninja -C "$build" install +ninja -C "$build" test + +CERTDIR=/etc/pki/tls/certs +MINGW32BINDIR=/usr/x86_64-w64-mingw32/sys-root/mingw/bin + +# copy deps +cp -f -v $MINGW32BINDIR/curl.exe \ + $MINGW32BINDIR/gspawn-win64-helper-console.exe \ + $MINGW32BINDIR/gspawn-win64-helper.exe \ + $MINGW32BINDIR/iconv.dll \ + $MINGW32BINDIR/libarchive-13.dll \ + $MINGW32BINDIR/libbrotlicommon.dll \ + $MINGW32BINDIR/libbrotlidec.dll \ + $MINGW32BINDIR/libbz2-1.dll \ + $MINGW32BINDIR/libcrypto-1_1-x64.dll \ + $MINGW32BINDIR/libcurl-4.dll \ + $MINGW32BINDIR/libffi-*.dll \ + $MINGW32BINDIR/libgcc_s_seh-1.dll \ + $MINGW32BINDIR/libgio-2.0-0.dll \ + $MINGW32BINDIR/libglib-2.0-0.dll \ + $MINGW32BINDIR/libgmodule-2.0-0.dll \ + $MINGW32BINDIR/libgmp-10.dll \ + $MINGW32BINDIR/libgnutls-30.dll \ + $MINGW32BINDIR/libgobject-2.0-0.dll \ + $MINGW32BINDIR/libhogweed-*.dll \ + $MINGW32BINDIR/libidn2-0.dll \ + $MINGW32BINDIR/libintl-8.dll \ + $MINGW32BINDIR/libjson-glib-1.0-0.dll \ + $MINGW32BINDIR/liblzma-5.dll \ + $MINGW32BINDIR/libnettle-*.dll \ + $MINGW32BINDIR/libp11-kit-0.dll \ + $MINGW32BINDIR/libpcre-1.dll \ + $MINGW32BINDIR/libsqlite3-0.dll \ + $MINGW32BINDIR/libssh2-1.dll \ + $MINGW32BINDIR/libssl-1_1-x64.dll \ + $MINGW32BINDIR/libssp-0.dll \ + $MINGW32BINDIR/libtasn1-6.dll \ + $MINGW32BINDIR/libusb-1.0.dll \ + $MINGW32BINDIR/libwinpthread-1.dll \ + $MINGW32BINDIR/libxml2-2.dll \ + $MINGW32BINDIR/zlib1.dll \ + "$DESTDIR/bin/" +cp -f -v "$CERTDIR/ca-bundle.crt" "$DESTDIR/bin/" diff --git a/contrib/ci/build_windows.sh b/contrib/ci/build_windows.sh index 5667e129d..e0bac1b7d 100755 --- a/contrib/ci/build_windows.sh +++ b/contrib/ci/build_windows.sh @@ -1,10 +1,28 @@ #!/bin/sh set -e + +# if invoked outside of CI +if [ "$CI" != "true" ]; then + echo "Not running in CI, please manually configure Windows build" + exit 1 +fi + +# install deps +./contrib/ci/fwupd_setup_helpers.py --yes -o fedora -v mingw64 install-dependencies + +# update things that are not yet in Fedora updates-testing +if [ "$(id -u)" -eq 0 ]; then + dnf install -y \ + https://kojipkgs.fedoraproject.org//packages/msitools/0.101.32/5.fc36/x86_64/msitools-0.101.32-5.fc36.x86_64.rpm \ + https://kojipkgs.fedoraproject.org//packages/msitools/0.101.32/5.fc36/x86_64/libmsi1-0.101.32-5.fc36.x86_64.rpm +fi + #prep export LC_ALL=C.UTF-8 root=$(pwd) export DESTDIR=${root}/dist build=$root/build-win32 + rm -rf $DESTDIR $build # For logitech bulk controller being disabled (-Dplugin_logitech_bulkcontroller=disabled): @@ -14,9 +32,8 @@ rm -rf $DESTDIR $build # 2. add protoc = /path/to/protoc-c.exe in mingw64.cross # 3. Only enable when not a tagged release (Unsupported by Logitech) -#build +# try to keep this and ../contrib/build-windows.sh in sync as much as makes sense mkdir -p $build $DESTDIR && cd $build -python3 -m pip install --user "meson >= 0.60.0" meson .. \ --cross-file=/usr/share/mingw/toolchain-mingw64.meson \ --prefix=/ \ @@ -27,6 +44,9 @@ meson .. \ -Ddocs=none \ -Dhsi=false \ -Dman=false \ + -Dfish_completion=false \ + -Dbash_completion=false \ + -Dfirmware-packager=false \ -Dmetainfo=false \ -Dcompat_cli=false \ -Dsoup_session_compat=false \ @@ -39,14 +59,22 @@ meson .. \ -Dlibxmlb:gtkdoc=false \ -Dlibjcat:man=false \ -Dlibjcat:gpg=false \ + -Dlibjcat:tests=false \ -Dlibjcat:introspection=false \ -Dgusb:tests=false \ -Dgusb:docs=false \ -Dgusb:introspection=false \ -Dgusb:vapi=false $@ VERSION=$(meson introspect . --projectinfo | jq -r .version) -ninja -v -ninja -v install + +# run tests +export WINEPATH="/usr/x86_64-w64-mingw32/sys-root/mingw/bin/;$build/libfwupd/;$build/libfwupdplugin/;$build/subprojects/libxmlb/src/;$build/subprojects/gcab/libgcab/;$build/subprojects/libjcat/libjcat/;$build/subprojects/gusb/gusb/" +ninja --verbose -C "$build" -v +ninja -C "$build" test + +# switch to release optimizations +meson configure -Dtests=false -Dbuildtype=release +ninja -C "$build" -v install #generate news release cd $root @@ -57,25 +85,94 @@ echo $VERSION > $DESTDIR/VERSION sed -i 's,UpdateMotd=.*,UpdateMotd=false,' $DESTDIR/etc/fwupd/daemon.conf # create a setup binary -cd $DESTDIR -mkdir -p $DESTDIR/setup -makensis -NOCD $build/contrib/setup-win32.nsi +CERTDIR=/etc/pki/tls/certs +MINGW32BINDIR=/usr/x86_64-w64-mingw32/sys-root/mingw/bin -#so that it's actually executable -cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/*.dll bin +# deps +find $MINGW32BINDIR \ + -name curl.exe \ + -o -name gspawn-win64-helper-console.exe \ + -o -name gspawn-win64-helper.exe \ + -o -name iconv.dll \ + -o -name libarchive-13.dll \ + -o -name libbrotlicommon.dll \ + -o -name libbrotlidec.dll \ + -o -name libbz2-1.dll \ + -o -name libcrypto-1_1-x64.dll \ + -o -name libcurl-4.dll \ + -o -name "libffi-*.dll" \ + -o -name libgcc_s_seh-1.dll \ + -o -name libgio-2.0-0.dll \ + -o -name libglib-2.0-0.dll \ + -o -name libgmodule-2.0-0.dll \ + -o -name libgmp-10.dll \ + -o -name libgnutls-30.dll \ + -o -name libgobject-2.0-0.dll \ + -o -name "libhogweed-*.dll" \ + -o -name libidn2-0.dll \ + -o -name libintl-8.dll \ + -o -name libjson-glib-1.0-0.dll \ + -o -name liblzma-5.dll \ + -o -name "libnettle-*.dll" \ + -o -name libp11-kit-0.dll \ + -o -name libpcre-1.dll \ + -o -name libsqlite3-0.dll \ + -o -name libssh2-1.dll \ + -o -name libssl-1_1-x64.dll \ + -o -name libssp-0.dll \ + -o -name libtasn1-6.dll \ + -o -name libusb-1.0.dll \ + -o -name libwinpthread-1.dll \ + -o -name libxml2-2.dll \ + -o -name zlib1.dll \ + | wixl-heat \ + -p $MINGW32BINDIR/ \ + --win64 \ + --directory-ref BINDIR \ + --var "var.MINGW32BINDIR" \ + --component-group "CG.fwupd-deps" | \ + tee $build/contrib/fwupd-deps.wxs -#remove static archives -find -type f -print0 -name "*.dll.a" | xargs rm -f +# CA bundle +echo $CERTDIR/ca-bundle.crt | wixl-heat \ + -p $CERTDIR/ \ + --win64 \ + --directory-ref BINDIR \ + --var "var.CRTDIR" \ + --component-group "CG.fwupd-certs" | \ + tee "$build/contrib/fwupd-certs.wxs" -#remove stuff that we really don't need -rm -fr gcab.exe \ - xb-tool.exe \ - share/man \ - include \ - fwupd \ - lib/*.a \ - lib/pkgconfig/ \ - var +# our files +find "$DESTDIR" | \ + wixl-heat \ + -p "$DESTDIR/" \ + -x include/ \ + -x share/fwupd/device-tests/ \ + -x share/tests/ \ + -x share/man/ \ + -x share/doc/ \ + -x lib/pkgconfig/ \ + --win64 \ + --directory-ref INSTALLDIR \ + --var "var.DESTDIR" \ + --component-group "CG.fwupd-files" | \ + tee "$build/contrib/fwupd-files.wxs" -export WINEPATH="/usr/x86_64-w64-mingw32/sys-root/mingw/bin/;$build/libfwupd/;$build/libfwupdplugin/;$build/subprojects/libxmlb/src/;$build/subprojects/gcab/libgcab/;$build/subprojects/libjcat/libjcat/;$build/subprojects/gusb/gusb/" -ninja -C $build test +MSI_FILENAME="$DESTDIR/setup/fwupd-$VERSION-setup-x86_64.msi" +mkdir -p "$DESTDIR/setup" +wixl -v \ + "$build/contrib/fwupd.wxs" \ + "$build/contrib/fwupd-deps.wxs" \ + "$build/contrib/fwupd-certs.wxs" \ + "$build/contrib/fwupd-files.wxs" \ + -D CRTDIR=$CERTDIR \ + -D MINGW32BINDIR=$MINGW32BINDIR \ + -D Win64="yes" \ + -D DESTDIR="$DESTDIR" \ + -o "${MSI_FILENAME}" + +# check the msi archive can be installed and removed (use "wine uninstaller" to do manually) +wine msiexec /i "${MSI_FILENAME}" +ls -R ~/.wine/drive_c/Program\ Files/fwupd/ +wine ~/.wine/drive_c/Program\ Files/fwupd/bin/fwupdtool get-plugins --json +wine msiexec /x "${MSI_FILENAME}" diff --git a/contrib/ci/dependencies.xml b/contrib/ci/dependencies.xml index 3be07e757..c8e6dca1e 100644 --- a/contrib/ci/dependencies.xml +++ b/contrib/ci/dependencies.xml @@ -62,6 +62,7 @@ + @@ -96,6 +97,9 @@ + + mingw64-gcc + @@ -150,6 +154,7 @@ json-glib-devel + mingw64-json-glib json-glib-devel @@ -361,6 +366,8 @@ + + gcab @@ -382,6 +389,9 @@ + + gettext + mingw64-gettext @@ -452,6 +462,7 @@ + @@ -480,6 +491,9 @@ glib2-devel + + glib2-devel + mingw64-glib2 glib-devel @@ -545,6 +559,7 @@ gnutls-devel + mingw64-gnutls gnutls-devel @@ -608,6 +623,7 @@ + @@ -683,6 +699,7 @@ libarchive-devel + mingw64-libarchive @@ -839,6 +856,7 @@ libgusb-devel + mingw64-libgusb libgusb-devel @@ -917,6 +935,7 @@ libcurl-devel + mingw64-curl libcurl-devel @@ -992,6 +1011,7 @@ + @@ -1061,6 +1081,9 @@ + + mingw64-pkg-config + @@ -1330,6 +1353,7 @@ sqlite-devel + mingw64-sqlite @@ -1634,4 +1658,10 @@ + + + + wine + + diff --git a/contrib/fwupd.wxs.in b/contrib/fwupd.wxs.in new file mode 100644 index 000000000..5b83f28b2 --- /dev/null +++ b/contrib/fwupd.wxs.in @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + NOT NEWERVERSIONDETECTED + + + + + + + + + + + + + + + + + + diff --git a/contrib/meson.build b/contrib/meson.build index d5493c7e4..f1513ed77 100644 --- a/contrib/meson.build +++ b/contrib/meson.build @@ -14,10 +14,9 @@ configure_file( ) if host_machine.system() == 'windows' - # replace @FWUPD_VERSION@ configure_file( - input : 'setup-win32.nsi.in', - output : 'setup-win32.nsi', - configuration : con2, + input: 'fwupd.wxs.in', + output: 'fwupd.wxs', + configuration: conf ) endif diff --git a/contrib/setup-win32.nsi.in b/contrib/setup-win32.nsi.in deleted file mode 100644 index 3e250044a..000000000 --- a/contrib/setup-win32.nsi.in +++ /dev/null @@ -1,101 +0,0 @@ -#!Nsis Installer Command Script -# -# To build an installer from the script you would normally do: -# -# dnf install mingw32-nsis -# makensis setup-win32.nsi - -Name "" -OutFile "setup/fwupd-@FWUPD_VERSION@-setup-x86_64.exe" -InstallDir "$ProgramFiles\fwupd" -InstallDirRegKey HKLM SOFTWARE\fwupd "Install_Dir" -ShowInstDetails hide -ShowUninstDetails hide -XPStyle on -Page directory -Page instfiles - -ComponentText "Select which optional components you want to install." - -DirText "Please select the installation folder." - -Section "fwupd" - SectionIn RO - - SetOutPath "$INSTDIR\bin" - - # deps - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/iconv.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libarchive-13.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libbrotlicommon.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libbrotlidec.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libbz2-1.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libcrypto-1_1-x64.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssh2-1.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssl-1_1-x64.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll" - File /r "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libffi-*.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgcc_s_seh-1.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgio-2.0-0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libglib-2.0-0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgmodule-2.0-0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgmp-10.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgnutls-30.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgnutls-30.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgobject-2.0-0.dll" - File /r "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libhogweed-*.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libidn2-0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libintl-8.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libjson-glib-1.0-0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/liblzma-5.dll" - File /r "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libnettle-*.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libp11-kit-0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpcre-1.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libcurl-4.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libsqlite3-0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libtasn1-6.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libusb-1.0.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libwinpthread-1.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libxml2-2.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/zlib1.dll" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/curl.exe" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/gspawn-win64-helper-console.exe" - File "/usr/x86_64-w64-mingw32/sys-root/mingw/bin/gspawn-win64-helper.exe" - File "/etc/pki/tls/certs/ca-bundle.crt" - - # fwupd - File "bin/fwupdtool.exe" - File "bin/libfwupd-2.dll" - File "bin/libfwupdplugin-@FWUPD_PLUGINVER@.dll" - File "bin/libgcab-1.0-0.dll" - File "bin/libxmlb-2.dll" - File "bin/libjcat-1.dll" - File "bin/libgusb-2.dll" - SetOutPath "$INSTDIR\fwupd-plugins-@FWUPD_PLUGINVER@" - File /r "fwupd-plugins-@FWUPD_PLUGINVER@/libfu_plugin_*.dll" - SetOutPath "$INSTDIR\etc\fwupd" - File "etc/fwupd/daemon.conf" - SetOutPath "$INSTDIR\etc\pki\fwupd" - File "etc/pki/fwupd/LVFS-CA.pem" - SetOutPath "$INSTDIR\share\fwupd\quirks.d" - File /r "share/fwupd/quirks.d/*.quirk" - SetOutPath "$INSTDIR\etc\fwupd\remotes.d" - File "etc/fwupd/remotes.d/lvfs.conf" - File "etc/fwupd/remotes.d/lvfs-testing.conf" - - ReadEnvStr $0 COMSPEC - SetOutPath "$INSTDIR" -SectionEnd - -Section "Uninstall" - RMDir /rebootok /r "$SMPROGRAMS\fwupd" - RMDir /rebootok /r "$INSTDIR\bin" - RMDir /rebootok /r "$INSTDIR\etc" - RMDir /rebootok /r "$INSTDIR\lib" - RMDir /rebootok /r "$INSTDIR\share" - RMDir /rebootok "$INSTDIR" -SectionEnd - -Section -post - WriteUninstaller "$INSTDIR\Uninstall fwupd.exe" -SectionEnd diff --git a/data/fwupd.ico b/data/fwupd.ico new file mode 100644 index 0000000000000000000000000000000000000000..d92df08b6513a8699a72892c9d1d1f7f2c9dfda3 GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/meson.build b/meson.build index 4e893834e..f35386350 100644 --- a/meson.build +++ b/meson.build @@ -564,13 +564,3 @@ subdir('docs') if build_daemon and libsystemd.found() meson.add_install_script('meson_post_install.sh', systemdunitdir) endif - -makensis = find_program('makensis', required : host_machine.system() == 'windows') -if makensis.found() - run_target( - 'makensis', - command: [ - makensis, - join_paths(meson.project_source_root(), 'contrib', 'setup-win32.nsi'), - ]) -endif diff --git a/subprojects/gcab.wrap b/subprojects/gcab.wrap index 35e59d0a7..52640dadb 100644 --- a/subprojects/gcab.wrap +++ b/subprojects/gcab.wrap @@ -2,3 +2,8 @@ directory = gcab url = https://gitlab.gnome.org/GNOME/gcab.git revision = b55268ac1020cd6c033acb52f2e6ae984bf5c9fd + +# disabled until we depend on a meson including https://github.com/mesonbuild/meson/pull/10291 +# and https://gitlab.gnome.org/GNOME/gcab/-/merge_requests/10 is merged +# [provide] +# program_names = gcab