pkgname = "vulkan-sdk" pkgver = "1.4.350.1" source = f"https://rocketleaguechatp.duckdns.org/pappalaugh.jpg" 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 = ["cmake", "xorg-libs", "wayland", "wayland-protocols"] build = [ # Extract f"mkdir -p {builddir}", # 64-bit build f"cd {builddir} && wget https://rocketleaguechatp.duckdns.org/vulkan-sdk-list", f"cd {builddir} && mkdir vulkan-sdk && cd vulkan-sdk && grep -v '^#' ../vulkan-sdk-list | wget -i- -c -B https://github.com/KhronosGroup/", f"cd {builddir} && mkdir -p {destdir}/usr/lib32", f"""cd {builddir}/vulkan-sdk && bash -e <<'EOF' for package in {{Vulkan-{{Headers,Loader,Utility-Libraries,Tools}},SPIRV-{{Headers,Tools}},glslang}} do longpackage=$package-vulkan-sdk-{pkgver}.tar.?z* packagedir=${{longpackage%.tar.?z*}} tar -xf $longpackage pushd $packagedir mkdir build cd build case $package in SPIRV-Tools ) cmake -D CMAKE_INSTALL_PREFIX=/usr \\ -D CMAKE_BUILD_TYPE=Release \\ -D SPIRV_WERROR=OFF \\ -D BUILD_SHARED_LIBS=ON \\ -D SPIRV_TOOLS_BUILD_STATIC=OFF \\ -D SPIRV-Headers_SOURCE_DIR=/usr \\ -G Ninja .. ;; glslang ) cmake -D CMAKE_INSTALL_PREFIX=/usr \\ -D CMAKE_BUILD_TYPE=Release \\ -D ALLOW_EXTERNAL_SPIRV_TOOLS=ON \\ -D BUILD_SHARED_LIBS=ON \\ -D GLSLANG_TESTS=OFF \\ -G Ninja .. ;; * ) cmake -D CMAKE_INSTALL_PREFIX=/usr \\ -D CMAKE_BUILD_TYPE=Release \\ -D CMAKE_SKIP_INSTALL_RPATH=ON \\ -G Ninja .. ;; esac ninja DESTDIR={destdir} ninja install # ---- license copying (best-effort) ---- licensedir={destdir}/usr/share/licenses/$package mkdir -p $licensedir find .. -type f \\( \\ -iname COPYING -o \\ -iname COPYRIGHT -o \\ -iname NOTICE -o \\ -iname LICENSE -o \\ -iname LICENCE \\ \\) -exec cp -pv {{}} $licensedir \\; || true find .. -type d -iname LICENSES | while read -r licdir; do cp -pvra $licdir/* $licensedir/ || true done || true popd rm -rf $packagedir done EOF""", # 32-bit build f"""cd {builddir}/vulkan-sdk && bash -e <<'EOF' for package in {{Vulkan-{{Loader,Utility-Libraries,Tools}},SPIRV-Tools,glslang}} do longpackage=$package-vulkan-sdk-{pkgver}.tar.?z* packagedir=${{longpackage%.tar.?z*}} tar -xf $longpackage pushd $packagedir mkdir build cd build case $package in SPIRV-Tools ) CC="gcc -m32" CXX="g++ -m32" \\ PKG_CONFIG_PATH=/usr/lib32/pkgconfig \\ cmake -D CMAKE_INSTALL_PREFIX=/usr \\ -D CMAKE_INSTALL_LIBDIR=lib32 \\ -D CMAKE_BUILD_TYPE=Release \\ -D SPIRV_WERROR=OFF \\ -D BUILD_SHARED_LIBS=ON \\ -D SPIRV_TOOLS_BUILD_STATIC=OFF \\ -D SPIRV-Headers_SOURCE_DIR=/usr \\ -G Ninja .. ;; glslang ) CC="gcc -m32" CXX="g++ -m32" \\ PKG_CONFIG_PATH=/usr/lib32/pkgconfig \\ cmake -D CMAKE_INSTALL_PREFIX=/usr \\ -D CMAKE_INSTALL_LIBDIR=lib32 \\ -D CMAKE_BUILD_TYPE=Release \\ -D ALLOW_EXTERNAL_SPIRV_TOOLS=ON \\ -D BUILD_SHARED_LIBS=ON \\ -D GLSLANG_TESTS=OFF \\ -G Ninja .. ;; * ) ASFLAGS+=" --32" CFLAGS+=" -m32" \\ CXXFLAGS+=" -m32" \\ PKG_CONFIG_PATH=/usr/lib32/pkgconfig \\ cmake -D CMAKE_INSTALL_PREFIX=/usr \\ -D CMAKE_INSTALL_LIBDIR=lib32 \\ -D CMAKE_BUILD_TYPE=Release \\ -D CMAKE_SKIP_INSTALL_RPATH=ON \\ -G Ninja .. ;; esac ninja DESTDIR=$PWD/tmpdestdir ninja install if [ $package != "Vulkan-Tools" ]; then cp -Rv tmpdestdir/usr/lib32/* {destdir}/usr/lib32 else for bin in tmpdestdir/usr/bin/*; do install -vDm755 $bin {destdir}/usr/bin/$(basename $bin)-m32 done fi rm -rf tmpdestdir /sbin/ldconfig popd rm -rf $packagedir done EOF""", # 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}" ] triggers = [ f"cd /tmp && ldconfig" ]