[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#43654] [PATCH] Add perl-opengl
From: |
Malte Frank Gerdes |
Subject: |
[bug#43654] [PATCH] Add perl-opengl |
Date: |
Fri, 02 Oct 2020 19:59:41 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Thanks for looking into the patch :)
>I think we can assume that the same MIT license in the root directory of
>the nixpkgs repository also applies to the unmarked files in the
>repository.
Ok.
>I suppose the purpose of this glversion.txt is to avoid reproducibility
>issues? I see it was added as a "pretty ugly hack" in the nixpkgs
>repository [1].
Yes, exactly. I also noticed, that it doesn't matter what the VENDOR and
RENDERER variables contain, it seems that it doesn't get used anyway.
>(Interestingly enough, this text file doesn't seem to
>cause me any issues, even though my computer doesn't support OpenGL 3.0,
>so I guess it's fine.)
I guess it would cause issues once a program tries to use OpenGL
extensions which are not supported on a given computer, otherwise it
shouldn't make any difference. As i understand it this file is supposed
to contain a minimum of OpenGL extensions which are widely available, so
that this (hopefully™) won't happen.
>At the top of the makefile patch, could you add a brief explanation of
>the purpose of the patch and/or link to the source of the patch? It
>makes the patch much more maintainable, and you can find examples of
>this throughout the gnu/packages/patches subdirectory in the Guix
>repository.
Done.
>There's a minor parenthesis accounting mistake on the lines above. If
>you delete the last right parenthesis, the indentation issue should be
>fixed and the code should compile.
snap, it seems i made a mistake in magit while adding this line...
>I almost missed this note on my first review! Please place the package
>definition somewhere in the file so that it leaves the file in some sort
>of alphabetical order.
Yes, after closer inspection of that file i found the order - everything
was mixed at the end so i didn't see it.
>I'd name the above phase "patch-makefiles" since you've patched multiple
>files, but that's just me. ;-)
Makes sense 😁.
So i hope i have addressed all things you mentioned.
Malte
diff --git a/gnu/local.mk b/gnu/local.mk
index f3b5b17e84..001b249e9e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -37,6 +37,7 @@
# Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
# Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
# Copyright © 2020 Martin Becze <mjbecze@riseup.net>
+# Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
#
# This file is part of GNU Guix.
#
@@ -1406,6 +1407,7 @@ dist_patch_DATA =
\
%D%/packages/patches/pam-mount-luks2-support.patch \
%D%/packages/patches/pango-skip-libthai-test.patch \
%D%/packages/patches/pciutils-hurd-configure.patch \
+ %D%/packages/patches/perl-opengl-makefile.patch \
%D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch \
%D%/packages/patches/samba-fix-fcntl-hint-detection.patch \
%D%/packages/patches/sdl-pango-api_additions.patch \
diff --git a/gnu/packages/aux-files/perl-opengl/glversion.txt
b/gnu/packages/aux-files/perl-opengl/glversion.txt
new file mode 100644
index 0000000000..5b5a9a911f
--- /dev/null
+++ b/gnu/packages/aux-files/perl-opengl/glversion.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/gnu/packages/patches/perl-opengl-makefile.patch
b/gnu/packages/patches/perl-opengl-makefile.patch
new file mode 100644
index 0000000000..2f5afd95f8
--- /dev/null
+++ b/gnu/packages/patches/perl-opengl-makefile.patch
@@ -0,0 +1,41 @@
+This patch substitutes the harcoded library Paths from Makefile.PL to make it
+easier to insert the store paths.
+It also removes the generation of utils/glversion.txt , because it gets
+statically copied anyway to not rely on the build machines capabilities.
+diff --git a/Makefile.PL b/Makefile.PL
+index d32205d..3e8fa0a 100755
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -124,14 +124,7 @@ if ($IS_MINGW)
+ # Look for available libs
+ our @libdirs = qw
+ {
+- -L/usr/lib
+- -L/usr/lib/i386-linux-gnu
+- -L/usr/X11R6/lib
+- -L/opt/X11/lib
+- -L/usr/local/lib
+- -L/usr/openwin/lib
+- -L/opt/csw/lib
+- -L/usr/local/freeglut/lib
++@@libdirs@@
+ };
+
+ our @check_libs = qw
+@@ -804,7 +797,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);
+@@ -861,7 +853,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/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 1c3d999d79..853968f5f1 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -27,6 +27,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,6 +50,7 @@
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
@@ -74,7 +76,8 @@
#:use-module (gnu packages sdl)
#:use-module (gnu packages textutils)
#:use-module (gnu packages video)
- #:use-module (gnu packages web))
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages xorg))
;;;
;;; Please: Try to add new module packages in alphabetic order.
@@ -7870,6 +7873,64 @@ technology to store hierarchical information such as
links to other
documents within a single file.")
(license (package-license perl))))
+(define-public perl-opengl
+ (package
+ (name "perl-opengl")
+ (version "0.70")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://cpan/authors/id/C/CH/CHM/OpenGL-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1q3lz168q081iwl9jg21fbzhp9la79gav9mv6nmh2jab83s2l3mj"))
+ (patches (search-patches "perl-opengl-makefile.patch"))))
+ (build-system perl-build-system)
+ (native-inputs
+ `(("xvfb" ,xorg-server-for-tests)
+ ("glversion-txt" ,(local-file "aux-files/perl-opengl/glversion.txt"))))
+ (inputs `(("mesa" ,mesa)
+ ("glu" ,glu)
+ ("freeglut" ,freeglut)
+ ("libxi" ,libxi)
+ ("libxmu" ,libxmu)
+ ("libice" ,libice)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'patch-makefiles
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "Makefile.PL"
+ (("^@@libdirs@@")
+ (string-concatenate
+ (map (lambda (input)
+ (string-append "-L" (cdr input) "/lib\n"))
+ inputs))))
+ (substitute* "utils/Makefile"
+ (("^all: glversion.txt") "all:"))
+ #t))
+ (add-before 'configure 'inject-glversion
+ (lambda* (#:key inputs #:allow-other-keys)
+ (copy-file (assoc-ref inputs "glversion-txt")
+ "utils/glversion.txt")
+ #t))
+ (add-before 'check 'pre-check
+ (lambda _
+ ;; Tests require a running X server.
+ (system "Xvfb :1 &")
+ (setenv "DISPLAY" ":1")
+ #t))
+ )))
+ (home-page "https://metacpan.org/release/OpenGL";)
+ (synopsis
+ "Perl bindings to the OpenGL API, GLU, and GLUT/FreeGLUT")
+ (description "The package provides Perl bindings to OpenGL, GLU
+and FreeGLUT.")
+ (license (package-license perl))))
+
(define-public perl-package-anon
(package
(name "perl-package-anon")
- [bug#43654] [PATCH] Add perl-opengl, Kei Kebreau, 2020/10/02
- [bug#43654] [PATCH] Add perl-opengl,
Malte Frank Gerdes <=
- [bug#43654] [PATCH] Add perl-opengl, Andreas Enge, 2020/10/02
- [bug#43654] [PATCH] Add perl-opengl, Malte Frank Gerdes, 2020/10/02
- [bug#43654] [PATCH] Add perl-opengl, Andreas Enge, 2020/10/04
- [bug#43654] [PATCH] Add perl-opengl, Malte Frank Gerdes, 2020/10/04
- [bug#43654] [PATCH] Add perl-opengl, Malte Frank Gerdes, 2020/10/04
- [bug#43654] [PATCH] Add perl-opengl, Andreas Enge, 2020/10/05
- [bug#43654] [PATCH] Add perl-opengl, Andreas Enge, 2020/10/05
- [bug#43654] [PATCH] Add perl-opengl, Andreas Enge, 2020/10/05
- [bug#43654] [PATCH] Add perl-opengl, Malte Frank Gerdes, 2020/10/05