mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-01 06:16:58 +00:00
* Add caching system for presets * Removing user\bundle serialization and keeping it only for system presets * Integrate caching into WebGuideDialog which speeds up time of SetupWizzard and PrinterSelection dialog * Add CI\CD step to prepare cache file in ahead of time so user does not need to wait * Add partial cache generation when only one of the vendros is changed to speed up recalculation time * Handle corrupted files * Add cache to GuideDialog as previos version didn't work as expected * Add inspecting tool and fix CI cache generation * Generate cache per vendor * Simplify code by mergin it in PresetBundle * Simplify code a bit more * Add cereal serialize() to VendorProfile, PrinterModel, Preset, and Semver * Remove CachedPrinterModel/VendorProfile/Preset mirror structs from VendorCache * Fix use-after-free in CallAfter lambda; replace raw thread pointer with unique_ptr * Use get_vendor_cache_key() to match cache keys written by the app * Remove BOM added by VSC * Skip invalid vendors * Remove leftover cache file * Fix build for windows arm64 * Revert json cache back * Update check for stale cache * Serealize all value fields for Preset class to minimize regression later * Minimize field duplication by moving Cache thing into PresetBundle * Add tests for Cache system * Add a bit more tests * Merge branch 'main' into feature/cache_profiles_and_optimize_loading_speed * Rvert from per-verndor to single cache file Replace N per-vendor .cache files with a single system_presets.cache that holds all vendors and presets in one serialized blob. Cache load is now all-or-nothing: on hit all vendors are applied from the bundle (sub-second); on miss all vendors are parsed from JSON and a fresh bundle is written to the user cache dir. Invalidation is driven by bundle_key - a sorted concatenation of all vendor JSON version strings. Any vendor update invalidates the whole cache and triggers re-parse on next launch. Guide wizard (WebGuideDialog) loads the bundled cache into a plain PresetBundle instead of a separate VendorGuideData struct, removing the duplicate data model. generate_system_cache simplified from a per-vendor loop to a single save_system_presets_cache() call producing one output file. * Transfer all Preset fields from cache via move assignmet apply_vendor_preset_group was copying fields manually and missed bundle_id, user_id, base_id, sync_info, updated_time, key_values, ini_str. Replace field-by-field copy with move assignment of the fully-deserialized Preset, then restore the vendor pointer which is excluded from serialization. * Ignore cache for future * Remove not used files * Ship one preset cache per vendor in place of the profile JSONs Each vendor's system presets serialize into a single <vendor>.opc built at package time, and a shipped build carries that file alone — the profile JSON and its sub-file tree are pruned. The vendor loader, the setup wizard's profile list and the resource installer all read a vendor through its cache, falling back to parsing whenever one is absent, stale or unreadable, so the cache stays an optimization and never a source of truth. Caches hold presets in source form and resolve inheritance at load, through the same code the JSON path uses. * Make the preset cache self-describing and load each vendor from the system folder alone The cached DynamicPrintConfig is keyed by name, through a per-file dictionary of the distinct opt_keys, the type each was written as, and the distinct enum value names, instead of by serialization_key_ordinal — a position assigned by declaration order at static init, where inserting one option shifts every later ordinal and the lookup then succeeds on the wrong option. Because a name-keyed payload drops the options this build cannot place rather than being rejected wholesale, the schema fingerprint goes, and with it the two fallbacks that existed only because an installed cache died on every app upgrade: the second lookup tier into resources/profiles and the parse fallback to the same place. A vendor is loaded from <data_dir>/system/ and nowhere else, as on main — which is what makes the app write its .opc files there again. * Simplify the preset cache internals after review * Use the shared temp-dir helper in the preset bundle loading test * Bound stamp string reads in the preset cache * Speed up the setup wizard with a profile-data cache The wizard's per-vendor fast path threw on vendors present only in resources, falling back to a ~29 s raw JSON scan on every open. Each vendor now loads from the directory it was found in, and the derived model/machine/filament/process catalog is cached whole in <data_dir>/cache/wizard_profile_data.json, stamped by each vendor's name and version - a fresh cache makes an open one file read, with no bundle built and no presets installed (~0.2 s vs ~2 s). * Remove debug SVG dump from a geometry test * Move the per-vendor cache file format into PresetCacheFormat * Move the vendor install helpers from PresetBundle into Utils * rename * fix flatpak * change cache version to 1 --------- Co-authored-by: SoftFever <softfeverever@gmail.com>
429 lines
16 KiB
YAML
429 lines
16 KiB
YAML
app-id: com.orcaslicer.OrcaSlicer
|
|
runtime: org.gnome.Platform
|
|
runtime-version: "50"
|
|
sdk: org.gnome.Sdk
|
|
sdk-extensions:
|
|
- org.freedesktop.Sdk.Extension.llvm21
|
|
command: entrypoint
|
|
separate-locales: true
|
|
rename-icon: OrcaSlicer
|
|
build-options:
|
|
append-path: /usr/lib/sdk/llvm21/bin
|
|
prepend-ld-library-path: /usr/lib/sdk/llvm21/lib
|
|
env:
|
|
CC: clang
|
|
CXX: clang++
|
|
LDFLAGS: "-fuse-ld=lld"
|
|
finish-args:
|
|
- --share=ipc
|
|
- --socket=x11
|
|
- --socket=wayland
|
|
- --share=network
|
|
- --device=all
|
|
- --filesystem=home
|
|
- --filesystem=xdg-run/gvfs
|
|
- --filesystem=/run/media
|
|
- --filesystem=/media
|
|
# Network shares (CIFS/NFS) are commonly mounted under /mnt, which the default
|
|
# finish-args don't grant; without it, opening a model from such a share fails
|
|
# with "The file does not contain any geometry data."
|
|
# https://github.com/flathub/com.orcaslicer.OrcaSlicer/issues/2
|
|
- --filesystem=/mnt
|
|
- --filesystem=/run/spnav.sock:ro
|
|
# Allow read-only access to OrcaSlicer's legacy config and cache directories (if they exist) for migration purposes.
|
|
- --filesystem=~/.var/app/io.github.softfever.OrcaSlicer:ro
|
|
# Allow OrcaSlicer to own and talk to instance-check D-Bus names (InstanceCheck.cpp)
|
|
- --talk-name=com.orcaslicer.OrcaSlicer.InstanceCheck.*
|
|
- --own-name=com.orcaslicer.OrcaSlicer.InstanceCheck.*
|
|
- --system-talk-name=org.freedesktop.UDisks2
|
|
- --env=SPNAV_SOCKET=/run/spnav.sock
|
|
|
|
modules:
|
|
|
|
# JPEG codec and GTK video sink (Wayland liveview) for the liveview
|
|
- name: gst-plugins-good
|
|
buildsystem: meson
|
|
config-opts:
|
|
- -Dauto_features=disabled
|
|
- -Djpeg=enabled
|
|
- -Dgtk3=enabled
|
|
- -Ddoc=disabled
|
|
- -Dexamples=disabled
|
|
- -Dtests=disabled
|
|
sources:
|
|
- type: archive
|
|
url: https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.22.8.tar.xz
|
|
sha256: e305b9f07f52743ca481da0a4e0c76c35efd60adaf1b0694eb3bb021e2137e39
|
|
|
|
- name: glu
|
|
build-options:
|
|
cxxflags: -Wno-register
|
|
config-opts:
|
|
- --disable-static
|
|
sources:
|
|
- type: archive
|
|
url: https://ftp.osuosl.org/pub/blfs/conglomeration/glu/glu-9.0.2.tar.xz
|
|
sha256: 6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4
|
|
cleanup:
|
|
- /include
|
|
- /lib/*.a
|
|
- /lib/*.la
|
|
- /lib/pkgconfig
|
|
|
|
- name: kde-extra-cmake-modules
|
|
buildsystem: cmake-ninja
|
|
sources:
|
|
- type: git
|
|
url: https://github.com/KDE/extra-cmake-modules
|
|
tag: v5.249.0
|
|
commit: 008ae77d0cd2a97c346228ab30b99279643e5022
|
|
cleanup:
|
|
- /
|
|
|
|
- name: libspnav
|
|
sources:
|
|
- type: archive
|
|
url: https://github.com/FreeSpacenav/libspnav/releases/download/v1.2/libspnav-1.2.tar.gz
|
|
sha256: 093747e7e03b232e08ff77f1ad7f48552c06ac5236316a5012db4269951c39db
|
|
|
|
# wxWidgets built as a separate module for Flathub (no network at build time)
|
|
# Config-opts mirror deps/wxWidgets/wxWidgets.cmake with FLATPAK=ON, DEP_WX_GTK3=ON
|
|
- name: wxWidgets
|
|
buildsystem: cmake-ninja
|
|
build-options:
|
|
env:
|
|
CMAKE_POLICY_VERSION_MINIMUM: "3.5"
|
|
config-opts:
|
|
- -DCMAKE_BUILD_TYPE=Release
|
|
- -DwxBUILD_PRECOMP=ON
|
|
- -DwxBUILD_TOOLKIT=gtk3
|
|
- -DCMAKE_DEBUG_POSTFIX:STRING=d
|
|
- -DwxBUILD_DEBUG_LEVEL=0
|
|
- -DwxBUILD_SAMPLES=OFF
|
|
- -DwxBUILD_SHARED=ON
|
|
- -DBUILD_SHARED_LIBS=ON
|
|
- -DwxUSE_MEDIACTRL=ON
|
|
- -DwxUSE_DETECT_SM=OFF
|
|
- -DwxUSE_PRIVATE_FONTS=ON
|
|
- -DwxUSE_OPENGL=ON
|
|
- -DwxUSE_GLCANVAS_EGL=ON
|
|
- -DwxUSE_WEBREQUEST=ON
|
|
- -DwxUSE_WEBVIEW=ON
|
|
- -DwxUSE_WEBVIEW_EDGE=OFF
|
|
- -DwxUSE_WEBVIEW_IE=OFF
|
|
- -DwxUSE_REGEX=builtin
|
|
- -DwxUSE_LIBSDL=OFF
|
|
- -DwxUSE_XTEST=OFF
|
|
- -DwxUSE_STC=OFF
|
|
- -DwxUSE_AUI=ON
|
|
- -DwxUSE_LIBPNG=sys
|
|
- -DwxUSE_ZLIB=sys
|
|
- -DwxUSE_LIBJPEG=sys
|
|
- -DwxUSE_LIBTIFF=OFF
|
|
# sys, not builtin (unlike the static deps build): wxWidgets installs the
|
|
# builtin libwxwebp*.so only for static builds, so a shared build leaves
|
|
# them missing at runtime. The GNOME runtime provides libwebp.
|
|
- -DwxUSE_LIBWEBP=sys
|
|
- -DwxUSE_EXPAT=sys
|
|
- -DwxUSE_NANOSVG=OFF
|
|
- -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld
|
|
- -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld
|
|
- -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld
|
|
sources:
|
|
# Use git instead of archive: wxWidgets 3.3 relies on multiple git
|
|
# submodules (PCRE2, etc.) that are not included in GitHub tarballs.
|
|
- type: git
|
|
url: https://github.com/SoftFever/Orca-deps-wxWidgets.git
|
|
tag: orca-3.3.2
|
|
commit: db1005db3dea2c37a46fb455a9a02e37aa360751
|
|
|
|
# OrcaSlicer C++ dependencies (built offline with pre-downloaded archives)
|
|
- name: orca_deps
|
|
buildsystem: simple
|
|
build-options:
|
|
env:
|
|
BUILD_DIR: deps/build_flatpak
|
|
build-commands:
|
|
- |
|
|
cmake -S deps -B $BUILD_DIR \
|
|
-DFLATPAK=ON \
|
|
-DDEP_DOWNLOAD_DIR=/run/build/orca_deps/external-packages \
|
|
-DCMAKE_PREFIX_PATH=/app \
|
|
-DDESTDIR=/app \
|
|
-DCMAKE_INSTALL_PREFIX=/app \
|
|
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
|
|
-DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \
|
|
-DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld"
|
|
- cmake --build $BUILD_DIR --parallel
|
|
- rm -rf /run/build/orca_deps/external-packages
|
|
|
|
cleanup:
|
|
- /include
|
|
- "*.a"
|
|
- "*.la"
|
|
# CPython headers: useless at runtime (no compiler in the runtime
|
|
# sandbox, so C-extension source builds can't happen anyway), and a
|
|
# few MB of bloat. /app/libpython is installed by this module, so the
|
|
# entry must live in THIS module's cleanup (module-level cleanup only
|
|
# matches files the module itself installed).
|
|
- /libpython/include
|
|
|
|
sources:
|
|
# OrcaSlicer deps/ directory (avoids copying .git from worktree)
|
|
- type: dir
|
|
path: ../../deps
|
|
dest: deps
|
|
|
|
# ---------------------------------------------------------------
|
|
# Pre-downloaded dependency archives
|
|
# These are placed in external-packages/<Name>/ so CMake's
|
|
# ExternalProject_Add finds them and skips network downloads.
|
|
# ---------------------------------------------------------------
|
|
|
|
# Boost 1.84.0
|
|
- type: file
|
|
url: https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.gz
|
|
sha256: 4d27e9efed0f6f152dc28db6430b9d3dfb40c0345da7342eaa5a987dde57bd95
|
|
dest: external-packages/Boost
|
|
|
|
# Eigen 5.0.1
|
|
- type: file
|
|
url: https://gitlab.com/libeigen/eigen/-/archive/5.0.1/eigen-5.0.1.zip
|
|
sha256: 0dbb1f9e3aaad66f352c03227d8c983f6f0b49e0b07e71a7300f4abcc01aee12
|
|
dest: external-packages/Eigen
|
|
|
|
# TBB v2021.5.0
|
|
- type: file
|
|
url: https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.5.0.zip
|
|
sha256: 83ea786c964a384dd72534f9854b419716f412f9d43c0be88d41874763e7bb47
|
|
dest: external-packages/TBB
|
|
|
|
# Cereal v1.3.0
|
|
- type: file
|
|
url: https://github.com/USCiLab/cereal/archive/refs/tags/v1.3.0.zip
|
|
sha256: 71642cb54658e98c8f07a0f0d08bf9766f1c3771496936f6014169d3726d9657
|
|
dest: external-packages/Cereal
|
|
|
|
# Qhull v8.0.2
|
|
- type: file
|
|
url: https://github.com/qhull/qhull/archive/v8.0.2.zip
|
|
sha256: a378e9a39e718e289102c20d45632f873bfdc58a7a5f924246ea4b176e185f1e
|
|
dest: external-packages/Qhull
|
|
|
|
# GLFW 3.4
|
|
- type: file
|
|
url: https://github.com/glfw/glfw/archive/refs/tags/3.4.zip
|
|
sha256: a133ddc3d3c66143eba9035621db8e0bcf34dba1ee9514a9e23e96afd39fd57a
|
|
dest: external-packages/GLFW
|
|
|
|
# OpenCSG 1.4.2
|
|
- type: file
|
|
url: https://github.com/floriankirsch/OpenCSG/archive/refs/tags/opencsg-1-4-2-release.zip
|
|
sha256: 51afe0db79af8386e2027d56d685177135581e0ee82ade9d7f2caff8deab5ec5
|
|
dest: external-packages/OpenCSG
|
|
|
|
# Blosc 1.17.0 (tamasmeszaros fork)
|
|
- type: file
|
|
url: https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip
|
|
sha256: dcb48bf43a672fa3de6a4b1de2c4c238709dad5893d1e097b8374ad84b1fc3b3
|
|
dest: external-packages/Blosc
|
|
|
|
# OpenEXR v2.5.5
|
|
- type: file
|
|
url: https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip
|
|
sha256: 0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de
|
|
dest: external-packages/OpenEXR
|
|
|
|
# OpenVDB (custom fork)
|
|
- type: file
|
|
url: https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip
|
|
sha256: f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81
|
|
dest: external-packages/OpenVDB
|
|
|
|
# GMP 6.2.1
|
|
- type: file
|
|
url: https://github.com/SoftFever/OrcaSlicer_deps/releases/download/gmp-6.2.1/gmp-6.2.1.tar.bz2
|
|
sha256: eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
|
|
dest: external-packages/GMP
|
|
|
|
# MPFR 4.2.2
|
|
- type: file
|
|
url: https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.2.tar.bz2
|
|
sha256: 9ad62c7dc910303cd384ff8f1f4767a655124980bb6d8650fe62c815a231bb7b
|
|
dest: external-packages/MPFR
|
|
|
|
# CGAL 5.6.3
|
|
- type: file
|
|
url: https://github.com/CGAL/cgal/releases/download/v5.6.3/CGAL-5.6.3.zip
|
|
sha256: 5d577acb4a9918ccb960491482da7a3838f8d363aff47e14d703f19fd84733d4
|
|
dest: external-packages/CGAL
|
|
|
|
# NLopt v2.5.0
|
|
- type: file
|
|
url: https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz
|
|
sha256: c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae
|
|
dest: external-packages/NLopt
|
|
|
|
# libnoise 1.0
|
|
- type: file
|
|
url: https://github.com/SoftFever/Orca-deps-libnoise/archive/refs/tags/1.0.zip
|
|
sha256: 96ffd6cc47898dd8147aab53d7d1b1911b507d9dbaecd5613ca2649468afd8b6
|
|
dest: external-packages/libnoise
|
|
|
|
# Draco 1.5.7
|
|
- type: file
|
|
url: https://github.com/google/draco/archive/refs/tags/1.5.7.zip
|
|
sha256: 27b72ba2d5ff3d0a9814ad40d4cb88f8dc89a35491c0866d952473f8f9416b77
|
|
dest: external-packages/Draco
|
|
|
|
# OpenSSL 1.1.1w (GNOME SDK has 3.x; OrcaSlicer requires 1.1.x)
|
|
- type: file
|
|
url: https://github.com/openssl/openssl/archive/OpenSSL_1_1_1w.tar.gz
|
|
sha256: 2130e8c2fb3b79d1086186f78e59e8bc8d1a6aedf17ab3907f4cb9ae20918c41
|
|
dest: external-packages/OpenSSL
|
|
|
|
# CURL 7.75.0 (built from source to link against OpenSSL 1.1.x)
|
|
- type: file
|
|
url: https://github.com/curl/curl/archive/refs/tags/curl-7_75_0.zip
|
|
sha256: a63ae025bb0a14f119e73250f2c923f4bf89aa93b8d4fafa4a9f5353a96a765a
|
|
dest: external-packages/CURL
|
|
|
|
# OCCT (OpenCASCADE) V7_6_0
|
|
- type: file
|
|
url: https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip
|
|
sha256: 28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc
|
|
dest: external-packages/OCCT
|
|
|
|
# OpenCV 4.6.0
|
|
- type: file
|
|
url: https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
|
|
sha256: 1ec1cba65f9f20fe5a41fda1586e01c70ea0c9a6d7b67c9e13edf0cfe2239277
|
|
dest: external-packages/OpenCV
|
|
|
|
# CPython 3.12.13
|
|
- type: file
|
|
url: https://www.python.org/ftp/python/3.12.13/Python-3.12.13.tar.xz
|
|
sha256: c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
|
|
dest: external-packages/python3
|
|
|
|
# wxInspector 1.0.0
|
|
- type: file
|
|
url: https://github.com/Noisyfox/wxInspector/archive/refs/tags/v1.0.0.zip
|
|
sha256: 0ba163956f2d468b19a91b96c5aba66ee9610843ea41dda628ea44cdafde7db7
|
|
dest: external-packages/wxInspector
|
|
|
|
# ---------------------------------------------------------------
|
|
# Fallback archives for deps normally provided by the GNOME SDK.
|
|
# These are only used if find_package() fails to locate them.
|
|
# ---------------------------------------------------------------
|
|
|
|
# ZLIB 1.2.13
|
|
- type: file
|
|
url: https://github.com/madler/zlib/archive/refs/tags/v1.2.13.zip
|
|
sha256: c2856951bbf30e30861ace3765595d86ba13f2cf01279d901f6c62258c57f4ff
|
|
dest: external-packages/ZLIB
|
|
|
|
# libpng 1.6.35
|
|
- type: file
|
|
url: https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip
|
|
sha256: 3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f
|
|
dest: external-packages/PNG
|
|
|
|
# libjpeg-turbo 3.0.1
|
|
- type: file
|
|
url: https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.0.1.zip
|
|
sha256: d6d99e693366bc03897677650e8b2dfa76b5d6c54e2c9e70c03f0af821b0a52f
|
|
dest: external-packages/JPEG
|
|
|
|
# Freetype 2.12.1
|
|
- type: file
|
|
url: https://github.com/SoftFever/orca_deps/releases/download/freetype-2.12.1.tar.gz/freetype-2.12.1.tar.gz
|
|
sha256: efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938
|
|
dest: external-packages/FREETYPE
|
|
|
|
- name: OrcaSlicer
|
|
buildsystem: simple
|
|
build-commands:
|
|
- |
|
|
cmake . -B build_flatpak \
|
|
-DFLATPAK=ON \
|
|
-DORCA_TOOLS=ON \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_PREFIX_PATH=/app \
|
|
-DCMAKE_INSTALL_PREFIX=/app \
|
|
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
|
|
-DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \
|
|
-DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld"
|
|
- cmake --build build_flatpak --target OrcaSlicer -j$FLATPAK_BUILDER_N_JOBS
|
|
- ./scripts/run_gettext.sh
|
|
- cmake --build build_flatpak --target install -j$FLATPAK_BUILDER_N_JOBS
|
|
|
|
# Per-vendor preset caches. On the other platforms CI runs this script
|
|
# itself; the flatpak is built inside flatpak-builder and the generator
|
|
# only exists in here, so the swap is a build step instead, against the
|
|
# profiles the install above copied into /app.
|
|
- cmake --build build_flatpak --target generate_system_cache -j$FLATPAK_BUILDER_N_JOBS
|
|
- ./scripts/build_preset_cache.sh -n -b build_flatpak /app/share/OrcaSlicer/profiles
|
|
|
|
cleanup:
|
|
- /include
|
|
|
|
post-install:
|
|
|
|
- | # Desktop integration files
|
|
install -Dm644 -t /app/share/icons/hicolor/scalable/apps/ resources/images/OrcaSlicer.svg
|
|
install -Dm644 ${FLATPAK_ID}.metainfo.xml /app/share/metainfo/${FLATPAK_ID}.metainfo.xml
|
|
desktop-file-edit --set-key=Exec --set-value="entrypoint %U" /app/share/applications/${FLATPAK_ID}.desktop
|
|
install -Dm755 entrypoint /app/bin
|
|
install -Dm755 umount /app/bin
|
|
|
|
- install -Dm644 LICENSE.txt /app/share/licenses/${FLATPAK_ID}/LICENSE.txt
|
|
|
|
- | # Install fonts into fontconfig-scanned directory so Pango finds them
|
|
# before initialization (avoids ensure_faces crash from AddPrivateFont)
|
|
install -Dm644 -t /app/share/fonts/OrcaSlicer/ resources/fonts/*.ttf
|
|
fc-cache -f /app/share/fonts/OrcaSlicer/
|
|
|
|
sources:
|
|
# OrcaSlicer source tree (specific dirs to avoid copying .git from worktree)
|
|
- type: dir
|
|
path: ../../cmake
|
|
dest: cmake
|
|
- type: dir
|
|
path: ../../deps_src
|
|
dest: deps_src
|
|
- type: dir
|
|
path: ../../resources
|
|
dest: resources
|
|
- type: dir
|
|
path: ../../src
|
|
dest: src
|
|
- type: dir
|
|
path: ../../localization
|
|
dest: localization
|
|
|
|
- type: file
|
|
path: ../../CMakeLists.txt
|
|
- type: file
|
|
path: ../../LICENSE.txt
|
|
- type: file
|
|
path: ../../version.inc
|
|
- type: file
|
|
path: ../run_gettext.sh
|
|
dest: scripts
|
|
- type: file
|
|
path: ../build_preset_cache.sh
|
|
dest: scripts
|
|
|
|
# AppData metainfo for GNOME Software & Co.
|
|
- type: file
|
|
path: com.orcaslicer.OrcaSlicer.metainfo.xml
|
|
|
|
# Startup script
|
|
- type: file
|
|
path: entrypoint
|
|
|
|
# umount wrapper used to redirect umount calls to UDisks2
|
|
- type: file
|
|
path: umount
|