PKGBUILDs for creating various Arch Linux packages
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Martchus 91e5450d70 Sync Qt 6 version in versions.sh 8 hours ago
android-ndk/default Update android-ndk to r21.d 8 months ago
angleproject/mingw-w64 [angleproject] Add google-cloud-sdk to makedepends 2 years ago
assimp/mingw-w64 Fix building mingw-w64-qt6-*3d packages 7 months ago
baikal/default Update baikal to 0.8.0 3 months ago
bashmarks/custom Add customized version of bashmarks Git package 2 years ago
bento4/default Update bento4 to 1.6.0.637 8 months ago
binutils/mingw-w64-symlinks Update mingw-w64-binutils-symlinks to 2.32 2 years ago
blackwidowcontrol Update blackwidowcontrol to 1.0.2 1 year ago
bluetooth-raspberrypi Add alarm-bluetooth-raspberrypi 3 years ago
boost Sync android-*-boost variants 2 months ago
brother-mfc-j4410dw/default Make brother-mfc-j4410dw depend on lib32-gcc-libs 3 years ago
brotli/mingw-w64 Add mingw-w64-qt6-base (alpha) 7 months ago
bzip2/static Add static variants of serveral packages 3 months ago
c++utilities Update own projects 1 month ago
ccache Remove clang-ccache 4 years ago
cmake Import android-cmake from AUR 4 months ago
cmake-format/default Update cmake-format to 0.6.13 9 months ago
configure/mingw-w64 Don't use -fstack-protector-strong when compiling for Windows 2 years ago
cppunit Update cppunit packages to 1.15.0 1 year ago
dbus/static Add static variants of serveral packages 3 months ago
dbus-soundrecorder/default Use ninja instead of make for building own projects and rapidjson 7 months ago
dcadec/mingw-w64 added mingw-w64-{dcadec,libsoxr,vid.stab,xvidcore} 5 years ago
devel Sync Qt 6 version in versions.sh 8 hours ago
devtools/custom Update devtools-custom to 20210202 3 months ago
diriterator/default Update own packages 4 years ago
essentia/git Disable Python tests for essentia 2 years ago
evince/mingw-w64 further adjustments for mingw-w64-qt5-* 5 years ago
exorciser/default further adjustments for mingw-w64-qt5-* 5 years ago
expat/static Add static variants of serveral packages 3 months ago
extra-cmake-modules/mingw-w64 Update mingw extra-cmake-modules to 5.76.0 5 months ago
ffmpeg Update ffmpeg-custom to 4.4 5 days ago
filezilla Update mingw-w64-filezilla to 3.25.2 4 years ago
fontconfig/static Add static variants of serveral packages 3 months ago
freetype2 Add static variants of serveral packages 3 months ago
freetype2-bootstrap Add static variants of serveral packages 3 months ago
gdk-pixbuf2/mingw-w64 Add mingw-w64-gdk-pixbuf2 4 years ago
geany/mingw-w64 Update mingw-w64-geany to 1.33.0 3 years ago
genesis-starter/default Add genesis-starter 5 years ago
geocoordinatecalculator Use ninja instead of make for building own projects and rapidjson 7 months ago
gerbera/default Update gerbera to 1.6.4 7 months ago
gettext/mingw-w64 Fix mingw-w64-gettext 12 months ago
git-codereview/default Add git-codereview 4 years ago
gitea/default Make permissions of Gogs config file consistent 2 years ago
github-release/gdm85-git Add github-release package from gdm85's fork 1 year ago
glib2 Add static variants of serveral packages 3 months ago
gnome-breeze/git Improve descriptions 5 years ago
gnutls/mingw-w64 Update mingw-w64-gnutls to 3.6.14 10 months ago
gogs/default Update gogs to 0.12.3 7 months ago
graphite/static Add static variants of serveral packages 3 months ago
gsm/mingw-w64 added mingw-w64-gsm 5 years ago
gtk3/mingw-w64 Update mingw-w64-gtk3 to 3.22.3 5 years ago
handbrake/libfdk_aac Update handbrake-libfdk_aac to 1.2.2 2 years ago
harfbuzz Add static variants of serveral packages 3 months ago
hopper/default Update hopper to 4.3.26 3 years ago
indicator-kdeconnect/git Import indicator-kdeconnect-git from AUR and fix vala dependency 2 years ago
isoviewer/default Fix description of isoviewer 5 years ago
jangouts/default Update jangouts to 0.4.8 1 year ago
janus-gateway/default Update janus to 0.6.2 2 years ago
jflap/default further adjustments for mingw-w64-qt5-* 5 years ago
kdeconnect/git Add kdeconnect-git 5 years ago
kernel-backup-hooks/default Add kernel-backup-hooks 4 years ago
keyutils/static Add static variants of serveral packages 3 months ago
kirigami2 Update mingw-w64-kirigami2 to 5.76.0 5 months ago
libb2/static Add static variants of serveral packages 3 months ago
libdvdread/default Import libdvdread from official repos and update to 6.0.1 2 years ago
libffi/static Add static variants of serveral packages 3 months ago
libfilezilla Update mingw-w64-libfilezilla to 0.12.2 3 years ago
libgcrypt/static Add static variants of serveral packages 3 months ago
libglvnd/static Add static variants of serveral packages 3 months ago
libgpg-error/static Add static variants of serveral packages 3 months ago
libice/static Add static variants of serveral packages 3 months ago
libiconv Use android-configure for android-*-libiconv 1 year ago
libpng/static Add static variants of serveral packages 3 months ago
libsm/static Add static variants of serveral packages 3 months ago
libsoxr/mingw-w64 added mingw-w64-{dcadec,libsoxr,vid.stab,xvidcore} 5 years ago
libssh/mingw-w64 added pkgconfig fix (from AUR) 5 years ago
libx11/static Add static variants of serveral packages 3 months ago
libxau/static Add static variants of serveral packages 3 months ago
libxcb/static Add static variants of serveral packages 3 months ago
libxdmcp/static Add static variants of serveral packages 3 months ago
libxext/static Add static variants of serveral packages 3 months ago
libxkbcommon/static Add static variants of serveral packages 3 months ago
libxml2/static Add static variants of serveral packages 3 months ago
ltunify/default Add ltunify 11 months ago
lz4/static Add static variants of serveral packages 3 months ago
mariadb-connector-c/mingw-w64 Update mingw-w64-mariadb-connector-c to 3.1.12 3 weeks ago
mediaplayerctl/default Fix mediaplayerctl 5 years ago
mediawriter/default Update mediawriter to 4.2.1 2 weeks ago
meson/mingw-w64 Sync mingw-w64-meson with AUR for gcc-ranlib 3 years ago
midifile/git Add midifile-git 2 years ago
mkvtoolnix/git removed most install files 5 years ago
mpv/mingw-w64 Update MPV. 3 years ago
mxedeployqt/git Improve mxedeployqt 3 years ago
nettle/mingw-w64 Import mingw-w64-nettle from AUR and update to 3.5.1 2 years ago
networkmanager-sstp/default Use $pkgver in networkmanager-sstp 5 years ago
nginx/custom Update nginx-custom to 1.14.0 3 years ago
nginx-mod-accesskey/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-cache-purge/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-dav-ext/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-fancyindex/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-rtmp/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-slowfs-cache/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-substitutions-filter/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-upload-progress/default Rebuild NGINX modules against 1.20.0 3 weeks ago
nginx-mod-upstream-fair/default Rebuild NGINX modules against 1.20.0 3 weeks ago
okular/git Add okular-git 5 years ago
openelec-dvb-firmware Remove useless provides/conflicts from openelec-dvb-firmware 5 months ago
openocd Add openocd with patch for STM32L4+ 3 years ago
openssl Applied android-ndk r22 fix to android-x86-openssl 3 months ago
openssl-1.0/mingw-w64 Update mingw-w64-openssl-1.0 to 1.0.2u 1 year ago
osxcross/apple-darwin Update osxcross to 325-16efae8 using MacOSX-SDK 10.13 2 years ago
p11-kit/mingw-w64 Port mingw-w64-p11-kit to meson 2 years ago
passwordfile Update own projects 5 months ago
passwordmanager Update own projects 4 months ago
pcre/static Add static variants of serveral packages 3 months ago
pcre2 Add static variants of serveral packages 3 months ago
pdfmerge/default Improve descriptions 5 years ago
pi-fm-rds/git Remove patches for pi-fm-rds 2 years ago
pistache/git pistache: do not move lib64/ to lib/ 2 years ago
plasma-sdk/default Replace plasma-sdk-debug with plasmoidviewer-debug 3 years ago
plasma-wayland-session-no-dbus/default Add package for Wayland Plasma session without D-Bus 12 months ago
plasma5-applets-thermal-monitor/git Import plasma5-applets-thermal-monitor-git from AUR and add patch 2 years ago
plasmoidviewer-debug/default Update plasmoidviewer-debug to 5.17.1 2 years ago
pocketsphinx/default Fix formatting in pocketsphinx 1 year ago
poedit/default Patch poedit to fix crash when opening po file 4 years ago
postgresql/mingw-w64 Update mingw-w64-postgresql to 13.2 2 months ago
proto-quic/mingw-w64-git Update mingw-w64-angleproject 5 years ago
psi/git Import psi-git from AUR and fix dependencies 3 years ago
python-colorzero/git Import/add some Python libs for the Pi 3 years ago
python-gpiozero Update python-gpiozero-git 2 years ago
python-pyusb/default Import changes (python-pyusb) from NicoHood 5 years ago
python-raspberry-gpio/default Import/add some Python libs for the Pi 3 years ago
python-rpi.gpio/default Import/add some Python libs for the Pi 3 years ago
python-spidev/default Import/add some Python libs for the Pi 3 years ago
qca-qt5/mingw-w64 Build mingw-w64-qca against OpenSSL 1.1 3 years ago
qemu-binfmt-arm/default Add qemu-binfmt-arm 3 years ago
qmplay2/default Import qmplay2 from the AUR 2 years ago
qpaeq-menu-entry/default Remove unnecessary dependency 'python-pyqt5' 1 year ago
qsyncthingtray/default Update QSyncthingTray to 0.5.2 5 years ago
qt5 Revert android-*-qt5 packages to 5.13.1 5 months ago
qt5-3d Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-activeqt/mingw-w64 Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-base Update Qt 5.15.2 to use KDE fork 4 weeks ago
qt5-canvas3d Add separate packages for static Qt 5 modules (mingw-w64) 8 months ago
qt5-charts Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-connectivity Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-datavis3d Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-declarative Update Qt 5.15.2 to use KDE fork 4 weeks ago
qt5-gamepad Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-graphicaleffects Remove leftover file 4 months ago
qt5-imageformats Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-location Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-multimedia Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-networkauth Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-quickcontrols Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-quickcontrols2 Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-remoteobjects Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-script Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-scxml Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-sensors Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-serialport Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-speech Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-svg Update Qt 5.15.2 to use KDE fork 4 weeks ago
qt5-tools Update Qt 5.15.2 to use KDE fork 4 weeks ago
qt5-translations Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-virtualkeyboard Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-webchannel Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-webengine Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-webglplugin Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-websockets Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-winextras Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt5-xmlpatterns Update mingw-w64-qt5-* packages to 5.15.2 6 months ago
qt6-3d Update *-qt6-* packages to 6.1.0 1 day ago
qt6-5compat Update *-qt6-* packages to 6.1.0 1 day ago
qt6-activeqt Update *-qt6-* packages to 6.1.0 1 day ago
qt6-base Update *-qt6-* packages to 6.1.0 1 day ago
qt6-charts Update *-qt6-* packages to 6.1.0 1 day ago
qt6-datavis3d Update *-qt6-* packages to 6.1.0 1 day ago
qt6-declarative Update *-qt6-* packages to 6.1.0 1 day ago
qt6-imageformats Update *-qt6-* packages to 6.1.0 1 day ago
qt6-lottie Update *-qt6-* packages to 6.1.0 1 day ago
qt6-networkauth Update *-qt6-* packages to 6.1.0 1 day ago
qt6-quick3d Update *-qt6-* packages to 6.1.0 1 day ago
qt6-quickcontrols2 Update *-qt6-* packages to 6.1.0 1 day ago
qt6-quicktimeline Update *-qt6-* packages to 6.1.0 1 day ago
qt6-scxml Update *-qt6-* packages to 6.1.0 1 day ago
qt6-shadertools Update *-qt6-* packages to 6.1.0 1 day ago
qt6-svg Update *-qt6-* packages to 6.1.0 1 day ago
qt6-tools Update *-qt6-* packages to 6.1.0 1 day ago
qt6-translations Update *-qt6-* packages to 6.1.0 1 day ago
qt6-virtualkeyboard Update *-qt6-* packages to 6.1.0 1 day ago
qt6-wayland/default Update Qt 6 packages to 6.0.0 5 months ago
qt6ct/default Update Qt 6 packages to 6.0.0 5 months ago
qtutilities Update own projects 5 days ago
rapidjson Use ninja instead of make for building own projects and rapidjson 7 months ago
reflective-rapidjson Rebuild reflective-rapidjson against clang 11.1.0 3 months ago
repoindex Use ninja instead of make for building own projects and rapidjson 7 months ago
roccat-tools/default Import roccat-tools from AUR and fix issues 10 months ago
rpi_ws281x/git Remove patches for rpi_ws281x-git 2 years ago
sphinxbase/default Add patch for doxy2swig compilation issue. (#119) 1 year ago
sqlite/mingw-w64 further adjustments for mingw-w64-qt5-* 5 years ago
sqlpp11/default Import and update sqlpp11 4 years ago
sstp-client/default Clean makedepends of sstp-client 5 years ago
subtitlecomposer Rebuild subtitlecomposer against icu 67.1-1 1 year ago
syncthingtray Update own projects 5 days ago
system-image/android-arm64-v8a Update Android packages 2 years ago
systray-memory-display/git Add systray-memory-display-git 3 years ago
tageditor Update own projects 4 months ago
tagparser Update tagparser-git package 4 months ago
toggletouch/default further adjustments for mingw-w64-qt5-* 5 years ago
ttf-consolas/default Update dependencies of ttf-consolas 10 months ago
ttf-oxygen/default Import ttf-oxygen from the AUR and update source URL 10 months ago
ubuntu-latex-fonts/git Remove install script for ubuntu-latex-fonts 5 years ago
util-linux/static Add static variants of serveral packages 3 months ago
vid.stab/mingw-w64 added mingw-w64-{dcadec,libsoxr,vid.stab,xvidcore} 5 years ago
videodownloader Update own projects 4 months ago
vlc/nightly Update vlc-nightly 2 years ago
warmux/default Rebuild warmux 4 years ago
wayland/static Add static variants of serveral packages 3 months ago
wxwidgets/mingw-w64 Sync mingw-w64-wxmsw with AUR 5 years ago
x264 Update mingw-w64-x264 to 155.r0a84d986 3 years ago
x265/mingw-w64 Update x264 and x265 4 years ago
xcb-util/static Add static variants of serveral packages 3 months ago
xcb-util-image/static Add static variants of serveral packages 3 months ago
xcb-util-keysyms/static Add static variants of serveral packages 3 months ago
xcb-util-renderutil/static Add static variants of serveral packages 3 months ago
xcb-util-wm/static Add static variants of serveral packages 3 months ago
xvidcore/mingw-w64 added mingw-w64-{dcadec,libsoxr,vid.stab,xvidcore} 5 years ago
xz/static Add static variants of serveral packages 3 months ago
zstd/static Add static variants of serveral packages 3 months ago
zuki-themes/git Add zuki-themes-git 5 years ago
.gitignore Generate mingw-w64-qt5-* packages from templates 1 year ago
.gitmodules Add alarm-bluetooth-raspberrypi 3 years ago
LICENSE outsourced PKGBUILD files from project repositories 6 years ago
README.md Update android-*-qt6-* and mingw-w64-qt6-* packages to 6.0.1 3 months ago

README.md

PKGBUILDs

Contains PKGBUILD files for creating Arch Linux packages:

  • Packages for my own applications and libraries such as Syncthing Tray, Tag Editor, Password Manager, ...
  • Packages I maintain in the AUR:
    • misc packages, eg. Subtitle Composer, openelec-dvb-firmware, Jangouts
    • mingw-w64-* packages which allow to build for Windows under Arch Linux, eg. FreeType 2, Qt 5 and Qt 6
    • *-static packages containing static libraries
    • android-* packages which allow to build for Android under Arch Linux, eg. iconv, Boost, OpenSSL, CppUnit, Qt 5 and Kirigami
    • apple-darwin-* packages which allow to build for MaxOS X under Arch Linux, eg. osxcross and Qt 5 (still experimental)
  • Other packages imported from the AUR to build with slight modifications

So if you like to improve one of my AUR packages, just create a PR here.

Binary repository

I also provide a binary repository containing the packages found in this repository and a lot of packages found in the AUR:

[ownstuff-testing]
SigLevel = Optional TrustAll
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch

[ownstuff]
SigLevel = Optional TrustAll
Server = https://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Server = https://ftp.f3l.de/~martchus/$repo/os/$arch

The testing repository is required if you have the official testing repository enabled. (Packages contained by ownstuff-testing are linked against packages found in the official testing repository.)

The repository is focusing on x86_64 but some packages are also provided for i686 and aarch64.

Note that I can not assure that required rebuilds always happen fast enough (since the offical developers obviously don't wait for me before releasing their packages from staging).

Requests regarding binary packages can be tracked on the issue tracker of this GitHub project as well, e.g. within the general discussion issue.

Docker image

Checkout the repository docker-mingw-qt5.

Structure

Each package is in its own subdirectoy:

default-pkg-name/variant

where default-pkg-name is the default package name (eg. qt5-base) and variant usually one of:

  • default: the regular package
  • git/svn/hg: the development version
  • mingw-w64: the Windows version (i686/SJLJ and x86_64/SEH)
  • android-{aarch64,armv7a-eabi,x86-64,x86}: the Android version (currently only aarch64 actively maintained/tested)
  • apple-darwin: the MacOS X version (still experimental)

The repository does not contain .SRCINFO files.

Generated PKGBUILDs

To avoid repetition some PKGBUILDs are generated. These PKGBUILDs are determined by the presence of the file PKGBUILD.sh.ep besides the actual PKGBUILD file. The PKGBUILD file is only present for read-only purposes in this case - do not edit it manually. Instead, edit the PKGBUILD.sh.ep file and invoke devel/generator/generate.pl. This requires the perl-Mojolicious package to be installed. Set the environment variable LOG_LEVEL to adjust the log level (e.g. debug/info/warn/error). Template layouts/fragments are stored within generator/templates.

Documentation about the used templating system

Contributing to patches

Patches for most packages are managed in a fork of the project under my GitHub profile. For instance, patches for mingw-w64-qt5-base are managed at github.com/Martchus/qtbase.

I usually create a dedicated branch for each version, eg. 5.10.1-mingw-w64. It contains all the patches based on Qt 5.10.1. When doing fixes later on, I usually preserve the original patches and create a new branch, eg. 5.10.1-mingw-w64-fixes.

So in this case it would make sense to contribute directly there. To fix an existing patch, just create a fixup commit. This (unusual) fixup workflow aims to keep the number of additional changes as small as possbile.

To get the patches into the PKGBUILD files, the script devel/qt5/update-patches.sh is used.

Mass rebasing of Qt patches

This is always done by me. Please don't try to help here because it will only cause conflicts. However, the workflow is quite simple:

  1. Run devel/qt5/rebase-patches.sh on all Qt repository forks or just devel/qt5/rebase-all-patches.sh
    • eg. rebase-patches.sh 5.11.0 5.10.1 mingw-w64-fixes to create branch 5.11.0-mingw-w64 based on 5.10.1-mingw-w64-fixes
    • after fixing possible conflicts, run devel/qt5/continue-rebase-patches.sh
    • otherwise, that's it
    • all scripts need to run in the Git repository directory of the Qt module except rebase-all-patches.sh which needs the environment variable QT_GIT_REPOS_DIR to be set
  2. Run devel/qt5/update-patches.sh or devel/qt5/update-all-patches.sh to update PKGBUILDs
    • eg. devel/qt5/update-all-patches.sh "" mingw-w64 qt6 to consider all mingw-w64-qt6-* packages

Brief documentation about mingw-w64-qt packages

The Qt project does not support building Qt under GNU/Linux when targeting Windows. With Qt 6 they also stopped 32-bit builds. They also don't provide static builds for Windows. They are also relying a lot on their bundled libraries while my builds aim to build dependencies separately. So expect some rough edges when using my packaging.

Neverthless it make sense to follow the official documentation. For concrete examples how to use this packaging with CMake, just checkout the mingw-w64 variants of e.g. syncthingtray within this repository. The Arch Wiki also has a section about mingw-w64 packaging.

Note that the ANGLE and "dynamic" variants of Qt 5 packages do not work because they would require fxc.exe to build.

Tested build and deployment tools for mingw-w64-qt5 packages

Currently, I test with qmake and CMake. With both build systems it is possible to use either the shared or the static libraries. Please read the comments in the PKGBUILD file itself and the pinned comments in the AUR for futher information.

There are also pkg-config files, but those aren't really tested.

qbs and windeployqt currently don't work very well (see issues). Using the static libraries or mxedeployqt might be an alternative for windeployqt.

Tested build and deployment tools for mingw-w64-qt6 packages

In order to build a Qt-based project using mingw-w64-qt6 packages one also needs to install the regular qt6-base package for development tools such as moc. The packages qt6-tools and qt6-declarative contain also native packages which might be required by some projects.

Currently, I test only CMake. It is possible to use either the shared or the static libraries. The static libraries are installed into a nested prefix (/usr/i686-w64-mingw32/static and /usr/x86_64-w64-mingw32/static) so this prefix needs to be prepended to CMAKE_FIND_ROOT_PATH for using the static libraries. To generally prefer static libraries one might use the helper scripts provided by the mingw-w64-cmake-static package.

The build systems qbs and qmake are not tested. It looks like Qt's build system does not install pkg-config files anymore and so far no effort has been taken to enable them.

Note that windeployqt needed to be enabled by the official/regular qt6-tools package but would likely not work very well anyways. Using the static libraries or mxdeployqt might be an alternative for windeployqt.

Static plugins and CMake

Qt 5 initially didn't support it so I added patches to make it work. After Qt 5 added support I still kept my own version because I didn't want to risk any regressions (which would be tedious to deal with). So the official documentation does not apply to my packages. One simply has to link against the targets of the wanted static plugins manually.

However, for Qt 6 I dropped my patches and the official documentation applies. I would still recommended to set the target property QT_DEFAULT_PLUGINS of relevant targets to 0 and link against wanted plugin targets manually. At least in my cases list of plugins selected by default seemed needlessly long. I would also recommended to set the CMake variable QT_SKIP_AUTO_QML_PLUGIN_INCLUSION to a falsy value because this pulls in a lot of dependencies which are likely not needed.

Further documentation

The directory qt5-base/mingw-w64 contains also a README with more Qt 5 specific information.

Running Windows executables built using mingw-w64 packages with WINE

It is recommended to use the scripts x86_64-w64-mingw32-wine and i686-w64-mingw32-wine provided by the mingw-w64-wine package. These scripts are a wrapper around the regular wine binary ensuring all the DLLs provided by mingw-w64-*-packages of the relevant architecture can be located. It also uses a distinct wine prefix so your usual configuration (e.g. tailored to run certain games) does not go into the way and is also not messed with.

Here are neverthless some useful hints to run WINE manually:

  • Set the environment variable WINEPREFIX to use a distinct WINE-prefix if wanted.
  • Set WINEPATH for the search directories of needed DLLs, e.g. WINEPATH=$builds/libfoo;$builds/libbar;/usr/x86_64-w64-mingw32.
  • Set WINEARCH to win32 for a 32-bit environment (win64 is the default which will get you a 64-bit environment)
  • Set WINEDLLOVERRIDES to control loading DLLs, e.g. WINEDLLOVERRIDES=mscoree,mshtml= disables the annoying Gecko popup.
  • To set environment variables like PATH or QT_PLUGIN_PATH for the Windows program itself use the following approach:
    1. Open regedit
    2. Go to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
    3. Add/modify the variable, e.g. set PATH=C:\windows\system32;C:\windows;Z:\usr\x86_64-w64-mingw32\bin and QT_PLUGIN_PATH=Z:/usr/x86_64-w64-mingw32/lib/qt6/plugins
  • It is possible to run apps in an headless environment but be aware that WINE is not designed for this. For instance, when an application crashes WINE still attempts to show the crash window and the application stays stuck in that state.
  • See https://wiki.winehq.org/Wine_User's_Guide for more information

Static GNU/Linux libraries

This repository contains several *-static packages providing static libraries intended to distribute "self-contained" executables. These packages are still experimental and are not be regularily updated at this point.

It would conceivable to build even Qt as a static library and make even a fully statically linked executable. However, it would not be possible to support OpenGL because glvnd and vendor provided OpenGL libraries are always dynamic libraries. It is also not clear whether it makes sense to link against libc and X11/Wayland client libraries statically. Maybe it makes sense to aim for a partially statically linked build instead where libc/OpenGL/X11/Wayland are assumed to be provided by the GNU/Linux system but other libraries like Qt are linked against statically. This would be similar to AppImage where a lot of libraries are bundled but certain "core libraries" are expected to be provided by the system.

Note that I decided to let static libraries live within the subprefix /usr/static (in contrast to packages found in the AUR). The reason is that the version might not be kept 100 % in sync with the shared counterpart. Hence it makes sense to make the static packages independent with their own headers and configuration files to avoid problems due to mismatching versions. Besides, some projects (such as Qt) do not support installing shared and static libraries within the same prefix at the same time because the config files would clash.