[packages/slic3r] - initial, unfinished, from FC

arekm arekm at pld-linux.org
Fri May 15 11:30:53 CEST 2015


commit 650c8654dfab3f48520e794bb882417d603f4794
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Fri May 15 11:30:38 2015 +0200

    - initial, unfinished, from FC

 slic3r-buildpl.patch            |  15 ++++
 slic3r-clear-error.patch        |  36 +++++++++
 slic3r-clipper.patch            |  40 ++++++++++
 slic3r-english-locale.patch     |  12 +++
 slic3r-linker.patch             |  16 ++++
 slic3r-nowarn-datadir.patch     |  15 ++++
 slic3r-test-out-of-memory.patch | 138 ++++++++++++++++++++++++++++++++
 slic3r.appdata.xml              |  24 ++++++
 slic3r.desktop                  |   7 ++
 slic3r.spec                     | 173 ++++++++++++++++++++++++++++++++++++++++
 10 files changed, 476 insertions(+)
---
diff --git a/slic3r.spec b/slic3r.spec
new file mode 100644
index 0000000..3137b09
--- /dev/null
+++ b/slic3r.spec
@@ -0,0 +1,173 @@
+Summary:	G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
+Name:		slic3r
+Version:	1.2.6
+Release:	0.1
+License:	AGPLv3 and CC-BY
+# Images are CC-BY, code is AGPLv3
+Group:		Applications/Engineering
+URL:		http://slic3r.org/
+Source0:	https://github.com/alexrj/Slic3r/archive/%{version}.tar.gz
+# Source0-md5:	85c27cdc16c7efabfd6a34755b7881c9
+Source1:        %{name}.desktop
+Source2:        %{name}.appdata.xml
+# Modify Build.PL so we are able to build this on Fedora
+Patch0:		%{name}-buildpl.patch
+# Don't warn for Perl >= 5.16
+# Use /usr/share/slic3r as datadir
+# Those two are located at the same place at the code, so the patch is merged
+Patch1:		%{name}-nowarn-datadir.patch
+Patch2:		%{name}-english-locale.patch
+Patch3:		%{name}-linker.patch
+Patch4:		%{name}-clear-error.patch
+Patch5:		%{name}-test-out-of-memory.patch
+Patch6:		%{name}-clipper.patch
+BuildRequires:	perl(Class::XSAccessor)
+BuildRequires:	perl(Encode::Locale)
+BuildRequires:	perl(ExtUtils::MakeMaker) >= 6.80
+BuildRequires:	perl(ExtUtils::ParseXS) >= 3.22
+BuildRequires:	perl(ExtUtils::Typemap)
+BuildRequires:	perl(ExtUtils::Typemaps::Default) >= 1.05
+BuildRequires:	perl(File::Basename)
+BuildRequires:	perl(File::Spec)
+BuildRequires:	perl(Getopt::Long)
+BuildRequires:	perl(Growl::GNTP) >= 0.15
+BuildRequires:	perl(IO::Scalar)
+BuildRequires:	perl(List::Util)
+BuildRequires:	perl(Math::ConvexHull) >= 1.0.4
+BuildRequires:	perl(Math::ConvexHull::MonotoneChain)
+BuildRequires:	perl(Math::Geometry::Voronoi) >= 1.3
+BuildRequires:	perl(Math::PlanePath) >= 53
+BuildRequires:	perl(Module::Build::WithXSpp) >= 0.14
+BuildRequires:	perl(Moo) >= 1.003001
+BuildRequires:	perl(SVG)
+BuildRequires:	perl(Scalar::Util)
+BuildRequires:	perl(Storable)
+BuildRequires:	perl(Test::Harness)
+BuildRequires:	perl(Test::More)
+BuildRequires:	perl(Time::HiRes)
+BuildRequires:	perl(Wx)
+BuildRequires:	perl(XML::SAX)
+BuildRequires:	perl(XML::SAX::ExpatXS)
+BuildRequires:	perl(parent)
+
+BuildRequires:	ImageMagick
+BuildRequires:	admesh-devel >= 0.98.1
+BuildRequires:	boost-devel
+BuildRequires:	desktop-file-utils
+BuildRequires:	poly2tri-devel
+BuildRequires:	polyclipping-devel >= 6.2.0
+
+Requires:	admesh-libs >= 0.97.5
+Requires:	perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
+Requires:	perl(XML::SAX)
+
+%description
+Slic3r is a G-code generator for 3D printers. It's compatible with
+RepRaps, Makerbots, Ultimakers and many more machines. See the project
+homepage at slic3r.org and the documentation on the Slic3r wiki for
+more information.
+
+%prep
+%setup -qn Slic3r-%{version}
+
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+#%patch4 -p1
+#%patch5 -p1
+%patch6 -p1
+
+# Remove bundled admesh, clipper, poly2tri and boost
+rm -rf xs/src/admesh
+rm xs/src/clipper.*pp
+rm -rf xs/src/poly2tri
+rm -rf xs/src/boost
+
+%build
+cd xs
+perl ./Build.PL installdirs=vendor optimize="$RPM_OPT_FLAGS"
+./Build
+cd -
+# Building non XS part only runs test, so skip it and run it in tests
+
+# prepare pngs in mutliple sizes
+for res in 16 32 48 128 256; do
+  mkdir -p hicolor/${res}x${res}/apps
+done
+cd hicolor
+convert ../var/Slic3r.ico %{name}.png
+cp %{name}-0.png 256x256/apps/%{name}.png
+cp %{name}-1.png 128x128/apps/%{name}.png
+cp %{name}-2.png 48x48/apps/%{name}.png
+cp %{name}-3.png 32x32/apps/%{name}.png
+cp %{name}-4.png 16x16/apps/%{name}.png
+rm %{name}-*.png
+cd -
+
+# To avoid "iCCP: Not recognized known sRGB profile that has been edited"
+cd var
+find . -type f -name "*.png" -exec convert {} -strip {} \;
+cd -
+
+%install
+rm -rf $RPM_BUILD_ROOT
+cd xs
+./Build install destdir=$RPM_BUILD_ROOT create_packlist=0
+cd -
+find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -exec rm -f {} \;
+
+# I see no way of installing slic3r with it's build script
+# So I copy the files around manually
+install -d $RPM_BUILD_ROOT%{_bindir}
+install -d $RPM_BUILD_ROOT%{perl_vendorlib}
+install -d $RPM_BUILD_ROOT%{_datadir}/%{name}
+install -d $RPM_BUILD_ROOT%{_datadir}/icons
+install -d $RPM_BUILD_ROOT%{_datadir}/appdata
+
+cp -a %{name}.pl $RPM_BUILD_ROOT%{_bindir}/%{name}
+cp -a lib/* $RPM_BUILD_ROOT%{perl_vendorlib}
+
+cp -a var/* $RPM_BUILD_ROOT%{_datadir}/%{name}
+cp -r hicolor $RPM_BUILD_ROOT%{_datadir}/icons
+desktop-file-install --dir=$RPM_BUILD_ROOT%{_desktopdir} %{SOURCE1}
+
+cp %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml
+
+%{_fixperms} $RPM_BUILD_ROOT*
+
+%check
+cd xs
+./Build test verbose=1
+cd -
+SLIC3R_NO_AUTO=1 perl Build.PL installdirs=vendor
+# the --gui runs no tests, it only checks requires
+
+%post
+/sbin/ldconfig
+/bin/%update_icon_cache_post hicolor &>/dev/null || :
+
+%postun
+/sbin/ldconfig
+if [ $1 -eq 0 ] ; then
+    /bin/%update_icon_cache_post hicolor &>/dev/null
+    %{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans
+%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc README.md
+%attr(755,root,root) %{_bindir}/%{name}
+%{perl_vendorlib}/Slic3r*
+%{perl_vendorarch}/Slic3r*
+%{perl_vendorarch}/auto/Slic3r*
+%{_iconsdir}/hicolor/*/apps/%{name}.png
+%{_desktopdir}/%{name}.desktop
+%{_datadir}/appdata/%{name}.appdata.xml
+%{_datadir}/%{name}
diff --git a/slic3r-buildpl.patch b/slic3r-buildpl.patch
new file mode 100644
index 0000000..74c93ae
--- /dev/null
+++ b/slic3r-buildpl.patch
@@ -0,0 +1,15 @@
+diff --git a/Build.PL b/Build.PL
+index 5c650ce..09febb4 100644
+--- a/Build.PL
++++ b/Build.PL
+@@ -146,7 +146,9 @@ if (@missing_prereqs) {
+     exit 1;
+ } elsif (!$gui) {
+     eval "use App::Prove; 1" or die "Failed to load App::Prove";
+-    my $res = App::Prove->new->run ? 0 : 1;
++    my $app = App::Prove->new;
++    $app->process_args('-Ixs/blib/lib','-Ixs/blib/arch');
++    my $res = $app->run ? 0 : 1;
+     if ($res == 0) {
+         print "If you also want to use the GUI you can now run `perl Build.PL --gui` to install the required modules.\n";
+     } else {
diff --git a/slic3r-clear-error.patch b/slic3r-clear-error.patch
new file mode 100644
index 0000000..25599fb
--- /dev/null
+++ b/slic3r-clear-error.patch
@@ -0,0 +1,36 @@
+diff --git a/xs/src/libslic3r/TriangleMesh.cpp b/xs/src/libslic3r/TriangleMesh.cpp
+index dc47832..14e9449 100644
+--- a/xs/src/libslic3r/TriangleMesh.cpp
++++ b/xs/src/libslic3r/TriangleMesh.cpp
+@@ -29,6 +29,7 @@ TriangleMesh::TriangleMesh(const TriangleMesh &other)
+ {
+     this->stl.heads = NULL;
+     this->stl.tail  = NULL;
++    this->stl.error = other.stl.error;
+     if (other.stl.facet_start != NULL) {
+         this->stl.facet_start = (stl_facet*)calloc(other.stl.stats.number_of_facets, sizeof(stl_facet));
+         std::copy(other.stl.facet_start, other.stl.facet_start + other.stl.stats.number_of_facets, this->stl.facet_start);
+@@ -125,6 +126,7 @@ TriangleMesh::repair() {
+     // fill_holes
+     if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) {
+         stl_fill_holes(&stl);
++        stl_clear_error(&stl);
+     }
+     
+     // normal_directions
+@@ -248,6 +250,7 @@ TriangleMesh::split() const
+         mesh->stl.stats.type = inmemory;
+         mesh->stl.stats.number_of_facets = facets.size();
+         mesh->stl.stats.original_num_facets = mesh->stl.stats.number_of_facets;
++        stl_clear_error(&mesh->stl);
+         stl_allocate(&mesh->stl);
+         
+         int first = 1;
+@@ -349,6 +352,7 @@ TriangleMesh::to_SV() {
+ 
+ void TriangleMesh::ReadFromPerl(SV* vertices, SV* facets)
+ {
++    stl.error = 0;
+     stl.stats.type = inmemory;
+     
+     // count facets and allocate memory
diff --git a/slic3r-clipper.patch b/slic3r-clipper.patch
new file mode 100644
index 0000000..1261531
--- /dev/null
+++ b/slic3r-clipper.patch
@@ -0,0 +1,40 @@
+diff --git a/xs/src/libslic3r/ClipperUtils.hpp b/xs/src/libslic3r/ClipperUtils.hpp
+index 2ab3ff7..2058f82 100644
+--- a/xs/src/libslic3r/ClipperUtils.hpp
++++ b/xs/src/libslic3r/ClipperUtils.hpp
+@@ -2,7 +2,7 @@
+ #define slic3r_ClipperUtils_hpp_
+ 
+ #include <myinit.h>
+-#include "clipper.hpp"
++#include <polyclipping/clipper.hpp>
+ #include "ExPolygon.hpp"
+ #include "Polygon.hpp"
+ #include "Surface.hpp"
+diff --git a/xs/src/libslic3r/Geometry.cpp b/xs/src/libslic3r/Geometry.cpp
+index 8e08336..606a8e7 100644
+--- a/xs/src/libslic3r/Geometry.cpp
++++ b/xs/src/libslic3r/Geometry.cpp
+@@ -1,7 +1,7 @@
+ #include "Geometry.hpp"
+ #include "Line.hpp"
+ #include "PolylineCollection.hpp"
+-#include "clipper.hpp"
++#include <polyclipping/clipper.hpp>
+ #include <algorithm>
+ #include <cmath>
+ #include <list>
+diff --git a/xs/xsp/Clipper.xsp b/xs/xsp/Clipper.xsp
+index 43a30a4..263c808 100644
+--- a/xs/xsp/Clipper.xsp
++++ b/xs/xsp/Clipper.xsp
+@@ -2,7 +2,7 @@
+ 
+ %{
+ #include <myinit.h>
+-#include "clipper.hpp"
++#include <polyclipping/clipper.hpp>
+ #include "libslic3r/ClipperUtils.hpp"
+ %}
+ 
+
diff --git a/slic3r-english-locale.patch b/slic3r-english-locale.patch
new file mode 100644
index 0000000..d01a79a
--- /dev/null
+++ b/slic3r-english-locale.patch
@@ -0,0 +1,12 @@
+diff --git a/slic3r.pl b/slic3r.pl
+index a533250..814d8b7 100755
+--- a/slic3r.pl
++++ b/slic3r.pl
+@@ -11,6 +11,7 @@ BEGIN {
+ use Getopt::Long qw(:config no_auto_abbrev);
+ use List::Util qw(first);
+ use POSIX qw(setlocale LC_NUMERIC);
++$ENV{LC_NUMERIC} = 'en_US.UTF-8';
+ use Slic3r;
+ use Time::HiRes qw(gettimeofday tv_interval);
+ $|++;
diff --git a/slic3r-linker.patch b/slic3r-linker.patch
new file mode 100644
index 0000000..9af21ef
--- /dev/null
+++ b/slic3r-linker.patch
@@ -0,0 +1,16 @@
+diff --git a/xs/Build.PL b/xs/Build.PL
+index 5a10ac0..18d0611 100644
+--- a/xs/Build.PL
++++ b/xs/Build.PL
+@@ -41,6 +41,11 @@ my $build = Module::Build::WithXSpp->new(
+         Module::Build::WithXSpp     0.13
+     )},
+     extra_compiler_flags => \@cflags,
++    extra_linker_flags => [qw(
++        -ladmesh
++        -lpoly2tri
++        -lpolyclipping
++    )],
+     
+     # Provides extra C typemaps that are auto-merged
+     extra_typemap_modules => {
diff --git a/slic3r-nowarn-datadir.patch b/slic3r-nowarn-datadir.patch
new file mode 100644
index 0000000..74f2771
--- /dev/null
+++ b/slic3r-nowarn-datadir.patch
@@ -0,0 +1,15 @@
+--- Slic3r-1.2.6/lib/Slic3r.pm~	2015-02-01 15:47:29.000000000 +0100
++++ Slic3r-1.2.6/lib/Slic3r.pm	2015-05-15 11:24:02.024661971 +0200
+@@ -26,11 +26,8 @@
+     $have_threads = 0 if $Moo::VERSION == 1.003000;
+ }
+ 
+-warn "Running Slic3r under Perl 5.16 is not supported nor recommended\n"
+-    if $^V == v5.16;
+-
+ use FindBin;
+-our $var = "$FindBin::Bin/var";
++our $var = "/usr/share/slic3r";
+ 
+ use Encode;
+ use Encode::Locale;
diff --git a/slic3r-test-out-of-memory.patch b/slic3r-test-out-of-memory.patch
new file mode 100644
index 0000000..63e83b6
--- /dev/null
+++ b/slic3r-test-out-of-memory.patch
@@ -0,0 +1,138 @@
+From: Alessandro Ranellucci <aar at cpan.org>
+Date: Wed, 25 Jun 2014 14:57:06 +0200
+Subject: Fix compilation under 5.20 (untested). #2109
+
+Bug-Debian: #757798
+Bug: https://github.com/alexrj/Slic3r/issues/2109
+Origin: commit:67bf99633e48f9c8a5863b88c2a03fddc1cc247f
+---
+ xs/Build.PL             |  2 +-
+ xs/src/ClipperUtils.cpp |  2 +-
+ xs/src/MultiPoint.cpp   |  4 ++--
+ xs/xsp/TriangleMesh.xsp |  6 ++++--
+ xs/xsp/my.map           | 17 +++++++++++------
+ 5 files changed, 19 insertions(+), 12 deletions(-)
+
+diff --git a/xs/Build.PL b/xs/Build.PL
+index e21df5e..49195d7 100644
+--- a/xs/Build.PL
++++ b/xs/Build.PL
+@@ -30,7 +30,7 @@ my $build = Module::Build::WithXSpp->new(
+     build_requires => {qw(
+         ExtUtils::ParseXS           3.18
+         ExtUtils::Typemap           1.00
+-        ExtUtils::Typemaps::Default 1.03
++        ExtUtils::Typemaps::Default 1.05
+         ExtUtils::XSpp              0.17
+         Module::Build               0.3601
+         Test::More                  0
+diff --git a/xs/src/ClipperUtils.cpp b/xs/src/ClipperUtils.cpp
+index 2989783..240cf3b 100644
+--- a/xs/src/ClipperUtils.cpp
++++ b/xs/src/ClipperUtils.cpp
+@@ -542,7 +542,7 @@ polynode_children_2_perl(const ClipperLib::PolyNode& node)
+ {
+     AV* av = newAV();
+     const unsigned int len = node.ChildCount();
+-    av_extend(av, len-1);
++    if (len > 0) av_extend(av, len-1);
+     for (int i = 0; i < len; ++i) {
+         av_store(av, i, polynode2perl(*node.Childs[i]));
+     }
+diff --git a/xs/src/MultiPoint.cpp b/xs/src/MultiPoint.cpp
+index 47830ce..5da3cb4 100644
+--- a/xs/src/MultiPoint.cpp
++++ b/xs/src/MultiPoint.cpp
+@@ -139,7 +139,7 @@ SV*
+ MultiPoint::to_AV() {
+     const unsigned int num_points = this->points.size();
+     AV* av = newAV();
+-    av_extend(av, num_points-1);
++    if (num_points > 0) av_extend(av, num_points-1);
+     for (unsigned int i = 0; i < num_points; i++) {
+         av_store(av, i, perl_to_SV_ref(this->points[i]));
+     }
+@@ -150,7 +150,7 @@ SV*
+ MultiPoint::to_SV_pureperl() const {
+     const unsigned int num_points = this->points.size();
+     AV* av = newAV();
+-    av_extend(av, num_points-1);
++    if (num_points > 0) av_extend(av, num_points-1);
+     for (unsigned int i = 0; i < num_points; i++) {
+         av_store(av, i, this->points[i].to_SV_pureperl());
+     }
+diff --git a/xs/xsp/TriangleMesh.xsp b/xs/xsp/TriangleMesh.xsp
+index 3338d97..be40543 100644
+--- a/xs/xsp/TriangleMesh.xsp
++++ b/xs/xsp/TriangleMesh.xsp
+@@ -151,10 +151,12 @@ TriangleMesh::slice(z)
+         mslicer.slice(z_f, &layers);
+         
+         AV* layers_av = newAV();
+-        av_extend(layers_av, layers.size()-1);
++        size_t len = layers.size();
++        if (len > 0) av_extend(layers_av, len-1);
+         for (unsigned int i = 0; i < layers.size(); i++) {
+             AV* expolygons_av = newAV();
+-            av_extend(expolygons_av, layers[i].size()-1);
++            len = layers[i].size();
++            if (len > 0) av_extend(expolygons_av, len-1);
+             unsigned int j = 0;
+             for (ExPolygons::iterator it = layers[i].begin(); it != layers[i].end(); ++it) {
+                 av_store(expolygons_av, j++, perl_to_SV_clone_ref(*it));
+diff --git a/xs/xsp/my.map b/xs/xsp/my.map
+index e69ba04..994874d 100644
+--- a/xs/xsp/my.map
++++ b/xs/xsp/my.map
+@@ -235,7 +235,8 @@ T_ARRAYREF
+ 	AV* av = newAV();
+ 	$arg = newRV_noinc((SV*)av);
+ 	sv_2mortal($arg);
+-	av_extend(av, $var.size()-1);
++	const unsigned int len = $var.size();
++	if (len > 0) av_extend(av, len-1);
+ 	int i = 0;
+     for (${type}::const_iterator it = $var.begin(); it != $var.end(); ++it) {
+         av_store(av, i++, perl_to_SV_clone_ref(*it));
+@@ -246,7 +247,8 @@ T_ARRAYREF_PTR
+     AV* av = newAV();
+ 	$arg = newRV_noinc((SV*)av);
+ 	sv_2mortal($arg);
+-	av_extend(av, $var->size()-1);
++	const unsigned int len = $var->size();
++	if (len > 0) av_extend(av, len-1);
+ 	int i = 0;
+     for (${ my $t = $type; $t =~ s/\*$//; \$t }::iterator it = $var->begin(); it != $var->end(); ++it) {
+         av_store(av, i++, perl_to_SV_ref(*it));
+@@ -256,7 +258,8 @@ T_PTR_ARRAYREF_PTR
+     AV* av = newAV();
+     $arg = newRV_noinc((SV*)av);
+     sv_2mortal($arg);
+-    av_extend(av, $var->size()-1);
++	const unsigned int len = $var->size();
++	if (len > 0) av_extend(av, len-1);
+     int i = 0;
+     for (${ my $t = $type; $t =~ s/\*$//; \$t }::iterator it = $var->begin(); it != $var->end(); ++it) {
+         av_store(av, i++, perl_to_SV_ref(**it));
+@@ -266,7 +269,8 @@ T_PTR_ARRAYREF
+     AV* av = newAV();
+ 	$arg = newRV_noinc((SV*)av);
+ 	sv_2mortal($arg);
+-	av_extend(av, $var.size()-1);
++	const unsigned int len = $var.size();
++	if (len > 0) av_extend(av, len-1);
+ 	int i = 0;
+     for (${type}::iterator it = $var.begin(); it != $var.end(); ++it) {
+         av_store(av, i++, (*it)->to_SV());
+@@ -275,8 +279,9 @@ T_PTR_ARRAYREF
+ T_LAYER_HEIGHT_RANGES
+     AV* av = newAV();
+     $arg = newRV_noinc((SV*)av);
+-	sv_2mortal($arg);
+-    av_extend(av, $var.size() - 1);
++    sv_2mortal($arg);
++	const unsigned int len = $var.size();
++	if (len > 0) av_extend(av, len-1);
+     // map is sorted, so we can just copy it in order
+     int i = 0;
+     for (${type}::iterator it = $var.begin(); it != $var.end(); ++it) {
diff --git a/slic3r.appdata.xml b/slic3r.appdata.xml
new file mode 100644
index 0000000..a64b8a4
--- /dev/null
+++ b/slic3r.appdata.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2013 Alessandro Ranellucci <alessandro at unterwelt.it> -->
+<application>
+ <id type="desktop">slic3r.desktop</id>
+ <licence>CC-BY</licence>
+ <summary>G-code generator for 3D printers</summary>
+ <description>
+  <p>Slic3r takes 3D models (STL, OBJ, AMF) and converts them into G-code instructions for 3D printers. It's compatible with any modern printer based on the RepRap toolchain, including all those based on the Marlin, Sprinter and Repetier firmware. It also works with Mach3 and LinuxCNC controllers.</p>
+  <p>Key features are:</p>
+  <ul>
+    <li>additional complete command-line interface to use it with no GUI</li>
+    <li>multi-material (multiple extruders) object printing</li>
+    <li>multiple G-code flavors supported (RepRap, Makerbot, Mach3 etc.)</li>
+    <li>ability to plate multiple objects having distinct print settings</li>
+    <li>multithread processing</li>
+    <li>STL auto-repair (tolerance for broken models)</li>
+  </ul>
+ </description>
+ <screenshots>
+  <screenshot type="default" width="1061" height="595">https://f.cloud.github.com/assets/2401856/1817033/e66d31a0-6f67-11e3-89d5-05c54cc6c8ab.png</screenshot>
+ </screenshots>
+ <url type="homepage">http://slic3r.org/</url>
+ <updatecontact>alessandro at unterwelt.it</updatecontact>
+</application>
diff --git a/slic3r.desktop b/slic3r.desktop
new file mode 100644
index 0000000..b2644fe
--- /dev/null
+++ b/slic3r.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Name=Slic3r
+Exec=slic3r
+Icon=slic3r
+Terminal=false
+Type=Application
+Categories=Graphics;3DGraphics;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/slic3r.git/commitdiff/650c8654dfab3f48520e794bb882417d603f4794



More information about the pld-cvs-commit mailing list