about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMoritz Ulrich <moritz@tarn-vedra.de>2014-11-15 19:22:18 +0100
committerMoritz Ulrich <moritz@tarn-vedra.de>2014-11-15 19:22:59 +0100
commit0fc8d92e53d294f35f63a1898e9b61f3651d0800 (patch)
tree2ff0681b42ce5b9b7bbd6b1cdc2e3b8c8986e16c
parent830141f918aeff324579fb109b09ae9e76450669 (diff)
downloadnixlib-0fc8d92e53d294f35f63a1898e9b61f3651d0800.tar
nixlib-0fc8d92e53d294f35f63a1898e9b61f3651d0800.tar.gz
nixlib-0fc8d92e53d294f35f63a1898e9b61f3651d0800.tar.bz2
nixlib-0fc8d92e53d294f35f63a1898e9b61f3651d0800.tar.lz
nixlib-0fc8d92e53d294f35f63a1898e9b61f3651d0800.tar.xz
nixlib-0fc8d92e53d294f35f63a1898e9b61f3651d0800.tar.zst
nixlib-0fc8d92e53d294f35f63a1898e9b61f3651d0800.zip
slic3r: Bump to 1.2.1
Also adds OpenGL and WxGLCanvas to perlPackages..

OpenGL currently contains some pretty ugly hacks regarding OpenGL
feature-detection. Expect it to fail on different systems.
-rw-r--r--pkgs/applications/misc/slic3r/default.nix13
-rw-r--r--pkgs/applications/misc/slic3r/fix-no-display.patch59
-rw-r--r--pkgs/development/perl-modules/perl-opengl-gl-extensions.txt5
-rw-r--r--pkgs/development/perl-modules/perl-opengl.patch55
-rw-r--r--pkgs/top-level/perl-packages.nix33
5 files changed, 160 insertions, 5 deletions
diff --git a/pkgs/applications/misc/slic3r/default.nix b/pkgs/applications/misc/slic3r/default.nix
index 06a5cca94a8d..a057197a92de 100644
--- a/pkgs/applications/misc/slic3r/default.nix
+++ b/pkgs/applications/misc/slic3r/default.nix
@@ -3,21 +3,20 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "1.1.7";
+  version = "1.2.1";
   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 = "0hss90iw4xwca08d03wrz0fds5nqwb9zjqii2n6rgpcl4km69fka";
