summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 91d8179da9a1450c45c0e1c10af7f0a82d4b37bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# Maintainer: lod <aur@cyber-anlage.de>

pkgname=orca-slicer-git
pkgver=2.5.0.r30479.f18eb21
pkgrel=1
pkgdesc="G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)"
arch=('x86_64')
url="https://github.com/OrcaSlicer/OrcaSlicer"
license=('AGPL-3.0-only')
depends=('assimp' 'bash' 'cairo' 'curl' 'dbus' 'expat' 'draco' 'ffmpeg' 'fontconfig' 'gdk-pixbuf2' 'glib2' 'glibc' 'glfw' 'gmp' 'gspell' 'gstreamer'
         'gst-plugins-bad-libs' 'gtk3' 'hicolor-icon-theme' 'icu' 'imath' 'libgcc' 'libpng' 'libglvnd' 'libjpeg-turbo'  'libspnav'
         'libstdc++' 'libx11' 'libxkbcommon' 'mesa' 'mesa-utils' 'mpfr' 'nlopt' 'onetbb' 'opencascade' 'opencv' 'openssl' 'openvdb'
         'pango' 'python' 'wayland' 'webkit2gtk-4.1' 'zlib' 'libnoise')
makedepends=('ccache' 'cereal' 'cgal' 'cmake' 'eigen' 'extra-cmake-modules' 'git' 'glew' 'libigl' 'libmspack' 'm4' 'ninja'
             'opencsg' 'pkgconf' 'python-numpy' 'superlu' 'uv' 'wayland-protocols')
optdepends=('nvidia-utils: for querying driver version')
options=('!debug' '!emptydirs')
provides=('orca-slicer')
conflicts=('orca-slicer')
source=($pkgname::git+https://github.com/OrcaSlicer/OrcaSlicer.git
        orca-slicer-wrapper.sh
        fixes_boost.patch
        fixes_cgal.patch
        fixes_igl.patch
        fixes_libnoise.patch
        fixes_occt.patch
        fixes_opencv.patch
        fixes_python.patch
        remove_bundled_libs_from_CMakeLists.patch)
b2sums=('SKIP'
        '25eb7be624db4074fc5840a6904187f9bbf3f8ed96b14430f7fdc8bcc9ebb0ce9ad033fbe1fde51a905baf8f87693ebc33b4c82a9200f561e7b593e5bffab02f'
        '12a27356e6bc1e85070cf3a4da5ade557e69bfeb2d0ab0e4caeda438671331406e9e4157256c7ff55c8844091772762cd219dfb34e207e5c985381439e691af4'
        '26631ec9426eee4dc1367f59684b0dc7ced73b1d269e299df94dd2f81c04a0d2e804af86ec2d660256e3d8536bdea91400429ab9c708a150abdb3315850268f6'
        'd6837b59b4e209eac9042644d5ed55cf63080e4662e3314b9fc21e9cf8484f2a86ee52690547c51f09935aecb8aab370939dc6d15ab7b50c871a3a17bfe66ebb'
        '0c65b83acd74496f531aa064179aa40ee61feea2d73012ca38b7d6acd0ccd973978a639a9ddb75f8a9e512ebbc7c86caa5d501c15bf77cb121a8ef40d1f405ad'
        '996435df556705192dccb35b011f4c27de798cac9b5c684679a13c20cbda02aa24680f2eddb34f820cf99c1f5dfc70333083fac92cb2c97dd65f8606a2119d25'
        '749e1ba78594c95140b2bc5e08f5b9962845f99b10bc7f0136ebf812b2bd3f0d83774031ead017aca4a913b8422171ff67c48897077014078f6187e11f0da0b3'
        '09c87046657ff620d213152ef77b0bc8a21bda8ddfe154aacaa0611ce6424e51132899c1a058f7cfe84f528ce9e7d7c20b04d0c35bb19460c4e82d4ad625fc63'
        'ce62d9648e8ef69f0506c4d5b7260d8d5b44b94e783c2a0a0f154ca73e904e8758bb009f6a85dea95b5930a2ebca538edcf2d9fcf61e015a905ad262d211fd69')

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

  # list of bundled packages to drop
  for _pkg in Assimp Blosc Boost Cereal CGAL CURL Draco Eigen EXPAT FFMPEG FREETYPE GLFW GLEW GMP JPEG libnoise MPFR NLopt OCCT OpenCSG OpenCV OpenEXR OpenSSL OpenVDB PNG python3 Qhull TBB ZLIB; do
    sed -i -e "s/dep_${_pkg}/\"\"/" -e "s|include(${_pkg}/${_pkg}.cmake)||" deps/CMakeLists.txt
  done

  # revert: Link libspnav statically (#9964)
  #git revert --no-commit 6ed9b0817381042a63fa121c5f9b5cbcb11a3bfa 
  git cherry-pick -n 9b7afcc6a4d1540d04deedbd5bd5d92dd8cf7487

  patch -Np1 -i "${srcdir}"/fixes_occt.patch
  patch -Np1 -i "${srcdir}"/fixes_opencv.patch
  patch -Np1 -i "${srcdir}"/fixes_libnoise.patch
  patch -Np1 -i "${srcdir}"/fixes_igl.patch
  patch -Np1 -i "${srcdir}"/fixes_cgal.patch
  patch -Np1 -i "${srcdir}"/fixes_boost.patch
  patch -Np1 -i "${srcdir}"/fixes_python.patch
  patch -Np1 -i "${srcdir}"/remove_bundled_libs_from_CMakeLists.patch  # UV libav/ffmpeg
}

build() {
  cd $pkgname
  export CMAKE_POLICY_VERSION_MINIMUM=3.5

  _jobs=$(nproc)
  if [[ $MAKEFLAGS =~ -j([0-9]+) ]]; then
    _jobs="${BASH_REMATCH[1]}"
  fi
  _mem=$(awk '/MemAvailable/ { printf "%.0f\n", $2 / 1024 / 1024 }' /proc/meminfo)
  if (( _jobs > _mem )); then
    _jobs=$_mem
  fi

  export CMAKE_BUILD_PARALLEL_LEVEL="$_jobs"
  export CXXFLAGS="$CXXFLAGS -I${srcdir}/orca-slicer-git/deps/build/destdir/usr/local/include"
  cmake \
    -G Ninja \
    -S deps \
    -B deps/build \
    -DDESTDIR="$PWD/deps/build/destdir" \
    -DDEP_DOWNLOAD_DIR="$PWD/deps/DL_CACHE" \
    -DDEP_WX_GTK3=ON
  ninja -C deps/build -j1

  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" \
    -Dlibigl_DIR=/usr/lib/cmake/igl \
    -DEigen3_DIR=/usr/lib/cmake/eigen3 \
    -DOPENVDB_FIND_MODULE_PATH=/usr/lib/cmake/OpenVDB \
    -DOpenVDB_openvdb_LIBRARY=/usr/lib/libopenvdb.so \
    -DOpenVDB_INCLUDE_DIR=/usr/include \
    -DSLIC3R_STATIC=1 \
    -DORCA_TOOLS=1 \
    -DSLIC3R_FHS=1 \
    -DSLIC3R_GTK=3
  ninja -C build -j"$_jobs"

  # add localizations
  ./scripts/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 ../orca-slicer-wrapper.sh "$pkgdir/usr/bin/orca-slicer"
  install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/OrcaSlicer/LICENSE"
  rm -rf "$pkgdir/usr/LICENSE.txt"
}