wdm-greeter
LOW
maintainer illuser
0 votes
base
wdm-wayland
scanned 2026-08-19 03:41:13.749572
Why flagged
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
Triggered rules
Low
Few votes, recently uploaded
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
PKGBUILD
1
# Maintainer: Joseph R. Quinn <quinn.josephr@protonmail.com>
2
3
# The compositor and the reference greeter, which is the only one with no
4
# toolkit dependency — so this package builds with nothing but the display
5
# stack. The GTK, WebKitGTK and Qt greeters are separate AUR packages precisely
6
# so that installing one does not make you build the others, and so that `wdm`
7
# itself never drags GTK4, WebKitGTK or Qt 6 into a build chroot.
8
# `wdm-wayland` rather than `wdm` because the AUR name `wdm` belongs to the
9
# WINGs Display Manager. The binary, unit, and config paths are still `wdm`,
10
# hence the provides/conflicts on the main package.
11
pkgbase=wdm-wayland
12
pkgname=('wdm-wayland' 'wdm-greeter')
13
pkgver=0.10.0
14
pkgrel=1
15
pkgdesc='A Wayland display manager that is its own compositor'
16
arch=('x86_64' 'aarch64')
17
url='https://github.com/quinnjr/wdm'
18
license=('MIT')
19
makedepends=('cargo' 'libinput' 'seatd' 'systemd-libs' 'mesa' 'libdrm'
20
'libxkbcommon' 'pam')
21
source=("wdm-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
22
# The published tarball's checksum, not one computed from a local `git archive`:
23
# GitHub's generated archives are not byte-reproducible from the repository, so
24
# a locally derived value fails integrity checking for everyone else. All four
25
# wdm packages build from this one tarball and share this one value. Regenerate
26
# with `updpkgsums` after each tag, before publishing.
27
#
28
# Never SKIP. SKIP would let makepkg accept whatever arrives, which for a source
29
# that is a URL is the wrong failure — a tarball substituted upstream would be
30
# built and installed without a word.
31
sha256sums=('94fbfae480ddd21b18e2c7e5472e135a5a5577dcb172ace989d520170622443b')
32
33
# The tarball is the whole workspace whatever the pkgbase is, so the source
34
# directory is named for the project rather than for this package.
35
_src="wdm-$pkgver"
36
37
prepare() {
38
cd "$_src"
39
export RUSTUP_TOOLCHAIN=stable
40
cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
41
}
42
43
build() {
44
cd "$_src"
45
export RUSTUP_TOOLCHAIN=stable
46
export CARGO_TARGET_DIR=target
47
# Only this package's crates. A bare `cargo build` would compile the GTK and
48
# WebKitGTK greeters too, which is what forced this package to build-depend on
49
# both toolkits before the AUR packaging was split.
50
#
51
# Not --all-targets: nothing installed here is a test, example or bench, and
52
# check() builds the test targets itself.
53
cargo build --frozen --release -p wdm -p wdm-greeter
54
}
55
56
check() {
57
cd "$_src"
58
export RUSTUP_TOOLCHAIN=stable
59
# Scoped for the same reason as build(); the toolkit greeters are tested by
60
# their own packages. wdm-protocol is here because both crates depend on it
61
# and nothing else in this package would exercise it.
62
#
63
# Tests are in-file unit tests; a few read the real passwd database and the
64
# session directories, and assert invariants rather than specific contents,
65
# so they are safe in a clean chroot.
66
cargo test --frozen --release -p wdm -p wdm-greeter -p wdm-protocol
67
}
68
69
package_wdm-wayland() {
70
# wdm needs *a* greeter, and each of the four provides the virtual, so pacman
71
# prompts for a choice when only `wdm-wayland` is requested. Three of the four now live
72
# in other AUR packages; pacman resolves a virtual regardless of which pkgbase
73
# provides it, and `wdm-greeter` below satisfies it with no toolkit at all.
74
# The greeters deliberately do not depend on wdm in return: that would make
75
# the pair circular.
76
#
77
# The virtual is declared only in the greeter package_*() functions, never at
78
# pkgbase level — a pkgbase provides= is inherited by every split package, and
79
# `unset provides` cannot be expressed in .SRCINFO, since makepkg emits no
80
# clearing line, so a helper resolving from .SRCINFO would see `wdm` providing
81
# the virtual it depends on and install no greeter at all.
82
#
83
# namcap reports "Split PKGBUILD needs additional makedepends
84
# ['wdm-greeter-implementation']" for the dependency below. It is a false
85
# positive — namcap does not resolve a virtual provided by a sibling package,
86
# and adding it to makedepends would make the package unbuildable, since
87
# nothing in the repositories provides it.
88
depends=('libinput' 'seatd' 'systemd-libs' 'mesa' 'libdrm' 'libxkbcommon'
89
'pam' 'wdm-greeter-implementation')
90
# conflicts and no provides: the AUR name `wdm` belongs to the unrelated
91
# WINGs Display Manager, which this package collides with on disk but is
92
# not a substitute for. Nothing in this project depends on the name either
93
# — the greeters depend on the virtual `wdm-greeter-implementation`.
94
conflicts=('wdm')
95
optdepends=('wdm-gtk-greeter: GTK4 greeter'
96
'wdm-webkit-greeter: WebKitGTK greeter, themed in HTML and CSS'
97
'wdm-plasma-greeter: Qt6/QML greeter, themed in QML')
98
backup=('etc/pam.d/wdm' 'etc/wdm/wdm.toml')
99
install=wdm.install
100
101
cd "$_src"
102
103
install -Dm755 target/release/wdm "$pkgdir/usr/bin/wdm"
104
105
# PAM is required, not optional: without it every login attempt fails with
106
# "Authentication failure".
107
install -Dm644 packaging/pam.d-wdm "$pkgdir/etc/pam.d/wdm"
108
install -Dm644 packaging/wdm.service "$pkgdir/usr/lib/systemd/system/wdm.service"
109
110
# The shipped example is a working configuration, so it is installed as the
111
# config rather than as documentation.
112
install -Dm644 packaging/wdm.toml.example "$pkgdir/etc/wdm/wdm.toml"
113
114
# wdm.service's Documentation= already points at man:wdm(1), so shipping the
115
# page is what makes `systemctl help wdm` resolve to something.
116
install -Dm644 packaging/wdm.1 "$pkgdir/usr/share/man/man1/wdm.1"
117
118
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
119
install -Dm644 CHANGELOG.md "$pkgdir/usr/share/doc/$pkgname/CHANGELOG.md"
120
121
# Shared with the deb and rpm packaging rather than written inline here, so
122
# the three cannot drift apart on who the greeter account is.
123
install -Dm644 packaging/wdm.sysusers "$pkgdir/usr/lib/sysusers.d/wdm.conf"
124
install -Dm644 packaging/wdm.tmpfiles "$pkgdir/usr/lib/tmpfiles.d/wdm.conf"
125
}
126
127
package_wdm-greeter() {
128
pkgdesc='Reference greeter for wdm, software-rendered with no toolkit'
129
# Deliberately does not depend on wdm: wdm depends on the virtual this
130
# provides, and naming wdm here would make the pair circular.
131
depends=('libxkbcommon')
132
provides=('wdm-greeter-implementation')
133
backup=('etc/wdm/greeter.toml')
134
135
cd "$_src"
136
install -Dm755 target/release/wdm-greeter "$pkgdir/usr/lib/wdm/wdm-greeter"
137
# Fully commented out, so the defaults are also the documentation. In
138
# backup= above so pacman delivers a changed default as a .pacnew instead
139
# of clobbering an edited one.
140
install -Dm644 packaging/greeter.toml.example "$pkgdir/etc/wdm/greeter.toml"
141
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
142
}
143
Changes since previous scan
--- PKGBUILD @ 2026-08-15 00:26+++ PKGBUILD @ 2026-08-19 03:41@@ -10,7 +10,7 @@ # hence the provides/conflicts on the main package. pkgbase=wdm-wayland pkgname=('wdm-wayland' 'wdm-greeter')-pkgver=0.9.0+pkgver=0.10.0 pkgrel=1 pkgdesc='A Wayland display manager that is its own compositor' arch=('x86_64' 'aarch64')@@ -28,7 +28,7 @@ # Never SKIP. SKIP would let makepkg accept whatever arrives, which for a source # that is a URL is the wrong failure — a tarball substituted upstream would be # built and installed without a word.-sha256sums=('49e70b577665bf4fb7c78f5d9319febaf0a8268a80bdb8eb01ff95ed0db8b9f7')+sha256sums=('94fbfae480ddd21b18e2c7e5472e135a5a5577dcb172ace989d520170622443b') # The tarball is the whole workspace whatever the pkgbase is, so the source # directory is named for the project rather than for this package.@@ -68,7 +68,7 @@ package_wdm-wayland() { # wdm needs *a* greeter, and each of the four provides the virtual, so pacman- # prompts for a choice when only `wdm` is requested. Three of the four now live+ # prompts for a choice when only `wdm-wayland` is requested. Three of the four now live # in other AUR packages; pacman resolves a virtual regardless of which pkgbase # provides it, and `wdm-greeter` below satisfies it with no toolkit at all. # The greeters deliberately do not depend on wdm in return: that would make@@ -87,7 +87,10 @@ # nothing in the repositories provides it. depends=('libinput' 'seatd' 'systemd-libs' 'mesa' 'libdrm' 'libxkbcommon' 'pam' 'wdm-greeter-implementation')- provides=('wdm')+ # conflicts and no provides: the AUR name `wdm` belongs to the unrelated+ # WINGs Display Manager, which this package collides with on disk but is+ # not a substitute for. Nothing in this project depends on the name either+ # — the greeters depend on the virtual `wdm-greeter-implementation`. conflicts=('wdm') optdepends=('wdm-gtk-greeter: GTK4 greeter' 'wdm-webkit-greeter: WebKitGTK greeter, themed in HTML and CSS'@@ -127,9 +130,14 @@ # provides, and naming wdm here would make the pair circular. depends=('libxkbcommon') provides=('wdm-greeter-implementation')+ backup=('etc/wdm/greeter.toml') cd "$_src" install -Dm755 target/release/wdm-greeter "$pkgdir/usr/lib/wdm/wdm-greeter"+ # Fully commented out, so the defaults are also the documentation. In+ # backup= above so pacman delivers a changed default as a .pacnew instead+ # of clobbering an edited one.+ install -Dm644 packaging/greeter.toml.example "$pkgdir/etc/wdm/greeter.toml" install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-19 03:41:13 | Low | 1 |
| 2026-08-15 00:26:13 | Clean | 2 |
| 2026-08-14 21:29:33 | Low | 1 |