pmaports/hybris/libhybris/APKBUILD
NotKit c9b6e30e76 Package libhybris (#1402)
As discussed in #1039, I want to split feature/hybris branch into
smaller sensible pull requests.

This is the first one that simply adds android-headers and libhybris
packaging. libhybris allows apps compiled with glibc (musl in our case)
to load Android libraries that utilize bionic libc, which is used to
load proprietary userspace drivers.

The package isn't very useful on its own and requires core (non-UI/Java)
Android services to be running in some way - either in Halium-style LXC
container or in same root as main OS with modified init (Mer/Sailfish do
it this way). Both ways are tested to work in postmarketOS.

libhybris also includes some tests, not all of them are known to be
representative, but test_vibrator and test_egl_configs are usually good
indicators if system is set up correctly.
2018-04-10 21:13:42 +00:00

151 lines
4.9 KiB
Text

pkgname=libhybris
pkgver=1.0_git20180212
pkgrel=1
arch="armhf aarch64"
url="https://github.com/libhybris/libhybris"
license="Apache"
makedepends="autoconf automake libtool wayland-dev linux-headers bsd-compat-headers
libx11-dev libxcb-dev libxext-dev
android-headers-7.1 android-headers-7.1-caf android-headers-4.4"
depends_dev="bsd-compat-headers android-headers-7.1"
_rev=54dd4749706334882f9c404fca01a19f01325d07
source="$pkgname-$_rev.tar.gz::https://github.com/libhybris/libhybris/archive/$_rev.tar.gz
0001-Make-libhybris-compile-with-musl.patch
0002-tests-Regression-test-for-EGL-glibc-TLS-conflict.patch
0003-Implement-X11-EGL-platform-based-on-wayland-code.patch"
pkgdesc="libhybris allows to use bionic-based HW adaptations"
subpackages="$pkgname-dev $pkgname-egl $pkgname-gles $pkgname-libwayland-egl:_wayland
$pkgname-7.1:_specific $pkgname-7.1-caf:_specific $pkgname-4.4:_specific"
if [ "$CARCH" == "aarch64" ]; then
subpackages="$pkgname-dev $pkgname-egl $pkgname-gles $pkgname-libwayland-egl:_wayland
$pkgname-7.1:_specific $pkgname-7.1-caf:_specific"
fi
options="!check !strip !tracedeps"
builddir="$srcdir/$pkgname-$_rev"
_tmppkgdir="$srcdir/tmpinstall"
_main_headers_ver=7.1
_bins_specific="test_audio test_camera test_egl_configs test_gps
test_hwcomposer test_input test_lights test_media test_nfc
test_recorder test_sensors test_sf test_vibrator test_wifi"
_libs_specific="libcamera.so.1.0.0 libhardware.so.2.0.0
libhybris-common.so.1.0.0 libhybris-eglplatformcommon.so.1.0.0
libhybris-hwcomposerwindow.so.1.0.0 libis.so.1.0.0 libmedia.so.1
libmedia.so.1.0.0 libnfc_ndef_nxp.so.1.0.0 libnfc_nxp.so.1.0.0
libsf.so.1.0.0 libsync.so.2.0.0 libui.so.1.0.0 libvibrator.so.1.0.0
libwifi.so.1.0.0
libhybris/eglplatform_fbdev.so libhybris/eglplatform_hwcomposer.so
libhybris/eglplatform_null.so libhybris/eglplatform_wayland.so
libhybris/eglplatform_x11.so"
build() {
cd "$builddir/hybris"
NOCONFIGURE=1 ./autogen.sh
if [ "$CARCH" == "armhf" ]; then
_vers="7.1 7.1-caf 4.4"
_ldpath="/usr/libexec/droid-hybris/system/lib:/vendor/lib:/system/lib"
_arch="arm"
elif [ "$CARCH" == "aarch64" ]; then
_vers="7.1 7.1-caf"
_ldpath="/usr/libexec/droid-hybris/system/lib64:/vendor/lib64:/system/lib64"
_arch="arm64"
fi
for _headers_ver in $_vers; do
msg "building $pkgname-$_headers_ver"
./configure \
--prefix=/usr \
--enable-wayland \
--enable-trace \
--enable-debug \
--enable-experimental \
--with-android-headers=/usr/include/android-$_headers_ver \
--with-default-hybris-ld-library-path=$_ldpath \
--enable-arch=$_arch \
--enable-property-cache
make DESTDIR="${_tmppkgdir}/$pkgname-$_headers_ver" install
done
}
package() {
cd "$builddir/hybris"
# make DESTDIR="${pkgdir}" install
mkdir -p "${pkgdir}"
cp -a ${_tmppkgdir}/$pkgname-$_main_headers_ver/* "${pkgdir}"
for _bin in ${_bins_specific}; do
rm "${pkgdir}/usr/bin/${_bin}"
done
for _lib in ${_libs_specific}; do
rm "${pkgdir}/usr/lib/${_lib}"
done
}
_specific() {
for _bin in ${_bins_specific}; do
install -Dm755 "${_tmppkgdir}/${subpkgname}/usr/bin/${_bin}" \
"${subpkgdir}/usr/bin/${_bin}"
done
for _lib in ${_libs_specific}; do
install -Dm755 "${_tmppkgdir}/${subpkgname}/usr/lib/${_lib}" \
"${subpkgdir}/usr/lib/${_lib}"
done
}
egl() {
options="!tracedeps"
pkgdesc="libhybris libEGL runtime libraries"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libEGL.so.* \
"$subpkgdir"/usr/lib/
}
gles() {
options="!tracedeps"
pkgdesc="libhybris libGLESv2 runtime libraries"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libGLES*.so.* \
"$subpkgdir"/usr/lib/
}
_wayland() {
pkgdesc="libhybris libwayland-egl library"
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libwayland-egl.so.* "$subpkgdir"/usr/lib/ \
|| return 1
}
dev() {
default_dev
# Avoid conflicts with mesa-dev
rm -f "$subpkgdir"/usr/lib/lib*GL*.so
rm -f "$subpkgdir"/usr/lib/libwayland-egl.so
cd "$subpkgdir"/usr/lib/pkgconfig
rm -f egl.pc glesv*.pc wayland-egl.pc
cd "$subpkgdir"/usr/include
# Move libhybris-provided headers into hybris dir
mv CL EGL GLES GLES2 KHR VG hybris
# Symlink eglhybris.h
mkdir -p EGL
cd EGL
ln -s ../hybris/EGL/eglhybris.h .
}
sha512sums="798360130e540d9dd29ec937b3d01a1b146881c45ec6a2dd1a599a0164d46886b58927d38575993b525a06e99fcc2dd46f020e70f7e5c7cc43258b840ae183f8 libhybris-54dd4749706334882f9c404fca01a19f01325d07.tar.gz
9655816dc3d89f329801a74f4499c3752cbc96f7ba2e052765335a2cbd7e74cdf45064260ab27537bcd9d64673144eac6f89e31af4b4c6b4a4792ad7b398555d 0001-Make-libhybris-compile-with-musl.patch
1355a4403d1af8bdf75b9e4502cbfc093b9788224ce7c24a1f6a53dd7996d385d31a3362577a4293db6b6d0dd0ae4e88140b38c658ff0a288d9acfc2753859bb 0002-tests-Regression-test-for-EGL-glibc-TLS-conflict.patch
f7d7b460af5f13c37289d7eadfa5eb52248a4a5379a1da07b74231eb4fc9c1ccda6644bcd39bbae89bd068d7f3f6c5fe4e9ae6b41991c1f3b48d6b4d59d951d8 0003-Implement-X11-EGL-platform-based-on-wayland-code.patch"