%global forgeurl https://github.com/waydroid/waydroid %global selinuxtype targeted Version: 1.3.4 %global tag %{version} %forgemeta Name: waydroid Release: 4%{?dist} Summary: Container-based approach to boot a full Android system on GNU/Linux License: GPL-3.0-only URL: %{forgeurl} Source: %{forgesource} Source1: waydroid.te Source2: waydroid-gbinder.conf Source3: waydroid-container.service Source4: dev-binderfs.mount Source6: waydroid.fc # Assign firewalld zone to the waydroid network interface Patch0: setup-firewalld.patch # Mount the android rootfs with a default selinux context Patch1: mount-secontext.patch BuildArch: noarch BuildRequires: make BuildRequires: selinux-policy-devel BuildRequires: container-selinux BuildRequires: systemd BuildRequires: python3-devel BuildRequires: systemd-rpm-macros BuildRequires: desktop-file-utils BuildRequires: libappstream-glib Requires: python3-gbinder >= 1.1.0 Requires: python3-gobject Requires: lxc Requires: gtk3 Requires: (%{name}-selinux = %{version}-%{release} if selinux-policy-%{selinuxtype}) Requires: nftables Requires: iproute Requires: dnsmasq Recommends: python3-pyclip Recommends: wl-clipboard %description Waydroid uses Linux namespaces to run a full Android system in a container and provide Android applications on any GNU/Linux-based platform. The Android system inside the container has direct access to needed hardware through LXC and the binder interface. %package selinux Summary: SELinux policy module for waydroid Requires: %{name} = %{version}-%{release} Requires: container-selinux %{?selinux_requires} %description selinux This package contains the SELinux policy module necessary to run waydroid. %prep %forgeautosetup -p1 mkdir SELinux cp %{S:1} SELinux/ cp %{S:6} SELinux/ %build # Remove link for ROM files sed -i -e '/"system_channel":/ s/: ".*"/: ""/' tools/config/__init__.py sed -i -e '/"vendor_channel":/ s/: ".*"/: ""/' tools/config/__init__.py # Compile sepolicy cd SELinux %{__make} NAME=%{selinuxtype} -f /usr/share/selinux/devel/Makefile %install %make_install LIBDIR=%{_libdir} DESTDIR=%{buildroot} USE_SYSTEMD=0 USE_NFTABLES=1 %py_byte_compile %{python3} %{buildroot}%{_prefix}/lib/waydroid %{__install} -d %{buildroot}%{_unitdir} %{__install} -d %{buildroot}%{_datadir}/selinux/%{selinuxtype} %{__install} -p -m 644 %{S:3} %{buildroot}%{_unitdir}/ %{__install} -p -m 644 %{S:4} %{buildroot}%{_unitdir}/ %{__install} -p -m 644 SELinux/%{name}.pp %{buildroot}%{_datadir}/selinux/%{selinuxtype}/%{name}.pp %check desktop-file-validate %{buildroot}/%{_datadir}/applications/Waydroid.desktop appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/id.waydro.waydroid.metainfo.xml %pre selinux %selinux_relabel_pre -s %{selinuxtype} %post selinux %selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/%{selinuxtype}/%{name}.pp %selinux_relabel_post -s %{selinuxtype} if [ "$1" -le "1" ]; then # First install # the daemon needs to be restarted for the custom label to be applied %systemd_postun_with_restart waydroid-container.service fi %postun selinux if [ $1 -eq 0 ]; then %selinux_modules_uninstall -s %{selinuxtype} %{name} %selinux_relabel_post -s %{selinuxtype} fi %post waydroid upgrade -o > /dev/null || : %systemd_post waydroid-container.service if [ $1 -eq 1 ]; then if systemctl -q is-enabled waydroid-container.service > /dev/null 2>&1 ; then systemctl start waydroid-container.service > /dev/null 2>&1 || : fi fi %preun %systemd_preun waydroid-container.service %postun %systemd_postun_with_restart waydroid-container.service %files %license LICENSE %doc README.md %{_prefix}/lib/waydroid %{_datadir}/applications/Waydroid.desktop %{_datadir}/applications/waydroid.market.desktop %{_datadir}/metainfo/id.waydro.waydroid.metainfo.xml %{_bindir}/waydroid %{_unitdir}/waydroid-container.service %{_unitdir}/dev-binderfs.mount %files selinux %doc SELinux/%{name}.te %{_datadir}/selinux/%{selinuxtype}/%{name}.pp %changelog * Fri Jan 06 2023 Alessandro Astone - 1.3.4-4 - Re-enable s390x build - Sepolicy fixes * Tue Dec 27 2022 Alessandro Astone - 1.3.4-3 - Fix description typos etc. - Validate desktop and metainfo files - Reorder post install scriptlets * Sun Dec 25 2022 Alessandro Astone - 1.3.4-2 - Add selinux label to android rootfs - Make package noarch * Wed Dec 14 2022 Alessandro Astone - 1.3.4-1 - Update to 1.3.4 * Sat Nov 05 2022 Alessandro Astone - 1.3.3-3 - Override selinux context of the android rootfs - Fixes https://github.com/casualsnek/waydroid_script * Sun Oct 30 2022 Alessandro Astone - 1.3.3-2 - Add sepolicy for updating from the android app * Sun Sep 25 2022 Alessandro Astone - 1.3.3-1 - Update to 1.3.3 * Fri Sep 02 2022 Alessandro Astone - 1.3.1-1 - Update to 1.3.1 * Tue Aug 09 2022 Alessandro Astone - 1.3.0-1 - Update to 1.3.0 * Sun Apr 17 2022 Alessandro Astone - 1.2.1-1 - Update to 1.2.1 * Mon Mar 07 2022 Alessandro Astone - 1.2.0-7.20220307git1.2.0 - Recommend pyclip * Sat Feb 26 2022 Alessandro Astone - 1.2.0-5.20220226git1.2.0 - Add sepolicy for crash handler * Fri Feb 25 2022 Alessandro Astone - 1.2.0-4.20220225git1.2.0 - Respin package * Wed Aug 12 2020 Qiyu Yan - 0-0.1.20200811gitc87ea48 - initial package