From 6a10ce129926783d3cae55eb68fe38da279ba451 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Thu, 12 Sep 2024 17:04:20 +0200 Subject: [PATCH] adding easyconfigs: Ghostscript-10.03.1-GCCcore-13.3.0.eb, HarfBuzz-9.0.0-GCCcore-13.3.0.eb, ImageMagick-7.1.1-38-GCCcore-13.3.0.eb, Pango-1.54.0-GCCcore-13.3.0.eb, JasPer-4.2.4-GCCcore-13.3.0.eb and patches: HarfBuzz-9.0.0_fix-subset-test.patch, ImageMagick-7.1.1-38_fix-linking.patch --- .../Ghostscript-10.03.1-GCCcore-13.3.0.eb | 58 +++++++++++++++++++ .../HarfBuzz/HarfBuzz-9.0.0-GCCcore-13.3.0.eb | 51 ++++++++++++++++ .../HarfBuzz-9.0.0_fix-subset-test.patch | 26 +++++++++ .../ImageMagick-7.1.1-38-GCCcore-13.3.0.eb | 50 ++++++++++++++++ .../ImageMagick-7.1.1-38_fix-linking.patch | 27 +++++++++ .../j/JasPer/JasPer-4.2.4-GCCcore-13.3.0.eb | 36 ++++++++++++ .../p/Pango/Pango-1.54.0-GCCcore-13.3.0.eb | 41 +++++++++++++ 7 files changed, 289 insertions(+) create mode 100644 easybuild/easyconfigs/g/Ghostscript/Ghostscript-10.03.1-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0_fix-subset-test.patch create mode 100644 easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38_fix-linking.patch create mode 100644 easybuild/easyconfigs/j/JasPer/JasPer-4.2.4-GCCcore-13.3.0.eb create mode 100644 easybuild/easyconfigs/p/Pango/Pango-1.54.0-GCCcore-13.3.0.eb diff --git a/easybuild/easyconfigs/g/Ghostscript/Ghostscript-10.03.1-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/Ghostscript/Ghostscript-10.03.1-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..174aec3f5151 --- /dev/null +++ b/easybuild/easyconfigs/g/Ghostscript/Ghostscript-10.03.1-GCCcore-13.3.0.eb @@ -0,0 +1,58 @@ +easyblock = 'ConfigureMake' + +name = 'Ghostscript' +version = '10.03.1' + +homepage = 'https://ghostscript.com' +description = """Ghostscript is a versatile processor for PostScript data with the ability to render PostScript to + different targets. It used to be part of the cups printing stack, but is no longer used for that.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +source_urls = [ + 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs%s/' % version.replace('.', ''), +] +sources = [SOURCELOWER_TAR_GZ] +checksums = ['31cd01682ad23a801cc3bbc222a55f07c4ea3e068bdfb447792d54db21a2e8ad'] + +builddependencies = [ + ('binutils', '2.42'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('zlib', '1.3.1'), + ('libpng', '1.6.43'), + ('freetype', '2.13.2'), + ('libjpeg-turbo', '3.0.1'), + ('expat', '2.6.2'), + ('GLib', '2.80.4'), + ('cairo', '1.18.0'), + ('LibTIFF', '4.6.0'), +] + +# Do not use local copies of zlib, jpeg, freetype, and png +preconfigopts = 'mv zlib zlib.no && mv jpeg jpeg.no && mv freetype freetype.no && ' +preconfigopts += 'mv libpng libpng.no && export LIBS="$LIBS -L$EBROOTZLIB/lib -lz" && ' +configopts = "--with-system-libtiff --enable-dynamic --disable-hidden-visibility" + +# also build and install shared libs +build_cmd_targets = ['', 'so'] +installopts = 'soinstall' + +postinstallcmds = [ + # install header files + "mkdir -p %(installdir)s/include/%(namelower)s", + "install -v -m644 base/*.h %(installdir)s/include/%(namelower)s", + "install -v -m644 psi/*.h %(installdir)s/include/%(namelower)s", +] + +sanity_check_paths = { + 'files': ['bin/gs', 'lib/libgs.%s' % SHLIB_EXT], + 'dirs': ['lib/%(namelower)s', 'include/%(namelower)s', 'share/man'], +} + +sanity_check_commands = ["gs --help"] + +moduleclass = 'tools' diff --git a/easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..40540c3fcdca --- /dev/null +++ b/easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0-GCCcore-13.3.0.eb @@ -0,0 +1,51 @@ +easyblock = 'MesonNinja' + +name = 'HarfBuzz' +version = '9.0.0' + +homepage = 'https://www.freedesktop.org/wiki/Software/HarfBuzz' +description = """HarfBuzz is an OpenType text shaping engine.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +github_account = 'harfbuzz' +source_urls = [GITHUB_SOURCE] +sources = ['%(version)s.tar.gz'] +patches = ['HarfBuzz-9.0.0_fix-subset-test.patch'] +checksums = [ + {'9.0.0.tar.gz': 'b7e481b109d19aefdba31e9f5888aa0cdfbe7608fed9a43494c060ce1f8a34d2'}, + {'HarfBuzz-9.0.0_fix-subset-test.patch': '1635505c27c312dca507863f2a865eb88d42e35ff4cc241cfa0e90c0ade8b790'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('GObject-Introspection', '1.80.1'), + ('pkgconf', '2.2.0'), + ('Ninja', '1.12.1'), + ('Meson', '1.4.0'), + ('fonttools', '4.53.1'), # For tests +] + +dependencies = [ + ('GLib', '2.80.4'), + ('ICU', '75.1'), + ('cairo', '1.18.0'), + ('freetype', '2.13.2'), +] + +configopts = '--default-library=both' # static and shared library +configopts += ' -Dgobject=enabled -Dintrospection=enabled' +configopts += ' -Dglib=enabled' +configopts += ' -Dicu=enabled' +configopts += ' -Dcairo=enabled' +configopts += ' -Dfreetype=enabled' + +runtest = 'meson' +testopts = 'test -C %(builddir)s/easybuild_obj -t 60' + +sanity_check_paths = { + 'files': ['lib/libharfbuzz.%s' % SHLIB_EXT, 'bin/hb-view'], + 'dirs': [] +} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0_fix-subset-test.patch b/easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0_fix-subset-test.patch new file mode 100644 index 000000000000..25a2b619fc8e --- /dev/null +++ b/easybuild/easyconfigs/h/HarfBuzz/HarfBuzz-9.0.0_fix-subset-test.patch @@ -0,0 +1,26 @@ +The test "feature_variation_instance_collect_lookups" fails when run in environments +where the decimal separator is not a dot ("."). +Fix this by using the C locale. +See https://github.com/harfbuzz/harfbuzz/pull/4857 + +Author: Alexander Grund (TU Dresden) + +diff --git a/test/subset/run-tests.py b/test/subset/run-tests.py +index 9e09d95d1d9..c0c256d8974 100755 +--- a/test/subset/run-tests.py ++++ b/test/subset/run-tests.py +@@ -135,10 +135,13 @@ def check_ots (path): + + has_ots = has_ots() + ++env = os.environ.copy() ++env['LC_ALL'] = 'C' + process = subprocess.Popen ([hb_subset, '--batch'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, +- stderr=sys.stdout) ++ stderr=sys.stdout, ++ env=env) + + fails = 0 + for path in args: diff --git a/easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38-GCCcore-13.3.0.eb b/easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..776471b14b20 --- /dev/null +++ b/easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38-GCCcore-13.3.0.eb @@ -0,0 +1,50 @@ +easyblock = 'ConfigureMake' + +name = 'ImageMagick' +version = '7.1.1-38' + +homepage = 'https://www.imagemagick.org/' +description = "ImageMagick is a software suite to create, edit, compose, or convert bitmap images" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = ['https://github.com/%(name)s/%(name)s/archive/'] +sources = ['%(version)s.tar.gz'] +patches = ['ImageMagick-7.1.1-38_fix-linking.patch'] +checksums = [ + {'7.1.1-38.tar.gz': '5e449530ccec8b85ae2bfd1ad773184fb7a4737d40fd9439db8a5d4beee4403e'}, + {'ImageMagick-7.1.1-38_fix-linking.patch': '0fbe8e3b6621e3e0d1efec59949fecb45924bc6e65851b9b6399bb3eff8d55d9'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('pkgconf', '2.2.0'), +] +dependencies = [ + ('bzip2', '1.0.8'), + ('X11', '20240607'), + ('Ghostscript', '10.03.1'), + ('JasPer', '4.2.4'), + ('libjpeg-turbo', '3.0.1'), + ('LibTIFF', '4.6.0'), + ('LittleCMS', '2.16'), + ('Pango', '1.54.0'), + ('pixman', '0.43.4'), + ('FriBidi', '1.0.15'), +] + +preconfigopts = 'PKG_CONFIG=$EBROOTPKGCONF/bin/pkgconf' +configopts = "--with-gslib --with-x" + +sanity_check_paths = { + 'files': ['bin/magick'], + 'dirs': ['etc/%(name)s-%(version_major)s', 'include/%(name)s-%(version_major)s', 'lib', 'share'], +} + +sanity_check_commands = [ + 'magick --help', +] + +modextravars = {'MAGICK_HOME': '%(installdir)s'} + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38_fix-linking.patch b/easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38_fix-linking.patch new file mode 100644 index 000000000000..2c9d54a4ac02 --- /dev/null +++ b/easybuild/easyconfigs/i/ImageMagick/ImageMagick-7.1.1-38_fix-linking.patch @@ -0,0 +1,27 @@ +The configure script sets this to a path inside the install location which is empty during build. +However this path(s) is/are used by the compiler/linker to find libraries. `pkg-config` used during configure assumes this is the same during build as on invocation of itself and omits any path already contained in the variable. + +This combination causes build failures due to dependent libraries not being found in the link step unless there happens to be some other way the paths get pulled in. E.g. if HarfBuzz is built using (the deprecated) configure&make it has `*.la` files which contain the required link flags. If HarfBuzz is built using the new Meson build system those files are no longer present and the linker paths will be missing. + +As there doesn't seem to be a specific reason for the variable to be set to an empty directory in the Makefile just remove it. + +See https://github.com/ImageMagick/ImageMagick/pull/7613 + +Author: Alexander Grund (TU Dresden) + +--- + Makefile.in | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 47b78566f0c..3a9761cfd5b 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -3288,7 +3288,6 @@ LIBOBJS = @LIBOBJS@ + LIBOPENJP2_CFLAGS = @LIBOPENJP2_CFLAGS@ + LIBOPENJP2_LIBS = @LIBOPENJP2_LIBS@ + LIBRARY_EXTRA_CPPFLAGS = @LIBRARY_EXTRA_CPPFLAGS@ +-LIBRARY_PATH = @LIBRARY_PATH@ + LIBS = @LIBS@ + LIBSTDCLDFLAGS = @LIBSTDCLDFLAGS@ + LIBTOOL = @LIBTOOL@ diff --git a/easybuild/easyconfigs/j/JasPer/JasPer-4.2.4-GCCcore-13.3.0.eb b/easybuild/easyconfigs/j/JasPer/JasPer-4.2.4-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..14ce45ca6adc --- /dev/null +++ b/easybuild/easyconfigs/j/JasPer/JasPer-4.2.4-GCCcore-13.3.0.eb @@ -0,0 +1,36 @@ +easyblock = 'CMakeMake' + +name = 'JasPer' +version = '4.2.4' + +homepage = 'https://www.ece.uvic.ca/~frodo/jasper/' + +description = """ + The JasPer Project is an open-source initiative to provide a free + software-based reference implementation of the codec specified in + the JPEG-2000 Part-1 standard. +""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} +toolchainopts = {'pic': True} + +github_account = 'jasper-software' +source_urls = [GITHUB_SOURCE] +sources = ['version-%(version)s.tar.gz'] +checksums = ['23a3d58cdeacf3abdf9fa1d81dcefee58da6ab330940790c0f27019703bfd2cd'] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), +] + +configopts = '-DJAS_ENABLE_DOC=OFF ' + +sanity_check_paths = { + 'files': ['bin/jasper', ('lib/libjasper.%s' % SHLIB_EXT, 'lib64/libjasper.%s' % SHLIB_EXT)], + 'dirs': ['include'], +} + +sanity_check_commands = ['jasper --version'] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/p/Pango/Pango-1.54.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/p/Pango/Pango-1.54.0-GCCcore-13.3.0.eb new file mode 100644 index 000000000000..cfbbc1eb16b7 --- /dev/null +++ b/easybuild/easyconfigs/p/Pango/Pango-1.54.0-GCCcore-13.3.0.eb @@ -0,0 +1,41 @@ +easyblock = 'MesonNinja' + +name = 'Pango' +version = '1.54.0' + +homepage = 'https://pango.gnome.org/' +description = """Pango is a library for laying out and rendering of text, with an emphasis on internationalization. +Pango can be used anywhere that text layout is needed, though most of the work on Pango so far has been done in the +context of the GTK+ widget toolkit. Pango forms the core of text and font handling for GTK+-2.x.""" + +toolchain = {'name': 'GCCcore', 'version': '13.3.0'} + +source_urls = [FTPGNOME_SOURCE] +sources = [SOURCELOWER_TAR_XZ] +checksums = ['8a9eed75021ee734d7fc0fdf3a65c3bba51dfefe4ae51a9b414a60c70b2d1ed8'] + +builddependencies = [ + ('binutils', '2.42'), + ('Meson', '1.4.0'), + ('Ninja', '1.12.1'), + ('GObject-Introspection', '1.80.1'), + ('pkgconf', '2.2.0'), +] + +dependencies = [ + ('X11', '20240607'), + ('GLib', '2.80.4'), + ('cairo', '1.18.0'), + ('HarfBuzz', '9.0.0'), + ('FriBidi', '1.0.15'), +] + +configopts = "--buildtype=release --default-library=both " + +sanity_check_paths = { + 'files': ['bin/pango-view', 'lib/libpango-1.0.%s' % SHLIB_EXT, 'lib/libpangocairo-1.0.%s' % SHLIB_EXT, + 'lib/libpangoft2-1.0.%s' % SHLIB_EXT, 'lib/libpangoxft-1.0.%s' % SHLIB_EXT], + 'dirs': [], +} + +moduleclass = 'vis'