pkgname = "gcc" pkgver = "15.2.0" source = f"https://ftpmirror.gnu.org/gnu/gcc/gcc-{pkgver}/gcc-{pkgver}.tar.xz" builddir = f"/tmp/fempkg/build/{pkgname}/{pkgname}-{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 /tmp/fempkg/build {fembuilddir} || true && cd {fembuilddir} && tar -xvf /var/lib/fempkg/pkgs/{pkgname}-{pkgver}.tar.xz", # Patch multilib directories f"cd {builddir} && sed -e '/m64=/s/lib64/lib/' " f"-e '/m32=/s/m32=.*/m32=..\\/lib32$(call if_multiarch,:i386-linux-gnu)/' -i.orig gcc/config/i386/t-linux64", # Make -mstackrealign default for 32-bit f"cd {builddir} && sed '/STACK_REALIGN_DEFAULT/s/0/(!TARGET_64BIT \\&\\& TARGET_SSE)/' -i gcc/config/i386/i386.h", # Make build directory f"cd {builddir} && mkdir -v build", # 64-bit + multilib configure f"cd {builddir}/build && export mlist=m64,m32 && " f"../configure --prefix=/usr LD=ld " f"--enable-languages=c,c++ " f"--enable-default-pie --enable-default-ssp --enable-host-pie " f"--enable-multilib --with-multilib-list=$mlist " f"--disable-bootstrap --disable-fixincludes --with-system-zlib", # Compile and install f"cd {builddir}/build && make -j$(nproc)", f"cd {builddir}/build && make DESTDIR={destdir} install", # Fix ownership of installed headers f"cd {builddir}/build && " f"chown -v -R root:root {destdir}/usr/lib/gcc/$(gcc -dumpmachine)/{pkgver}/include{{,-fixed}}", # Create required symlinks f"cd {builddir}/build && ln -svr /usr/bin/cpp {destdir}/usr/lib", f"cd {builddir} && ln -sv gcc {destdir}/usr/bin/cc", f"install -v -d -m755 {destdir}/usr/share/man/man1", f"cd {builddir}/build && ln -sv gcc.1 {destdir}/usr/share/man/man1/cc.1", f"mkdir -p {destdir}/usr/lib/bfd-plugins/", f"cd {builddir}/build && " f"ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/{pkgver}/liblto_plugin.so {destdir}/usr/lib/bfd-plugins/", # Move GDB auto-load files f"cd {builddir}/build && mkdir -pv {destdir}/usr/share/gdb/auto-load/usr/lib", f"cd {builddir}/build && mv -v {destdir}/usr/lib/*gdb.py {destdir}/usr/share/gdb/auto-load/usr/lib", f"cd {builddir} && mkdir -p {destdir}/usr/share/licenses/{pkgname} && " f"cp -v COPYING COPYING.LIB COPYING.RUNTIME COPYING3 COPYING3.LIB " f"{destdir}/usr/share/licenses/{pkgname}/", # 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}" ]