+    sha256 = "03xj2kv2d4j6nwmdd5cyghnvjyj4g7g9z0ynynbviyfiplmka2ph";
   };
 
   buildInputs = with perlPackages; [ perl makeWrapper which
     EncodeLocale MathClipper ExtUtilsXSpp BoostGeometryUtils
     MathConvexHullMonotoneChain MathGeometryVoronoi MathPlanePath Moo
     IOStringy ClassXSAccessor Wx GrowlGNTP NetDBus ImportInto XMLSAX
-    ExtUtilsMakeMaker
+    ExtUtilsMakeMaker OpenGL WxGLCanvas
   ];
 
   desktopItem = makeDesktopItem {
@@ -34,12 +33,16 @@ stdenv.mkDerivation rec {
     export SLIC3R_NO_AUTO=true
     export PERL5LIB="./xs/blib/arch/:./xs/blib/lib:$PERL5LIB"
 
+    substituteInPlace Build.PL \
+      --replace "0.9918" "0.9923" \
+      --replace "eval" ""
+
     pushd xs
       perl Build.PL
       perl Build
     popd
 
-    perl Build.PL
+    perl Build.PL --gui
   '';
 
   installPhase = ''
diff --git a/pkgs/applications/misc/slic3r/fix-no-display.patch b/pkgs/applications/misc/slic3r/fix-no-display.patch
new file mode 100644
index 000000000000..b5aeca3a4167
--- /dev/null
+++ b/pkgs/applications/misc/slic3r/fix-no-display.patch
@@ -0,0 +1,59 @@
+diff --git a/Build.PL b/Build.PL
+index 8b21c15..fd3aff0 100644
+--- a/Build.PL
++++ b/Build.PL
+@@ -33,9 +33,6 @@ my $sudo    = grep { $_ eq '--sudo' } @ARGV;
+ my $gui     = grep { $_ eq '--gui' } @ARGV;
+ my $xs_only = grep { $_ eq '--xs' }  @ARGV;
+ if ($gui) {
+-    %prereqs = qw(
+-    Wx                              0.9918
+-    );
+     %recommends = qw(
+     Growl::GNTP                     0.15
+     Wx::GLCanvas                    0
+diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm
+index 842ff44..ea0af64 100644
+--- a/lib/Slic3r/GUI.pm
++++ b/lib/Slic3r/GUI.pm
+@@ -26,7 +26,7 @@ use Slic3r::GUI::OptionsGroup::Field;
+ use Slic3r::GUI::SimpleTab;
+ use Slic3r::GUI::Tab;
+ 
+-our $have_OpenGL = eval "use Slic3r::GUI::PreviewCanvas; 1";
++our $have_OpenGL = 0;
+ 
+ use Wx 0.9901 qw(:bitmap :dialog :icon :id :misc :systemsettings :toplevelwindow
+     :filedialog);
+diff --git a/lib/Slic3r/GUI/Plater/2DToolpaths.pm b/lib/Slic3r/GUI/Plater/2DToolpaths.pm
+index 8e48a72..7bed973 100644
+--- a/lib/Slic3r/GUI/Plater/2DToolpaths.pm
++++ b/lib/Slic3r/GUI/Plater/2DToolpaths.pm
+@@ -90,18 +90,20 @@ sub set_z {
+ package Slic3r::GUI::Plater::2DToolpaths::Canvas;
+ 
+ use Wx::Event qw(EVT_PAINT EVT_SIZE EVT_ERASE_BACKGROUND EVT_IDLE EVT_MOUSEWHEEL EVT_MOUSE_EVENTS);
+-use OpenGL qw(:glconstants :glfunctions :glufunctions);
+-use base qw(Wx::GLCanvas Class::Accessor);
+-use Wx::GLCanvas qw(:all);
+ use List::Util qw(min first);
+ use Slic3r::Geometry qw(scale unscale epsilon);
+ 
+ __PACKAGE__->mk_accessors(qw(print z layers color init dirty bb));
+ 
+-# make OpenGL::Array thread-safe
+-{
+-    no warnings 'redefine';
+-    *OpenGL::Array::CLONE_SKIP = sub { 1 };
++if ($Slic3r::GUI::have_OpenGL) {
++    use OpenGL qw(:glconstants :glfunctions :glufunctions);
++    use Wx::GLCanvas qw(:all);
++    use base qw(Wx::GLCanvas Class::Accessor);
++    # make OpenGL::Array thread-safe
++    {
++        no warnings 'redefine';
++        *OpenGL::Array::CLONE_SKIP = sub { 1 };
++    }
+ }
+ 
+ sub new {
diff --git a/pkgs/development/perl-modules/perl-opengl-gl-extensions.txt b/pkgs/development/perl-modules/perl-opengl-gl-extensions.txt
new file mode 100644
index 000000000000..42df14c40960
--- /dev/null
+++ b/pkgs/development/perl-modules/perl-opengl-gl-extensions.txt
@@ -0,0 +1,5 @@
+GLUT=20801
+VERSION=3.0 Mesa 10.2.6
+VENDOR=Intel Open Source Technology Center
+RENDERER=Mesa DRI Intel(R) Ivybridge Mobile 
+EXTENSIONS=GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_copy_texture GL_EXT_polygon_offset GL_EXT_subtexture GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_compiled_vertex_array GL_EXT_texture GL_EXT_texture3D GL_IBM_rasterpos_clip GL_ARB_point_parameters GL_EXT_draw_range_elements GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_separate_specular_color GL_EXT_texture_edge_clamp GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_ARB_framebuffer_sRGB GL_ARB_multitexture GL_EXT_framebuffer_sRGB GL_IBM_multimode_draw_arrays GL_IBM_texture_mirrored_repeat GL_3DFX_texture_compression_FXT1 GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_transpose_matrix GL_EXT_blend_func_separate GL_EXT_fog_coord GL_EXT_multi_draw_arrays GL_EXT_secondary_color GL_EXT_texture_env_add GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_INGR_blend_func_separate GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_S3_s3tc GL_SUN_multi_draw_arrays GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_EXT_framebuffer_object GL_EXT_texture_compression_s3tc GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_MESA_window_pos GL_NV_packed_depth_stencil GL_NV_texture_rectangle GL_ARB_depth_texture GL_ARB_occlusion_query GL_ARB_shadow GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_mirrored_repeat GL_ARB_window_pos GL_ATI_envmap_bumpmap GL_EXT_stencil_two_side GL_EXT_texture_cube_map GL_NV_depth_clamp GL_APPLE_packed_pixels GL_APPLE_vertex_array_object GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_vertex_program GL_ARB_vertex_shader GL_ATI_draw_buffers GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_MESA_pack_invert GL_NV_primitive_restart GL_ARB_depth_clamp GL_ARB_fragment_program_shadow GL_ARB_half_float_pixel GL_ARB_occlusion_query2 GL_ARB_point_sprite GL_ARB_shading_language_100 GL_ARB_sync GL_ARB_texture_non_power_of_two GL_ARB_vertex_buffer_object GL_ATI_blend_equation_separate GL_EXT_blend_equation_separate GL_OES_read_format GL_ARB_color_buffer_float GL_ARB_pixel_buffer_object GL_ARB_texture_compression_rgtc GL_ARB_texture_float GL_ARB_texture_rectangle GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_shared_exponent GL_ARB_framebuffer_object GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_packed_depth_stencil GL_APPLE_object_purgeable GL_ARB_vertex_array_object GL_ATI_separate_stencil GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_gpu_program_parameters GL_EXT_texture_array GL_EXT_texture_integer GL_EXT_texture_sRGB_decode GL_EXT_timer_query GL_OES_EGL_image GL_AMD_performance_monitor GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_draw_instanced GL_ARB_half_float_vertex GL_ARB_instanced_arrays GL_ARB_map_buffer_range GL_ARB_texture_rg GL_ARB_texture_swizzle GL_ARB_vertex_array_bgra GL_EXT_texture_swizzle GL_EXT_vertex_array_bgra GL_NV_conditional_render GL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_ARB_ES2_compatibility GL_ARB_blend_func_extended GL_ARB_debug_output GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_explicit_attrib_location GL_ARB_fragment_coord_conventions GL_ARB_provoking_vertex GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_shader_texture_lod GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_multisample GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_uniform_buffer_object GL_ARB_vertex_type_2_10_10_10_rev GL_EXT_provoking_vertex GL_EXT_texture_snorm GL_MESA_texture_signed_rgba GL_ARB_get_program_binary GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ARB_conservative_depth GL_ARB_internalformat_query GL_ARB_map_buffer_alignment GL_ARB_shader_atomic_counters GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_texture_storage GL_ARB_transform_feedback_instanced GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_transform_feedback GL_AMD_shader_trinary_minmax GL_ARB_ES3_compatibility GL_ARB_clear_buffer_object GL_ARB_invalidate_subdata GL_ARB_texture_query_levels GL_ARB_texture_storage_multisample GL_ARB_texture_view GL_ARB_vertex_attrib_binding GL_KHR_debug GL_ARB_buffer_storage GL_ARB_multi_bind GL_ARB_texture_mirror_clamp_to_edge GL_ARB_vertex_type_10f_11f_11f_rev GL_EXT_shader_integer_mix GL_INTEL_performance_query 
diff --git a/pkgs/development/perl-modules/perl-opengl.patch b/pkgs/development/perl-modules/perl-opengl.patch
new file mode 100644
index 000000000000..77bba1efa41c
--- /dev/null
+++ b/pkgs/development/perl-modules/perl-opengl.patch
@@ -0,0 +1,55 @@
+diff --git a/Makefile.PL b/Makefile.PL
+index 55c485c..8501c02 100644
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -116,12 +116,7 @@ if ($^O eq 'MSWin32' || $IS_W32API)
+ # Look for available libs
+ our @libdirs = qw
+ {
+-  -L/usr/lib
+-  -L/usr/X11R6/lib
+-  -L/usr/local/lib
+-  -L/usr/openwin/lib
+-  -L/opt/csw/lib
+-  -L/usr/local/freeglut/lib
++  @@libpaths@@
+ };
+ 
+ our @check_libs = qw
+@@ -764,7 +759,6 @@ sub get_extensions
+   my $exc_file = 'gl_exclude.h';
+   unlink($exc_file) if (-e $exc_file);
+   my $glv_file = 'utils/glversion.txt';
+-  unlink($glv_file) if (-e $glv_file);
+ 
+   # Only run the rest if GLUT is installed
+   print "Testing GLUT version\n" if ($verbose);
+@@ -817,7 +811,7 @@ sub get_extensions
+     $make_ver = ";make -f Makefile " .  (length($lib) ? "GLUT_LIB=$lib " : "") . (length($def) ? "GLUT_DEF=$def " : "");
+     print "glversion: '$make_ver'\n" if $verbose>1;
+   }
+-  my $exec = 'cd utils'."$make_ver clean".$make_ver;
++  my $exec = 'cd utils'.$make_ver;
+   print "glversion: $exec\n" if ($verbose);
+   my $stat = `$exec`;
+   print "\n$stat\n\n" if ($verbose);
+diff --git a/utils/Makefile b/utils/Makefile
+index 910dcaf..1b1ac57 100644
+--- a/utils/Makefile
++++ b/utils/Makefile
+@@ -21,14 +21,13 @@ EXTRALIBS=-lGLU -lXi -lXmu -lXext -lX11 -lm
+ all: glversion.txt
+ 
+ glversion.txt: glversion
+-	./glversion > glversion.txt
++	echo "skipping build of glversion.txt"
+ 
+ glversion: glversion.o
+ 	${LINK} glversion.o ${LDFLAGS} ${EXTRALIBS} -o glversion
+ 	chmod u+x glversion
+ 
+ clean:
+-	rm -f glversion.txt
+ 	rm -f glversion
+ 	rm -f glversion.o
+ 
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 41aa51daa750..c930be076c88 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -6833,6 +6833,29 @@ let self = _self // overrides; _self = with self; {
     };
   };
 
+  OpenGL = buildPerlPackage rec {
+    name = "OpenGL-0.6703";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/C/CH/CHM/${name}.tar.gz";
+      sha256 = "0k2k8zg84qj1ry77i9dvmfdfpg13s6117wy5bc4nvnzv37qcvy32";
+    };
+
+    buildInputs = with pkgs; [ mesa mesa_glu freeglut xlibs.libX11 xlibs.libXi xlibs.libXmu xlibs.libXext xdummy ];
+
+    patches = [ ../development/perl-modules/perl-opengl.patch ];
+
+    configurePhase = ''
+      substituteInPlace Makefile.PL \
+        --replace "@@libpaths@@" '${stdenv.lib.concatStringsSep "\n" (map (f: "-L${f}/lib") buildInputs)}'
+
+      cp -v ${../development/perl-modules/perl-opengl-gl-extensions.txt} utils/glversion.txt
+
+      perl Makefile.PL PREFIX=$out INSTALLDIRS=site $makeMakerFlags
+    '';
+
+    doCheck = false;
+  };
+
   NetOpenIDCommon = buildPerlPackage rec {
     name = "Net-OpenID-Common-1.18";
     src = fetchurl {
@@ -9953,6 +9976,16 @@ let self = _self // overrides; _self = with self; {
     doCheck = false;
   };
 
+  WxGLCanvas = buildPerlPackage rec {
+    name = "Wx-GLCanvas-0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MB/MBARBON/${name}.tar.gz";
+      sha256 = "1q4gvj4gdx4l8k4mkgiix24p9mdfy1miv7abidf0my3gy2gw5lka";
+    };
+    propagatedBuildInputs = [ Wx OpenGL pkgs.mesa_glu ];
+    doCheck = false;
+  };
+
   X11Protocol = buildPerlPackage rec {
     name = "X11-Protocol-0.56";
     src = fetchurl {