pkgname = "llvm" pkgver = "21.1.8" source = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{pkgver}/llvm-{pkgver}.src.tar.xz" builddir = f"/tmp/fempkg/build/{pkgname}/{pkgname}-{pkgver}.src" 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} && wget https://anduin.linuxfromscratch.org/BLFS/llvm/llvm-cmake-{pkgver}.src.tar.xz " f"https://anduin.linuxfromscratch.org/BLFS/llvm/llvm-third-party-{pkgver}.src.tar.xz https://github.com/llvm/llvm-project/releases/" # note this is actually right f"download/llvmorg-{pkgver}/clang-{pkgver}.src.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-{pkgver}/compiler-rt-{pkgver}.src.tar.xz " f"&& tar -xvf /var/lib/fempkg/pkgs/{pkgname}-{pkgver}.src.tar.xz", # 64-bit build f"cd {builddir} && tar -xf ../llvm-cmake-{pkgver}.src.tar.xz", f"cd {builddir} && tar -xf ../llvm-third-party-{pkgver}.src.tar.xz", f"cd {builddir} && sed '/LLVM_COMMON_CMAKE_UTILS/s@../cmake@cmake-{pkgver}.src@' -i CMakeLists.txt", f"cd {builddir} && sed '/LLVM_THIRD_PARTY_DIR/s@../third-party@third-party-{pkgver}.src@' -i cmake/modules/HandleLLVMOptions.cmake", f"cd {builddir} && tar -xf ../clang-{pkgver}.src.tar.xz -C tools", f"cd {builddir} && mv tools/clang-{pkgver}.src tools/clang", f"cd {builddir} && tar -xf ../compiler-rt-{pkgver}.src.tar.xz -C projects", f"cd {builddir} && mv projects/compiler-rt-{pkgver}.src projects/compiler-rt", f"cd {builddir} && grep -rl '#!.*python' | xargs sed -i '1s/python$/python3/'", f"cd {builddir} && sed 's/utility/tool/' -i utils/FileCheck/CMakeLists.txt", f"cd {builddir} && mkdir -v build && cd build", f"cd {builddir}/build && CC=gcc CXX=g++ cmake -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_SKIP_INSTALL_RPATH=ON -D LLVM_ENABLE_FFI=ON -D " f"CMAKE_BUILD_TYPE=Release -D LLVM_BUILD_LLVM_DYLIB=ON -D LLVM_LINK_LLVM_DYLIB=ON -D LLVM_ENABLE_RTTI=ON -D LLVM_TARGETS_TO_BUILD=\"host;AMDGPU\" -D " f"LLVM_BINUTILS_INCDIR=/usr/include -D LLVM_INCLUDE_BENCHMARKS=OFF -D CLANG_DEFAULT_PIE_ON_LINUX=ON -D CLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang " f"-W no-dev -G Ninja ..", f"cd {builddir}/build && ninja", f"cd {builddir}/build && DESTDIR={destdir} ninja install", f"install -v -d -m755 {destdir}/usr/share/licenses/{pkgname}/", f"install -v -m644 {builddir}/LICENSE.TXT {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}" ]