File waydroid-jim.install of Package waydroid-jim
detect_init() {
if [ -f /run/openrc/softlevel ]; then
echo "openrc"
elif [ -d /run/dinit.d ]; then
echo "dinit"
elif [ -d /run/runit/supervise.waydroid-container ]; then
echo "runit"
elif [ -d /run/s6-rc ]; then
echo "s6"
elif [ -d /run/systemd/system ]; then
echo "systemd"
else
echo "unknown"
fi
}
setup_binderfs() {
if [ -d /dev/binderfs ]; then
echo "BinderFS directory already exists."
else
echo "Creating BinderFS directory..."
mkdir -p /dev/binderfs
fi
echo "Creating relationship with BinderFS..."
mount -t binder binder /dev/binderfs 2>/dev/null || {
echo "Warning: Failed to mount BinderFS. Ensure binder_linux module is loaded."
echo "You may need to run: modprobe binder_linux"
}
if mountpoint -q /dev/binderfs 2>/dev/null; then
echo "BinderFS successfully linked."
fi
}
post_install() {
INIT_SYSTEM=$(detect_init)
echo "Detected init system: $INIT_SYSTEM"
setup_binderfs
echo ""
echo "Enabling Waydroid Container for $INIT_SYSTEM..."
case "$INIT_SYSTEM" in
systemd)
systemctl enable --now waydroid-container.service
echo "Waydroid Container has been enabled via systemd."
;;
openrc)
rc-update add waydroid-container default
rc-service waydroid-container start
echo "Waydroid Container has been enabled via OpenRC."
;;
runit)
ln -sf /etc/sv/waydroid-container /run/runit/service/
sv start waydroid-container
echo "Waydroid Container has been enabled via runit."
;;
dinit)
dinitctl enable waydroid-container
dinitctl start waydroid-container
echo "Waydroid Container has been enabled via dinit."
;;
s6)
s6-rc-bundle-update add default waydroid-container
s6-rc -u change waydroid-container
echo "Waydroid Container has been enabled via s6."
;;
*)
echo "Warning: Unknown init system detected."
echo "Please manually enable waydroid-container service for your init system."
;;
esac
echo ""
echo "You can install the image packages we provide on Jim AUR or you can manually deploy it."
echo "Waydroid will be fully operational after a restart."
}
post_upgrade() {
INIT_SYSTEM=$(detect_init)
echo "Restarting Waydroid Container if it's running..."
case "$INIT_SYSTEM" in
systemd)
if systemctl is-active --quiet waydroid-container.service; then
systemctl restart waydroid-container.service
fi
;;
openrc)
if rc-service waydroid-container status >/dev/null 2>&1; then
rc-service waydroid-container restart
fi
;;
runit)
if sv status waydroid-container >/dev/null 2>&1; then
sv restart waydroid-container
fi
;;
dinit)
if dinitctl status waydroid-container >/dev/null 2>&1; then
dinitctl restart waydroid-container
fi
;;
s6)
if s6-rc -a list | grep -q waydroid-container; then
s6-rc -d change waydroid-container
s6-rc -u change waydroid-container
fi
;;
esac
}
pre_remove() {
INIT_SYSTEM=$(detect_init)
echo "Stopping and disabling Waydroid Container before uninstalling..."
case "$INIT_SYSTEM" in
systemd)
systemctl stop waydroid-container.service 2>/dev/null || true
systemctl disable waydroid-container.service 2>/dev/null || true
;;
openrc)
rc-service waydroid-container stop 2>/dev/null || true
rc-update del waydroid-container default 2>/dev/null || true
;;
runit)
sv stop waydroid-container 2>/dev/null || true
rm -f /run/runit/service/waydroid-container 2>/dev/null || true
;;
dinit)
dinitctl stop waydroid-container 2>/dev/null || true
dinitctl disable waydroid-container 2>/dev/null || true
;;
s6)
s6-rc -d change waydroid-container 2>/dev/null || true
s6-rc-bundle-update delete default waydroid-container 2>/dev/null || true
;;
esac
}