# Template file for 'qt5' pkgname=qt5 version=5.8.0 revision=10 wrksrc="qt-everywhere-opensource-src-${version}" build_style=gnu-configure homepage="http://qt.io/" short_desc="A 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-opensource-src-${version}.tar.xz" checksum=0f4c54386d3dbac0606a936a7145cebb7b94b0ca2d29bc001ea49642984824b6 if [ "${XBPS_MACHINE%%-musl}" = i686 ]; then nodebug=yes # prevent OOM fi hostmakedepends="flex ruby gperf git python perl pkg-config protobuf re2c" 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 libmng-devel libevent-devel ffmpeg-devel libvpx-devel jsoncpp-devel libsrtp-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+-devel mtdev-devel freetds-devel libmysqlclient-devel postgresql-libs-devel pulseaudio-devel libbluetooth-devel gst-plugins-base1-devel libxslt-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" # Work around SSLv3_{client,server}_method missing in libressl-2.3.3 CFLAGS="-DOPENSSL_NO_PSK -DOPENSSL_NO_NEXTPROTONEG -DOPENSSL_NO_SSL3_METHOD" CXXFLAGS="${CFLAGS}" CXXFLAGS+=" -Wno-deprecated-declarations -fno-delete-null-pointer-checks" # Required for musl libc LDFLAGS="-pthread -ldl -fPIE" case "$XBPS_TARGET_MACHINE" in armv5*|mips*) # Won't build for these broken=yes ;; armv7*) # Force use of neon and enable libvpx CXXFLAGS+=" -mfpu=neon" ;; esac 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 # Cross building ninja does not work, thus use the system ninja hostmakedepends+=" zlib-devel icu-devel wayland-devel ninja" 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}/qtbase/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}/qtbase/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 vmkdir usr/bin for f in ${PKGDESTDIR}/usr/lib/qt5/bin/*; 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 } _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 } pre_configure() { # Compatibility functions res_ninit() and res_nclose() for musl libc cp ${FILESDIR}/resolv_compat.h ${wrksrc}/qtwebengine/src/3rdparty/chromium/net/dns 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}|" \ qtbase/mkspecs/common/gcc-base.conf sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 ${XBPS_LDFLAGS}|" \ qtbase/mkspecs/common/g++-unix.conf # Patch to skip non-working check for GCC version patch -p0 < ${FILESDIR}/cross-gcc.patch # Create symbolic links for private include directories for d in $(ls ${wrksrc}/qtbase/include); do ln -s ${version}/${d}/private qtbase/include/${d}/private done # Copy system ninja to 3rdparty path cp -v /usr/bin/ninja qtwebengine/src/3rdparty/ninja/ else # 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}|" \ qtbase/mkspecs/common/gcc-base.conf sed -i -e "s|^\(QMAKE_LFLAGS_RELEASE.*\)|\1 ${LDFLAGS}|" \ qtbase/mkspecs/common/g++-unix.conf fi sed -i qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/ffmpeg.gyp \ -e "s|'use_system_ffmpeg%': 0,|'use_system_ffmpeg%': 1,|" } do_configure() { local opts spec dirs dir f 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 -fontconfig -icu" opts+=" -openssl-linked" opts+=" -dbus-linked" opts+=" -no-pch" opts+=" -no-strip" opts+=" -nomake examples" opts+=" -optimized-qmake" opts+=" -system-libjpeg" opts+=" -system-libpng" opts+=" -system-zlib" opts+=" -system-sqlite" opts+=" -system-harfbuzz" # 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" 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" \ ./configure ${opts} export LD_LIBRARY_PATH="${wrksrc}/qtbase/lib:${wrksrc}/qttools/lib:${LD_LIBRARY_PATH}" } do_install() { local f base dirs if [ -z "$CROSS_BUILD" ]; then unset CC CXX LD CPP AR AS RANLIB fi cd ${wrksrc}/qtbase make INSTALL_ROOT=${DESTDIR} install # Remove the host utilities rm -rf ${DESTDIR}/builddir if [ -n "$CROSS_BUILD" ]; then # # For some reason qmake and several tools are not built for the target # but only for the host. Build them for the target architecture by # replacing or patching their project files (*.pro) and the resulting # Makefiles and eventually install the targets to ${DESTDIR}/usr/lib/qt5/bin # vmkdir usr/lib/qt5/bin # Make a backup of the host tools for f in qtbase qt3d qtdeclarative qtscxml qttools; do mkdir -p ${wrksrc}/host/${f} cp -ar ${wrksrc}/${f}/bin ${wrksrc}/host/${f} done msg_normal "Building qmake for target ${CROSS_BUILD} ...\n" cd qmake sed Makefile \ -e "s;^\(CC\\s*=\).*;\1 $CC;" \ -e "s;^\(CXX\\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;${DESTDIR}/usr/lib/qt5/bin;" \ > Makefile.target make clean make -f Makefile.target ${makejobs} # Build various tools for the target dirs+=" qtbase/src/tools/qdbuscpp2xml" dirs+=" qtbase/src/tools/qdbusxml2cpp" dirs+=" qtbase/src/tools/qlalr" dirs+=" qtbase/src/tools/moc" dirs+=" qtbase/src/tools/rcc" dirs+=" qtbase/src/tools/uic" dirs+=" qt3d/tools/qgltf" dirs+=" qtdeclarative/src/qmldevtools" dirs+=" qtdeclarative/tools/qmlimportscanner" dirs+=" qtdeclarative/tools/qmlmin" dirs+=" qtdeclarative/tools/qmllint" dirs+=" qtscxml/tools/qscxmlc" dirs+=" qttools/src/linguist/lconvert" dirs+=" qttools/src/linguist/lrelease" dirs+=" qttools/src/linguist/lupdate" dirs+=" qttools/src/qdoc" mkdir -p ${wrksrc}/target/bin for f in ${dirs}; do cd ${wrksrc}/${f} base=${f##*/} msg_normal "Building ${base} for target ${CROSS_BUILD} ...\n" make clean 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 # Re-create the Makefile ${wrksrc}/qtbase/bin/qmake -o Makefile ${base}.pro # Now patch the Makefile to not use the bootstrap libs and # use the compilers, linker, flags, etc. for the target arch sed -i Makefile \ -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 target destination and name find . -name Makefile -exec sed -i "{}" \ -e"s;^\(DESTDIR\\s*=\).*;\1 ${wrksrc}/target/bin/;" \ -e"s;^\(TARGET\\s*=\).*;\1 ${wrksrc}/target/bin/${base};" \ \; fi make ${makejobs} # Install the resulting binary, if any if [ "${base}" != qmldevtools ]; then vinstall ${wrksrc}/target/bin/${base} 755 usr/lib/qt5/bin fi done cd ${wrksrc}/qtbase # Install the mkspecs vcopy mkspecs usr/lib/qt5 # Restore backup of the host tools for f in qtbase qt3d qtdeclarative qtscxml qttools; do rm -rf ${wrksrc}/${f}/bin cp -pR ${wrksrc}/host/${f}/bin ${wrksrc}/${f} done else msg_normal ">>> Building qmake for host ${XBPS_ARCH} ...\n" cd qmake sed Makefile \ -e "s;^\(CC\\s*\)=.*;\1= gcc;" \ -e "s;^\(CXX\\s*\)=.*;\1= g++;" \ -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;${DESTDIR}/usr/lib/qt5/bin;" \ > Makefile.host make clean make -f Makefile.host ${makejobs} fi } post_install() { vlicense ${wrksrc}/LGPL_EXCEPTION.txt # Remove binaries which are contained in subpackages for f in qscxmlc qmlmin qmllint qmlimportscanner qgltf qdoc lconvert lupdate lrelease; do rm -f ${DESTDIR}/usr/lib/qt5/bin/${f} rm -f ${DESTDIR}/usr/bin/${f}-qt5 done # Symbolic links for remaining binaries vmkdir usr/bin for f in ${DESTDIR}/usr/lib/qt5/bin/*; do base=${f##*/} ln -sf /usr/lib/qt5/bin/${base} ${PKGDESTDIR}/usr/bin/${base}-qt5 done _cleanup_wrksrc_leak } 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 } } 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-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-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-connectivity-devel_package() { short_desc+=" - Connectivity component (development)" depends="qt5-connectivity-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtconnectivity } } qt5-connectivity_package() { short_desc+=" - Connectivity component" pkg_install() { _install_subpkg qtconnectivity } } 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 } } qt5-examples_package() { short_desc+=" - Examples" depends="qt5-devel-${version}_${revision} qt5-qmake-${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-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-quickcontrols_package() { short_desc+=" - Quick UI controls" pkg_install() { _install_subpkg qtquickcontrols } } qt5-quickcontrols2-devel_package() { short_desc+=" - Quick UI controls (ver. 2; development)" depends="qt5-quickcontrols2-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtquickcontrols2 } } qt5-quickcontrols2_package() { short_desc+=" - Quick UI controls (ver. 2)" pkg_install() { _install_subpkg qtquickcontrols2 } } 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 } } 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-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-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() { sed -i ${wrksrc}/qttranslations/translations/Makefile \ -e "s;qttranslations/translations/\(.*\)_wrapper.sh;host/qttools/bin/\1;g" _install_subpkg qttranslations } } qt5-host-tools_package() { short_desc+=" - Tools required when cross compiling" pkg_install() { vmkdir usr/bin for f in moc rcc uic qlalr qdbuscpp2xml qdbusxml2cpp; do vmove usr/lib/qt5/bin/${f} vmove usr/bin/${f}-qt5 done for f in lconvert lupdate lrelease; do if [ -f ${wrksrc}/target/bin/${f} ]; then # cross build for target vinstall ${wrksrc}/target/bin/${f} 755 usr/lib/qt5/bin else # build for host vinstall ${wrksrc}/qttools/bin/${f} 755 usr/lib/qt5/bin fi ln -sf ../lib/qt5/bin/${f} ${PKGDESTDIR}/usr/bin/${f}-qt5 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() { _install_subpkg qttools # these are now in qt5-host-tools for f in lconvert lupdate lrelease; do rm -f ${PKGDESTDIR}/usr/lib/qt5/bin/${f} rm -f ${PKGDESTDIR}/usr/bin/${f}-qt5 done # 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 } } 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 } }