Extend mingw-w64-qt6-* packaging

This commit is contained in:
Martchus 2020-10-08 17:50:23 +02:00
parent 87c7401193
commit 18e2a8a93f
13 changed files with 327 additions and 26 deletions

View File

@ -41,20 +41,23 @@ unless (-d $install_directory) {
exit(-1);
}
# add helper to render qt5 dependencies
$mojolicious->helper(qt5deps => sub {
my $c = shift;
my $prefix = $c->stash('package_name_prefix');
my $suffix = $c->stash('package_name_suffix');
return join(' ', map { "'${prefix}qt5-${_}${suffix}'" } @_);
});
$mojolicious->helper(qt5optdeps => sub {
my $c = shift;
my %d = @_;
my $prefix = $c->stash('package_name_prefix');
my $suffix = $c->stash('package_name_suffix');
return join(' ', map { "'${prefix}qt5-${_}${suffix}: $d{$_}'" } sort keys %d);
});
# add helper to render Qt dependencies
sub _render_deps {
my ($package_prefix, $controller, @d) = @_;
my $prefix = $controller->stash('package_name_prefix');
my $suffix = $controller->stash('package_name_suffix');
return join(' ', map { "'${prefix}${package_prefix}-${_}${suffix}'" } @d);
}
sub _render_optdeps {
my ($package_prefix, $controller, %d) = @_;
my $prefix = $controller->stash('package_name_prefix');
my $suffix = $controller->stash('package_name_suffix');
return join(' ', map { "'${prefix}${package_prefix}-${_}${suffix}: $d{$_}'" } sort keys %d);
}
for my $qt_version (qw(qt5 qt6)) {
$mojolicious->helper("${qt_version}deps" => sub { _render_deps($qt_version, @_) });
$mojolicious->helper("${qt_version}optdeps" => sub { _render_optdeps($qt_version, @_) });
}
# find templates; populate "pages" array
my @pages;

View File

