mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-10-17 02:19:30 +03:00
curaLulzbot: 15.02.1-1.03-5064 -> 3.6.18
Move Cura Lulzbot Edition to be based on the same generation of the codebase as the upstream (Ultimaker) branch, away from a many-year-old legacy tree. Since prior Lulzbot Edition packaging simply wrapped binaries unpacked from Debian binary packages, doing this right requires forking the same dependencies that Lulzbot has branched themselves as well.
This commit is contained in:
parent
86c11030ee
commit
0ca75bc294
@ -1,58 +1,66 @@
|
||||
{ stdenv, fetchurl, dpkg, bash, python27Packages }:
|
||||
{ lib, fetchgit, curaengineLulzbot, cmake, jq, python3Packages, qtbase, qtquickcontrols2 }:
|
||||
|
||||
let
|
||||
py = python27Packages;
|
||||
# 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";
|
||||
};
|
||||
curaengine = curaengineLulzbot;
|
||||
libarcus = python3Packages.libarcusLulzbot;
|
||||
uranium = python3Packages.uraniumLulzbot;
|
||||
libsavitar = python3Packages.libsavitarLulzbot;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
python3Packages.buildPythonApplication rec {
|
||||
name = "cura-lulzbot-${version}";
|
||||
version = "15.02.1-1.03-5064";
|
||||
version = "3.6.18";
|
||||
|
||||
src =
|
||||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://download.alephobjects.com/ao/aodeb/dists/jessie/main/binary-amd64/cura_${version}_amd64.deb";
|
||||
sha256 = "1gsfidg3gim5pjbl82vkh0cw4ya253m4p7nirm8nr6yjrsirkzxg";
|
||||
}
|
||||
else if stdenv.hostPlatform.system == "i686-linux" then
|
||||
fetchurl {
|
||||
url = "http://download.alephobjects.com/ao/aodeb/dists/jessie/main/binary-i386/cura_${version}_i386.deb";
|
||||
sha256 = "0xd3df6bxq4rijgvsqvps454jkc1nzhxbdzzj6j2w317ppsbhyc1";
|
||||
}
|
||||
else throw "${name} is not supported on ${stdenv.hostPlatform.system}";
|
||||
src = fetchgit {
|
||||
url = https://code.alephobjects.com/source/cura-lulzbot.git;
|
||||
rev = "71f1ac5a2b9f535175a3858a565930348358a9ca";
|
||||
sha256 = "0by06fpxvdgy858lwhsccbmvkdq67j2s1cz8v6jnrnjrsxk7vzka";
|
||||
};
|
||||
|
||||
python_deps = with py; [ pyopengl pyserial numpy wxPython30 power setuptools ];
|
||||
pythonPath = python_deps;
|
||||
propagatedBuildInputs = python_deps;
|
||||
buildInputs = [ dpkg bash py.wrapPython ];
|
||||
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 ] ++ [ libsavitar uranium libarcus ]; # numpy-stl
|
||||
nativeBuildInputs = [ cmake python3Packages.wrapPython ];
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" ];
|
||||
unpackPhase = "dpkg-deb -x ${src} ./";
|
||||
cmakeFlags = [
|
||||
"-DURANIUM_DIR=${uranium.src}"
|
||||
"-DCURA_VERSION=${version}"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp -r usr/share $out/share
|
||||
find $out/share -type f -exec sed -i 's|/usr/share/cura|$out/share/cura|g' "{}" \;
|
||||
|
||||
cat <<EOT > $out/bin/cura
|
||||
#!${bash}/bin/bash
|
||||
PYTHONPATH=$PYTHONPATH:$out/share/cura ${py.python}/bin/python $out/share/cura/cura.py "\$@"
|
||||
EOT
|
||||
|
||||
chmod 555 $out/bin/cura
|
||||
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
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "3D printing host software for the Lulzbot";
|
||||
|
||||
longDescription = ''
|
||||
Cura LulzBot Edition is a fork of the 3D printing/slicing
|
||||
software from Ultimaker, with changes to support 3D printers
|
||||
from Aleph Objects.
|
||||
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 "${uranium}/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 = libarcus.version;
|
||||
libsavitar = libsavitar.version;
|
||||
uranium = uranium.version;
|
||||
}}
|
||||
EOF
|
||||
'';
|
||||
|
||||
homepage = https://www.lulzbot.com/cura/;
|
||||
license = licenses.agpl3;
|
||||
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; [ pjones ];
|
||||
maintainers = with maintainers; [ chaduffy ];
|
||||
};
|
||||
}
|
||||
|
26
pkgs/applications/misc/curaengine/lulzbot.nix
Normal file
26
pkgs/applications/misc/curaengine/lulzbot.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ stdenv, 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 ];
|
||||
};
|
||||
}
|
||||
|
33
pkgs/development/python-modules/libarcus/lulzbot.nix
Normal file
33
pkgs/development/python-modules/libarcus/lulzbot.nix
Normal file
@ -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
pkgs/development/python-modules/libsavitar/lulzbot.nix
Normal file
33
pkgs/development/python-modules/libsavitar/lulzbot.nix
Normal file
@ -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 ];
|
||||
};
|
||||
}
|
41
pkgs/development/python-modules/uranium/lulzbot.nix
Normal file
41
pkgs/development/python-modules/uranium/lulzbot.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ stdenv, 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 = [ ./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 ];
|
||||
};
|
||||
}
|
||||
|
16
pkgs/development/python-modules/uranium/qt512-support.patch
Normal file
16
pkgs/development/python-modules/uranium/qt512-support.patch
Normal file
@ -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__
|
@ -20203,14 +20203,14 @@ in
|
||||
curaengine = curaengine_stable;
|
||||
};
|
||||
|
||||
curaengine = callPackage ../applications/misc/curaengine {
|
||||
inherit (python3.pkgs) libarcus;
|
||||
};
|
||||
curaengine = callPackage ../applications/misc/curaengine { inherit (python3.pkgs) libarcus; };
|
||||
curaengineLulzbot = callPackage ../applications/misc/curaengine/lulzbot.nix { inherit (python3.pkgs) libarcusLulzbot; };
|
||||
|
||||
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.nix { };
|
||||
|
||||
curaByDagoma = callPackage ../applications/misc/curabydagoma { };
|
||||
|
||||
|
@ -3238,6 +3238,7 @@ in {
|
||||
fs-s3fs = callPackage ../development/python-modules/fs-s3fs { };
|
||||
|
||||
libarcus = callPackage ../development/python-modules/libarcus { inherit (pkgs) protobuf; };
|
||||
libarcusLulzbot = callPackage ../development/python-modules/libarcus/lulzbot.nix { inherit (pkgs) protobuf; };
|
||||
|
||||
libcloud = callPackage ../development/python-modules/libcloud { };
|
||||
|
||||
@ -3258,6 +3259,7 @@ in {
|
||||
};
|
||||
|
||||
libsavitar = callPackage ../development/python-modules/libsavitar { };
|
||||
libsavitarLulzbot = callPackage ../development/python-modules/libsavitar/lulzbot.nix { };
|
||||
|
||||
libplist = disabledIf isPy3k
|
||||
(toPythonModule (pkgs.libplist.override{python2Packages=self; })).py;
|
||||
@ -5537,6 +5539,7 @@ in {
|
||||
twilio = callPackage ../development/python-modules/twilio { };
|
||||
|
||||
uranium = callPackage ../development/python-modules/uranium { };
|
||||
uraniumLulzbot = callPackage ../development/python-modules/uranium/lulzbot.nix { };
|
||||
|
||||
uuid = callPackage ../development/python-modules/uuid { };
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user