78 lines
3.5 KiB
Python
78 lines
3.5 KiB
Python
pkgname = "shadow" # BLFS one for PAM support
|
|
pkgver = "4.19.0"
|
|
source = f"https://github.com/shadow-maint/shadow/releases/download/{pkgver}/shadow-{pkgver}.tar.xz"
|
|
builddir = f"/tmp/fempkg/build/{pkgname}/shadow-{pkgver}"
|
|
fembuilddir = f"/tmp/fempkg/build/{pkgname}"
|
|
outputdir = "/home/gabry/lfs-repo/binpkg"
|
|
manifestdir = "/home/gabry/lfs-repo/manifests"
|
|
destdir = f"{fembuilddir}/DESTDIR"
|
|
|
|
deps = []
|
|
|
|
build = [
|
|
# Extract
|
|
f"mkdir -p /tmp/fempkg/build {fembuilddir} && cd {fembuilddir} && tar -xvf /var/lib/fempkg/pkgs/shadow-{pkgver}.tar.xz",
|
|
|
|
# 64-bit build
|
|
f"""cd {builddir} && \\
|
|
sed -i 's/groups$(EXEEXT) //' src/Makefile.in && \\
|
|
find man -name Makefile.in -exec sed -i 's/groups\\.1 / /' {{}} \\; && \\
|
|
find man -name Makefile.in -exec sed -i 's/getspnam\\.3 / /' {{}} \\; && \\
|
|
find man -name Makefile.in -exec sed -i 's/passwd\\.5 / /' {{}} \\; && \\
|
|
sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD YESCRYPT@' \\
|
|
-e 's@/var/spool/mail@/var/mail@' \\
|
|
-e '/PATH=/{{s@/sbin:@@;s@/bin:@@}}' -i etc/login.defs && \
|
|
./configure --sysconfdir=/etc --disable-static --without-libbsd --with-{{b,yes}}crypt""",
|
|
|
|
f"cd {builddir} && make -j$(nproc)",
|
|
f"cd {builddir} && make exec_prefix=/usr pamddir= DESTDIR={destdir} install",
|
|
|
|
f"install -v -m644 {destdir}/etc/login.defs {destdir}/etc/login.defs.orig",
|
|
f"""for FUNCTION in FAIL_DELAY \\
|
|
FAILLOG_ENAB \\
|
|
LASTLOG_ENAB \\
|
|
MAIL_CHECK_ENAB \\
|
|
OBSCURE_CHECKS_ENAB \\
|
|
PORTTIME_CHECKS_ENAB \\
|
|
QUOTAS_ENAB \\
|
|
CONSOLE MOTD_FILE \\
|
|
FTMP_FILE NOLOGINS_FILE \\
|
|
ENV_HZ PASS_MIN_LEN \\
|
|
SU_WHEEL_ONLY \\
|
|
PASS_CHANGE_TRIES \\
|
|
PASS_ALWAYS_WARN \\
|
|
CHFN_AUTH ENCRYPT_METHOD \\
|
|
ENVIRON_FILE
|
|
do
|
|
sed -i "s/^${{FUNCTION}}/# &/" {destdir}/etc/login.defs
|
|
done""",
|
|
|
|
f"mkdir -pv {destdir}/etc/pam.d",
|
|
|
|
f"cd {destdir}/etc/pam.d && wget https://rocketleaguechatp.duckdns.org/login",
|
|
f"cd {destdir}/etc/pam.d && wget https://rocketleaguechatp.duckdns.org/passwd",
|
|
f"cd {destdir}/etc/pam.d && wget https://rocketleaguechatp.duckdns.org/su",
|
|
f"cd {destdir}/etc/pam.d && wget https://rocketleaguechatp.duckdns.org/chpasswd",
|
|
f"cd {destdir}/etc/pam.d && wget https://rocketleaguechatp.duckdns.org/chage",
|
|
|
|
f"sed -e s/chpasswd/newusers/ {destdir}/etc/pam.d/chpasswd >{destdir}/etc/pam.d/newusers",
|
|
f"""for PROGRAM in chfn chgpasswd chsh groupadd groupdel \\
|
|
groupmems groupmod useradd userdel usermod
|
|
do
|
|
install -v -m644 {destdir}/etc/pam.d/chage {destdir}/etc/pam.d/${{PROGRAM}}
|
|
sed -i "s/chage/$PROGRAM/" {destdir}/etc/pam.d/${{PROGRAM}}
|
|
done""",
|
|
f"if [ -f {destdir}/etc/login.access ]; then mv -v {destdir}/etc/login.access{{,.NOUSE}}; fi && "
|
|
f"if [ -f {destdir}/etc/limits ]; then mv -v {destdir}/etc/limits{{,.NOUSE}}; fi",
|
|
|
|
f"install -v -d -m755 {destdir}/usr/share/licenses/{pkgname}/",
|
|
f"install -v -m644 {builddir}/COPYING {destdir}/usr/share/licenses/{pkgname}/LICENSE",
|
|
|
|
# Make tarball + manifests
|
|
f"mkdir -p {outputdir} && cd {destdir} && tar --transform 's|^\\.||' -I zstd -cf {outputdir}/{pkgname}-{pkgver}.tar.zst .",
|
|
f"mkdir -p {manifestdir} && tar -tf {outputdir}/{pkgname}-{pkgver}.tar.zst | grep -v '/$' > {manifestdir}/{pkgname}.txt",
|
|
|
|
# Cleanup
|
|
f"rm -rf {builddir} {fembuilddir}"
|
|
]
|