@ -16,7 +16,7 @@
pkgname=<%= $package_name %>
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
pkgrel=2
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
@ -39,23 +39,26 @@ sha256sums=('<%== $qt_module_sha256 %>'\
_architectures='i686-w64-mingw32 x86_64-w64-mingw32'
% if ($patch_files->size || content_for('prepare')->size) {
prepare () {
cd $_pkgfqn
% if ($patch_files->size) {
# apply patches; further descriptions can be found in patch files itself
for patch in "$srcdir/"*.patch; do
msg2 "Applying patch $patch"
patch -p1 -i "$patch"
done
% }
<%== content_for 'prepare' %>\
}
% }
build() {
for _arch in ${_architectures}; do
export PKG_CONFIG=/usr/bin/$_arch-pkg-config
$_arch-cmake -G Ninja -B build-$_arch -S $_pkgfqn \\
-DQT_HOST_PATH=/usr \\
-DQT_HOST_PATH=/usr \\
-DFEATURE_pkg_config=ON \\
-DFEATURE_pkg_config=ON \\
-DFEATURE_system_pcre2=ON \\
-DFEATURE_system_freetype=ON \\
@ -83,16 +86,23 @@ package() {
install -Dm644 $_pkgfqn/LICENSE* -t "$pkgdir"/usr/$_arch/share/licenses/$pkgname
# Symlinks for backwards compatibility
# Add symlinks of DLLs in usual bin directory
mkdir -p "$pkgdir/usr/bin" "$pkgdir/usr/$_arch/bin"
for dll in "$pkgdir"/usr/$_arch/lib/qt6/bin/*.dll; do
ln -rs "$dll" "$pkgdir/usr/$_arch/bin/${dll##*/}"
done
# Symlinks for backwards compatibility
for qmake; do
ln -rs "$pkgdir"/usr/$_arch/lib/qt6/bin/$_b "$pkgdir"/usr/bin/$_arch-$_b-qt6
done
$_arch-strip --strip-unneeded "$pkgdir"/usr/$_arch/bin/*.dll
$_arch-strip -g "$pkgdir"/usr/$_arch/lib/*.a
# Drop QMAKE_PRL_BUILD_DIR because reference the build dir
find "$pkgdir/usr/$_arch/lib" -type f -name '*.prl' \\
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
find "$pkgdir/usr/$_arch" -iname '*.exe' -exec $_arch-strip --strip-all {} \;
find "$pkgdir/usr/$_arch" -iname '*.dll' -exec $_arch-strip --strip-unneeded {} \;
find "$pkgdir/usr/$_arch" -iname '*.a' -exec $_arch-strip -g {} \;
done
}

View File

@ -0,0 +1,74 @@
# Maintainer: Martchus <martchus@gmx.net>
<%== content_for 'additional_contributors' %>\
# All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where
# you also find the URL of a binary repository.
<%== content_for 'comment_header' %>\
pkgname=mingw-w64-qt6-<%== $qt_module %>
<%== content %>\
options=('!strip' '!buildflags' 'staticlibs' '!emptydirs')
groups=(mingw-w64-qt6)
_pkgfqn="qt<%== $qt_module %>-everywhere-src-${_qtver}"
source=("https://download.qt.io/development_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz"\
<%== include 'fragments/source_file_list', relevant_files => $patch_files %>)
sha256sums=('<%== $qt_module_sha256 %>'\
<%== include 'fragments/sha256_list', relevant_files => $patch_files %>)
_architectures='i686-w64-mingw32 x86_64-w64-mingw32'
% if ($patch_files->size || content_for('prepare')->size) {
prepare () {
cd $_pkgfqn
% if ($patch_files->size) {
# apply patches; further descriptions can be found in patch files itself
for patch in "$srcdir/"*.patch; do
msg2 "Applying patch $patch"
patch -p1 -i "$patch"
done
% }
<%== content_for 'prepare' %>\
}
% }
build() {
for _arch in ${_architectures}; do
export PKG_CONFIG=/usr/bin/$_arch-pkg-config
<%== content_for 'before_build_config' %>\
$_arch-cmake -G Ninja -B build-$_arch -S $_pkgfqn \\
-DQT_HOST_PATH=/usr \\
-DFEATURE_pkg_config=ON \\
-DVulkan_LIBRARY="/usr/$_arch/lib/libvulkan.dll.a" \\
-DVulkan_INCLUDE_DIR="/usr/$_arch/include"<%== content_for 'after_build_config' %>
cmake --build build-$_arch
done
}
package() {
for _arch in ${_architectures}; do
<%== content_for 'before_package_install' %>\
DESTDIR="$pkgdir" cmake --install build-$_arch<%== content_for 'after_package_install' %>
% unless (stash('no_libs')) {
# Add symlinks of DLLs in usual bin directory
mkdir -p "$pkgdir/usr/bin" "$pkgdir/usr/$_arch/bin"
for dll in "$pkgdir"/usr/$_arch/lib/qt6/bin/*.dll; do
ln -rs "$dll" "$pkgdir/usr/$_arch/bin/${dll##*/}"
done
% }
% unless (stash('no_libs')) {
# Drop QMAKE_PRL_BUILD_DIR because reference the build dir
find "$pkgdir/usr/$_arch/lib" -type f -name '*.prl' \\
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
% }
find "$pkgdir/usr/$_arch" -iname '*.exe' -exec $_arch-strip --strip-all {} \;
find "$pkgdir/usr/$_arch" -iname '*.dll' -exec $_arch-strip --strip-unneeded {} \;
find "$pkgdir/usr/$_arch" -iname '*.a' -exec $_arch-strip -g {} \;
done
install -d "$pkgdir"/usr/share/licenses
ln -s /usr/share/licenses/mingw-w64-qt6-base "$pkgdir"/usr/share/licenses/mingw-w64-qt6-<%== $qt_module %>
}

View File

