Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

curaLulzbot: 15.02.1-1.03-5064 -> 3.6.18 #61054

Merged
merged 2 commits into from Aug 8, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
58 changes: 0 additions & 58 deletions pkgs/applications/misc/cura/lulzbot.nix

This file was deleted.

26 changes: 26 additions & 0 deletions pkgs/applications/misc/cura/lulzbot/curaengine.nix
@@ -0,0 +1,26 @@
{ stdenv, callPackage, fetchgit, fetchpatch, cmake, libarcusLulzbot, stb, protobuf }:

stdenv.mkDerivation rec {
name = "curaengine-lulzBot-${version}";
version = "3.6.18";

src = fetchgit {
url = https://code.alephobjects.com/source/curaengine-lulzbot.git;
rev = "ec6a1a0f0aa387ef97e5c106633cf8d7fb9cd00d";
sha256 = "0wdkvg1hmqp1gaym804lw09x4ngf5ffasd861jhflpy7djbmkfn8";
};

nativeBuildInputs = [ cmake ];
buildInputs = [ libarcusLulzbot stb protobuf ];

cmakeFlags = [ "-DCURA_ENGINE_VERSION=${version}" ];

meta = with stdenv.lib; {
description = "A powerful, fast and robust engine for processing 3D models into 3D printing instruction";
homepage = https://code.alephobjects.com/source/curaengine-lulzbot/;
license = licenses.agpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ chaduffy ];
};
}

78 changes: 78 additions & 0 deletions pkgs/applications/misc/cura/lulzbot/default.nix
@@ -0,0 +1,78 @@
{ lib, callPackage, fetchgit, cmake, jq, python3Packages, qtbase, qtquickcontrols2 }:

let
# admittedly, we're using (printer firmware) blobs when we could compile them ourselves.
curaBinaryDataVersion = "3.6.18"; # Marlin v2.0.0.144. Keep this accurate wrt. the below.
curaBinaryData = fetchgit {
url = https://code.alephobjects.com/diffusion/CBD/cura-binary-data.git;
rev = "cdc046494bbfe1f65bfb34659a257eef9a0100a0";
sha256 = "0v0s036gxdjiglas2yzw95alv60sw3pq5k1zrrhmw9mxr4irrblb";
};

libarcusLulzbot = callPackage ./libarcus.nix {
inherit (python3Packages) buildPythonPackage sip pythonOlder;
};
libsavitarLulzbot = callPackage ./libsavitar.nix {
inherit (python3Packages) buildPythonPackage sip pythonOlder;
};

