File libhybris.spec of Package libhybris
Name: libhybris
Version: 0.0.0
Release: 5%{?dist}
Summary: Utilize Bionic-based HW adaptations on glibc systems
License: ASL 2.0
URL: https://github.com/libhybris/libhybris
Source0: %{name}-%{version}.tar.xz
Patch0: test_camera_include_fix.patch
BuildRequires: pkg-config
BuildRequires: libtool
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: libstdc++6
BuildRequires: pkgconfig(wayland-client)
BuildRequires: android-headers
BuildRequires: python3-devel
BuildRequires: libglvnd-devel
BuildRequires: Mesa-libEGL-devel
BuildRequires: Mesa-libGLESv2-devel
%define __requires_exclude ^lib.*$
%description
Utilize Bionic-based HW adaptations on glibc systems
%package devel
Summary: Common development headers for %{name}
Requires: %{name} = %{version}-%{release}
%description devel
%{summary}.
%package libEGL
Summary: EGL for hybris
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libhardware = %{version}-%{release}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Provides: libEGL
Conflicts: mesa-llvmpipe-libEGL
%description libEGL
%{summary}.
%package libEGL-devel
Summary: EGL development headers for %{name}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libEGL = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}
Requires: android-headers
Provides: libEGL-devel
Conflicts: mesa-llvmpipe-libEGL-devel
%description libEGL-devel
%{summary}.
%package libGLESv1
Summary: OpenGL ES 1.x for %{name}
Requires: %{name} = %{version}-%{release}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Provides: libGLESv1
Conflicts: mesa-llvmpipe-libGLESv1
%description libGLESv1
%{summary}.
%package libGLESv1-devel
Summary: OpenGL ES 1.x development library for %{name}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libGLESv1 = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}
Provides: libGLESv1-devel
Conflicts: mesa-llvmpipe-libGLESv1-devel
%description libGLESv1-devel
%{summary}.
%package libGLESv2
Summary: OpenGL ES 2.0 for %{name}
Requires: %{name} = %{version}-%{release}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Provides: libGLESv2
Conflicts: mesa-llvmpipe-libGLESv2
%description libGLESv2
%{summary}.
%package libGLESv2-devel
Summary: OpenGL ES 2.0 development library for %{name}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libGLESv2 = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}
Provides: libGLESv2-devel
Conflicts: mesa-llvmpipe-libGLESv2-devel
%description libGLESv2-devel
%{summary}.
%package libOpenCL
Summary: OpenCL for %{name}
Requires: %{name} = %{version}-%{release}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Provides: libOpenCL
%description libOpenCL
%{summary}.
%package libOpenCL-devel
Summary: OpenCL development library for %{name}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libOpenCL = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}
Provides: libOpenCL-devel
%description libOpenCL-devel
%{summary}.
%package libOpenVG
Summary: OpenVG for %{name}
Requires: %{name} = %{version}-%{release}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Provides: libOpenVG
%description libOpenVG
%{summary}.
%package libOpenVG-devel
Summary: OpenVG development library for %{name}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libOpenVG = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}
Provides: libOpenVG-devel
%description libOpenVG-devel
%{summary}.
%package libhardware
Summary: libhardware for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
%description libhardware
%{summary}.
%package libhardware-devel
Summary: libhardware development library for %{name}
Requires: %{name}-devel = %{version}-%{release}
Requires: %{name}-libhardware = %{version}-%{release}
%description libhardware-devel
%{summary}.
%package libsync
Summary: libsync for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
%description libsync
%{summary}.
%package libsync-devel
Summary: libsync development library for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libsync = %{version}-%{release}
%description libsync-devel
%{summary}.
%package libnfc
Summary: Near Field Communication for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
%description libnfc
%{summary}.
%package libnfc-devel
Summary: Near Field Communication development library for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libnfc = %{version}-%{release}
%description libnfc-devel
%{summary}.
%package libvibrator
Summary: Vibrator for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
%description libvibrator
%{summary}.
%package libvibrator-devel
Summary: Vibrator development library for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libvibrator = %{version}-%{release}
%description libvibrator-devel
%{summary}.
%package libsf
Summary: SurfaceFlinger support helpers for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
%description libsf
%{summary}.
%package libsf-devel
Summary: SurfaceFlinger support development library for %{name}
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libsf = %{version}-%{release}
Provides: libsf-devel
%description libsf-devel
%{summary}.
%package tests
Summary: Tests for %{name}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libEGL = %{version}-%{release}
Requires: %{name}-libGLESv2 = %{version}-%{release}
Requires: %{name}-libhardware = %{version}-%{release}
Requires: %{name}-libsync = %{version}-%{release}
Requires: %{name}-libvibrator = %{version}-%{release}
%description tests
%{summary}.
%package tests-upstream
Summary: Tests from upstream %{name} but not working on our side
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libEGL = %{version}-%{release}
Requires: %{name}-libGLESv2 = %{version}-%{release}
Requires: %{name}-libhardware = %{version}-%{release}
Requires: %{name}-libsync = %{version}-%{release}
%description tests-upstream
%{summary}.
%package tests-upstream-devel
Summary: Tests from upstream %{name} but not working on our side, development files
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name} = %{version}-%{release}
Requires: %{name}-tests-upstream = %{version}-%{release}
%description tests-upstream-devel
%{summary}.
%package doc
Summary: Documentation for %{name}
Requires: %{name} = %{version}-%{release}
%description doc
%{summary}.
%prep
%autosetup -n %{name}-%{version} -p1
%build
cd hybris
./autogen.sh
%configure \
--enable-wayland \
--with-android-headers=/usr/include/android-28 \
--enable-property-cache \
--enable-experimental \
%{?qa_stage_devel:--enable-debug} \
%{?qa_stage_devel:--enable-trace} \
%ifnarch %{ix86}
%{?qa_stage_devel:--enable-arm-tracing} \
%endif
--enable-property-cache \
%ifarch %{arm}
--enable-arch=arm \
--enable-mali-quirks \
--enable-adreno-quirks \
%endif
%ifarch %{ix86}
--enable-arch=x86 \
%endif
%ifarch aarch64
--enable-arch=arm64 \
--enable-mali-quirks \
--enable-adreno-quirks \
--with-default-hybris-ld-library-path=/usr/libexec/droid-hybris/system/lib64:/vendor/lib64:/system/lib64:/odm/lib64 \
%else
--with-default-hybris-ld-library-path=/usr/libexec/droid-hybris/system/lib:/vendor/lib:/system/lib:/odm/lib \
%endif
--enable-silent-rules \
--enable-glvnd
%make_build
%install
cd hybris
make install DESTDIR=%{buildroot}
# Remove the static libraries.
rm -f %{buildroot}/%{_libdir}/*.la %{buildroot}/%{_libdir}/libhybris/*.la
mkdir -p %{buildroot}%{_docdir}/%{name}-%{version}
install -m0644 AUTHORS %{buildroot}%{_docdir}/%{name}-%{version}
rm -rf %{buildroot}/%{_libdir}/pkgconfig/egl.pc
rm -rf %{buildroot}/%{_includedir}/GLES
rm -rf %{buildroot}/%{_includedir}/CL
rm -rf %{buildroot}/%{_includedir}/GLES2
rm -rf %{buildroot}/%{_includedir}/GLES3
rm -rf %{buildroot}/%{_includedir}/EGL
rm -rf %{buildroot}/%{_includedir}/KHR
rm -rf %{buildroot}/%{_includedir}/VG
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post libEGL -p /sbin/ldconfig
%postun libEGL -p /sbin/ldconfig
%post libGLESv1 -p /sbin/ldconfig
%postun libGLESv1 -p /sbin/ldconfig
%post libGLESv2 -p /sbin/ldconfig
%postun libGLESv2 -p /sbin/ldconfig
%post libOpenCL -p /sbin/ldconfig
%postun libOpenCL -p /sbin/ldconfig
%post libhardware -p /sbin/ldconfig
%postun libhardware -p /sbin/ldconfig
%post libsync -p /sbin/ldconfig
%postun libsync -p /sbin/ldconfig
%post libnfc -p /sbin/ldconfig
%postun libnfc -p /sbin/ldconfig
%post libvibrator -p /sbin/ldconfig
%postun libvibrator -p /sbin/ldconfig
%post libsf -p /sbin/ldconfig
%postun libsf -p /sbin/ldconfig
%post tests-upstream -p /sbin/ldconfig
%postun tests-upstream -p /sbin/ldconfig
%post tests-upstream-devel -p /sbin/ldconfig
%postun tests-upstream-devel -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%license hybris/COPYING
%dir %{_libdir}/libhybris
%dir %{_libdir}/libhybris/linker
%{_libdir}/libhybris-common.so.*
%{_libdir}/libandroid-properties.so.*
%{_libdir}/libgralloc.so.*
%{_libdir}/libhwc2.so.*
%{_bindir}/getprop
%{_bindir}/setprop
%{_libdir}/libhybris/linker/*.la
%{_libdir}/libhybris/linker/*.so
%{_libdir}/libwifi.so.*
%files devel
%defattr(-,root,root,-)
%dir %{_includedir}/hybris
%dir %{_includedir}/hybris/hwc2/
%{_includedir}/hybris/input
%{_includedir}/hybris/properties
%{_includedir}/hybris/dlfcn
%{_includedir}/hybris/common
%{_libdir}/libhybris-common.so
%{_libdir}/pkgconfig/libgralloc.pc
%{_libdir}/libandroid-properties.so
%{_libdir}/pkgconfig/libandroid-properties.pc
%{_includedir}/hybris/camera
%{_includedir}/hybris/surface_flinger
%{_includedir}/hybris/ui
%{_includedir}/hybris/media
%{_libdir}/libgralloc.so
%{_libdir}/libhwc2.so
%{_libdir}/libwifi.so
%{_libdir}/pkgconfig/libwifi.pc
%{_includedir}/hybris/hwc2/hwc2_compatibility_layer.h
%{_libdir}/pkgconfig/libhwc2.pc
%files libEGL
%defattr(-,root,root,-)
%{_libdir}/libhybris-eglplatformcommon.so.*
%{_libdir}/libhybris-hwcomposerwindow.so.*
%{_libdir}/libEGL_libhybris.so.*
%{_libdir}/libhybris/*.so
%{_datadir}/glvnd/egl_vendor.d/10_libhybris.json
%files libEGL-devel
%defattr(-,root,root,-)
%{_libdir}/libEGL_libhybris.so
%{_includedir}/hybris/eglplatformcommon
%{_libdir}/libhybris-eglplatformcommon.so
%{_libdir}/pkgconfig/hybris-egl-platform.pc
%{_includedir}/hybris/hwcomposerwindow
%{_libdir}/libhybris-hwcomposerwindow.so
%{_libdir}/pkgconfig/hwcomposer-egl.pc
%files libGLESv1
%defattr(-,root,root,-)
%{_libdir}/libGLESv1_CM_libhybris.so.*
%files libGLESv1-devel
%defattr(-,root,root,-)
%{_libdir}/libGLESv1_CM_libhybris.so
%files libGLESv2
%defattr(-,root,root,-)
%{_libdir}/libGLESv2_libhybris.so.*
%files libGLESv2-devel
%defattr(-,root,root,-)
%{_libdir}/libGLESv2_libhybris.so
%files libOpenCL
%defattr(-,root,root,-)
%{_libdir}/libOpenCL.so.*
%files libOpenCL-devel
%defattr(-,root,root,-)
%{_libdir}/libOpenCL.so
%{_libdir}/pkgconfig/OpenCL.pc
%files libOpenVG
%defattr(-,root,root,-)
# We don't have implementation of OpenVG atm.
%files libOpenVG-devel
%defattr(-,root,root,-)
%files libhardware
%defattr(-,root,root,-)
%{_libdir}/libhardware.so.*
%files libhardware-devel
%defattr(-,root,root,-)
%{_libdir}/libhardware.so
%{_libdir}/pkgconfig/libhardware.pc
%files libsync
%defattr(-,root,root,-)
%{_libdir}/libsync.so.*
%files libsync-devel
%defattr(-,root,root,-)
%{_libdir}/libsync.so
%{_libdir}/pkgconfig/libsync.pc
%files libnfc
%defattr(-,root,root,-)
%{_libdir}/libnfc_*.so.*
%files libnfc-devel
%defattr(-,root,root,-)
%{_libdir}/libnfc_*.so
%{_libdir}/pkgconfig/libnfc_*.pc
%files libvibrator
%defattr(-,root,root,-)
%{_libdir}/libvibrator.so.*
%files libvibrator-devel
%defattr(-,root,root,-)
%{_libdir}/libvibrator.so
%{_libdir}/pkgconfig/libvibrator.pc
%files libsf
%defattr(-,root,root,-)
%{_libdir}/libsf.so.*
%files libsf-devel
%defattr(-,root,root,-)
%{_libdir}/libsf.so
%{_libdir}/pkgconfig/libsf.pc
%files tests
%defattr(-,root,root,-)
%{_bindir}/test_audio
%{_bindir}/test_dlopen
%{_bindir}/test_egl
%{_bindir}/test_egl_configs
%{_bindir}/test_glesv2
%{_bindir}/test_glesv3
%{_bindir}/test_gps
%{_bindir}/test_hwcomposer
%{_bindir}/test_lights
%{_bindir}/test_nfc
%{_bindir}/test_opencl
%{_bindir}/test_sensors
%{_bindir}/test_vibrator
%{_bindir}/test_wifi
%files tests-upstream
%defattr(-,root,root,-)
%{_libdir}/libcamera.so.*
%{_libdir}/libis.so.*
%{_libdir}/libmedia.so.*
%{_libdir}/libui.so.*
%{_bindir}/test_camera
%{_bindir}/test_input
%{_bindir}/test_media
%{_bindir}/test_recorder
%{_bindir}/test_sf
%files tests-upstream-devel
%{_libdir}/libcamera.so
%{_libdir}/libis.so
%{_libdir}/libmedia.so
%{_libdir}/libui.so
%{_libdir}/pkgconfig/libcamera.pc
%{_libdir}/pkgconfig/libis.pc
%{_libdir}/pkgconfig/libmedia.pc
%files doc
%defattr(-,root,root,-)
%{_docdir}/%{name}-%{version}
%changelog