diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..cfb828c --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,52 @@ +pkgbase = orca-slicer-git + pkgdesc = G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.) + pkgver = 2.3.1.r25349.e44ec1f + pkgrel = 1 + url = https://github.com/SoftFever/OrcaSlicer + arch = x86_64 + license = AGPL-3.0-only + makedepends = cmake + makedepends = extra-cmake-modules + makedepends = git + makedepends = glew + makedepends = libigl + makedepends = m4 + makedepends = ninja + makedepends = pkgconf + makedepends = wayland-protocols + depends = bash + depends = cairo + depends = dbus + depends = expat + depends = fontconfig + depends = freetype2 + depends = gcc-libs + depends = gdk-pixbuf2 + depends = glib2 + depends = glibc + depends = gst-plugins-base-libs + depends = gstreamer + depends = gtk3 + depends = hicolor-icon-theme + depends = libglvnd + depends = libjpeg-turbo + depends = libspnav + depends = libx11 + depends = pango + depends = python + depends = wayland + depends = webkit2gtk-4.1 + depends = zlib + optdepends = mesa: Enables Zink fallback workaround for NVIDIA on Wayland + optdepends = mesa-utils: for detecting renderer + optdepends = nvidia-utils: for querying driver version + provides = orca-slicer + conflicts = orca-slicer + options = debug + options = !strip + source = orca-slicer-git::git+https://github.com/SoftFever/OrcaSlicer.git + source = orca-slicer-wrapper.sh + b2sums = SKIP + b2sums = ea635f7745795d535ddf8cf317b27986ae28c177ea3fd7764c3314f9ca152672d17af22541cd9f6efc08a04fd02b2bda502f867fd2dd6888c58cf9b5d7c6c2a4 + +pkgname = orca-slicer-git diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..55d8cee --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,94 @@ +# Maintainer: lod + +pkgname=orca-slicer-git +pkgver=2.3.1.r25349.e44ec1f +pkgrel=1 +pkgdesc="G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)" +arch=('x86_64') +url="https://github.com/SoftFever/OrcaSlicer" +license=('AGPL-3.0-only') +depends=('bash' 'cairo' 'dbus' 'expat' 'fontconfig' 'freetype2' 'gcc-libs' 'gdk-pixbuf2' 'glib2' 'glibc' + 'gst-plugins-base-libs' 'gstreamer' 'gtk3' 'hicolor-icon-theme' 'libglvnd' 'libjpeg-turbo' + 'libspnav' 'libx11' 'pango' 'python' 'wayland' 'webkit2gtk-4.1' 'zlib') +makedepends=('cmake' 'extra-cmake-modules' 'git' 'glew' 'libigl' 'm4' 'ninja' 'pkgconf' 'wayland-protocols') +optdepends=('mesa: Enables Zink fallback workaround for NVIDIA on Wayland' + 'mesa-utils: for detecting renderer' + 'nvidia-utils: for querying driver version') +options=('debug' '!strip') +provides=('orca-slicer') +conflicts=('orca-slicer') +source=($pkgname::git+https://github.com/SoftFever/OrcaSlicer.git + orca-slicer-wrapper.sh) +b2sums=('SKIP' + 'ea635f7745795d535ddf8cf317b27986ae28c177ea3fd7764c3314f9ca152672d17af22541cd9f6efc08a04fd02b2bda502f867fd2dd6888c58cf9b5d7c6c2a4') + +pkgver() { + cd $pkgname + _version=$(sed -n 's/set(SoftFever_VERSION "\([^"]*\)-.*".*/\1/p' version.inc) + _revision=$(git rev-list --count HEAD) + _commit=$(git rev-parse --short=7 HEAD) + printf "%s.r%s.%s" $_version $_revision $_commit +} + +prepare() { + cd $pkgname + +} + +build() { + cd $pkgname + + export CMAKE_POLICY_VERSION_MINIMUM=3.5 + + cmake \ + -G Ninja \ + -S deps \ + -B deps/build/release \ + -DDESTDIR="$PWD/deps/build/destdir" \ + -DDEP_DOWNLOAD_DIR="$PWD/deps/DL_CACHE" \ + -DCOLORED_OUTPUT=ON \ + -DDEP_WX_GTK3=ON + ninja -C deps/build/release + + cmake \ + -G Ninja \ + -S deps \ + -B deps/build \ + -DCMAKE_BUILD_TYPE=Debug \ + -DDESTDIR="$PWD/deps/build/destdir" \ + -DDEP_DOWNLOAD_DIR="$PWD/deps/DL_CACHE" \ + -DCOLORED_OUTPUT=ON \ + -DDEP_WX_GTK3=ON + ninja -C deps/build + + cmake \ + -G Ninja \ + -S . \ + -B build \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_FULL_DATAROOTDIR=/usr/share/ \ + -DCMAKE_PREFIX_PATH="$PWD/deps/build/destdir/usr/local" \ + -DCMAKE_BUILD_TYPE=Debug \ + -DBBL_INTERNAL_TESTING=1 \ + -DSLIC3R_STATIC=1 \ + -DORCA_TOOLS=1 \ + -DSLIC3R_FHS=1 \ + -DSLIC3R_GTK=3 \ + -DCOLORED_OUTPUT=ON + ninja -C build + + # add localizations + ./run_gettext.sh --full +} + +package() { + cd $pkgname + + DESTDIR="$pkgdir" ninja -C build install + install -d "$pkgdir/usr/lib/OrcaSlicer/" + mv "$pkgdir/usr/bin/orca-slicer" "$pkgdir/usr/lib/OrcaSlicer/" + install -Dm755 "$srcdir/orca-slicer-wrapper.sh" "$pkgdir/usr/bin/orca-slicer" + install -Dm644 doc/*.md -t "$pkgdir/usr/share/doc/OrcaSlicer/" + install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/OrcaSlicer/LICENSE" + rm -rf "$pkgdir/usr/LICENSE.txt" +} diff --git a/orca-slicer-wrapper.sh b/orca-slicer-wrapper.sh new file mode 100644 index 0000000..db58b5d --- /dev/null +++ b/orca-slicer-wrapper.sh @@ -0,0 +1,29 @@ +#!/bin/bash +DIR="/usr/lib/OrcaSlicer" +export LD_LIBRARY_PATH="$DIR/bin:$LD_LIBRARY_PATH" + +# OrcaSlicer will segfault on systems where locale info is not as expected +export LC_ALL=C + +# Use Zink to run OpenGL on top of Vulkan bypassing the problematic NVIDIA OpenGL stack while retaining hardware acceleration. +if [ "$XDG_SESSION_TYPE" = "wayland" ] && [ "$ZINK_DISABLE_OVERRIDE" != "1" ]; then + if command -v glxinfo >/dev/null 2>&1; then + RENDERER=$(glxinfo | grep "OpenGL renderer string:" | sed 's/.*: //') + if echo "$RENDERER" | grep -qi "NVIDIA"; then + if command -v nvidia-smi >/dev/null 2>&1; then + DRIVER_VERSION=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader | head -n1) + DRIVER_MAJOR=$(echo "$DRIVER_VERSION" | cut -d. -f1) + [ "$DRIVER_MAJOR" -gt 555 ] && ZINK_FORCE_OVERRIDE=1 + fi + if [ "$ZINK_FORCE_OVERRIDE" = "1" ]; then + export __GLX_VENDOR_LIBRARY_NAME=mesa + export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json + export MESA_LOADER_DRIVER_OVERRIDE=zink + export GALLIUM_DRIVER=zink + export WEBKIT_DISABLE_DMABUF_RENDERER=1 + fi + fi + fi +fi + +exec "$DIR/orca-slicer" "$@"