# Template file for 'qt5' pkgname=qt5 version=5.6.0 revision=4 wrksrc="qt-everywhere-opensource-src-${version}" 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=76a95cf6c1503290f75a641aa25079cd0c5a8fcd7cff07ddebff80a955b07de7 nocross=yes hostmakedepends="flex ruby gperf python perl pkg-config" 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 libxshmfence-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-wm-devel libSM-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 wayland-devel" 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" # Work around SSLv3_{client,server}_method missing in libressl-2.3.3 CFLAGS="-DOPENSSL_NO_SSL3_METHOD" CXXFLAGS="-DOPENSSL_NO_SSL3_METHOD" _move_examples() { if [ -d ${PKGDESTDIR}/usr/share/qt5/examples ]; then # The help files (*.qch) are in qt5-doc find ${PKGDESTDIR}/usr/share/qt5/examples -iname "*.qch" -delete # Copy examples to /destdir/qt5-examples-${version} subpackage mkdir -p /destdir/qt5-examples-${version}/usr/share/qt5 cp -pR ${PKGDESTDIR}/usr/share/qt5/examples \ /destdir/qt5-examples-${version}/usr/share/qt5 rm -rf ${PKGDESTDIR}/usr/share/qt5/examples fi } _install_subpkg() { local module=$1 base cd ${wrksrc}/${module} make INSTALL_ROOT=${PKGDESTDIR} install 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/*.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=$(basename $f) ln -sf /usr/lib/qt5/bin/${base} ${PKGDESTDIR}/usr/bin/${base}-qt5 done fi _move_examples } _install_devel() { local module=$1 cd ${wrksrc}/${module} make INSTALL_ROOT=${PKGDESTDIR} install 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.* # Remove QMAKE_PRL_BUILD_DIR from *.prl files because it is the internal builddir find ${PKGDESTDIR} -iname "*.prl" -exec sed -i "{}" -e "/^QMAKE_PRL_BUILD_DIR/d" \; } 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 esac } do_configure() { export LD="$CXX" unset CPP AR AS RANLIB local opts="-confirm-license -opensource \ -prefix /usr \ -bindir /usr/lib/qt5/bin \ -datadir /usr/share/qt5 \ -headerdir /usr/include/qt5 \ -sysconfdir /etc/xdg \ -plugindir /usr/lib/qt5/plugins \ -docdir /usr/share/doc/qt5 \ -importdir /usr/lib/qt5/imports \ -translationdir /usr/share/qt5/translations \ -examplesdir /usr/share/qt5/examples \ -archdatadir /usr/lib/qt5 \ -accessibility -fontconfig -icu \ -openssl-linked -dbus-linked \ -silent -no-pch -no-strip -optimized-qmake \ -system-libjpeg -system-libpng -system-zlib \ -system-sqlite -system-harfbuzz" case "$XBPS_TARGET_MACHINE" in arm*|*-musl) # -reduce-relocations is experimental; may cause linker errors ;; *) opts+=" -reduce-relocations" ;; esac QMAKE_CFLAGS="${CFLAGS}" \ QMAKE_CXXFLAGS="${CXXFLAGS}" \ QMAKE_LFLAGS="${LDFLAGS}" \ ./configure ${opts} } do_build() { export LD_LIBRARY_PATH="${wrksrc}/qtbase/lib:${wrksrc}/qttools/lib:${LD_LIBRARY_PATH}" export LD="$CXX" unset CPP AR AS RANLIB make ${makejobs} } do_install() { local f base cd ${wrksrc}/qtbase make INSTALL_ROOT=${DESTDIR} install vlicense LGPL_EXCEPTION.txt vmkdir usr/bin for f in ${DESTDIR}/usr/lib/qt5/bin/*; do base=$(basename $f) ln -sf /usr/lib/qt5/bin/${base} ${PKGDESTDIR}/usr/bin/${base}-qt5 done _move_examples } 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-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-enginio-devel_package() { short_desc+=" - Enginio component (development)" depends="qt5-enginio-${version}_${revision} qt5-devel-${version}_${revision}" pkg_install() { _install_devel qtenginio } } qt5-enginio_package() { short_desc+=" - Enginio component" pkg_install() { _install_subpkg qtenginio } } qt5-examples_package() { short_desc+=" - Examples" depends="qt5-devel-${version}_${revision} qt5-qmake-${version}_${revision}" pkg_install() { # In case any examples are still left in $DESTDIR if [ -d ${DESTDIR}/usr/share/qt5/examples ]; then vmkdir usr/share/qt5 cp -pR ${DESTDIR}/usr/share/qt5/examples \ ${PKGDESTDIR}/usr/share/qt5 rm -rf ${DESTDIR}/usr/share/qt5/examples fi } } 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_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-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-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-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() { _install_subpkg qttranslations } } 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 # install missing icons and desktop files for icon in 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 src/assistant/assistant/images/assistant.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/32x32/apps/assistant-qt5.png install -Dm644 src/assistant/assistant/images/assistant-128.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/128x128/apps/assistant-qt5.png install -Dm644 src/designer/src/designer/images/designer.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/128x128/apps/designer-qt5.png install -Dm644 src/qdbus/qdbusviewer/images/qdbusviewer.png \ ${PKGDESTDIR}/usr/share/icons/hicolor/32x32/apps/qdbusviewer-qt5.png install -Dm644 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-plugin-gtk-${version}_${revision} qt5-qmake-${version}_${revision}" short_desc+=" - Development files" pkg_install() { vmove usr/include vmove usr/lib/*.a vmove usr/lib/*.prl vmove usr/lib/cmake vmove usr/lib/pkgconfig # Remove QMAKE_PRL_BUILD_DIR from *.prl files because it is the internal builddir find ${PKGDESTDIR} -iname "*.prl" -exec sed -i "{}" -e "/^QMAKE_PRL_BUILD_DIR/d" \; } } qt5-plugin-gtk_package() { short_desc+=" - GTK+ theme plugin" pkg_install() { vmove usr/lib/qt5/plugins/platformthemes/libqgtk2.so } } 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 } }