Skip to content

Conversation

@Crivella
Copy link
Contributor

@Crivella Crivella commented May 22, 2025

New EC files for GraphicsMagick and foss/2023a with potential fix for

If from the discussion on the PR/Issue it is decided this is the proper way to go we should apply the change to enable both static and shared builds (+ sanity checks)

# When building Octave, mixing rpathed shared libraries with libGraphicsMagick++.a will cause the check on the library
# to fail due to missing symbols. The default previously was to build the static library only.
configure_opts = '--enable-shared --enable-static'

also to

GraphicsMagick-1.3.45-GCCcore-13.3.0.eb

@github-actions
Copy link

github-actions bot commented May 22, 2025

Updated software GraphicsMagick-1.3.45-GCCcore-12.3.0.eb

Diff against GraphicsMagick-1.3.45-GCCcore-13.3.0.eb

easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-13.3.0.eb

diff --git a/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-13.3.0.eb b/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-12.3.0.eb
index e87e666c36..19209004f4 100644
--- a/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-13.3.0.eb
+++ b/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-12.3.0.eb
@@ -6,7 +6,7 @@ version = '1.3.45'
 homepage = 'http://www.graphicsmagick.org/'
 description = """GraphicsMagick is the swiss army knife of image processing."""
 
-toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
 toolchainopts = {'pic': True}
 
 source_urls = [
@@ -24,21 +24,21 @@ checksums = [
 ]
 
 builddependencies = [
-    ('binutils', '2.42'),
-    ('Autotools', '20231222'),
+    ('binutils', '2.40'),
+    ('Autotools', '20220317'),
 ]
 
 dependencies = [
-    ('X11', '20240607'),
+    ('X11', '20230603'),
     ('bzip2', '1.0.8'),
-    ('freetype', '2.13.2'),
-    ('libpng', '1.6.43'),
-    ('libjpeg-turbo', '3.0.1'),
-    ('LibTIFF', '4.6.0'),
-    ('libxml2', '2.12.7'),
-    ('XZ', '5.4.5'),
-    ('zlib', '1.3.1'),
-    ('Ghostscript', '10.03.1'),
+    ('freetype', '2.13.0'),
+    ('libpng', '1.6.39'),
+    ('libjpeg-turbo', '2.1.5.1'),
+    ('LibTIFF', '4.5.0'),
+    ('libxml2', '2.11.4'),
+    ('XZ', '5.4.2'),
+    ('zlib', '1.2.13'),
+    ('Ghostscript', '10.01.2'),
 ]
 
 # When building Octave, mixing rpathed shared libraries with libGraphicsMagick++.a will cause the check on the library
Diff against GraphicsMagick-1.3.36-GCCcore-11.2.0.eb

easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.36-GCCcore-11.2.0.eb

diff --git a/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.36-GCCcore-11.2.0.eb b/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-12.3.0.eb
index 33c2b9373b..19209004f4 100644
--- a/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.36-GCCcore-11.2.0.eb
+++ b/easybuild/easyconfigs/g/GraphicsMagick/GraphicsMagick-1.3.45-GCCcore-12.3.0.eb
@@ -1,51 +1,67 @@
 easyblock = 'ConfigureMake'
 
 name = 'GraphicsMagick'
-version = '1.3.36'
+version = '1.3.45'
 
 homepage = 'http://www.graphicsmagick.org/'
 description = """GraphicsMagick is the swiss army knife of image processing."""
 
-toolchain = {'name': 'GCCcore', 'version': '11.2.0'}
+toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
 toolchainopts = {'pic': True}
 
 source_urls = [
     SOURCEFORGE_SOURCE,
     'ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/%(version_major_minor)s/',
 ]
-sources = [SOURCE_TAR_GZ]
+sources = [SOURCE_TAR_XZ]
 patches = [
-    'GraphicsMagick_pkgconfig_libtiff.patch'
+    'GraphicsMagick-12.3.0_pkgconfig_libtiff-4.patch'
 ]
 checksums = [
-    '1e6723c48c4abbb31197fadf8396b2d579d97e197123edc70a4f057f0533d563',  # GraphicsMagick-1.3.36.tar.gz
-    '25b4c5361f30e23c809a078ac4b26e670d2b8341496323480037e2095d969294',  # GraphicsMagick_pkgconfig_libtiff.patch
+    {'GraphicsMagick-1.3.45.tar.xz': 'dcea5167414f7c805557de2d7a47a9b3147bcbf617b91f5f0f4afe5e6543026b'},
+    {'GraphicsMagick-12.3.0_pkgconfig_libtiff-4.patch':
+     'f3f900bcc4797f12ff3e2df0fc9eb67c0cc4e532531e200b8d283988f298fa48'},
 ]
 
 builddependencies = [
-    ('binutils', '2.37'),
-    ('Autotools', '20210726'),
+    ('binutils', '2.40'),
+    ('Autotools', '20220317'),
 ]
 
 dependencies = [
-    ('X11', '20210802'),
+    ('X11', '20230603'),
     ('bzip2', '1.0.8'),
-    ('freetype', '2.11.0'),
-    ('libpng', '1.6.37'),
-    ('libjpeg-turbo', '2.0.6'),
-    ('LibTIFF', '4.3.0'),
-    ('libxml2', '2.9.10'),
-    ('XZ', '5.2.5'),
-    ('zlib', '1.2.11'),
-    ('Ghostscript', '9.54.0'),
+    ('freetype', '2.13.0'),
+    ('libpng', '1.6.39'),
+    ('libjpeg-turbo', '2.1.5.1'),
+    ('LibTIFF', '4.5.0'),
+    ('libxml2', '2.11.4'),
+    ('XZ', '5.4.2'),
+    ('zlib', '1.2.13'),
+    ('Ghostscript', '10.01.2'),
 ]
 
+# When building Octave, mixing rpathed shared libraries with libGraphicsMagick++.a will cause the check on the library
+# to fail due to missing symbols. The default previously was to build the static library only.
+configure_opts = '--enable-shared --enable-static'
+
 modextrapaths = {MODULE_LOAD_ENV_HEADERS: ['include/GraphicsMagick']}
 
 sanity_check_paths = {
-    'files': ['bin/gm', 'lib/libGraphicsMagick.a', 'lib/libGraphicsMagick++.a',
-              'lib/libGraphicsMagickWand.a'],
+    'files': [
+        'bin/gm',
+        'lib/libGraphicsMagick.a',
+        'lib/libGraphicsMagick++.a',
+        'lib/libGraphicsMagickWand.a',
+        'lib/libGraphicsMagick.so',
+        'lib/libGraphicsMagick++.so',
+        'lib/libGraphicsMagickWand.so'
+    ],
     'dirs': ['include/GraphicsMagick', 'lib/pkgconfig'],
 }
 
+sanity_check_commands = [
+    "grep 'libtiff-4' %(installdir)s/lib/pkgconfig/GraphicsMagick.pc",
+]
+
 moduleclass = 'vis'

@Crivella
Copy link
Contributor Author

Test report by @Crivella
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.12
See https://gist.github.com/Crivella/ca71c520dd38832bf5dcf77cdac44ca7 for a full test report.

@Crivella
Copy link
Contributor Author

@boegelbot please test @ jsc-zen3
EB_ARGS="--installpath /tmp/$USER/pr22930"

@Crivella Crivella added this to the release after 5.1.0 milestone May 22, 2025
@boegelbot
Copy link
Collaborator

@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=22930 EB_ARGS="--installpath /tmp/$USER/pr22930" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_22930 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 6426

Test results coming soon (I hope)...

Details

- notification for comment with ID 2900581753 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.5, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/0f21cff19f4c73ed932805e60eb06613 for a full test report.

@Crivella Crivella changed the title {vis}[GCCcore/12.3.0] Added GraphicMagick-1.3.45 EC for GCCcore-12.3.0 with potential fix for Octave {vis}[GCCcore/12.3.0,GCCcore/13.3.0] Added GraphicMagick-1.3.45 EC for GCCcore-12.3.0 + fix for #22927 May 22, 2025
@Crivella
Copy link
Contributor Author

Crivella commented May 22, 2025

Test report by @Crivella
FAILED
Build succeeded for 1 out of 2 (2 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.12
See https://gist.github.com/Crivella/d5a2d5960ede9e3aad60719578251cad for a full test report.

Notes

This can serve as an example of the pkg-config error that will happen if the libtiff is used in the .pc file instead of libtiff-4

@Crivella
Copy link
Contributor Author

Test report by @Crivella
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.12
See https://gist.github.com/Crivella/cd44a60f42443408c269666439c4e8ff for a full test report.

@Crivella
Copy link
Contributor Author

@boegelbot please test @ jsc-zen3
EB_ARGS="--installpath /tmp/$USER/pr22930"

@boegelbot
Copy link
Collaborator

@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=22930 EB_ARGS="--installpath /tmp/$USER/pr22930" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_22930 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 6427

Test results coming soon (I hope)...

Details

- notification for comment with ID 2900823237 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.5, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/933299bce9a94ad1bdd11d2f333992ad for a full test report.

@Crivella
Copy link
Contributor Author

Test report by @Crivella
SUCCESS
Build succeeded for 3 out of 3 (3 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.12
See https://gist.github.com/Crivella/93a5479975d07ce02a42bb4806c94d36 for a full test report.

@Crivella Crivella changed the title {vis}[GCCcore/12.3.0,GCCcore/13.3.0] Added GraphicMagick-1.3.45 EC for GCCcore-12.3.0 + fix for #22927 {vis}[GCCcore/12.3.0,GCCcore/13.3.0] Added GraphicsMagick-1.3.45 EC for GCCcore-12.3.0 + fix for #22927 May 22, 2025
@Crivella Crivella added 2023a 2024a issues & PRs related to 2024a common toolchains labels May 22, 2025
Comment on lines 62 to 70
sanity_check_commands = [
"pkg-config --cflags GraphicsMagick",
"pkg-config --cflags GraphicsMagick++",
"pkg-config --cflags GraphicsMagickWand",
]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you're relying on the OS having pkg-config installed here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now I've added the pkgconf to the normal dependencies (70e1fd8), by looking at the code I do not see an easy way to have an equivalent of builddependencies for sanity checks.
As far as i understand, the dependencies for the sanity check are pulled in through the creation of a fake module, which filters out the deps marked as build_only

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, build dependencies won't be loaded anymore during sanity check (and that's intentional).

I guess we could consider introducing a concept like sanity_check_deps, i.e. extra module that should be loaded only during the sanity check (not by the module that's generated).

You could look into easybuilders/easybuild-framework#4766 for inspiration for that

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would just suffice to check that the .pc files exist rather than complicating things.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that the patch file is adding a required dependency to LibTIFF which before was done by looking for libtiff.pc but as far back as i could check it should be libtiff-4.pc (not sure if the foss 2020b versiona ctually required libtiff.pc).
This was causing the pkgconfig command to fail eg during the installation of Octave.
I am not sure we should be checking the pkgconfig of a separate package than the installation manually?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe just do a grep on libtiff-4 in the pc file?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess i also wanted to future-proof this against changes in the LibTIFF dependency, but that could make sense since it would require also changing the patch files 🤔

@boegelbot
Copy link
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 4 out of 4 (4 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.5, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/f564b0954e97dba2f992dbc93c7b8042 for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented May 22, 2025

Running another local test after 70e1fd8

This was also tested in

as a dependency for Octave

@Crivella
Copy link
Contributor Author

Test report by @Crivella
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.12
See https://gist.github.com/Crivella/68e38d5e6df1cbe01d2020cc10af356b for a full test report.

@Crivella Crivella force-pushed the feature-GraphicMagick branch from b6bb277 to f9f9039 Compare June 10, 2025 09:40
@Crivella
Copy link
Contributor Author

Switched to using grep as suggested by @smoors .
Atleast now we have a check to make sure the patch is implementing the proper dep in the pc files.

This package is only used in Octave and before the configuration check for it was failing and just ~silently disabling the related features in Octave without raising an error

@Crivella
Copy link
Contributor Author

@boegelbot please test @ jsc-zen3
EB_ARGS="--installpath /tmp/$USER/pr22930"

@Crivella
Copy link
Contributor Author

Test report by @Crivella
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/ef6daefca18459ebcc1da1839d18047e for a full test report.

@boegelbot
Copy link
Collaborator

@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=22930 EB_ARGS="--installpath /tmp/$USER/pr22930" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_22930 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 6650

Test results coming soon (I hope)...

Details

- notification for comment with ID 2958438990 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@boegelbot
Copy link
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.5, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/2bec06c5240ce93de622351c7479eb52 for a full test report.

@Crivella
Copy link
Contributor Author

Test report by @Crivella
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/479aea62290c9f5dc9644b2685e709f8 for a full test report.

Copy link
Member

@ocaisa ocaisa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ocaisa
Copy link
Member

ocaisa commented Jul 10, 2025

@boegelbot please test @ jsc-zen3
EB_ARGS="--installpath /tmp/$USER/pr22930"

@boegelbot
Copy link
Collaborator

@ocaisa: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=22930 EB_ARGS="--installpath /tmp/$USER/pr22930" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_22930 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 7208

Test results coming soon (I hope)...

Details

- notification for comment with ID 3057347414 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@ocaisa
Copy link
Member

ocaisa commented Jul 10, 2025

Test report by @ocaisa
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
LAPTOP-O6HF2IKC - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz, Python 3.11.4
See https://gist.github.com/ocaisa/5fe35830af1b1ab70d14a2d5a54f9385 for a full test report.

@boegelbot
Copy link
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in total)
jsczen3c2.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.5, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/d643f7b554e8057f2294f1469a2e2c27 for a full test report.

@ocaisa
Copy link
Member

ocaisa commented Jul 10, 2025

I can only test a single version locally as I miss the rest of the stack, but in general things look good, thanks @Crivella

@ocaisa ocaisa merged commit ca5dddb into easybuilders:develop Jul 10, 2025
8 checks passed
@Crivella Crivella deleted the feature-GraphicMagick branch July 10, 2025 13:29
@boegel boegel changed the title {vis}[GCCcore/12.3.0,GCCcore/13.3.0] Added GraphicsMagick-1.3.45 EC for GCCcore-12.3.0 + fix for #22927 {vis}[GCCcore/12.3.0,GCCcore/13.3.0] Added GraphicsMagick-1.3.45 EC for GCCcore-12.3.0 + fix pkgconfig file for GraphicsMagick 1.3.45 Jul 31, 2025
@boegel boegel changed the title {vis}[GCCcore/12.3.0,GCCcore/13.3.0] Added GraphicsMagick-1.3.45 EC for GCCcore-12.3.0 + fix pkgconfig file for GraphicsMagick 1.3.45 {vis}[GCCcore/12.3.0,GCCcore/13.3.0] GraphicsMagick v1.3.45 for GCCcore-12.3.0 + use patch to fix pkgconfig file for GraphicsMagick 1.3.45 Jul 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2023a 2024a issues & PRs related to 2024a common toolchains bug fix change update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Octave configure script fails to pick up statically compiled GraphicsMagick library GraphicsMagick pkg-config fails due to misnamed libtiff-4.pc file

7 participants