aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Carr2016-11-15 20:42:01 -0800
committerDonald Carr2017-01-13 06:17:07 -0800
commit763b5ae736f47a64cda465b5b028372037ea8758 (patch)
treef846c1f62337611f086d77d6852de1a605761342
parentae9e0f380ee2db8aa6d98fb0ca3f86e919e958a3 (diff)
downloadaur-763b5ae736f47a64cda465b5b028372037ea8758.tar.gz
Sanity Checking: Target host builds with same recipe
Change-Id: Ib5f7cb63cef1e3dcfa613a26128ce97e2cc2d1fb
-rw-r--r--PKGBUILD166
-rw-r--r--PKGBUILD.libs3
-rw-r--r--PKGBUILD.libs.debug19
3 files changed, 132 insertions, 56 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 54b21b37074f..7d288723ce1a 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -24,20 +24,22 @@ _building=true
if [[ -z ${startdir} ]]; then _building=false; fi
# Options
+_target_host=false
_sysroot=""
_piver=""
_use_mesa=false
_float=false
_shadow_build=false
-_debug=false
+_debug=true
_skip_web_engine=true
_static_build=false
_build_from_head=false
_patching=true
# Sanity check options
-
-if $_building; then
+if $_target_host; then
+ _piver=""
+elif $_building; then
if [[ -z $_piver ]] && [[ -n $LOCAL_PI_VER ]]; then _piver=$LOCAL_PI_VER; fi
_sysroot=/mnt/pi${_piver}
if [[ -z "${_piver}" ]]; then
@@ -62,7 +64,7 @@ $_build_from_head && pkgver=6.6.6
_pkgver=${pkgver}${_dev_suffix}
_release_type="development_releases"
_mkspec="linux-rpi${_piver}-g++"
-_device_configure_flags=""
+_additional_configure_flags=""
_profiled_gpu_fn=qpi-proprietary.sh
__eglpkgconfigpath="${__pkgconfigpath}/egl.pc"
@@ -83,29 +85,44 @@ case ${_piver} in
;;
esac
+if $_target_host; then
+ _use_mesa=true
+else
+ depends=("qpi${_piver}-toolchain")
+ install=qpi.install
+
+ rm $install
+ touch $install
+fi
+
+if [[ -f testing ]]; then
+ _skip_web_engine=true;
+ _debug=false;
+fi
+
if [[ -z "${_dev_suffix}" ]]; then _release_type="official_releases"; fi
-if [[ -f testing ]]; then _skip_web_engine=true; fi
$_build_from_head && _patching=false && _shadow_build=true
-$_skip_web_engine && _device_configure_flags="$_device_configure_flags -skip qtwebengine"
-$_static_build && _device_configure_flags="$_device_configure_flags -static"
-$_float && _device_configure_flags="$_device_configure_flags -qreal float"
+$_skip_web_engine && _additional_configure_flags="$_additional_configure_flags -skip qtwebengine"
+$_static_build && _additional_configure_flags="$_additional_configure_flags -static"
+$_float && _additional_configure_flags="$_additional_configure_flags -qreal float"
# PKGBUILD vars
-pkgrel=2
-pkgname="qt-sdk-raspberry-pi${_piver}"
+pkgrel=3
+pkgname="qt-sdk"
+if [[ -n ${_piver} ]]; then
+ pkgname="${pkgname}-raspberry-pi${_piver}"
+fi
$_static_build && pkgname="${pkgname}-static"
+
if $_debug; then
- _build_type="-debug"
- pkgname="${pkgname}-debug"
-else
- _build_type="-release"
- _device_configure_flags="$_device_configure_flags -reduce-exports -ltcg"
+ _additional_configure_flags="-force-debug-info -separate-debug-info"
fi
_libspkgname="${pkgname}-target-libs"
+_libsdebugpkgname="${pkgname}-target-libs-debug"
_packaginguser=$(whoami)
_baseprefix=/opt
_installprefix=${_baseprefix}/${pkgname}
@@ -116,25 +133,47 @@ pkgdesc="Qt SDK for the Raspberry Pi 1/2/3"
arch=("x86_64")
url="http://www.qt.io"
license=("LGPL3" "GPL3")
-depends=("qpi${_piver}-toolchain")
optdepends=('qtcreator: Integrated Raspberry Pi IDE development')
makedepends=("git" "pkgconfig" "gcc")
_provider=http://qt.mirror.constant.com/
#_provider=https://download.qt.io
+# shouldn't be needed
+#-hostprefix ${_installprefix} \
+_core_configure_options="\
+ -prefix ${_installprefix} \
+ -confirm-license \
+ -opensource \
+ -v \
+ -silent \
+ -c++std 14 \
+ -release \
+ -fontconfig \
+ -system-freetype \
+ -pch \
+ -opengl es2 \
+ -egl \
+ -journald \
+ -make libs \
+ -no-icu \
+ -no-compile-examples \
+ \
+ -reduce-relocations \
+ -reduce-exports \
+ -ltcg \
+ \
+ -skip qtscript"
+
if ! $_build_from_head; then
source=("git://github.com/sirspudd/mkspecs.git" "${_provider}/${_release_type}/qt/${_pkgvermajmin}/${_pkgver}/single/${_source_package_name}.7z")
sha256sums=("SKIP" "8a8b57ee26e076316208bcb371cbecbfebdb0d59c1f4949e8f84bc848987b55b")
fi
options=('!strip')
-install=qpi.install
-rm $install
-touch $install
if ${_use_mesa}; then
_profiled_gpu_fn=qpi-mesa.sh
- _device_configure_flags="$_device_configure_flags -gbm -kms"
+ _additional_configure_flags="$_additional_configure_flags -gbm -kms"
else
if [[ -f ${__eglpkgconfigpath} ]] || [[ -f ${__glespkgconfigpath} ]] ; then
echo "Mesa is about to eat our communal poodle; delete egl.pc and glesv2.pc in your sysroot"
@@ -150,7 +189,10 @@ finish() {
touch $install
fi
}
-trap finish EXIT
+
+if ! $_target_host; then
+ trap finish EXIT
+fi
build() {
# Qt tries to do the right thing and stores these, breaking cross compilation
@@ -179,11 +221,13 @@ build() {
cd ${_srcdir}
-if $_patching; then
+if ! $_target_host; then
# Get our mkspec
rm -Rf $_mkspec_dir
cp -r "${srcdir}/mkspecs/${_mkspec}" $_mkspec_dir
+fi
+if $_patching; then
# build qtwebengine with our mkspec
local _webenginefileoverride="${_srcdir}/qtwebengine/tools/qmake/mkspecs/features/functions.prf"
sed -i "s/linux-clang/linux*/" ${_webenginefileoverride} || exit 1
@@ -216,38 +260,21 @@ fi
# Just because you can enable something doesnt mean you should
# Prepare for breakage in all your Qt derived projects
#-qtnamespace "Pi${_piver}" \
+
+if $_target_host; then
local _configure_line="${_srcdir}/configure \
- -confirm-license \
- -opensource \
- -v \
- \
- $_build_type \
- -fontconfig \
- -system-freetype \
- -reduce-relocations \
- -reduce-exports \
- -silent \
+ ${_core_configure_options} \
+ ${_additional_configure_flags}"
+else
+ local _configure_line="${_srcdir}/configure \
+ ${_core_configure_options} \
-qtlibinfix "Pi${_piver}" \
- -pch \
- -opengl es2 \
- -egl \
- -journald \
- \
- -hostprefix ${_installprefix} \
- -prefix ${_installprefix} \
- \
- -make libs \
- \
- -no-icu \
- -no-compile-examples \
- -no-xcb \
- \
- -skip qtscript \
- \
-sysroot ${_sysroot} \
-device ${_mkspec} \
-device-option CROSS_COMPILE=/opt/${_toolchain_name}/bin/${_toolchain_name}- \
- ${_device_configure_flags}"
+ -no-xcb \
+ ${_additional_configure_flags}"
+fi
echo ${_configure_line} > configure_line
${_configure_line} || exit 1
make || exit 1
@@ -271,7 +298,9 @@ if $_shadow_build; then
_bindir="${_srcdir}-build"
fi
+if ! $_target_host; then
create_install_script
+fi
# cleanup
rm -Rf ${pkgdir}
@@ -282,23 +311,49 @@ fi
# Qt is now installed to $pkgdir/$sysroot/$prefix
# manually generate/decompose host/target
+
local _libsdir="${startdir}/${_libspkgname}"
+ local _libsdebugdir="${startdir}/${_libsdebugpkgname}"
+
local _libspkgdir="${_libsdir}/topkg"
+ local _libsdebugpkgdir="${_libsdebugdir}/topkg"
+
local _libspkgbuild="${_libsdir}/PKGBUILD"
+ local _libsdebugpkgbuild="${_libsdebugdir}/PKGBUILD"
+
local _pkgprofiled=${_libspkgdir}/etc/profile.d
local _profiledfn=qpi.sh
- rm -Rf ${_libspkgdir}
- mkdir -p ${_libspkgdir}
+
+ local _installed_dir="${pkgdir}/${_sysroot}/${_baseprefix}"
+if $_target_host; then
+ _installed_dir="${pkgdir}/${_baseprefix}"
+fi
+
+ rm -Rf ${_libspkgdir} ${_libsdebugpkgdir}
+ mkdir -p ${_libspkgdir} ${_libsdebugpkgdir}
cp ${startdir}/PKGBUILD.libs ${_libspkgbuild}
- mv "${pkgdir}/${_sysroot}/${_baseprefix}" ${_libspkgdir}
+ cp ${startdir}/PKGBUILD.libs.debug ${_libsdebugpkgbuild}
+
+ cd $(dirname ${_installed_dir})
+ find $(basename ${_installed_dir}) -name '*.debug' -exec cp --parents '{}' ${_libsdebugpkgdir} \; -exec rm '{}' \;
+
+ mv ${_installed_dir} ${_libspkgdir}
+
# set correct libs version
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
- if ! ${_static_build}; then
+ # debug
+ sed -i "s/libspkgrel/${pkgrel}/" ${_libsdebugpkgbuild} || exit 1
+ sed -i "s/libspkgver/${pkgver}/" ${_libsdebugpkgbuild} || exit 1
+ sed -i "s/libspkgname/${_libspkgname}/" ${_libsdebugpkgbuild} || exit 1
+ sed -i "s/libsdebugpkgname/${_libsdebugpkgname}/" ${_libsdebugpkgbuild} || exit 1
+ sed -i "s/libspiver/${_piver}/" ${_libsdebugpkgbuild} || exit 1
+
+ if ! ${_target_host} && ! ${_static_build}; then
mkdir -p ${_pkgprofiled}
cp -L ${startdir}/${_profiledfn} ${_pkgprofiled} || exit 1
cp -L ${startdir}/${_profiled_gpu_fn} ${_pkgprofiled} || exit 1
@@ -314,6 +369,9 @@ fi
cd ${_libsdir}
runuser -l ${_packaginguser} -c 'makepkg -d -f' || exit 1
-
mv ${_libsdir}/${_libspkgname}-${pkgver}-${pkgrel}-any.pkg.tar.xz ${startdir}
+
+ cd ${_libsdebugdir}
+ runuser -l ${_packaginguser} -c 'makepkg -d -f' || exit 1
+ mv ${_libsdebugdir}/${_libsdebugpkgname}-${pkgver}-${pkgrel}-any.pkg.tar.xz ${startdir}
}
diff --git a/PKGBUILD.libs b/PKGBUILD.libs
index 3ef32a976c70..ed1e77bed023 100644
--- a/PKGBUILD.libs
+++ b/PKGBUILD.libs
@@ -1,8 +1,7 @@
# Maintainer: Donald Carr <sirspudd at gmail dot com>
pkgname=libspkgname
-_declarative_pkgname="qt5-declarative"
-provides=("qt-sdk-raspberry-pi-target-libs" "${_declarative_pkgname}")
+provides=("qt5-declarative" "libspkgname")
pkgver=libspkgver
pkgrel=libspkgrel
pkgdesc="Qt ${pkgver} libs cross compiled for the Raspberry Pi libspiver"
diff --git a/PKGBUILD.libs.debug b/PKGBUILD.libs.debug
new file mode 100644
index 000000000000..5b1a586e3a6e
--- /dev/null
+++ b/PKGBUILD.libs.debug
@@ -0,0 +1,19 @@
+# Maintainer: Donald Carr <sirspudd at gmail dot com>
+
+pkgname=libsdebugpkgname
+provides=("qt5-declarative" "libsdebugpkgname")
+pkgver=libspkgver
+pkgrel=libspkgrel
+pkgdesc="Qt ${pkgver} libs cross compiled for the Raspberry Pi libspiver"
+# I don't know how to set this correct for cross architecture builds
+arch=("any")
+url="http://www.qt.io"
+license=("LGPL3" "GPL3")
+source=()
+sha256sums=()
+options=('!strip')
+depends=("libspkgname")
+
+package() {
+ mv ${startdir}/topkg/* ${pkgdir}
+}