detached 7c67dfb

fix(packaging): sibling check, dist-only version, package path in README

commit
7c67dfbd80482fd05e2f397362f68f77c8b7109a
author
brice · · 2026-09-26 06:05 UTC
parent
8d7d700
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
2 files · +11 -7
M Makefile +9 -5
@@ -50,17 +50,21 @@ check: vet test arch fakes-check
5050 # sibling purego-* modules are vendored, so the package builds offline. It
5151 # holds the working trees; the version ends in .dirty when one is not clean.
5252 SIBLINGS := github.com/bnema/purego-libwayland github.com/bnema/purego-vulkan
53-SIBLING_DIRS := $(shell go list -m -f '{{.Dir}}' $(SIBLINGS))
53+SIBLING_DIRS = $(shell go list -m -f '{{.Dir}}' $(SIBLINGS))
5454 dirty = $(shell for d in . $(SIBLING_DIRS); do git -C $$d diff --quiet HEAD && \
5555 test -z "$$(git -C $$d ls-files -o --exclude-standard)" || { echo .dirty; break; }; done)
5656 # pacman-ordered: 0.0.0.r<commits>.g<hash>; a tag replaces 0.0.0.
57-VERSION := $(or $(VERSION),$(shell t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \
58- echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)")$(dirty))
59-DIST := dist/nefertty-$(VERSION)
57+VERSION ?= $(shell t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \
58+ echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)")$(dirty)
59+DIST = dist/nefertty-$(VERSION)
6060 dist: SHELL := bash
6161 dist: .SHELLFLAGS := -eo pipefail -c
62+# Computed once per dist run (git and go list), not for every target.
63+ifneq ($(filter dist pkg,$(MAKECMDGOALS)),)
64+VERSION := $(VERSION)
65+endif
6266 dist:
63- @test -n "$(SIBLING_DIRS)" || { echo "sibling modules not found: $(SIBLINGS)" >&2; exit 1; }
67+ @for d in $(SIBLING_DIRS); do test -d $$d || { echo "sibling module not found: $$d" >&2; exit 1; }; done
6468 rm -rf $(DIST) && mkdir -p $(DIST)
6569 git ls-files -co --exclude-standard -z | tar --null -T - -c | tar -x -C $(DIST)
6670 cd $(DIST) && go mod edit $(foreach m,$(SIBLINGS),-replace=$(m)=$(shell go list -m -f '{{.Dir}}' $(m))) && go mod vendor
@@ -50,17 +50,21 @@ check: vet test arch fakes-check
50 # sibling purego-* modules are vendored, so the package builds offline. It50 # sibling purego-* modules are vendored, so the package builds offline. It
51 # holds the working trees; the version ends in .dirty when one is not clean.51 # holds the working trees; the version ends in .dirty when one is not clean.
52 SIBLINGS := github.com/bnema/purego-libwayland github.com/bnema/purego-vulkan52 SIBLINGS := github.com/bnema/purego-libwayland github.com/bnema/purego-vulkan
53-SIBLING_DIRS := $(shell go list -m -f '{{.Dir}}' $(SIBLINGS))53+SIBLING_DIRS = $(shell go list -m -f '{{.Dir}}' $(SIBLINGS))
54 dirty = $(shell for d in . $(SIBLING_DIRS); do git -C $$d diff --quiet HEAD && \54 dirty = $(shell for d in . $(SIBLING_DIRS); do git -C $$d diff --quiet HEAD && \
55 test -z "$$(git -C $$d ls-files -o --exclude-standard)" || { echo .dirty; break; }; done)55 test -z "$$(git -C $$d ls-files -o --exclude-standard)" || { echo .dirty; break; }; done)
56 # pacman-ordered: 0.0.0.r<commits>.g<hash>; a tag replaces 0.0.0.56 # pacman-ordered: 0.0.0.r<commits>.g<hash>; a tag replaces 0.0.0.
57-VERSION := $(or $(VERSION),$(shell t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \57+VERSION ?= $(shell t=$$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//; s/-/_/g'); \
58- echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)")$(dirty))58+ echo "$${t:-0.0.0}.r$$(git rev-list --count HEAD).g$$(git rev-parse --short HEAD)")$(dirty)
59-DIST := dist/nefertty-$(VERSION)59+DIST = dist/nefertty-$(VERSION)
60 dist: SHELL := bash60 dist: SHELL := bash
61 dist: .SHELLFLAGS := -eo pipefail -c61 dist: .SHELLFLAGS := -eo pipefail -c
62+# Computed once per dist run (git and go list), not for every target.
63+ifneq ($(filter dist pkg,$(MAKECMDGOALS)),)
64+VERSION := $(VERSION)
65+endif
62 dist:66 dist:
63- @test -n "$(SIBLING_DIRS)" || { echo "sibling modules not found: $(SIBLINGS)" >&2; exit 1; }67+ @for d in $(SIBLING_DIRS); do test -d $$d || { echo "sibling module not found: $$d" >&2; exit 1; }; done
64 rm -rf $(DIST) && mkdir -p $(DIST)68 rm -rf $(DIST) && mkdir -p $(DIST)
65 git ls-files -co --exclude-standard -z | tar --null -T - -c | tar -x -C $(DIST)69 git ls-files -co --exclude-standard -z | tar --null -T - -c | tar -x -C $(DIST)
66 cd $(DIST) && go mod edit $(foreach m,$(SIBLINGS),-replace=$(m)=$(shell go list -m -f '{{.Dir}}' $(m))) && go mod vendor70 cd $(DIST) && go mod edit $(foreach m,$(SIBLINGS),-replace=$(m)=$(shell go list -m -f '{{.Dir}}' $(m))) && go mod vendor
M README.md +2 -2
@@ -17,8 +17,8 @@ Run: `nefertty --backend=headless --timeout 5s`
1717 ## Install (Arch Linux)
1818
1919 ```sh
20-make pkg # builds dist/pkg/nefertty-*.pkg.tar.zst
21-sudo pacman -U dist/pkg/nefertty-*.pkg.tar.zst
20+make pkg # builds dist/nefertty-*.pkg.tar.zst
21+sudo pacman -U dist/nefertty-*.pkg.tar.zst
2222 ```
2323
2424 The package installs `nefertty` and a **NeferTTY** session for display managers (Ly, GDM, SDDM). The session runs `nefertty --session`, which shares `WAYLAND_DISPLAY` and `DISPLAY` with D-Bus and systemd user services, so portals and notification daemons reach it. `make dist` alone builds the self-contained source tarball (Go modules vendored) that the package uses; its version ends in `.dirty` when this repo or a sibling module has uncommitted changes.
@@ -17,8 +17,8 @@ Run: `nefertty --backend=headless --timeout 5s`
17 ## Install (Arch Linux)17 ## Install (Arch Linux)
18 18
19 ```sh19 ```sh
20-make pkg # builds dist/pkg/nefertty-*.pkg.tar.zst20+make pkg # builds dist/nefertty-*.pkg.tar.zst
21-sudo pacman -U dist/pkg/nefertty-*.pkg.tar.zst21+sudo pacman -U dist/nefertty-*.pkg.tar.zst
22 ```22 ```
23 23
24 The package installs `nefertty` and a **NeferTTY** session for display managers (Ly, GDM, SDDM). The session runs `nefertty --session`, which shares `WAYLAND_DISPLAY` and `DISPLAY` with D-Bus and systemd user services, so portals and notification daemons reach it. `make dist` alone builds the self-contained source tarball (Go modules vendored) that the package uses; its version ends in `.dirty` when this repo or a sibling module has uncommitted changes.24 The package installs `nefertty` and a **NeferTTY** session for display managers (Ly, GDM, SDDM). The session runs `nefertty --session`, which shares `WAYLAND_DISPLAY` and `DISPLAY` with D-Bus and systemd user services, so portals and notification daemons reach it. `make dist` alone builds the self-contained source tarball (Go modules vendored) that the package uses; its version ends in `.dirty` when this repo or a sibling module has uncommitted changes.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 26

Tags 10

↑↓ moveenter openesc close