Files
fempkg_recipes/shadow.recipe.py

78 lines
3.5 KiB
Python

pkgname = "shadow" # BLFS one for PAM support
pkgver = "4.18.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}"
]