forked from FemboyOS/fempkg_recipes
65 lines
2.8 KiB
Python
65 lines
2.8 KiB
Python
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}"
|
|
]
|