File waydroid.spec of Package waydroid
#
# spec file for package waydroid
#
# Copyright (c) 2026 SUSE LLC
# Copyright (c) 2026 James "Jim" Ed Randson <jimedrand@disroot.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define selinuxtype targeted
Name: waydroid
Version: 1.6.1
Release: 1
Summary: Container-based approach to boot a full Android system on GNU/Linux
License: GPL-3.0-only
Group: System/Emulators/Other
URL: https://github.com/waydroid/waydroid
Source0: https://github.com/waydroid/waydroid/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: waydroid.te
Source2: waydroid.fc
Source3: waydroid.conf
Patch0: setup-firewalld.patch
Patch1: mount-secontext.patch
BuildArch: noarch
BuildRequires: dbus-1-devel
BuildRequires: make
BuildRequires: polkit-devel
BuildRequires: python3-devel
BuildRequires: python3-gbinder
BuildRequires: python3-dbus-python
BuildRequires: python3-gobject
BuildRequires: selinux-policy-devel
BuildRequires: systemd-rpm-macros
BuildRequires: desktop-file-utils
BuildRequires: appstream-glib
BuildRequires: hicolor-icon-theme
Requires: android-tools
Requires: dbus-1
Requires: dnsmasq
Requires: iproute2
Requires: iptables
Requires: libgbinder1
Requires: libglibutil1
Requires: lxc
Requires: nftables
Requires: polkit
Requires: python3-dbus-python
Requires: python3-gbinder
Requires: python3-gobject
Requires: hicolor-icon-theme
Requires: desktop-file-utils
Requires: container-selinux
# Provide choice between DKMS and KMP for kernel modules
# anbox-modules is a meta package that will pull appropriate KMP
Requires: (anbox-modules-dkms or anbox-modules)
Recommends: anbox-modules-dkms
%description
Waydroid is a container-based approach to boot a full Android system on a regular GNU/Linux system. It uses Linux namespaces (user, pid, uts, net, mount, ipc) to run a full Android system in a container and provide Android applications on any GNU/Linux-based platform.
The Android inside the container has direct access to needed hardware through LXC. The Android runtime environment ships with a minimal customized Android system image based on LineageOS.
%prep
%autosetup -p1
mkdir -p SELinux
cp %{SOURCE1} SELinux/
cp %{SOURCE2} SELinux/
%build
sed -i -e '/"system_channel":/ s/: ".*"/: ""/' tools/config/__init__.py
sed -i -e '/"vendor_channel":/ s/: ".*"/: ""/' tools/config/__init__.py
cd SELinux
%make_build NAME=%{selinuxtype} -f %{_datadir}/selinux/devel/Makefile
cd ..
%install
%make_install LIBDIR=%{_libdir} DESTDIR=%{buildroot} USE_SYSTEMD=1 USE_DBUS_ACTIVATION=1 USE_NFTABLES=1
%py3_compile %{buildroot}%{_prefix}/lib/waydroid
install -d %{buildroot}%{_datadir}/selinux/%{selinuxtype}
install -p -m 0644 SELinux/%{name}.pp %{buildroot}%{_datadir}/selinux/%{selinuxtype}/
install -d %{buildroot}%{_datadir}/gbinder/config
install -p -m 0644 %{SOURCE3} %{buildroot}%{_datadir}/gbinder/config/waydroid.conf
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/Waydroid.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/waydroid.market.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/waydroid.app.install.desktop
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/id.waydro.waydroid.metainfo.xml
%pre
%service_add_pre waydroid-container.service
%selinux_relabel_pre -s %{selinuxtype}
%post
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/%{selinuxtype}/%{name}.pp
%selinux_relabel_post -s %{selinuxtype}
%service_add_post waydroid-container.service
if [ $1 -eq 1 ]; then
cat << 'EOF'
================================================================================
Waydroid Installation Complete
================================================================================
Kernel modules required. Choose one:
1. anbox-modules-dkms (recommended)
- Rebuilds automatically for every kernel update
- Works with all kernel flavors (default, longterm, etc.)
Install: zypper install anbox-modules-dkms
2. anbox-modules (KMP - Kernel Module Package)
- Pre-compiled for specific kernel version
- Faster installation, no compilation needed
- Auto-selects correct variant for your kernel
Install: zypper install anbox-modules
After installing, load module: sudo modprobe binder_linux
EOF
fi
if [ $1 -gt 1 ]; then
cat << 'EOF'
================================================================================
Waydroid Upgrade Complete
================================================================================
EOF
fi
if [ -x %{_bindir}/waydroid ]; then
%{_bindir}/waydroid upgrade -o >/dev/null 2>&1 || :
fi
%preun
%service_del_preun waydroid-container.service
%postun
%service_del_postun waydroid-container.service
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{name}
%selinux_relabel_post -s %{selinuxtype}
fi
%files
%license LICENSE
%doc README.md
%{_prefix}/lib/waydroid
%{_bindir}/waydroid
%{_unitdir}/waydroid-container.service
%{_datadir}/applications/Waydroid.desktop
%{_datadir}/applications/waydroid.market.desktop
%{_datadir}/applications/waydroid.app.install.desktop
%{_datadir}/metainfo/id.waydro.waydroid.metainfo.xml
%{_datadir}/icons/hicolor/512x512/apps/waydroid.png
%{_datadir}/dbus-1/system-services/id.waydro.Container.service
%{_datadir}/dbus-1/system.d/id.waydro.Container.conf
%{_datadir}/polkit-1/actions/id.waydro.Container.policy
%dir %{_datadir}/desktop-directories
%{_datadir}/desktop-directories/waydroid.directory
%dir %{_sysconfdir}/xdg/menus
%dir %{_sysconfdir}/xdg/menus/applications-merged
%{_sysconfdir}/xdg/menus/applications-merged/waydroid.menu
%dir %{_datadir}/gbinder
%dir %{_datadir}/gbinder/config
%{_datadir}/gbinder/config/waydroid.conf
%dir %{_datadir}/selinux
%dir %{_datadir}/selinux/%{selinuxtype}
%{_datadir}/selinux/%{selinuxtype}/%{name}.pp
%changelog
* Sun Jan 18 2026 James "Jim" Ed Randson <jimedrand@disroot.org>
- Add flexible kernel module dependency support
- Allow choice between anbox-modules-dkms or anbox-modules (KMP)
- Recommend DKMS for better compatibility across kernel updates
- Simplify post-install message
- Remove ashmem_linux reference (no longer required)