# Template file for 'qt5' pkgname=qt5 version=5.10.1 revision=5 wrksrc="qt-everywhere-src-${version}" build_style=gnu-configure hostmakedepends="flex ruby gperf git python perl pkg-config protobuf re2c ninja" # XXX: requires libvpx>=1.7.0 makedepends="libressl-devel libpng-devel MesaLib-devel libXrender-devel unixodbc-devel fontconfig-devel libXi-devel libXv-devel libXinerama-devel libXrandr-devel libXcursor-devel libXScrnSaver-devel dbus-devel glib-devel icu-devel cups-devel libjpeg-turbo-devel sqlite-devel alsa-lib-devel tiff-devel SDL2-devel pcre2-devel libmng-devel libevent-devel ffmpeg-devel jsoncpp-devel libsrtp-devel libvpx-devel protobuf-devel snappy-devel minizip-devel libxshmfence-devel libSM-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-renderutil-devel xcb-util-wm-devel libXcomposite-devel libwebp-devel libxkbcommon-devel harfbuzz-devel gtk+3-devel mtdev-devel freetds-devel libmysqlclient-devel postgresql-libs-devel pulseaudio-devel libbluetooth-devel gst-plugins-base1-devel libxslt-devel opus-devel pciutils-devel nss-devel libcap-devel libinput-devel libproxy-devel libxcb-devel libxkbcommon-devel tslib-devel wayland-devel libwayland-egl" depends="qtchooser" replaces="qt5-doc<5.6.0 qt5-quick1<5.6.0 qt5-quick1-devel<5.6.0 qt5-webkit<5.6.0 qt5-webkit-devel<5.6.0 qt5-enginio<5.7.1 qt5-enginio-devel<5.7.1 qt5-plugin-gtk<5.7.1" homepage="http://qt.io/" short_desc="Cross-platform application and UI framework (QT5)" maintainer="Juan RP " license="GPL-3, LGPL-2.1" distfiles="http://download.qt.io/official_releases/qt/${version%.*}/${version}/single/qt-everywhere-src-${version}.tar.xz" checksum=05ffba7b811b854ed558abf2be2ddbd3bb6ddd0b60ea4b5da75d277ac15e740a if [ "${XBPS_MACHINE%%-musl}" = i686 ]; then nodebug=yes # prevent OOM fi # Work around SSLv3_{client,server}_method missing in libressl-2.3.3 CFLAGS="-DOPENSSL_NO_PSK -DOPENSSL_NO_NEXTPROTONEG" CXXFLAGS="${CFLAGS} -Wno-deprecated-declarations -fno-delete-null-pointer-checks" # Required for musl libc LDFLAGS="-pthread -ldl -fPIE" if [ -n "$CROSS_BUILD" ]; then # Need some devel packages in the host to build qmake, moc, uic, rcc # wayland-devel contains /usr/bin/wayland-scanner hostmakedepends+=" zlib-devel wayland-devel icu-devel" # Cross building qtwebengine requires some more host packages hostmakedepends+=" nss-devel" fi _cleanup_wrksrc_leak() { if [ -d "${PKGDESTDIR}/usr/lib/cmake" ]; then # Replace references to ${wrksrc} in cmake files sed -i ${PKGDESTDIR}/usr/lib/cmake/*/*.cmake \ -e "s;${wrksrc}/host;/usr/lib/qt5;g" \ -e "s;devices/void-${XBPS_CROSS_TRIPLET}-g++;linux-g++;g" fi if [ -d "${PKGDESTDIR}/usr/lib/pkgconfig" ]; then # Replace references to ${wrksrc} in pkgconfig files sed -i ${PKGDESTDIR}/usr/lib/pkgconfig/*.pc \ -e "s;${wrksrc}/host;/usr/lib/qt5;g" \ -e "s;devices/void-${XBPS_CROSS_TRIPLET}-g++;linux-g++;g" fi # Remove QMAKE_PRL_BUILD_DIR from hint files for static libraries # and replace references to ${wrksrc} find ${PKGDESTDIR} -iname "*.prl" -exec sed -i "{}" \ -e "/^QMAKE_PRL_BUILD_DIR/d" \ -e "s;-L${wrksrc}/qtbase/lib;-L/usr/lib;g" \; # Replace ${wrksrc} in project include files find ${PKGDESTDIR} -iname "*.pri" -exec sed -i "{}" \ -e "s;${wrksrc}/qtbase;/usr/lib/qt5;g" \; } _install_subpkg() { local module=$1 f base cd ${wrksrc}/${module} make INSTALL_ROOT=${PKGDESTDIR} install rm -rf ${PKGDESTDIR}/builddir rm -rf ${PKGDESTDIR}/usr/include rm -rf ${PKGDESTDIR}/usr/lib/cmake rm -rf ${PKGDESTDIR}/usr/lib/qt5/mkspecs rm -rf ${PKGDESTDIR}/usr/lib/pkgconfig rm -f ${PKGDESTDIR}/usr/lib/*.a rm -f ${PKGDESTDIR}/usr/lib/*.so rm -f ${PKGDESTDIR}/usr/lib/*.prl if [ -d ${PKGDESTDIR}/usr/lib/qt5/bin ]; then if [ -n "$CROSS_BUILD" ]; then for f in $(find ${PKGDESTDIR}/usr/lib/qt5/bin -name "*-target" -type f); do base=${f##*/} mv -v ${f} ${f%-target} done fi vmkdir usr/bin for f in $(find ${PKGDESTDIR}/usr/lib/qt5/bin -type f); do base=${f##*/} ln -sf /usr/lib/qt5/bin/${base} ${PKGDESTDIR}/usr/bin/${base}-qt5 done fi } _install_devel() { local module=$1 cd ${wrksrc}/${module} make INSTALL_ROOT=${PKGDESTDIR} install rm -rf ${PKGDESTDIR}/builddir rm -rf ${PKGDESTDIR}/usr/share rm -rf ${PKGDESTDIR}/usr/lib/qt5/bin rm -rf ${PKGDESTDIR}/usr/lib/qt5/qml rm -rf ${PKGDESTDIR}/usr/lib/qt5/libexec rm -rf ${PKGDESTDIR}/usr/lib/qt5/plugins rm -f ${PKGDESTDIR}/usr/lib/*.so.* _cleanup_wrksrc_leak } _move_target_binaries() { local f [ -z "$CROSS_BUILD" ] && return 0 vmkdir usr/lib/qt5/bin for f in $@; do if [ -f ${DESTDIR}/usr/lib/qt5/bin/${f}-target ]; then mv -v ${DESTDIR}/usr/lib/qt5/bin/${f}-target \ ${PKGDESTDIR}/usr/lib/qt5/bin/${f} fi done } _create_config() { local specs=${wrksrc}/qtbase/mkspecs/devices device="$1" local qmake_conf="${specs}/${device}/qmake.conf" mkdir -p ${specs}/${device} echo "#" > ${qmake_conf} echo "# qmake configuration for building with $XBPS_TARGET_MACHINE" >> ${qmake_conf} echo "#" >> ${qmake_conf} echo >> ${qmake_conf} echo "include(../common/linux_device_pre.conf)" >> ${qmake_conf} echo >> ${qmake_conf} # Fake distro name to tell we want control echo "DISTRO = arch" >> ${qmake_conf} # Hard float on armv6, armv7, not on armv5tel case "$XBPS_TARGET_MACHINE" in armv6*|armv7*) echo "DISTRO_OPTS += hard-float" >> ${qmake_conf} ;; esac echo "QMAKE_CC = ${CC}" >> ${qmake_conf} echo "QMAKE_CXX = ${CXX}" >> ${qmake_conf} echo "QMAKE_LINK = ${CXX}" >> ${qmake_conf} echo "QMAKE_LINK_SHLIB = ${CXX}" >> ${qmake_conf} echo "QMAKE_LFLAGS = ${LDFLAGS}" >> ${qmake_conf} echo "QMAKE_CFLAGS = ${CFLAGS}" >> ${qmake_conf} echo "QMAKE_CXXFLAGS = ${CXXFLAGS}" >> ${qmake_conf} # FIXME: is this required? echo "QMAKE_LIBS_OPENGL_ES2 = -lEGL -lGLESv2" >> ${qmake_conf} echo >> ${qmake_conf} case "$XBPS_TARGET_MACHINE" in arm*) echo "include(../common/linux_arm_device_post.conf)" >> ${qmake_conf} ;; *) echo "include(../common/linux_device_post.conf)" >> ${qmake_conf} ;; esac echo "load(qt_config)" >> ${qmake_conf} echo '#include "../../linux-g++/qplatformdefs.h"' > ${specs}/${device}/qplatformdefs.h } _msg_cross() { msg_normal "***************************************************\n" msg_normal "$1 for target ${CROSS_BUILD} ...\n" msg_normal "***************************************************\n" } do_configure() { local opts spec # Compatibility functions res_ninit() and res_nclose() for musl libc cp ${FILESDIR}/resolv_compat.h ${wrksrc}/qtwebengine/src/3rdparty/chromium/net/dns # Fix missing private includes https://bugreports.qt.io/browse/QTBUG-37417 sed -i qtbase/mkspecs/features/create_cmake.prf -e "/CMAKE_NO_PRIVATE_INCLUDES = true/d" case "$XBPS_TARGET_MACHINE" in armv5*|armv6*) # Disable "yield" assembler instruction sed -i qtwebengine/src/3rdparty/chromium/base/allocator/partition_allocator/spin_lock.cc \ qtwebengine/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/spin_lock.cc \ -e 's;"yield";"nop";' ;; esac case "$XBPS_TARGET_MACHINE" in *-musl) # Patch .../linux/*/config.{h,asm} to define HAVE_SYSCTL 0 local config chromium=${wrksrc}/qtwebengine/src/3rdparty/chromium for config in $(find ${chromium}/third_party/ffmpeg/chromium/config -name "config\.*" | grep linux); do sed -i ${config} -e "s;HAVE_SYSCTL 1;HAVE_SYSCTL 0;" done # Do not use experimental allocator shim (incompatible with musl libc) sed -i qtwebengine/src/3rdparty/chromium/build/common.gypi \ -e"s;\('use_experimental_allocator_shim%':\) 1,;\1 0,;" ;; esac # Cross build patches if [ -n "$CROSS_BUILD" ]; then # This also sets default {C,CXX,LD}FLAGS for projects built using qmake sed -i -e "s|^\(QMAKE_CFLAGS_RELEASE.*\)|\1 ${XBPS_CFLAGS}|" \ ${wrksrc}/qtbase/mkspecs/common/gcc-base.conf sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 ${XBPS_LDFLAGS}|" \ ${wrksrc}/qtbase/mkspecs/common/g++-unix.conf # Create symbolic links for private include directories for d in $(ls ${wrksrc}/qtbase/include); do ln -sfv ${version}/${d}/private qtbase/include/${d}/private done # Bootstrap gn (generate ninja) _msg_cross "Bootstrapping 'gn'" cd ${wrksrc}/qtwebengine/src/3rdparty/chromium/tools/gn conf='is_clang=false' conf+=' treat_warnings_as_errors=false' conf+=' enable_remoting=false' conf+=' enable_nacl=false' conf+=' use_cups=false' conf+=' use_gconf=false' conf+=' use_gio=false' conf+=' use_gnome_keyring=false' conf+=' use_gtk=false' conf+=' use_kerberos=false' conf+=' linux_use_bundled_binutils=false' conf+=' binutils_path="/usr/bin"' conf+=' use_gold=false' conf+=' use_sysroot=false' conf+=' use_allocator="none"' conf+=' is_android=false' case "$XBPS_TARGET_MACHINE" in armv[56]*) conf+=' arm_use_neon=false arm_optionally_use_neon=false';; aarch64*|armv7*) conf+=' arm_use_neon=true arm_optionally_use_neon=false';; esac AR="$AR_host" CC="$CC_host" CXX="$CXX_host" LD="$CXX_host" \ CFLAGS="$CFLAGS_host" CXXFLAGS="$CXXFLAGS_host" LDFLAGS="$LDFLAGS_host" \ PKGCONFIG=/usr/bin/pkgconfig PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" \ python2 bootstrap/bootstrap.py -n --gn-gen-args "${conf}" cd ${wrksrc} mkdir -p ${wrksrc}/qtwebengine/src/3rdparty/chromium/tools/gn/out/Release cp -p ${wrksrc}/qtwebengine/src/3rdparty/chromium/out/Release/gn \ ${wrksrc}/qtwebengine/src/3rdparty/chromium/tools/gn/out/Release/ # Remove gn from SUBDIRS for qtwebengine/src/buildtools sed -i ${wrksrc}/qtwebengine/src/buildtools/buildtools.pro \ -e"/gn.file = gn.pro/,+3d" case "$XBPS_TARGET_MACHINE" in armv5*) # Patch not needed for armv5* ;; arm*) # Patch for qtwayland using egl from rpi-userland patch -p0 -i ${FILESDIR}/qtwayland-egl.patch ;; mips*) # sgidefs.h is in /usr/include/asm find ${wrksrc} -name Platform.h -exec sed -i "{}" \ -e "s;;;" \; ;; esac else # qmake {CXX,L}FLAGS patches sed -i -e "s|^\(CXXFLAGS =.*\)|\1 ${CXXFLAGS}|" \ -e "s|^\(LFLAGS =.*\)|\1 ${LDFLAGS}|" \ ${wrksrc}/qtbase/qmake/Makefile.unix # Build qmake using Void {C,LD}FLAGS # This also sets default {C,CXX,LD}FLAGS for projects built using qmake sed -i -e "s|^\(QMAKE_CFLAGS_RELEASE.*\)|\1 ${CFLAGS}|" \ ${wrksrc}/qtbase/mkspecs/common/gcc-base.conf sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 ${LDFLAGS}|" \ ${wrksrc}/qtbase/mkspecs/common/g++-unix.conf fi opts+=" -confirm-license" opts+=" -opensource" opts+=" -prefix /usr" opts+=" -bindir /usr/lib/qt5/bin" opts+=" -datadir /usr/share/qt5" opts+=" -headerdir /usr/include/qt5" opts+=" -sysconfdir /etc/xdg" opts+=" -plugindir /usr/lib/qt5/plugins" opts+=" -docdir /usr/share/doc/qt5" opts+=" -importdir /usr/lib/qt5/imports" opts+=" -translationdir /usr/share/qt5/translations" opts+=" -examplesdir /usr/share/qt5/examples" opts+=" -archdatadir /usr/lib/qt5" opts+=" -accessibility" opts+=" -fontconfig" opts+=" -icu" opts+=" -openssl-linked" opts+=" -dbus-linked" opts+=" -no-pch" opts+=" -no-strip" opts+=" -nomake examples" opts+=" -optimized-qmake" opts+=" -no-use-gold-linker" opts+=" -system-libjpeg" opts+=" -system-libpng" opts+=" -system-zlib" opts+=" -system-sqlite" opts+=" -system-harfbuzz" opts+=" -webengine-alsa" opts+=" -webengine-pulseaudio" opts+=" -no-webengine-embedded-build" opts+=" -webengine-ffmpeg" opts+=" -webengine-opus" opts+=" -webengine-webp" opts+=" -webengine-pepper-plugins" opts+=" -webengine-printing-and-pdf" opts+=" -webengine-proprietary-codecs" opts+=" -webengine-spellchecker" opts+=" -silent" # opts+=" -v" LDFLAGS+=" -Wl,--no-keep-memory" # needs more than 8GB RAM else if [ -n "$CROSS_BUILD" ]; then spec=void-${XBPS_CROSS_TRIPLET}-g++ _create_config ${spec} opts+=" -device ${spec}" opts+=" -device-option CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-" opts+=" -opengl es2" opts+=" -sysroot ${XBPS_CROSS_BASE}" opts+=" -hostprefix host" opts+=" -extprefix /usr" case "$XBPS_TARGET_MACHINE" in armv7*) # V8 snapshot can't be built with a 64 bit host compiler opts+=" -no-webengine-v8-snapshot" opts+=" -no-webengine-webrtc" ;; arm*) # V8 snapshot can't be built with a 64 bit host compiler opts+=" -no-webengine-v8-snapshot" opts+=" -no-webengine-webrtc" # The machine code used here does not work for armv5* or armv6* sed -i qtwebengine/src/3rdparty/chromium/third_party/skia/include/private/SkFixed.h \ -e"s;defined(SK_CPU_ARM32);0;" ;; mips*) # V8 snapshot can't be built with a 64 bit host compiler opts+=" -no-webengine-v8-snapshot" # webrtc has no provision for mips* architecture in typedefs.h opts+=" -no-webengine-webrtc" ;; *) # webrtc is ok opts+=" -webengine-webrtc" ;; esac # Make sure libQt5Designer is built cp -v ${FILESDIR}/qttools_src.pro qttools/src/src.pro cp -v ${FILESDIR}/designer_src.pro qttools/src/designer/src/src.pro cp -v ${FILESDIR}/assistant.pro qttools/src/assistant/assistant.pro cp -v ${FILESDIR}/linguist.pro qttools/src/linguist/linguist.pro else opts+=" -webengine-webrtc" fi CC="cc" CXX="c++" CPP="cpp" LD="c++" AR="ar" AS="as" NM="nm" \ OBJDUMP="objdump" STRIP="strip" RANLIB="ranlib" \ CFLAGS="$XBPS_CFLAGS" CXXFLAGS="$XBPS_CXXFLAGS" \ CPPFLAGS="$XBPS_CPPFLAGS" LDFLAGS="$XBPS_LDFLAGS" \ LFLAGS="$XBPS_LDFLAGS" \ ${wrksrc}/configure ${opts} export LD_LIBRARY_PATH="${wrksrc}/qtbase/lib:${wrksrc}/qttools/lib:${LD_LIBRARY_PATH}" } do_build() { # Run make twice because sometimes a file "chrome/grit/generated_resources.h" # is not yet ready when it is to be included. Repeating make works around that # problem without having to resort to disable_parallel_build=yes make ${makejobs} || make ${makejobs} } do_install() { local f base bin dir dirs if [ -z "$CROSS_BUILD" ]; then unset CC CXX LD CPP AR AS RANLIB fi cd ${wrksrc}/qtbase make INSTALL_ROOT=${DESTDIR} install vlicense ${wrksrc}/LGPL_EXCEPTION.txt _cleanup_wrksrc_leak # Symbolic links for remaining binaries vmkdir usr/bin for f in $(find ${DESTDIR}/usr/lib/qt5/bin -type f); do base=${f##*/} ln -sf /usr/lib/qt5/bin/${base} ${PKGDESTDIR}/usr/bin/${base}-qt5 done if [ -n "$CROSS_BUILD" ]; then vmkdir usr/bin vmkdir usr/lib/qt5/bin _msg_cross "Building qmake" cd ${wrksrc}/qtbase/qmake sed Makefile \ -e"s;^\(CC\\s*=\).*;\1 $CC;" \ -e"s;^\(CXX\\s*=\).*;\1 $CXX;" \ -e"s;^\(LINK\\s*=\).*;\1 $CXX;" \ -e"s;^\(QMAKE_CFLAGS\\s*=\).*;\1 $CFLAGS;" \ -e"s;^\(QMAKE_CXXFLAGS\\s*=\).*;\1 $CXXFLAGS;" \ -e"s;^\(QMAKE_LFLAGS\\s*=\).*;\1 $LDFLAGS;" \ -e"s;\$(BUILD_PATH)/bin;${PKGDESTDIR}/usr/lib/qt5/bin;" \ > Makefile.target make clean make -f Makefile.target ${makejobs} ln -sf ../lib/qt5/bin/qmake ${PKGDESTDIR}/usr/bin/qmake-qt5 cp -ar ${wrksrc}/qtbase/mkspecs ${PKGDESTDIR}/usr/lib/qt5 dirs+=" qtdeclarative/src/qmldevtools" dirs+=" qtdeclarative/tools/qmlmin" dirs+=" qtdeclarative/tools/qmllint" dirs+=" qtdeclarative/tools/qmlimportscanner" dirs+=" qtbase/src/tools/moc" dirs+=" qtbase/src/tools/rcc" dirs+=" qtbase/src/tools/uic" dirs+=" qtbase/src/tools/qdbuscpp2xml" dirs+=" qtbase/src/tools/qdbusxml2cpp" dirs+=" qtbase/src/tools/qlalr" dirs+=" qt3d/tools/qgltf" dirs+=" qtremoteobjects/tools/repc" dirs+=" qtscxml/tools/qscxmlc" dirs+=" qttools/src/qtattributionsscanner" dirs+=" qttools/src/linguist/lconvert" dirs+=" qttools/src/linguist/lrelease" dirs+=" qttools/src/linguist/lupdate" dirs+=" qttools/src/qdoc" for f in ${dirs}; do base=${f##*/} dir=${f%%/*} _msg_cross " Building ${base}" cd ${wrksrc}/${f} if [ -x "${wrksrc}/${dir}/bin/${base}" ]; then mv -v ${wrksrc}/${dir}/bin/${base}{,-host} fi make clean [ -f "${base}.pro" ] && cp -a ${base}.pro{,.orig} if [ -f "${FILESDIR}/${base}.pro" ]; then # A specific *.pro file is available, use it. cp ${FILESDIR}/${base}.pro ${base}.pro else # Otherwise strip the option(host_build) sed -i ${base}.pro -e "/option(host_build)/d" fi # Create the Makefile mv -v Makefile{,.orig} ${wrksrc}/qtbase/bin/qmake -o Makefile ${base}.pro # Now patch the Makefile(s) to not use the bootstrap libs and # use the compiler, linker, flags, etc. for the target arch find . -name "Makefile*" -exec sed -i "{}" \ -e "s; force_bootstrap;;" \ -e "s;^\(CC\\s*=\).*;\1 $CC;" \ -e "s;^\(CXX\\s*=\).*;\1 $CXX;" \ -e "s;^\(LINK\\s*=\).*;\1 $CXX;" \ -e "s;^\(CFLAGS\\s*=.*\);\1 $CFLAGS;" \ -e "s;^\(CXXFLAGS\\s*=.*\);\1 $CXXFLAGS;" \ -e "s;^\(LFLAGS\\s*=.*\);\1 $LDFLAGS;" \ -e "s;^\(AR\\s*=\).*;\1 $AR cqs;" \ -e "s;^\(RANLIB\\s*=\).*;\1 $RANLIB;" \ \; if [ "${base}" != "qmldevtools" ]; then # Set a different destination directory and target name sed -i Makefile \ -e "s;^\(DESTDIR\\s*=\).*;\1 ${DESTDIR}/usr/lib/qt5/bin/;" \ -e "s;^\(TARGET\\s*=\).*;\1 ${DESTDIR}/usr/lib/qt5/bin/${base}-target;" fi make ${makejobs} # Restore profile, if any [ -f "${base}.pro.orig" ] && mv -v ${base}.pro{.orig,} mv -v Makefile{.orig,} # Avoid rebuilding the Makefile by changing the rule sed -i Makefile -e "s;^Makefile:;Makefile.host:;" if [ -x "${wrksrc}/${dir}/bin/${base}-host" ]; then mv -v ${wrksrc}/${dir}/bin/${base}{-host,} touch ${wrksrc}/${dir}/bin/${base} fi done fi # Remove builddir from installation rm -rf ${DESTDIR}/builddir } qt5-3d-devel_package() { short_desc+=" - C++ and QML APIs for 3D graphics (development)" depends="qt5-3d-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qt3d _move_target_binaries qgltf } } qt5-3d_package() { short_desc+=" - C++ and QML APIs for 3D graphics" pkg_install() { _install_subpkg qt3d } } qt5-canvas3d_package() { short_desc+=" - Canvas 3D component" pkg_install() { _install_subpkg qtcanvas3d } } qt5-charts-devel_package() { short_desc+=" - Charts component (development)" depends="qt5-charts-${version}_${revision} qt5-declarative-devel-${version}_${revision}" pkg_install() { _install_devel qtcharts } } qt5-charts_package() { short_desc+=" - Charts component" pkg_install() { _install_subpkg qtcharts } } qt5-connectivity-devel_package() { short_desc+=" - Connectivity component (development)" depends="qt5-connectivity-${version}_${revision} qt5-declarative-devel-${version}_${revision}" pkg_install() { _install_devel qtconnectivity } } qt5-connectivity_package() { short_desc+=" - Connectivity component" pkg_install() { _install_subpkg qtconnectivity } } qt5-datavis3d-devel_package() { short_desc+=" - 3D data visualization (development)" depends="qt5-datavis3d-${version}_${revision} qt5-declarative-devel-${version}_${revision}" pkg_install() { _install_devel qtdatavis3d } } qt5-datavis3d_package() { short_desc+=" - 3D data visualization" pkg_install() { _install_subpkg qtdatavis3d } } qt5-declarative-devel_package() { short_desc+=" - Declarative component (development)" depends="qt5-declarative-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtdeclarative } } qt5-declarative_package() { short_desc+=" - Declarative component" pkg_install() { _install_subpkg qtdeclarative _move_target_binaries qmlmin qmllint qmlimportscanner } } qt5-examples_package() { short_desc+=" - Examples" depends="qt5-devel-${version}_${revision} qt5-qmake-${version}_${revision} qt5-host-tools-${version}_${revision}" pkg_install() { local dir mod base=usr/share/qt5/examples vmkdir ${base} vcopy qtbase/examples/examples.pro ${base}/ # Copy examples source for dir in $(find ${wrksrc} -maxdepth 2 -type d -name examples); do mod=${dir%/examples} mod=${mod##*/} vcopy ${dir}/* ${base}/ if [ -e "${PKGDESTDIR}/${base}/README" ]; then mv ${PKGDESTDIR}/${base}/README{,.${mod}} fi done } } qt5-gamepad-devel_package() { short_desc+=" - Gamepad component (development)" depends="qt5-gamepad-${version}_${revision} qt5-declarative-devel-${version}_${revision}" pkg_install() { _install_devel qtgamepad } } qt5-gamepad_package() { short_desc+=" - Gamepad component" pkg_install() { _install_subpkg qtgamepad } } qt5-graphicaleffects_package() { short_desc+=" - Graphicaleffects component" pkg_install() { _install_subpkg qtgraphicaleffects } } qt5-imageformats_package() { short_desc+=" - Plugins for additional image formats" pkg_install() { _install_subpkg qtimageformats } } qt5-location-devel_package() { short_desc+=" - Location and Positioning components (development)" depends="qt5-location-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtlocation } } qt5-location_package() { short_desc+=" - Location and Positioning components" pkg_install() { _install_subpkg qtlocation } } qt5-multimedia-devel_package() { short_desc+=" - Multimedia component (development)" depends="qt5-multimedia-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtmultimedia } } qt5-multimedia_package() { short_desc+=" - Multimedia component" pkg_install() { _install_subpkg qtmultimedia } } qt5-networkauth-devel_package() { short_desc+=" - NetworkAuth component (development)" depends="qt5-networkauth-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtnetworkauth } } qt5-networkauth_package() { short_desc+=" - NetworkAuth component" pkg_install() { _install_subpkg qtnetworkauth } } qt5-purchasing-devel_package() { short_desc+=" - Purchasing component (development)" depends="qt5-purchasing-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtpurchasing } } qt5-purchasing_package() { short_desc+=" - Purchasing component" pkg_install() { _install_subpkg qtpurchasing } } qt5-quickcontrols_package() { short_desc+=" - Quick UI controls" pkg_install() { _install_subpkg qtquickcontrols } } qt5-quickcontrols2-devel_package() { short_desc+=" - Quick2 UI controls (development)" depends="qt5-quickcontrols2-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtquickcontrols2 } } qt5-quickcontrols2_package() { short_desc+=" - Quick2 UI controls" pkg_install() { _install_subpkg qtquickcontrols2 } } qt5-remoteobjects-devel_package() { short_desc+=" - Remote Objects (development)" depends="qt5-quickcontrols2-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtremoteobjects } } qt5-remoteobjects_package() { short_desc+=" - Remote Objects" pkg_install() { _install_subpkg qtremoteobjects _move_target_binaries repc } } qt5-script-devel_package() { short_desc+=" - Scriptable classes (development)" depends="qt5-script-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtscript } } qt5-script_package() { short_desc+=" - Scriptable classes" pkg_install() { _install_subpkg qtscript } } qt5-scxml-devel_package() { short_desc+=" - SCXML model integration (development)" depends="qt5-scxml-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtscxml } } qt5-scxml_package() { short_desc+=" - SCXML model integration" pkg_install() { _install_subpkg qtscxml _move_target_binaries qscxmlc } } qt5-sensors-devel_package() { short_desc+=" - Sensors component (development)" depends="qt5-sensors-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtsensors } } qt5-sensors_package() { short_desc+=" - Sensors component" pkg_install() { _install_subpkg qtsensors } } qt5-serialbus-devel_package() { short_desc+=" - Serial bus component (development)" depends="qt5-serialbus-${version}_${revision} qt5-serialport-devel-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtserialbus } } qt5-serialbus_package() { short_desc+=" - Serial bus component" pkg_install() { _install_subpkg qtserialbus } } qt5-serialport-devel_package() { short_desc+=" - Serial port component (development)" depends="qt5-serialport-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtserialport } } qt5-serialport_package() { short_desc+=" - Serial port component" pkg_install() { _install_subpkg qtserialport } } qt5-speech-devel_package() { short_desc+=" - Speech component (development)" depends="qt5-speech-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtspeech } } qt5-speech_package() { short_desc+=" - Speech component" pkg_install() { _install_subpkg qtspeech } } qt5-svg-devel_package() { short_desc+=" - Svg component (development)" depends="qt5-svg-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtsvg } } qt5-svg_package() { short_desc+=" - Svg component" pkg_install() { _install_subpkg qtsvg } } qt5-virtualkeyboard-devel_package() { short_desc+=" - Virtual keyboard (development)" depends="qt5-virtualkeyboard-${version}_${revision} qt5-declarative-devel-${version}_${revision}" pkg_install() { _install_devel qtvirtualkeyboard } } qt5-virtualkeyboard_package() { short_desc+=" - Virtual keyboard" pkg_install() { _install_subpkg qtvirtualkeyboard } } qt5-wayland-devel_package() { short_desc+=" - Wayland component (development)" depends="qt5-wayland-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtwayland } } qt5-wayland_package() { short_desc+=" - Wayland component" pkg_install() { _install_subpkg qtwayland } } qt5-webchannel-devel_package() { short_desc+=" - WebChannel component (development)" depends="qt5-webchannel-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtwebchannel } } qt5-webchannel_package() { short_desc+=" - WebChannel component" pkg_install() { _install_subpkg qtwebchannel } } qt5-webengine-devel_package() { short_desc+=" - WebEngine component (development)" depends="qt5-webengine-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtwebengine } } qt5-webengine_package() { short_desc+=" - WebEngine component" pkg_install() { _install_subpkg qtwebengine } } qt5-webglplugin-devel_package() { short_desc+=" - WebGL plugin (development)" depends="qt5-webglplugin-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtwebglplugin } } qt5-webglplugin_package() { short_desc+=" - WebGL plugin" pkg_install() { _install_subpkg qtwebglplugin } } qt5-websockets-devel_package() { short_desc+=" - WebSockets component (development)" depends="qt5-websockets-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtwebsockets } } qt5-websockets_package() { short_desc+=" - WebSockets component" pkg_install() { _install_subpkg qtwebsockets } } qt5-webview-devel_package() { short_desc+=" - WebView component (development)" depends="qt5-webview-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtwebview } } qt5-webview_package() { short_desc+=" - WebView component" pkg_install() { _install_subpkg qtwebview } } qt5-x11extras-devel_package() { short_desc+=" - X11 extras (development)" depends="qt5-x11extras-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtx11extras } } qt5-x11extras_package() { short_desc+=" - X11 extras" pkg_install() { _install_subpkg qtx11extras } } qt5-xmlpatterns-devel_package() { short_desc+=" - XML components (development)" depends="qt5-xmlpatterns-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtxmlpatterns } } qt5-xmlpatterns_package() { short_desc+=" - XML components" pkg_install() { _install_subpkg qtxmlpatterns } } qt5-translations_package() { short_desc+=" - Translations" pkg_install() { _install_subpkg qttranslations } } qt5-host-tools_package() { short_desc+=" - Tools required when cross compiling" pkg_install() { local dest=${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/qt5-tools-${version} vmkdir usr/lib/qt5/bin vmkdir usr/bin for f in moc rcc uic qlalr qdbuscpp2xml qdbusxml2cpp \ lconvert lupdate lrelease; do if [ -r ${dest}/usr/lib/qt5/bin/${f} ]; then mv -v ${dest}/usr/lib/qt5/bin/${f} ${PKGDESTDIR}/usr/lib/qt5/bin/ fi if [ -f ${DESTDIR}/usr/lib/qt5/bin/${f}-target ]; then mv -v ${DESTDIR}/usr/lib/qt5/bin/${f}{-target,} fi if [ -f ${DESTDIR}/usr/lib/qt5/bin/${f} ]; then vmove usr/lib/qt5/bin/${f} fi if [ -f ${DESTDIR}/usr/bin/${f}-qt5 ]; then vmove usr/bin/${f}-qt5 else ln -sf ../lib/qt5/bin/${f} ${PKGDESTDIR}/usr/bin/${f}-qt5 fi done } } qt5-tools-devel_package() { short_desc+=" - Development tools (development)" depends="qt5-tools-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qttools } } qt5-tools_package() { short_desc+=" - Development tools" depends="qt5-translations desktop-file-utils hicolor-icon-theme" pkg_install() { local f dest=${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/qt5-host-tools-${version} _install_subpkg qttools # install missing icons and desktop files for icon in ${wrksrc}/qttools/src/linguist/linguist/images/icons/linguist-*-32.png ; do size=$(echo $(basename ${icon}) | cut -d- -f2) install -p -D -m644 ${icon} \ ${PKGDESTDIR}/usr/share/icons/hicolor/${size}x${size}/apps/linguist-qt5.png done install -Dm644 ${wrksrc}/qttools/src/assistant/assistant/images/assistant.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/32x32/apps/assistant-qt5.png install -Dm644 ${wrksrc}/qttools/src/assistant/assistant/images/assistant-128.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/128x128/apps/assistant-qt5.png install -Dm644 ${wrksrc}/qttools/src/designer/src/designer/images/designer.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/128x128/apps/designer-qt5.png install -Dm644 ${wrksrc}/qttools/src/qdbus/qdbusviewer/images/qdbusviewer.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/32x32/apps/qdbusviewer-qt5.png install -Dm644 ${wrksrc}/qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/128x128/apps/qdbusviewer-qt5.png # install desktop files vmkdir usr/share/applications install -m644 ${FILESDIR}/*.desktop ${PKGDESTDIR}/usr/share/applications _move_target_binaries qtattributionsscanner qdoc # Move some binaries to qt5-host-tools for f in lconvert lupdate lrelease; do if [ -f ${PKGDESTDIR}/usr/lib/qt5/bin/${f} ]; then mkdir -p ${dest}/usr/lib/qt5/bin mv -v ${PKGDESTDIR}/usr/lib/qt5/bin/${f} ${dest}/usr/lib/qt5/bin/ fi if [ -f ${PKGDESTDIR}/usr/bin/${f}-qt5 ]; then mkdir -p ${dest}/usr/bin mv -v ${PKGDESTDIR}/usr/bin/${f}-qt5 ${dest}/usr/bin/ fi done } } qt5-devel_package() { depends="zlib-devel libressl-devel>=2.1.4 libXext-devel libXrender-devel fontconfig-devel libglib-devel MesaLib-devel mtdev-devel dbus-devel icu-devel qt5-${version}_${revision} qt5-qmake-${version}_${revision} qt5-host-tools-${version}_${revision}" short_desc+=" - Development files" # qt5-enginio-devel is gone pkg_install() { vmove usr/include vmove usr/lib/*.a vmove usr/lib/*.prl vmove usr/lib/cmake vmove usr/lib/pkgconfig _cleanup_wrksrc_leak } } qt5-plugin-odbc_package() { short_desc+=" - ODBC plugin" pkg_install() { vmove usr/lib/qt5/plugins/sqldrivers/libqsqlodbc.so } } qt5-plugin-pgsql_package() { short_desc+=" - PostgreSQL plugin" pkg_install() { vmove usr/lib/qt5/plugins/sqldrivers/libqsqlpsql.so } } qt5-plugin-mysql_package() { short_desc+=" - MySQL plugin" pkg_install() { vmove usr/lib/qt5/plugins/sqldrivers/libqsqlmysql.so } } qt5-plugin-sqlite_package() { short_desc+=" - SQLite plugin" pkg_install() { vmove usr/lib/qt5/plugins/sqldrivers/libqsqlite.so } } qt5-plugin-tds_package() { short_desc+=" - TDS plugin" pkg_install() { vmove usr/lib/qt5/plugins/sqldrivers/libqsqltds.so } } qt5-qmake_package() { short_desc+=" - Qmake Makefile generator tool" pkg_install() { vmove usr/lib/qt5/bin/qmake vmove usr/lib/qt5/mkspecs vmove usr/bin/qmake-qt5 # Change -isystem to -I to avoid "#include_next " errors sed -i ${PKGDESTDIR}/usr/lib/qt5/mkspecs/common/gcc-base.conf \ -e '/^QMAKE_CFLAGS_ISYSTEM/s;-isystem;-I;' # Undo changes to mkspecs/common/gcc-base.conf and g++-unix.conf if [ -n "$CROSS_BUILD" ]; then sed -i -e "s|^\(QMAKE_CFLAGS_RELEASE.*\) ${XBPS_CFLAGS}|\1|" \ ${PKGDESTDIR}/usr/lib/qt5/mkspecs/common/gcc-base.conf sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\) ${XBPS_LDFLAGS}|\1|" \ ${PKGDESTDIR}/usr/lib/qt5/mkspecs/common/g++-unix.conf else sed -i -e "s|^\(QMAKE_CFLAGS_RELEASE.*\) ${CFLAGS}|\1|" \ ${PKGDESTDIR}/usr/lib/qt5/mkspecs/common/gcc-base.conf sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\) ${LDFLAGS}|\1|" \ ${PKGDESTDIR}/usr/lib/qt5/mkspecs/common/g++-unix.conf fi } }