@ -13,7 +13,7 @@
pkgname=mingw-w64-qt6-base
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
pkgrel=2
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
@ -55,8 +55,6 @@ build() {
export PKG_CONFIG=/usr/bin/$_arch-pkg-config
$_arch-cmake -G Ninja -B build-$_arch -S $_pkgfqn \
-DQT_HOST_PATH=/usr \
-DQT_HOST_PATH=/usr \
-DFEATURE_pkg_config=ON \
-DFEATURE_pkg_config=ON \
-DFEATURE_system_pcre2=ON \
-DFEATURE_system_freetype=ON \
@ -84,16 +82,23 @@ package() {
install -Dm644 $_pkgfqn/LICENSE* -t "$pkgdir"/usr/$_arch/share/licenses/$pkgname
# Symlinks for backwards compatibility
# Add symlinks of DLLs in usual bin directory
mkdir -p "$pkgdir/usr/bin" "$pkgdir/usr/$_arch/bin"
for dll in "$pkgdir"/usr/$_arch/lib/qt6/bin/*.dll; do
ln -rs "$dll" "$pkgdir/usr/$_arch/bin/${dll##*/}"
done
# Symlinks for backwards compatibility
for qmake; do
ln -rs "$pkgdir"/usr/$_arch/lib/qt6/bin/$_b "$pkgdir"/usr/bin/$_arch-$_b-qt6
done
$_arch-strip --strip-unneeded "$pkgdir"/usr/$_arch/bin/*.dll
$_arch-strip -g "$pkgdir"/usr/$_arch/lib/*.a
# Drop QMAKE_PRL_BUILD_DIR because reference the build dir
find "$pkgdir/usr/$_arch/lib" -type f -name '*.prl' \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
find "$pkgdir/usr/$_arch" -iname '*.exe' -exec $_arch-strip --strip-all {} \;
find "$pkgdir/usr/$_arch" -iname '*.dll' -exec $_arch-strip --strip-unneeded {} \;
find "$pkgdir/usr/$_arch" -iname '*.a' -exec $_arch-strip -g {} \;
done
}

View File

@ -0,0 +1,58 @@
# Maintainer: Martchus <martchus@gmx.net>
# All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where
# you also find the URL of a binary repository.
pkgname=mingw-w64-qt6-declarative
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
pkgdesc='Classes for QML and JavaScript languages (mingw-w64)'
depends=('mingw-w64-qt6-base')
makedepends=('mingw-w64-cmake' 'mingw-w64-vulkan-headers' 'mingw-w64-vulkan-icd-loader' 'qt6-declarative' 'ninja' 'python')
optdepends=('qt6-declarative: development tools')
options=('!strip' '!buildflags' 'staticlibs' '!emptydirs')
groups=(mingw-w64-qt6)
_pkgfqn="qtdeclarative-everywhere-src-${_qtver}"
source=("https://download.qt.io/development_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz")
sha256sums=('0f72a753fd61e49572a1aa4a6e3bfe9e68461ad82320ac978d61b5ff9b8d27f0')
_architectures='i686-w64-mingw32 x86_64-w64-mingw32'
build() {
for _arch in ${_architectures}; do
export PKG_CONFIG=/usr/bin/$_arch-pkg-config
$_arch-cmake -G Ninja -B build-$_arch -S $_pkgfqn \
-DQT_HOST_PATH=/usr \
-DFEATURE_pkg_config=ON \
-DVulkan_LIBRARY="/usr/$_arch/lib/libvulkan.dll.a" \
-DVulkan_INCLUDE_DIR="/usr/$_arch/include"
cmake --build build-$_arch
done
}
package() {
for _arch in ${_architectures}; do
DESTDIR="$pkgdir" cmake --install build-$_arch
# Add symlinks of DLLs in usual bin directory
mkdir -p "$pkgdir/usr/bin" "$pkgdir/usr/$_arch/bin"
for dll in "$pkgdir"/usr/$_arch/lib/qt6/bin/*.dll; do
ln -rs "$dll" "$pkgdir/usr/$_arch/bin/${dll##*/}"
done
# Drop QMAKE_PRL_BUILD_DIR because reference the build dir
find "$pkgdir/usr/$_arch/lib" -type f -name '*.prl' \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
find "$pkgdir/usr/$_arch" -iname '*.exe' -exec $_arch-strip --strip-all {} \;
find "$pkgdir/usr/$_arch" -iname '*.dll' -exec $_arch-strip --strip-unneeded {} \;
find "$pkgdir/usr/$_arch" -iname '*.a' -exec $_arch-strip -g {} \;
done
install -d "$pkgdir"/usr/share/licenses
ln -s /usr/share/licenses/mingw-w64-qt6-base "$pkgdir"/usr/share/licenses/mingw-w64-qt6-declarative
}