inherit (python3Packages) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
curaengine = callPackage ./curaengine.nix {
inherit libarcusLulzbot;
};
uraniumLulzbot = callPackage ./uranium.nix {
inherit callPackage libarcusLulzbot;
inherit (python3Packages) buildPythonPackage pyqt5 numpy scipy shapely pythonOlder;
};
in
python3Packages.buildPythonApplication rec {
name = "cura-lulzbot-${version}";
version = "3.6.18";

src = fetchgit {
url = https://code.alephobjects.com/source/cura-lulzbot.git;
rev = "71f1ac5a2b9f535175a3858a565930348358a9ca";
sha256 = "0by06fpxvdgy858lwhsccbmvkdq67j2s1cz8v6jnrnjrsxk7vzka";
};

format = "other"; # using cmake to build
buildInputs = [ qtbase qtquickcontrols2 ];
# numpy-stl temporarily disabled due to https://code.alephobjects.com/T8415
propagatedBuildInputs = with python3Packages; [ pyserial requests zeroconf ] ++ [ libsavitarLulzbot uraniumLulzbot libarcusLulzbot ]; # numpy-stl
nativeBuildInputs = [ cmake python3Packages.wrapPython ];

cmakeFlags = [
"-DURANIUM_DIR=${uraniumLulzbot.src}"
"-DCURA_VERSION=${version}"
];

postPatch = ''
sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
sed -i 's, executable_name = .*, executable_name = "${curaengine}/bin/CuraEngine",' plugins/CuraEngineBackend/CuraEngineBackend.py
'';

preFixup = ''
substituteInPlace "$out/bin/cura-lulzbot" --replace 'import cura.CuraApplication' 'import Savitar; import cura.CuraApplication'
ln -sT "${curaBinaryData}/cura/resources/firmware" "$out/share/cura/resources/firmware"
ln -sT "${uraniumLulzbot}/share/uranium" "$out/share/uranium"
${jq}/bin/jq --arg out "$out" '.build=$out' >"$out/version.json" <<'EOF'
${builtins.toJSON {
cura = version;
cura_version = version;
binarydata = curaBinaryDataVersion;
engine = curaengine.version;
libarcus = libarcusLulzbot.version;
libsavitar = libsavitarLulzbot.version;
uranium = uraniumLulzbot.version;
}}
EOF
'';

meta = with lib; {
description = "3D printer / slicing GUI built on top of the Uranium framework";
homepage = https://code.alephobjects.com/diffusion/CURA/;
license = licenses.agpl3; # a partial relicense to LGPL has happened, but not certain that all AGPL bits are expunged
platforms = platforms.linux;
maintainers = with maintainers; [ chaduffy ];
};
}
33 changes: 33 additions & 0 deletions pkgs/applications/misc/cura/lulzbot/libarcus.nix
@@ -0,0 +1,33 @@
{ stdenv, buildPythonPackage, fetchgit, fetchurl, cmake, sip, protobuf, pythonOlder }:

buildPythonPackage rec {
pname = "libarcus";
version = "3.6.18";
format = "other";

src = fetchgit {
url = https://code.alephobjects.com/source/arcus.git;
rev = "c795c0644591703ce04e1fd799fc97b1539031aa";
sha256 = "1yap9wbqxbjx3kqyqcsldny4mlcm33ywiwpdjlfgs0wjahfg4ip0";
};

disabled = pythonOlder "3.4.0";

propagatedBuildInputs = [ sip ];
nativeBuildInputs = [ cmake ];
buildInputs = [ protobuf ];

postPatch = ''
# To workaround buggy SIP detection which overrides PYTHONPATH
sed -i '/SET(ENV{PYTHONPATH}/d' cmake/FindSIP.cmake
'';

meta = with stdenv.lib; {
description = "Communication library between internal components for Ultimaker software";
homepage = https://code.alephobjects.com/source/arcus/;
license = licenses.lgpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ chaduffy ];
};
}

33 changes: 33 additions & 0 deletions pkgs/applications/misc/cura/lulzbot/libsavitar.nix
@@ -0,0 +1,33 @@
{ stdenv, buildPythonPackage, pythonOlder, fetchgit, cmake, sip }:

