pkgname = "xorg-libs"
pkgver  = "7.1"   # meta version
source  = "https://www.x.org/pub/individual/lib/libX11-1.8.12.tar.xz"
builddir = f"/tmp/fempkg/build/{pkgname}"
fembuilddir = f"/tmp/fempkg/build/{pkgname}"
outputdir = "/home/gabry/lfs-repo/binpkg"
manifestdir = "/home/gabry/lfs-repo/manifests"
destdir = f"{fembuilddir}/DESTDIR"
deps = ["fontconfig", "libxcb"]

build = [
    # Prepare dirs
    f"mkdir -p {fembuilddir} && cd {fembuilddir}",

    # Get the tarball list and download each tarball
    f"cd {fembuilddir} && wget https://rocketleaguechatp.duckdns.org/lib-7.md5",
    f"cd {fembuilddir} && grep -v '^#' lib-7.md5 | awk '{{print $2}}' | wget -i- -c -B https://www.x.org/pub/individual/lib/",

    # Build all
    f"""cd {fembuilddir} && for package in $(grep -v '^#' lib-7.md5 | awk '{{print $2}}'); do
        dir=${{package%.tar.*}}
        echo ">>> Building $dir"
        tar -xf $package
        cd $dir
        export XORG_PREFIX="/usr"
        export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc --localstatedir=/var --disable-static"
        docdir="--docdir=$XORG_PREFIX/share/doc/$dir"

        case $dir in
          libXfont2-*) ./configure $XORG_CONFIG $docdir --disable-devel-docs ;;
          libXt-*)     ./configure $XORG_CONFIG $docdir --with-appdefaultdir=/etc/X11/app-defaults ;;
          libXpm-*)    ./configure $XORG_CONFIG $docdir --disable-open-zfile ;;
          libpciaccess-*) mkdir build && cd build && meson setup --prefix=$XORG_PREFIX --buildtype=release .. && ninja && DESTDIR={destdir} ninja install && cd .. && cd .. && rm -rf $dir && continue ;;
          *)           ./configure $XORG_CONFIG $docdir ;;
        esac

        make -j$(nproc)
        make DESTDIR={destdir} install

        # licenses... lice- just one mor-
        licdir="{destdir}/usr/share/licenses/$dir"
        mkdir -p "$licdir"
        for f in COPYING COPYRIGHT LICENSE LICENSE* COPYING*; do
            [ -f "$f" ] && cp "$f" "$licdir/" && echo "  -> Copied $f"
        done

        cd ..
        rm -rf $dir
        ldconfig
    done""",

    # 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 {fembuilddir}"
]

triggers = [
    f"cd /tmp && ldconfig"
]