View File

@ -0,0 +1,12 @@
% layout 'mingw-w64-qt6-module', has_binaries => 1;
\
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
pkgdesc='Classes for QML and JavaScript languages (mingw-w64)'
depends=(<%== qt6deps qw(base) %>)
makedepends=('mingw-w64-cmake' 'mingw-w64-vulkan-headers' 'mingw-w64-vulkan-icd-loader' 'qt6-declarative' 'ninja' 'python')
optdepends=('qt6-declarative: development tools')

View File

@ -0,0 +1 @@
0f72a753fd61e49572a1aa4a6e3bfe9e68461ad82320ac978d61b5ff9b8d27f0

View File

@ -0,0 +1,57 @@
# Maintainer: Martchus <martchus@gmx.net>
# All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where
# you also find the URL of a binary repository.
pkgname=mingw-w64-qt6-svg
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
pkgdesc='Classes for displaying the contents of SVG files (mingw-w64)'
depends=('mingw-w64-qt6-base')
makedepends=('mingw-w64-cmake' 'mingw-w64-vulkan-icd-loader' 'qt6-base' 'ninja')
options=('!strip' '!buildflags' 'staticlibs' '!emptydirs')
groups=(mingw-w64-qt6)
_pkgfqn="qtsvg-everywhere-src-${_qtver}"
source=("https://download.qt.io/development_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz")
sha256sums=('1ff80c015fe044fa1b625d37830b02e0cc780ee92638a1b7a5561adb5a0546ee')
_architectures='i686-w64-mingw32 x86_64-w64-mingw32'
build() {
for _arch in ${_architectures}; do
export PKG_CONFIG=/usr/bin/$_arch-pkg-config
$_arch-cmake -G Ninja -B build-$_arch -S $_pkgfqn \
-DQT_HOST_PATH=/usr \
-DFEATURE_pkg_config=ON \
-DVulkan_LIBRARY="/usr/$_arch/lib/libvulkan.dll.a" \
-DVulkan_INCLUDE_DIR="/usr/$_arch/include"
cmake --build build-$_arch
done
}
package() {
for _arch in ${_architectures}; do
DESTDIR="$pkgdir" cmake --install build-$_arch
# Add symlinks of DLLs in usual bin directory
mkdir -p "$pkgdir/usr/bin" "$pkgdir/usr/$_arch/bin"
for dll in "$pkgdir"/usr/$_arch/lib/qt6/bin/*.dll; do
ln -rs "$dll" "$pkgdir/usr/$_arch/bin/${dll##*/}"
done
# Drop QMAKE_PRL_BUILD_DIR because reference the build dir
find "$pkgdir/usr/$_arch/lib" -type f -name '*.prl' \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
find "$pkgdir/usr/$_arch" -iname '*.exe' -exec $_arch-strip --strip-all {} \;
find "$pkgdir/usr/$_arch" -iname '*.dll' -exec $_arch-strip --strip-unneeded {} \;
find "$pkgdir/usr/$_arch" -iname '*.a' -exec $_arch-strip -g {} \;
done
install -d "$pkgdir"/usr/share/licenses
ln -s /usr/share/licenses/mingw-w64-qt6-base "$pkgdir"/usr/share/licenses/mingw-w64-qt6-svg
}

View File