buildPythonPackage rec {
pname = "libsavitar-lulzbot";
name = "libsavitar-lulzbot";
version = "3.6.18";
format = "other";

src = fetchgit {
url = https://code.alephobjects.com/source/savitar.git;
rev = "988a26d35b2a1d042f8c38938ccda77ab146af7d";
sha256 = "146agw3a92azkgs5ahmn2rrck4an78m2r3pcss6ihmb60lx165k7";
};

postPatch = ''
# To workaround buggy SIP detection which overrides PYTHONPATH
sed -i '/SET(ENV{PYTHONPATH}/d' cmake/FindSIP.cmake
'';

nativeBuildInputs = [ cmake ];

propagatedBuildInputs = [ sip ];

disabled = pythonOlder "3.4.0";

meta = with stdenv.lib; {
description = "C++ implementation of 3mf loading with SIP python bindings";
homepage = https://github.com/Ultimaker/libSavitar;
license = licenses.lgpl3Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ chaduffy ];
};
}
16 changes: 16 additions & 0 deletions pkgs/applications/misc/cura/lulzbot/uranium-qt512-support.patch
@@ -0,0 +1,16 @@
diff --git a/UM/Qt/Bindings/i18nCatalogProxy.py b/UM/Qt/Bindings/i18nCatalogProxy.py
index 7e2bb16c..cec70dd6 100644
--- a/UM/Qt/Bindings/i18nCatalogProxy.py
+++ b/UM/Qt/Bindings/i18nCatalogProxy.py
@@ -86,9 +86,9 @@ class i18nCatalogProxy(QObject): # [CodeStyle: Ultimaker code style requires cla
# \todo Move this to a more generic place so more things can use it.
def _wrapFunction(self, engine, this_object, function):
# JavaScript code that wraps the Python method call in a closure
- wrap_js = """function(this_object) {{
+ wrap_js = """(function(this_object) {{
return function({args}) {{ return this_object.{function}({args}) }}
- }}"""
+ }})"""

# Get the function name and argument list.
function_name = function.__name__
41 changes: 41 additions & 0 deletions pkgs/applications/misc/cura/lulzbot/uranium.nix
@@ -0,0 +1,41 @@
{ stdenv, callPackage, fetchurl, fetchgit, buildPythonPackage, fetchFromGitHub, python, cmake
, pyqt5, numpy, scipy, shapely, libarcusLulzbot, doxygen, gettext, pythonOlder }:

buildPythonPackage rec {
version = "3.6.18";
pname = "uranium";
name = "uraniumLulzbot";
format = "other";

src = fetchgit {
url = https://code.alephobjects.com/diffusion/U/uranium.git;
rev = "33df88a7414375ac924ac761113baa48d2ced2b4";
sha256 = "109cbv7y105crbrzfp70lmcr9n20ap5c97i5qd46fmxbx86yj7f8";
};

disabled = pythonOlder "3.5.0";

buildInputs = [ python gettext ];
propagatedBuildInputs = [ pyqt5 numpy scipy shapely libarcusLulzbot ];
nativeBuildInputs = [ cmake doxygen ];

# Qt 5.12+ support; see https://code.alephobjects.com/rU70b73ba0a270799b9eacf78e400aa8b8ab3fb2ee
patches = [ ./uranium-qt512-support.patch ];

postPatch = ''
sed -i 's,/python''${PYTHON_VERSION_MAJOR}/dist-packages,/python''${PYTHON_VERSION_MAJOR}.''${PYTHON_VERSION_MINOR}/site-packages,g' CMakeLists.txt
sed -i \
-e "s,Resources.addSearchPath(os.path.join(os.path.abspath(os.path.dirname(__file__)).*,Resources.addSearchPath(\"$out/share/uranium/resources\")," \
-e "s,self._plugin_registry.addPluginLocation(os.path.join(os.path.abspath(os.path.dirname(__file__)).*,self._plugin_registry.addPluginLocation(\"$out/lib/uranium/plugins\")," \
UM/Application.py
'';

meta = with stdenv.lib; {
description = "A Python framework for building Desktop applications";
homepage = https://code.alephobjects.com/diffusion/U/;
license = licenses.lgpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ chaduffy ];
};
}

7 changes: 3 additions & 4 deletions pkgs/top-level/all-packages.nix
Expand Up @@ -20203,14 +20203,13 @@ in
curaengine = curaengine_stable;
};

curaengine = callPackage ../applications/misc/curaengine {
inherit (python3.pkgs) libarcus;
};
curaengine = callPackage ../applications/misc/curaengine { inherit (python3.pkgs) libarcus; };

cura = qt5.callPackage ../applications/misc/cura { };

curaPlugins = callPackage ../applications/misc/cura/plugins.nix { };

curaLulzbot = callPackage ../applications/misc/cura/lulzbot.nix { };
curaLulzbot = qt5.callPackage ../applications/misc/cura/lulzbot/default.nix { };

curaByDagoma = callPackage ../applications/misc/curabydagoma { };

Expand Down