about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authorZhaofeng Li <hello@zhaofeng.li>2023-12-10 04:28:05 -0700
committerGitHub <noreply@github.com>2023-12-10 15:28:05 +0400
commit92ec31fbeea2dc0acee932a1c84771a2df03b3c2 (patch)
tree88fb6c620c739a6dfaba617deed1494a639daecb /pkgs/applications
parent29d6c96900b9b576c2fb89491452f283aa979819 (diff)
downloadnixlib-92ec31fbeea2dc0acee932a1c84771a2df03b3c2.tar
nixlib-92ec31fbeea2dc0acee932a1c84771a2df03b3c2.tar.gz
nixlib-92ec31fbeea2dc0acee932a1c84771a2df03b3c2.tar.bz2
nixlib-92ec31fbeea2dc0acee932a1c84771a2df03b3c2.tar.lz
nixlib-92ec31fbeea2dc0acee932a1c84771a2df03b3c2.tar.xz
nixlib-92ec31fbeea2dc0acee932a1c84771a2df03b3c2.tar.zst
nixlib-92ec31fbeea2dc0acee932a1c84771a2df03b3c2.zip
bambu-studio: init at 01.06.02.04 (#206495)
* wxGTK31: Support enabling WebRequest component

* wxGTK31: Support enabling private fonts

* bambu-studio: init at 01.06.02.04

Co-authored-by: Phileas Lebada <gitpl@woerm.at>

* bambu-studio: 01.06.02.04 -> 01.07.00.65

* bambu-studio: 01.07.00.65 -> 01.07.06.92

The OpenSSL pin is no longer needed.

* bambu-studio: 01.07.06.92 -> 01.08.00.62

* Switch to newer tbb version

tbb was broken up into two versions for backwards compability

https://github.com/NixOS/nixpkgs/pull/217585/files

and put into prusa-slicer

https://github.com/NixOS/nixpkgs/pull/238921/files

Which fixes for 1.8 beta build
```
bambu-studio> CMake Error at src/libslic3r/CMakeLists.txt:490 (target_link_libraries):
bambu-studio>   Target "libslic3r" links to:
bambu-studio>     TBB::tbbmalloc
bambu-studio>   but the target was not found.  Possible reasons include:
bambu-studio>     * There is a typo in the target name.
bambu-studio>     * A find_package call is missing for an IMPORTED target.
bambu-studio>     * An ALIAS target is missing.
bambu-studio>
bambu-studio> -- Generating done (0.2s)
bambu-studio> CMake Warning:
bambu-studio>   Manually-specified variables were not used by the project:
bambu-studio>     CMAKE_EXPORT_NO_PACKAGE_REGISTRY
bambu-studio>     DEP_WX_GTK3
bambu-studio>
bambu-studio> CMake Generate step failed.  Build files cannot be regenerated correctly.
error: builder for '/nix/store/rzgx01p1ni2xbx5ddg0133pjjlzs8618-bambu-studio-01.08.00.57.drv' failed with exit code 1;
```

* bambu-studio: switch to custom openvdb tbb version

* Downgrade boost to 179 (181 is current default)

---------

Co-authored-by: Phileas Lebada <gitpl@woerm.at>
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/misc/bambu-studio/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch34
-rw-r--r--pkgs/applications/misc/bambu-studio/default.nix172
2 files changed, 206 insertions, 0 deletions
diff --git a/pkgs/applications/misc/bambu-studio/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch b/pkgs/applications/misc/bambu-studio/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
new file mode 100644
index 000000000000..15f1bf8f0b59
--- /dev/null
+++ b/pkgs/applications/misc/bambu-studio/0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
@@ -0,0 +1,34 @@
+From 7eed499898226222a949a792e0400ec10db4a1c9 Mon Sep 17 00:00:00 2001
+From: Zhaofeng Li <hello@zhaofeng.li>
+Date: Tue, 22 Nov 2022 13:00:39 -0700
+Subject: [PATCH] [not for upstream] CMakeLists: Link against webkit2gtk in
+ libslic3r_gui
+
+WebView.cpp uses symbols from webkitgtk directly. Upstream setup
+links wxGTK statically so webkitgtk is already pulled in.
+
+> /nix/store/039g378vc3pc3dvi9dzdlrd0i4q93qwf-binutils-2.39/bin/ld: slic3r/liblibslic3r_gui.a(WebView.cpp.o): undefined reference to symbol 'webkit_web_view_run_javascript_finish'
+> /nix/store/039g378vc3pc3dvi9dzdlrd0i4q93qwf-binutils-2.39/bin/ld: /nix/store/8yvy428jy2nwq4dhmrcs7gj5r27a2pv6-webkitgtk-2.38.2+abi=4.0/lib/libwebkit2gtk-4.0.so.37: error adding symbols: DSO missing from command line
+---
+ src/CMakeLists.txt | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 9c5cb96..e92a0e3 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -175,6 +175,11 @@ if (WIN32)
+     target_link_libraries(BambuStudio_app_gui PRIVATE boost_headeronly)
+ endif ()
+ 
++# We link against webkit2gtk symbols in src/slic3r/GUI/Widgets/WebView.cpp
++if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
++    target_link_libraries(libslic3r_gui "-lwebkit2gtk-4.0")
++endif ()
++
+ # Link the resources dir to where Slic3r GUI expects it
+ set(output_dlls_Release "")
+ set(output_dlls_Debug "")
+-- 
+2.38.1
+
diff --git a/pkgs/applications/misc/bambu-studio/default.nix b/pkgs/applications/misc/bambu-studio/default.nix
new file mode 100644
index 000000000000..fc6acd3d177d
--- /dev/null
+++ b/pkgs/applications/misc/bambu-studio/default.nix
@@ -0,0 +1,172 @@
+{ stdenv
+, lib
+, openexr
+, jemalloc
+, c-blosc
+, binutils
+, fetchFromGitHub
+, cmake
+, pkg-config
+, wrapGAppsHook
+, boost179
+, cereal
+, cgal_5
+, curl
+, dbus
+, eigen
+, expat
+, gcc-unwrapped
+, glew
+, glfw
+, glib
+, glib-networking
+, gmp
+, gstreamer
+, gst-plugins-base
+, gst-plugins-bad
+, gtest
+, gtk3
+, hicolor-icon-theme
+, ilmbase
+, libpng
+, mesa
+, mpfr
+, nlopt
+, opencascade-occt
+, openvdb
+, pcre
+, qhull
+, systemd
+, tbb_2021_8
+, webkitgtk
+, wxGTK31
+, xorg
+, fetchpatch
+, withSystemd ? stdenv.isLinux
+}:
+let
+  wxGTK31' = wxGTK31.overrideAttrs (old: {
+    configureFlags = old.configureFlags ++ [
+      # Disable noisy debug dialogs
+      "--enable-debug=no"
+    ];
+  });
+  openvdb_tbb_2021_8 = openvdb.overrideAttrs (old: rec {
+    buildInputs = [ openexr boost179 tbb_2021_8 jemalloc c-blosc ilmbase ];
+  });
+in
+stdenv.mkDerivation rec {
+  pname = "bambu-studio";
+  version = "01.08.00.62";
+
+  src = fetchFromGitHub {
+    owner = "bambulab";
+    repo = "BambuStudio";
+    rev = "v${version}";
+    hash = "sha256-Rb8YNf+ZQ8+9jAP/ZLze0PfY/liE7Rr2bJX33AENsbg=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    binutils
+    boost179
+    cereal
+    cgal_5
+    curl
+    dbus
+    eigen
+    expat
+    gcc-unwrapped
+    glew
+    glfw
+    glib
+    glib-networking
+    gmp
+    gstreamer
+    gst-plugins-base
+    gst-plugins-bad
+    gtk3
+    hicolor-icon-theme
+    ilmbase
+    libpng
+    mesa.osmesa
+    mpfr
+    nlopt
+    opencascade-occt
+    openvdb_tbb_2021_8
+    pcre
+    tbb_2021_8
+    webkitgtk
+    wxGTK31'
+    xorg.libX11
+  ] ++ lib.optionals withSystemd [
+    systemd
+  ] ++ checkInputs;
+
+  patches = [
+    # Fix for webkitgtk linking
+    ./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
+  ];
+
+  doCheck = true;
+  checkInputs = [ gtest ];
+
+  separateDebugInfo = true;
+
+  # The build system uses custom logic - defined in
+  # cmake/modules/FindNLopt.cmake in the package source - for finding the nlopt
+  # library, which doesn't pick up the package in the nix store.  We
+  # additionally need to set the path via the NLOPT environment variable.
+  NLOPT = nlopt;
+
+  # Disable compiler warnings that clutter the build log.
+  # It seems to be a known issue for Eigen:
+  # http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
+  NIX_CFLAGS_COMPILE = "-Wno-ignored-attributes";
+
+  # prusa-slicer uses dlopen on `libudev.so` at runtime
+  NIX_LDFLAGS = lib.optionalString withSystemd "-ludev";
+
+  # TODO: macOS
+  prePatch = ''
+    # Since version 2.5.0 of nlopt we need to link to libnlopt, as libnlopt_cxx
+    # now seems to be integrated into the main lib.
+    sed -i 's|nlopt_cxx|nlopt|g' cmake/modules/FindNLopt.cmake
+  '';
+
+  cmakeFlags = [
+    "-DSLIC3R_STATIC=0"
+    "-DSLIC3R_FHS=1"
+    "-DSLIC3R_GTK=3"
+
+    # BambuStudio-specific
+    "-DBBL_RELEASE_TO_PUBLIC=1"
+    "-DBBL_INTERNAL_TESTING=0"
+    "-DDEP_WX_GTK3=ON"
+    "-DSLIC3R_BUILD_TESTS=0"
+    "-DCMAKE_CXX_FLAGS=-DBOOST_LOG_DYN_LINK"
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix LD_LIBRARY_PATH : "$out/lib"
+
+      # Fixes intermittent crash
+      # The upstream setup links in glew statically
+      --prefix LD_PRELOAD : "${glew.out}/lib/libGLEW.so"
+    )
+  '';
+
+  meta = with lib; {
+    description = "PC Software for BambuLab's 3D printers";
+    homepage = "https://github.com/bambulab/BambuStudio";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ zhaofengli ];
+    mainProgram = "bambu-studio";
+  };
+}