# Forked from Alpine enable systemd
# MODIFIED base-sessionl.pamd for systemd!

maintainer="Jane Rachinger <jane400+pmaports@postmarketos.org>"
pkgname=linux-pam-pmos
# we're misusing semver in some provides to ensure ordering
pkgver=1.6.1
pkgrel=0
# we use the pkgrel in pmOS to specify bumps to our version.
# _pkgrel is the aports pkgrel, which we want to match
# we hence provide="linux-pam=$pkgver-r$_pkgrel"
_pkgname=linux-pam
_pkgrel=1

pkgdesc="Linux PAM (Pluggable Authentication Modules for Linux)"
url="https://www.kernel.org/pub/linux/libs/pam"
arch="all"
license="BSD-3-Clause"
depends_dev="gettext-dev"
makedepends="
	$depends_dev
	autoconf
	automake
	bison
	flex-dev
	libtool
	linux-headers
"
subpackages="$pkgname-dev $pkgname-manual::noarch $pkgname-doc"
if [ -z "$BOOTSTRAP" ] || [ "$BOOTSTRAP" -gt 3 ]; then
	makedepends="$makedepends systemd-dev"
	subpackages="$subpackages $pkgname-systemd"
fi
options="pmb:strict suid !check"
provider_priority=100
source="https://github.com/linux-pam/linux-pam/releases/download/v$pkgver/Linux-PAM-$pkgver.tar.xz
	https://github.com/linux-pam/linux-pam/releases/download/v$pkgver/Linux-PAM-$pkgver-docs.tar.xz

	base-auth.pamd
	base-account.pamd
	base-password.pamd
	base-session.pamd
	base-session-noninteractive.pamd
	other.pamd
	login.pamd
	su.pamd
	"
builddir="$srcdir"/Linux-PAM-$pkgver

# secfixes:
#   1.6.0-r0:
#     - CVE-2024-22365
#   1.5.1-r0:
#     - CVE-2020-27780

build() {
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--libdir=/usr/lib \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--with-systemdunitdir=/usr/lib/systemd/system \
		--localstatedir=/var \
		--disable-nls \
		--disable-db \
		--disable-examples
	make
}

package() {
	provides="linux-pam=$pkgver-r$_pkgrel"

	make DESTDIR="$pkgdir" install

	# install our pam.d files
	install -Dm644 "$srcdir"/base-auth.pamd "$pkgdir"/etc/pam.d/base-auth
	install -Dm644 "$srcdir"/base-password.pamd "$pkgdir"/etc/pam.d/base-password
	install -Dm644 "$srcdir"/base-account.pamd "$pkgdir"/etc/pam.d/base-account
	install -Dm644 "$srcdir"/base-session.pamd "$pkgdir"/etc/pam.d/base-session
	install -Dm644 "$srcdir"/base-session-noninteractive.pamd \
		"$pkgdir"/etc/pam.d/base-session-noninteractive
	install -Dm644 "$srcdir"/other.pamd "$pkgdir"/etc/pam.d/other
	install -Dm644 "$srcdir"/login.pamd "$pkgdir"/etc/pam.d/login
	install -Dm644 "$srcdir"/su.pamd "$pkgdir"/etc/pam.d/su

	# make "unix_chkpwd" shadow group and enable g+s
	chgrp shadow "$pkgdir"/sbin/unix_chkpwd \
		&& chmod g+s "$pkgdir"/sbin/unix_chkpwd
}

dev() {
	# this ensures that linux-pam-pmos-dev is picked via linux-pam-dev with abuild on a user system
	# and pmbootstrap builds pick linux-pam from aports (as pmbootstrap builds don't include postmarketos-base-systemd -> linux-pam-pmos)
	# as pmaports/linux-pam-dev is always of lower version then aports/linux-pam-dev
	provides="linux-pam-dev=0.$pkgver-r$pkgrel"
	default_dev
}

manual() {
	# this isn't techncally needed, but make sure a user installs our subpackage
	provides="linux-pam-manual=9999.$pkgver-r$pkgrel"
	pkgdesc="$pkgdesc (manual)"

	amove usr/share/doc/Linux-PAM
}

doc() {
	# this isn't techncally needed, but make sure a user installs our subpackage
	provides="linux-pam-doc=9999.$pkgver-r$pkgrel"
	default_doc
}

sha512sums="
ddb5a5f296f564b76925324550d29f15d342841a97815336789c7bb922a8663e831edeb54f3dcd1eaf297e3325c9e2e6c14b8740def5c43cf3f160a8a14fa2ea  Linux-PAM-1.6.1.tar.xz
c6054ec6832f604c0654cf074e4e241c44037fd41cd37cca7da94abe008ff72adc4466d31bd254517eda083c7ec3f6aefd37785b3ee3d0d4553250bd29963855  Linux-PAM-1.6.1-docs.tar.xz
988e4ba32fe6b7adeb4898c784eb40d6f88f3fca78ead82b61686f0e1597f306abb3ee338aa2e4cf2db0191b8c1a7e319332e7f6d6aed3ab381f71c0a3355de9  base-auth.pamd
5d3e960ead44dcb2b3f732825482eefab9a9ffa4d4d5fc1d30cbf2fe8c5c896f1114a0ad3a6c606fa9fbf5c43400388f4ee8d7fca8110721eabfc9691004756b  base-account.pamd
b3a900d6067ba04faa8016d9408da75917e8c0502020a4048bba1de2ca54c705c4d5f8307e759080fd5a9d5f3522f52a708803f1f01627eac56d9d7c6d363d13  base-password.pamd
2cf01d7cf2ec63d7cfe10bd90ed3cae8c5354e086495b0738e6e18df4c0ac14336228128a943731d186cc7492b15e7aee039f2c46dcd50c1fde434bb0c9af7fd  base-session.pamd
2f18114b8a6a78ed798646962526876f3536b4759c00dce339e21f0695ea71d0917c048dc852c3d1c79bd17cd19dc513a3c6463abaffcff3f792b906cec98ede  base-session-noninteractive.pamd
299bb3791652174a4d836d60f146200bb692ad80c20c18e6e872543ac8885156ff1a7ca00acaf55b89672fa98f00b8df53879c9ab1913a9cc91f620163dd50be  other.pamd
ae3a807bc121eb59b54f5e53ff8efdde972610cf7463b6a38bccbc89b49954aa2e0a8693919b01f8bc7a956ba58c97de34a28963bc14f526b70b3073d64427b5  login.pamd
a71ac72a21a5d18612365b2b0a4a0da1f9d1101a30d3f5d97f479f6378c3a0fbc219617000448c8b5a0ab2597f2e4944202b13a69624dbe849bf9ea39d00ca22  su.pamd
"
