diff options
author | Donald Carr | 2016-03-03 18:43:35 -0800 |
---|---|---|
committer | Donald Carr | 2016-03-03 18:43:35 -0800 |
commit | d5ca08aac4f24b71804ce53b6cc7bc941b22265d (patch) | |
tree | 0b9559688ccee9d784af46213721a986c8f0181e /PKGBUILD | |
parent | 4e4ef8d615e07897df8be891e0d2e08b34d11df4 (diff) | |
parent | 6107af538fba38ac958c4a961c43b940e222eaad (diff) | |
download | aur-d5ca08aac4f24b71804ce53b6cc7bc941b22265d.tar.gz |
Resolve conflicts
Merge remote-tracking branch 'pi2/master'
Change-Id: I41e2643ec4992dd9f9670694a0de19e862d9e270
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 171 |
1 files changed, 111 insertions, 60 deletions
@@ -1,70 +1,117 @@ -# Maintainer: Donald Carr <sirspudd@gmail.com> +# Contributer: Donald Carr <sirspudd@gmail.com> -# Documentation +# set -x -# Set up the pi for Qt compilation. On Arch I just install chromium which pulls in all the deps -# Removed xcomposite as code path breaks +# Documentation -# Remove 2 (mesa) pkgconfig files we allow screw our mkspec -# rm /usr/lib/pkgconfig/glesv2.pc -# rm /usr/lib/pkgconfig/egl.pc +# Set up the pi for Qt compilation. +# For a comprehensive set of deps I just install chromium which pulls in everything -# You are gonna want to export the following vars in /etc/profile.d -# if you intend to primarily use Wayland +#* I had to removed xcomposite as code path breaks +#* Remove 2 (mesa) pkgconfig files we allow to screw our mkspec +# * rm /usr/lib/pkgconfig/glesv2.pc +# * rm /usr/lib/pkgconfig/egl.pc -#export QT_QPA_PLATFORM=wayland -#export QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=brcm +# I use NFS to develop against my sysroot personally: sudo mount qpi2.local:/ /mnt/pi -# Mount/copy this prepped rasp rootfs somewhere and set this path as the sysroot below -# I use NFS personally: sudo mount qpii.local:/ /mnt/pi +# NB: Mandatory edit: set this variable to point to your raspberry pi's sysroot +_sysroot=/mnt/pi # Options +_skip_web_engine=false +_static_build=false +_build_from_head=false +_local_qt5_repo="/opt/dev/src/qtproject/qt5" +_wayland_compositor=true + +pkgver=5.6.0 +pkgrel=9 -_skip_web_engine=true +# PKGBUILD +_piver=2 +pkgname="qt-sdk-raspberry-pi${_piver}" -# comment this turkey out in any circumstance when you need to regenate .SRCINFO -#echo "Set your sysroot prior to build" && exit 1 -_sysroot=/mnt/pi +if $_static_build; then + pkgname="${pkgname}-static" +fi -_piver=1 -pkgname=qt-sdk-raspberry-pi${_piver} +if $_build_from_head; then + _pkgver=6.6.6 +fi + +provides=("${pkgname}") +conflicts=("${pkgname}") +replaces=("${pkgname}") _packaginguser=$(whoami) _libspkgname="${pkgname}-target-libs" _mkspec="linux-rpi${_piver}-g++" -pkgver=5.6.0 -_pkgver=${pkgver}-beta +_pkgver=${pkgver}-rc _baseprefix=/opt -_installprefix=${_baseprefix}/${pkgname}-${_pkgver} -_pipkgname=qt-everywhere-opensource-src-${_pkgver} -pkgrel=5 +_installprefix=${_baseprefix}/${pkgname} +_source_package_name=qt-everywhere-opensource-src-${_pkgver} pkgdesc="Qt SDK for the Raspberry Pi${_piver}" arch=("x86_64") url="http://www.qt.io" license=("LGPL3" "GPL3") depends=("qpi-toolchain" "qtcreator") makedepends=("git" "pkgconfig" "gcc") -source=("git://github.com/sirspudd/mkspecs.git" "https://download.qt.io/development_releases/qt/5.6/${_pkgver}/single/${_pipkgname}.tar.gz") -sha256sums=("SKIP" "d69103ec34b3775edfa47581b14ee9a20789d4b0d7d26220fb92f2cd32eb06f9") +source=("git://github.com/sirspudd/mkspecs.git" "https://download.qt.io/development_releases/qt/5.6/${_pkgver}/single/${_source_package_name}.7z") +sha256sums=("SKIP" "82ed4bc1bf7735747e1612f322f8723dfd84f05fa4dca9398863e6527a0c1971") options=('!strip') install=qpi.install _fully_qualified_install_script="${startdir}/${install}" _device_configure_flags="" -if $_skip_web_engine || [[ ${_piver} = "1" ]]; then - _device_configure_flags="-skip qtwebengine" +#Sanity check +__pkgconfigpath="${_sysroot}/usr/lib/pkgconfig" +__eglpkgconfigpath="${__pkgconfigpath}/egl.pc" +__glespkgconfigpath="${__pkgconfigpath}/glesv2.pc" + +if [[ ! -d ${__pkgconfigpath} ]]; then + echo "You have to set a valid sysroot to proceed with the build" + exit 1 +fi + +if [[ -f ${__eglpkgconfigpath} ]] || [[ -f ${__glespkgconfigpath} ]] ; then + echo "Mesa is about to eat our communal poodle; delete egl.pc and glesv2.pc in your sysroot" + exit 1 +fi + +#end sanity check + +if $_static_build || $_skip_web_engine || [[ ${_piver} = "1" ]]; then + _device_configure_flags="$_device_configure_flags -skip qtwebengine" +fi + +if $_static_build; then + _device_configure_flags="$_device_configure_flags -static" +fi + +if $_build_from_head; then + _device_configure_flags="$_device_configure_flags -skip qt3d -skip qtsystems -skip qttools -skip qtwebkit" +fi + +if $_wayland_compositor; then + _device_configure_flags="$_device_configure_flags -skip qtwayland" fi build() { - local _srcdir="${srcdir}/${_pipkgname}" + local _srcdir="${srcdir}/${_source_package_name}" local _bindir="${_srcdir}-build" + local _mkspec_dir="${_srcdir}/qtbase/mkspecs/devices/${_mkspec}" # Qt tries to do the right thing and stores these, breaking cross compilation unset LDFLAGS unset CFLAGS unset CXXFLAGS +if $_build_from_head; then + _srcdir="${_local_qt5_repo}" +fi + # Get our mkspec - cp -r "${srcdir}/mkspecs/${_mkspec}" ${_srcdir}/qtbase/mkspecs/devices + rm -Rf $_mkspec_dir + cp -r "${srcdir}/mkspecs/${_mkspec}" $_mkspec_dir mkdir -p ${_bindir} cd ${_bindir} @@ -83,9 +130,13 @@ build() { # patch local _webenginefileoverride="${_srcdir}/qtwebengine/tools/qmake/mkspecs/features/functions.prf" - sed -i "s/linux-clang/linux*/" ${_webenginefileoverride} + sed -i "s/linux-clang/linux*/" ${_webenginefileoverride} || exit 1 local _reducerelocations="${_srcdir}/qtbase/config.tests/unix/bsymbolic_functions.test" - sed -i "s/error/warning/" ${_reducerelocations} + sed -i "s/error/warning/" ${_reducerelocations} || exit 1 + + # No longer required as we explicitly set CFLAGS = foo in the mkspec + # Work around our embarresing propensity to stomp on your own tailored build configuration + sed -i "s/O[23]/Os/" ${_srcdir}/qtbase/mkspecs/common/gcc-base.conf || exit 1 # end patch @@ -115,41 +166,37 @@ build() { -no-xcb \ \ -skip qtscript \ - -skip qtwayland \ - -skip qtquickcontrols2 \ + -skip qtenginio \ \ -sysroot ${_sysroot} \ -device ${_mkspec} \ -device-option CROSS_COMPILE=/opt/arm-sirspuddarch-linux-gnueabihf/bin/arm-sirspuddarch-linux-gnueabihf- \ - ${_device_configure_flags} + ${_device_configure_flags} || exit 1 - make + make || exit 1 +if $_wayland_compositor; then # regrettably required, as qtwayland barfs on shadow builds # as private header paths not included: no clue how to fix, bypassing - cp -r "${_srcdir}/qtwayland" "${_bindir}" + cp -r "${_srcdir}/qtwayland" "${_bindir}" || exit 1 cd "${_bindir}/qtwayland" - ${_bindir}/qtbase/bin/qmake CONFIG+=wayland-compositor - make + ${_bindir}/qtbase/bin/qmake CONFIG+=wayland-compositor || exit 1 + make || exit 1 +fi } create_install_script() { - local _fully_qualified_install_script_template="${startdir}/_${install}" - - rm ${_fully_qualified_install_script} + local _install_script_location="${startdir}/${install}" - # populate vars - echo "piver=\"${_piver}\"" >> ${_fully_qualified_install_script} - echo "_qmakepath=\"${_installprefix}/bin/qmake\"" >> ${_fully_qualified_install_script} - echo "_sysroot=\"${_sysroot}\"" >> ${_fully_qualified_install_script} - - cat ${_fully_qualified_install_script_template} >> ${_fully_qualified_install_script} + sed -i "s/libspiver/${_piver}/" ${_install_script_location} || exit 1 + sed -i "s,libsqmakepath,${_installprefix}/bin/qmake," ${_install_script_location} || exit 1 + sed -i "s,libssysroot,${_sysroot}," ${_install_script_location} || exit 1 } package() { - local _srcdir="${srcdir}/${_pipkgname}" + local _srcdir="${srcdir}/${_source_package_name}" local _bindir="${_srcdir}-build" create_install_script @@ -159,11 +206,13 @@ package() { mkdir -p ${pkgdir} cd "${_bindir}" - INSTALL_ROOT="$pkgdir" make install + INSTALL_ROOT="$pkgdir" make install || exit 1 +if $_wayland_compositor; then # regrettably required cd "${_bindir}/qtwayland" - INSTALL_ROOT="$pkgdir" make install + INSTALL_ROOT="$pkgdir" make install || exit 1 +fi # Qt is now installed to $pkgdir/$sysroot/$prefix # manually generate/decompose host/target @@ -177,19 +226,21 @@ package() { cp ${startdir}/PKGBUILD.libs ${_libspkgbuild} mv "${pkgdir}/${_sysroot}/${_baseprefix}" ${_libspkgdir} # set correct libs version - sed -i "s/libspackagename/${_libspkgname}/" ${_libspkgbuild} - sed -i "s/libspiversion/${_piver}/" ${_libspkgbuild} - - sed -i "s/6.6.6/${pkgver}/" ${_libspkgbuild} + sed -i "s/libspkgrel/${pkgrel}/" ${_libspkgbuild} || exit 1 + sed -i "s/libspkgver/${pkgver}/" ${_libspkgbuild} || exit 1 + sed -i "s/libspkgname/${_libspkgname}/" ${_libspkgbuild} || exit 1 + sed -i "s/libspiver/${_piver}/" ${_libspkgbuild} || exit 1 - mkdir -p ${_pkgprofiled} - cp ${startdir}/qpi.sh ${_pkgprofiled} - sed -i "s,localpiprefix,${_installprefix}," ${_pkgprofiled}/qpi.sh + if ! ${_static_build}; then + mkdir -p ${_pkgprofiled} + cp ${startdir}/qpi.sh ${_pkgprofiled} || exit 1 + sed -i "s,localpiprefix,${_installprefix}," ${_pkgprofiled}/qpi.sh || exit 1 + fi cd ${_libsdir} - runuser -l ${_packaginguser} -c 'makepkg -f' + runuser -l ${_packaginguser} -c 'makepkg -d -f' || exit 1 echo "the libs package for the Raspberry Pi${_piver} is in the ${_packaginguser} home directory awaiting deployment" - mv ${_libsdir}/${_libspkgname}-${pkgver}-1-any.pkg.tar.xz ${HOME} + mv ${_libsdir}/${_libspkgname}-${pkgver}-${pkgrel}-any.pkg.tar.xz ${startdir} } |