@ -0,0 +1,11 @@
% layout 'mingw-w64-qt6-module';
\
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
pkgdesc='Classes for displaying the contents of SVG files (mingw-w64)'
depends=(<%== qt6deps qw(base) %>)
makedepends=('mingw-w64-cmake' 'mingw-w64-vulkan-icd-loader' 'qt6-base' 'ninja')

View File

@ -0,0 +1 @@
1ff80c015fe044fa1b625d37830b02e0cc780ee92638a1b7a5561adb5a0546ee

View File

@ -0,0 +1,57 @@
# Maintainer: Martchus <martchus@gmx.net>
# All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where
# you also find the URL of a binary repository.
pkgname=mingw-w64-qt6-tools
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
pkgdesc='A cross-platform application and UI framework (tools, mingw-w64)'
depends=('mingw-w64-qt6-base')
makedepends=('mingw-w64-cmake' 'mingw-w64-vulkan-headers' 'mingw-w64-vulkan-icd-loader' 'mingw-w64-qt6-declarative' 'qt6-declarative' 'qt6-tools' 'ninja')
options=('!strip' '!buildflags' 'staticlibs' '!emptydirs')
groups=(mingw-w64-qt6)
_pkgfqn="qttools-everywhere-src-${_qtver}"
source=("https://download.qt.io/development_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz")
sha256sums=('69f242ecca020b78643d2d7aaae9e2c1713b6aa7b9b915b16cc9265bf5dfd212')
_architectures='i686-w64-mingw32 x86_64-w64-mingw32'
build() {
for _arch in ${_architectures}; do
export PKG_CONFIG=/usr/bin/$_arch-pkg-config
$_arch-cmake -G Ninja -B build-$_arch -S $_pkgfqn \
-DQT_HOST_PATH=/usr \
-DFEATURE_pkg_config=ON \
-DVulkan_LIBRARY="/usr/$_arch/lib/libvulkan.dll.a" \
-DVulkan_INCLUDE_DIR="/usr/$_arch/include"
cmake --build build-$_arch
done
}
package() {
for _arch in ${_architectures}; do
DESTDIR="$pkgdir" cmake --install build-$_arch
# Add symlinks of DLLs in usual bin directory
mkdir -p "$pkgdir/usr/bin" "$pkgdir/usr/$_arch/bin"
for dll in "$pkgdir"/usr/$_arch/lib/qt6/bin/*.dll; do
ln -rs "$dll" "$pkgdir/usr/$_arch/bin/${dll##*/}"
done
# Drop QMAKE_PRL_BUILD_DIR because reference the build dir
find "$pkgdir/usr/$_arch/lib" -type f -name '*.prl' \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
find "$pkgdir/usr/$_arch" -iname '*.exe' -exec $_arch-strip --strip-all {} \;
find "$pkgdir/usr/$_arch" -iname '*.dll' -exec $_arch-strip --strip-unneeded {} \;
find "$pkgdir/usr/$_arch" -iname '*.a' -exec $_arch-strip -g {} \;
done
install -d "$pkgdir"/usr/share/licenses
ln -s /usr/share/licenses/mingw-w64-qt6-base "$pkgdir"/usr/share/licenses/mingw-w64-qt6-tools
}

View File

@ -0,0 +1,11 @@
% layout 'mingw-w64-qt6-module', has_binaries => 1;
\
_qtver=6.0.0-alpha
pkgver=${_qtver/-/}
pkgrel=1
arch=(any)
url='https://www.qt.io'
license=(GPL3 LGPL3 FDL custom)
pkgdesc='A cross-platform application and UI framework (tools, mingw-w64)'
depends=(<%== qt6deps qw(base) %>)
makedepends=('mingw-w64-cmake' 'mingw-w64-vulkan-headers' 'mingw-w64-vulkan-icd-loader' <%== qt6deps qw(declarative) %> 'qt6-declarative' 'qt6-tools' 'ninja')

View File

@ -0,0 +1 @@
69f242ecca020b78643d2d7aaae9e2c1713b6aa7b9b915b16cc9265bf5dfd212