Skip to content

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

Merged
Everlite merged 1 commit into
Everlite:devfrom
Scyllinice:packaging/aur
Nov 12, 2026
Merged

Everlite merged 1 commit 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
@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.

Add top-level Makefile with system-wide install target (PREFIX=/usr,
DESTDIR support) and Arch Linux PKGBUILDs under packaging/arch/.

- Top-level Makefile integrates libeverlive-core, GC573 and GC570D engines,
  desktop launcher, HiColor icons, udev rules, modprobe configs,
  memlock limits, and PipeWire capture sink with clean uninstall support.
- Arch Linux PKGBUILDs for everlive and everlive-git with makepkg
  compatibility and check() running the full test suite.
- Preserve mandatory compiler flags (-pthread, -D_GNU_SOURCE, -fPIC)
  when distribution CFLAGS and LDFLAGS are provided.
- play.sh detects engine binaries both in runtime tree and system PATH,
  and skips compilation checks when no Makefiles are present.
- Staged install and uninstall verification in CI workflow.

Co-authored-by: Everlite <everlite@users.noreply.github.com>
@Everlite

Copy link
Copy Markdown
Owner

Thank you so much for putting this together and for the kind words! Having clean distro packaging for Arch/AUR makes using EverLive so much easier.

We have rebased this PR directly on top of the freshly merged libeverlive-core architecture (#63):

  • The top-level Makefile now cleanly orchestrates libeverlive-core, both hardware engines (gc573 and gc570d), the GUI runtime tree under /usr/lib/everlive, desktop/icons, and all system configs (udev, modprobe.d, modules-load.d, limits.d, and PipeWire 6-channel sink) with full DESTDIR and PREFIX support.
  • make uninstall is fully symmetrical and cleans up without leaving orphaned files.
  • makepkg builds cleanly with distribution CFLAGS/LDFLAGS, and check() runs the full 7-suite unit test matrix.
  • Added staged install and uninstall verification directly to the GitHub Actions CI workflow.

All CI checks are green. Merging this into dev now. Welcome aboard!

@Everlite
Everlite merged commit d51ee0d into Everlite:dev Nov 12, 2026
1 check passed
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