summary refs log tree commit diff
diff options
context:
space:
mode:
authorBjørn Forsman <bjorn.forsman@gmail.com>2013-04-28 12:59:00 +0200
committerBjørn Forsman <bjorn.forsman@gmail.com>2013-07-11 01:35:00 +0200
commit49fccb03e9c0509d8b983c4e59665f3192ade9e6 (patch)
tree152e3b193b281045ea401647bcbc8995109b56d1
parentf094996e9cb2709034d6205225941626ca28be6f (diff)
downloadnixlib-49fccb03e9c0509d8b983c4e59665f3192ade9e6.tar
nixlib-49fccb03e9c0509d8b983c4e59665f3192ade9e6.tar.gz
nixlib-49fccb03e9c0509d8b983c4e59665f3192ade9e6.tar.bz2
nixlib-49fccb03e9c0509d8b983c4e59665f3192ade9e6.tar.lz
nixlib-49fccb03e9c0509d8b983c4e59665f3192ade9e6.tar.xz
nixlib-49fccb03e9c0509d8b983c4e59665f3192ade9e6.tar.zst
nixlib-49fccb03e9c0509d8b983c4e59665f3192ade9e6.zip
slic3r: new package
Slic3r is a G-code generator for 3D printers.

- Math-Clipper and Boost-Geometry-Utils have been bumped to satisfy
  Slic3r.

- Slic3r has problems with perl 5.16 due to a locale issue (comma vs
  period in floating point numbers). So we use perl 5.14.

- The tests fail, so we skip them. According to the author of Slic3r,
  that should be safe:

    "Tests failed because of a typo when the 0.9.10b tag was applied.
    You can safely ignore the test results, Slic3r will work."

  See https://github.com/alexrj/Slic3r/issues/1303

  For reference, the errors look like this:

    Use of uninitialized value $deg in numeric eq (==) at /tmp/nix-build-perl-slic3r-0.9.10b.drv-0/git-export/t/../lib/Slic3r/TriangleMesh.pm line 328.
    # Looks like your test exited with 255 before it could output anything.
