|
| 1 | +#!/usr/bin/make -f |
| 2 | +# -*- makefile -*- |
| 3 | + |
| 4 | +.PHONY: all install-udsclient install-udsclient-unmanaged install-udsclient-common clean |
| 5 | + |
| 6 | +VERSION := $(shell [ -f ../../../VERSION ] && cat ../../../VERSION || echo "devel") |
| 7 | +RELEASE := 1 |
| 8 | + |
| 9 | +# Distro to build for (Debian12, Fedora41, openSUSE15) |
| 10 | +DISTRO ?= Debian12 |
| 11 | +DESTDIR ?= ./package/$(DISTRO) |
| 12 | + |
| 13 | +# Output directory from rustbuilder |
| 14 | +OUTPUTDIR := builders/$(DISTRO)/output |
| 15 | + |
| 16 | +# Install targets |
| 17 | +BINDIR := $(DESTDIR)/usr/bin |
| 18 | +SBINDIR := $(DESTDIR)/usr/sbin |
| 19 | +APPSDIR := $(DESTDIR)/usr/share/applications |
| 20 | +POLKITDIR := $(DESTDIR)/usr/share/polkit-1/actions |
| 21 | +SYSTEMDDIR := $(DESTDIR)/etc/systemd/system |
| 22 | +AUTOSTARTDIR := $(DESTDIR)/etc/xdg/autostart |
| 23 | +ICONDIR := $(DESTDIR)/usr/share/udsclient |
| 24 | + |
| 25 | +# No all rule, because the build depends on the variant (managed/unmanaged), etc.. |
| 26 | + |
| 27 | +help: |
| 28 | + @echo "Usage:" |
| 29 | + @echo " make install-udsclient DISTRO=Debian12" |
| 30 | + @echo " make install-udsclient-unmanaged DISTRO=Debian12" |
| 31 | + @echo " make clean DISTRO=Debian12" |
| 32 | + |
| 33 | + |
| 34 | +# === Build binaries using rustbuilder.py === |
| 35 | +$(OUTPUTDIR)/udsclient-client: rustbuilder.py |
| 36 | + python3 rustbuilder.py $(DISTRO) |
| 37 | + @test -f $(OUTPUTDIR)/udsclient-client || (echo "Missing udsclient-client binary" && exit 1) |
| 38 | + |
| 39 | + |
| 40 | +# === Common installation logic === |
| 41 | +install-udsclient-common: $(OUTPUTDIR)/udsclient-client |
| 42 | + mkdir -p $(BINDIR) $(SBINDIR) $(APPSDIR) $(POLKITDIR) $(AUTOSTARTDIR) $(ICONDIR) |
| 43 | + |
| 44 | + # Install shared Rust binaries |
| 45 | + cp $(OUTPUTDIR)/udsclient-client $(BINDIR)/ |
| 46 | + cp $(OUTPUTDIR)/udsclient-service $(SBINDIR)/ |
| 47 | + cp $(OUTPUTDIR)/gui-helper $(BINDIR)/ |
| 48 | + |
| 49 | + # Install icon |
| 50 | + cp ../../assets/img/uds-icon.png $(ICONDIR)/ |
| 51 | + |
| 52 | + # Install PolicyKit |
| 53 | + cp policy/org.openuds.pkexec.udsclient_config.policy $(POLKITDIR)/ |
| 54 | + |
| 55 | + # Install desktop entries |
| 56 | + cp desktop/udsclient_config.desktop $(APPSDIR)/ |
| 57 | + cp desktop/udsclient_client.desktop $(AUTOSTARTDIR)/ |
| 58 | + |
| 59 | + |
| 60 | + # Install systemd service for RH-based distros |
| 61 | +ifneq (,$(filter $(DISTRO),Fedora41 openSUSE15)) |
| 62 | + mkdir -p $(SYSTEMDDIR) |
| 63 | + cp debian/udsclient.service $(SYSTEMDDIR)/ |
| 64 | +endif |
| 65 | + |
| 66 | + # Permissions |
| 67 | + chmod 755 $(BINDIR)/udsclient-client $(BINDIR)/gui-helper |
| 68 | + chmod 755 $(SBINDIR)/udsclient-service |
| 69 | + chmod 644 $(POLKITDIR)/org.openuds.pkexec.udsclient_config.policy |
| 70 | + chmod 644 $(ICONDIR)/uds-icon.png |
| 71 | + |
| 72 | +# === Install managed variant === |
| 73 | +install-udsclient: install-udsclient-common |
| 74 | + # Install managed config |
| 75 | + cp $(OUTPUTDIR)/udsclient-config $(SBINDIR)/udsclient-config |
| 76 | + |
| 77 | + |
| 78 | +# === Install unmanaged variant === |
| 79 | +install-udsclient-unmanaged: install-udsclient-common |
| 80 | + # Install unmanaged config |
| 81 | + cp $(OUTPUTDIR)/udsclient-unmanaged-config $(SBINDIR)/udsclient-config |
| 82 | + |
| 83 | + |
| 84 | +# === Clean build artifacts === |
| 85 | +clean: |
| 86 | + rm -rf $(DESTDIR) |
0 commit comments