Repository navigation
build: system-wide install target and Arch Linux PKGBUILDs - #58
Scyllinice wants to merge 3 commits into
Conversation
Add a top-level Makefile with make install DESTDIR=... PREFIX=/usr. It installs the app to $(PREFIX)/lib/everlive, keeping the repo's relative layout so play.sh and the viewer find the engine binaries unchanged, and adds an everlive launcher in $(BINDIR). The udev, vfio-pci, memlock, PipeWire, desktop, icon and GC570D sleep-hook and user-service files go to their standard /usr/lib, /usr/share and /etc locations. GC570D helper paths are rewritten from /usr/local. Add everlive (release) and everlive-git PKGBUILDs under packaging/arch/. The pacman install script sets cap_ipc_lock on the streamers and warns when leftovers from install.sh would shadow the packaged files. The GC573 engine Makefile now always appends -pthread -D_GNU_SOURCE, so distribution CFLAGS such as makepkg's no longer break the build. play.sh skips the rebuild check when no Makefile is present and recognises the packaged v4l2loopback config. CI runs a staged install.
install.sh copies the app icons to /usr/share/icons/hicolor and /usr/share/pixmaps, but uninstall.sh only removed the copies in ~/.local. The leftovers make pacman refuse to install the everlive package (conflicting files). Remove them, unless a pacman package owns them.
dev widened the PipeWire capture sink in install.sh to FL FR FC LFE RL RR for 5.1/7.1 passthrough. Ship the same layout in the packaged 50-everlive-capture.conf.
a32b0d6 to
4095228
Compare
|
Thank you so much for this PR and the great work on the top-level Makefile and packaging setup, Scyllinice! Having a standard make install and a proper Arch packaging structure is a huge step forward for the project. Before merging, I wanted to coordinate the AUR release with you. As the creator and upstream maintainer of EverLive, I would prefer to submit the official package to the AUR under my own account and remain responsible for the official distribution. I'd absolutely like to credit you for the packaging work. I will list myself as the Maintainer and you as the Contributor in the PKGBUILD header, with the possibility of adding you as a co-maintainer on the AUR as well. Since new AUR account registrations are currently paused, my plan is to merge the packaging files into dev now and handle the official AUR submission myself once registration becomes available again. Would you be comfortable with this arrangement? If so, I'm happy to merge this into dev right away! |
|
Absolutely fine with that. Please do. I just wanted to fix a few things that I ran into while I was setting this up. Not having working drivers is a lot of the reason why I've been keeping myself off of Linux. Finding this project made Linux plausible for me again, so I had to contribute somehow :) I don't need to be a maintainer unless you need a second pair of hands if you get too busy. My plan wasn't to put more work on you either way. I would have been totally fine if you decided you didn't want to package this since it's more work to maintain packages. |
System-wide install target and Arch Linux PKGBUILDs
Why
Today EverLive runs from a git checkout, and
install.shwrites into/etc,/usr/shareand~/.local. The package manager doesn't track any of those files, the desktop entry points into the checkout, and removal depends onuninstall.shstaying in sync. This PR adds a standardmake installand Arch packaging, so EverLive can be installed and removed with pacman.install.shis unchanged and still works the same way.What
Makefile:make install DESTDIR=… PREFIX=/usr$(PREFIX)/lib/everlivewith the repo's relative layout, soplay.shand the viewer find the engine binaries without code changes. Adds aneverlivelauncher in$(BINDIR).vfio-pcimodprobe/modules-load config, memlock limits, the PipeWire capture sink, the desktop entry and icons, and the GC570D sleep hook and user service, each in its standard/usr/lib,/usr/shareor/etclocation. GC570D helper paths are rewritten from/usr/local.play.shloads it on demand, as it does now.packaging/arch/everliveandpackaging/arch/everlive-git: PKGBUILDs plus a pacman install script. The script setscap_ipc_lockon the streamers and warns when files left byinstall.shin/etcwould override the packaged ones.-pthread -D_GNU_SOURCEare now always added. Previously, distributionCFLAGS(e.g. makepkg's) replaced them and the build broke.play.sh: skips the auto-rebuild when no Makefile is present (installed tree), and recognises the packaged v4l2loopback config in/usr/lib/modprobe.d.make installwith checks on the key installed files.Testing
makepkgbuildseverlive-gitfrom this branch (check()runs the framegen self-test). Package contents and metadata look correct./usr/lib/everliveand resolves the engine binaries there.Notes
everlive(release) PKGBUILD needs the first tag that includes this Makefile. Until then onlyeverlive-gitcan be published.install.shstill contains its own copy of the udev, modprobe and PipeWire config. A follow-up could have it install frompackaging/so the two can't drift apart.