Conversation
Makefile: - Add PREFIX/DESTDIR/BINDIR/MANDIR following GNU/FHS conventions. - Rework 'install' into a copy-based FHS install (binaries to $(BINDIR), committed man pages to $(MANDIR)/man1) so distro packaging can stage into $(DESTDIR)$(PREFIX). No pandoc needed. - Preserve the old symlink-into-PATH behaviour as 'install-dev' (install.sh does its own symlinking, so nothing depended on the old 'install'). - Mirror both with 'uninstall' / 'uninstall-dev'. Packaging: - Add nfpm.yaml producing .deb and .rpm from the built binaries + man pages; libc is the only hard dep, fzf/ripgrep/git/tmux/ctags are weak deps (deb/rpm overrides). - CI: build with MAN_DIR=/usr/share/man so the baked :man path matches the packaged location; add a build-packages step (nfpm from goreleaser apt repo) and attach *.deb/*.rpm to the release.
- Add MIT license, Copyright (c) 2026 42dotmk. - nfpm: set license: MIT and ship LICENSE as /usr/share/doc/hed/copyright in the deb/rpm. - make install: stage LICENSE to $(PREFIX)/share/doc/hed/copyright (and remove it in uninstall) so source-built packages carry it too.
- packaging/arch/PKGBUILD: AUR source build from the tagged release, vendoring the tree-sitter submodule from a local clone; installs the MIT license under /usr/share/licenses. - packaging/void/template: xbps-src template; pulls tree-sitter as a second distfile (source tarball lacks submodules). Checksums left as documented placeholders for xgensum. - packaging/README.md: how each recipe maps onto the FHS install target. - readme.md: 'make install' is now FHS/system install; the symlink dev flow is 'make install-dev'. Add a Packages section pointing at the deb/rpm releases and packaging/.
With MAN_DIR=/usr/share/man (the packaging build flag), MAN_SRC_DIR resolved to /usr/share/man too, so 'install' globbed the host's system man pages instead of the repo's. Decouple MAN_SRC_DIR (?= man, the in-repo source) from MAN_DIR (the baked lookup path).
- packaging/arch/.SRCINFO: committed AUR metadata; README documents the authenticated AUR push. - .github/workflows/pages-repo.yml + packaging/repo-index.html: publish the release deb/rpm to an APT+YUM repo on GitHub Pages (signed when GPG_PRIVATE_KEY/GPG_PASSPHRASE secrets are set, unsigned otherwise). - packaging/README.md: document the hosted repo and the homebrew tap (42dotmk/homebrew-hed).
Dedicated RSA-4096 signing key (405E3235...B3C8B4E1) for the apt/rpm Pages repo. Public key committed for verification; private key and passphrase are in the GPG_PRIVATE_KEY / GPG_PASSPHRASE repo secrets.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
End-to-end Linux packaging foundation. Everything builds on one new FHS-aware
installtarget; the distro recipes layer on top.Makefile — FHS install
PREFIX/DESTDIR/BINDIR/MANDIR(GNU/FHS convention).installis now a copy-based FHS install: binaries →$(BINDIR), committed man pages →$(MANDIR)/man1,LICENSE→$(PREFIX)/share/doc/hed/copyright. Nopandocneeded.~/.local/binbehaviour preserved asinstall-dev(nothing depended on the oldinstall;install.shsymlinks itself).uninstall/uninstall-devmirror them.License
LICENSE(© 2026 42dotmk). Shipped bymake installand by the packages. GitHub will show the badge once this merges tomain.deb / rpm — nfpm
nfpm.yamlbuilds.deb+.rpmfrom the binaries + man pages + license.libcis the only hard dep;fzf/ripgrep/git/tmux/ctagsare weak deps via per-format overrides.MAN_DIR=/usr/share/man, adds abuild-packagesstep (nfpm from goreleaser's apt repo), and attaches*.deb/*.rpmto the Release on tag push.Arch / Void
packaging/arch/PKGBUILD— AUR source build from the tagged release; vendors the tree-sitter submodule from a local clone; installs the license under/usr/share/licenses.packaging/void/template— xbps-src template; pulls tree-sitter as a second distfile (source tarballs omit submodules). Checksums are documented placeholders to fill withxgensum.packaging/README.mddocuments how each recipe maps onto the install target.Testing
make install PREFIX=/usr DESTDIR=…→ correct/usr/bin,/usr/share/man/man1(36 pages),/usr/share/doc/hed/copyright.MAN_DIR=/usr/share/manbakes the right:manpath.bash -nclean on PKGBUILD and the Void template; YAML tab-free; build + tests green.nfpmitself runs in CI (sandbox blocked fetching it locally); all itscontentsinputs verified present.Not in this PR (follow-ups)
hed-binAUR variant; actually submitting to AUR / void-packages (and filling the Void checksums) — those need the respective distro environments.