Files
fempkg_recipes/vulkan-sdk.recipe.py
T

146 lines
4.9 KiB
Python

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"
]