-rw-r--r--pkgs/applications/misc/slic3r/default.nix61
-rw-r--r--pkgs/top-level/all-packages.nix16
-rw-r--r--pkgs/top-level/perl-packages.nix8
3 files changed, 81 insertions, 4 deletions
diff --git a/pkgs/applications/misc/slic3r/default.nix b/pkgs/applications/misc/slic3r/default.nix
new file mode 100644
index 000000000000..aa2ceb08e809
--- /dev/null
+++ b/pkgs/applications/misc/slic3r/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchgit, perl, makeWrapper, makeDesktopItem
+# Perl modules:
+, EncodeLocale, MathClipper, ExtUtilsXSpp, BoostGeometryUtils
+, MathConvexHullMonotoneChain, MathGeometryVoronoi, MathPlanePath, Moo
+, IOStringy, ClassXSAccessor, Wx, GrowlGNTP, NetDBus }:
+
+stdenv.mkDerivation rec {
+  version = "0.9.10b";
+  name = "slic3r-${version}";
+
+  # Slic3r doesn't put out tarballs, only a git repository is available
+  src = fetchgit {
+    url = "git://github.com/alexrj/Slic3r";
+    rev = "refs/tags/${version}";
+    sha256 = "0j06h0z65qn4kyb2b7pnq6bcn4al60q227iz9jlrin0ffx3l0ra7";
+  };
+
+  buildInputs = [ perl makeWrapper
+    EncodeLocale MathClipper ExtUtilsXSpp BoostGeometryUtils
+    MathConvexHullMonotoneChain MathGeometryVoronoi MathPlanePath Moo
+    IOStringy ClassXSAccessor Wx GrowlGNTP NetDBus
+  ];
+
+  desktopItem = makeDesktopItem {
+    name = "slic3r";
+    exec = "slic3r";
+    icon = "slic3r";
+    comment = "G-code generator for 3D printers";
+    desktopName = "Slic3r";
+    genericName = "3D printer tool";
+    categories = "Application;Development;";
+  };
+
+  # Nothing to do here
+  buildPhase = "true";
+
+  installPhase = ''
+    mkdir -p "$out/share/slic3r/"
+    cp -r * "$out/share/slic3r/"
+    wrapProgram "$out/share/slic3r/slic3r.pl" --prefix PERL5LIB : $PERL5LIB
+    mkdir -p "$out/bin"
+    ln -s "$out/share/slic3r/slic3r.pl" "$out/bin/slic3r"
+    mkdir -p "$out/share/pixmaps/"
+    ln -s "$out/share/slic3r/var/Slic3r.png" "$out/share/pixmaps/slic3r.png"
+    mkdir -p "$out/share/applications"
+    cp "$desktopItem"/share/applications/* "$out/share/applications/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "G-code generator for 3D printers";
+    longDescription = ''
+      Slic3r is the tool you need to convert a digital 3D model into printing
+      instructions for your 3D printer. It cuts the model into horizontal
+      slices (layers), generates toolpaths to fill them and calculates the
+      amount of material to be extruded.'';
+    homepage = http://slic3r.org/;
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7698faf4c6db..c69fc1a4962c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5679,6 +5679,14 @@ let
     __overrides = (config.perl510PackageOverrides or (p: {})) pkgs;
   };
 
+  perl514Packages = import ./perl-packages.nix {
+    pkgs = pkgs // {
+      perl = perl514;
+      buildPerlPackage = import ../development/perl-modules/generic perl514;
+    };
+    __overrides = (config.perl514PackageOverrides or (p: {})) pkgs;
+  };
+
   perlXMLParser = perlPackages.XMLParser;
 
   ack = perlPackages.ack;
@@ -8301,6 +8309,14 @@ let
 
   lightdm_gtk_greeter = callPackage ../applications/display-managers/lightdm-gtk-greeter { };
 
+  # slic3r 0.9.10b says: "Running Slic3r under Perl >= 5.16 is not supported nor recommended"
+  slic3r = callPackage ../applications/misc/slic3r {
+    inherit (perl514Packages) EncodeLocale MathClipper ExtUtilsXSpp
+            BoostGeometryUtils MathConvexHullMonotoneChain MathGeometryVoronoi
+            MathPlanePath Moo IOStringy ClassXSAccessor Wx GrowlGNTP NetDBus;
+    perl = perl514;
+  };
+
   slim = callPackage ../applications/display-managers/slim {
     libpng = libpng12;
   };
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 1697ad5be941..f179f4ed8302 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -296,10 +296,10 @@ rec {
   };
 
   BoostGeometryUtils = buildPerlModule rec {
-    name = "Boost-Geometry-Utils-0.09";
+    name = "Boost-Geometry-Utils-0.12";
     src = fetchurl {
       url = "mirror://cpan/authors/id/A/AA/AAR/${name}.tar.gz";
-      sha256 = "0wgd36rxd5lj0vlkp7l9zgx8bgbv0nj4kia83ipb7p64xpyysghg";
+      sha256 = "1pywbxjf05qpcixshblhd2cham601zwa9w7c3k5waz4cdild6g1m";
     };
     propagatedBuildInputs = [ ModuleBuildWithXSpp ExtUtilsTypemapsDefault ];
   };
@@ -3934,10 +3934,10 @@ rec {
   };
 
   MathClipper = buildPerlModule rec {
-    name = "Math-Clipper-1.19";
+    name = "Math-Clipper-1.22";
     src = fetchurl {
       url = "mirror://cpan/modules/by-module/Math/${name}.tar.gz";
-      sha256 = "1hrdand4i937bgsr3f3yma5ckkdwkprdwmkyyl37v1vqcjdrjr7j";
+      sha256 = "0p5iblg979v3pb6a8kyhjdv33yadr5997nhz9asjksgvww328nfa";
     };
     propagatedBuildInputs = [ ModuleBuildWithXSpp ExtUtilsXSpp ExtUtilsTypemapsDefault TestDeep ];
   };