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}" ]