Skip to content

build: system-wide install target and Arch Linux PKGBUILDs - #58

Open
Scyllinice wants to merge 3 commits into
Everlite:devfrom
Scyllinice:packaging/aur
Open

Scyllinice wants to merge 3 commits into
Everlite:devfrom
Scyllinice:packaging/aur

Conversation

@Scyllinice

Copy link
Copy Markdown
Contributor

System-wide install target and Arch Linux PKGBUILDs

Why

Today EverLive runs from a git checkout, and install.sh writes into /etc, /usr/share and ~/.local. The package manager doesn't track any of those files, the desktop entry points into the checkout, and removal depends on uninstall.sh staying in sync. This PR adds a standard make install and Arch packaging, so EverLive can be installed and removed with pacman. install.sh is unchanged and still works the same way.

What

  • Top-level Makefile: make install DESTDIR=… PREFIX=/usr
    • Installs the app to $(PREFIX)/lib/everlive with the repo's relative layout, so play.sh and the viewer find the engine binaries without code changes. Adds an everlive launcher in $(BINDIR).
    • Installs udev rules, the vfio-pci modprobe/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/share or /etc location. GC570D helper paths are rewritten from /usr/local.
    • The v4l2loopback options are installed but the module is not autoloaded at boot (it's an optional dependency). play.sh loads it on demand, as it does now.
  • packaging/arch/everlive and packaging/arch/everlive-git: PKGBUILDs plus a pacman install script. The script sets cap_ipc_lock on the streamers and warns when files left by install.sh in /etc would override the packaged ones.
  • GC573 engine Makefile: -pthread -D_GNU_SOURCE are now always added. Previously, distribution CFLAGS (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.
  • CI: a staged make install with checks on the key installed files.
  • README and CHANGELOG entries.

Testing

  • makepkg builds everlive-git from this branch (check() runs the framegen self-test). Package contents and metadata look correct.
  • Staged install: the viewer starts from /usr/lib/everlive and resolves the engine binaries there.
  • The GC573 engine builds with both the default flags and makepkg's flags.

Notes

  • The everlive (release) PKGBUILD needs the first tag that includes this Makefile. Until then only everlive-git can be published.
  • install.sh still contains its own copy of the udev, modprobe and PipeWire config. A follow-up could have it install from packaging/ so the two can't drift apart.

@Scyllinice
Scyllinice changed the base branch from main to dev November 10, 2026 04:27
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.
@Everlite

Copy link
Copy Markdown
Owner

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!

@Scyllinice

Scyllinice commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants