Opened 4 years ago

Closed 2 years ago

Last modified 2 years ago

#60696 closed defect (fixed)

gdcm @3.0.5: fatal error: 'CharLS/charls.h' file not found

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Priority: Normal Milestone:
Component: ports Version: 2.6.2
Keywords: Cc: Veence (Vincent)
Port: gdcm, charls

Description

gdcm does not build with charls 2.1.0:

/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_science_gdcm/gdcm/work/gdcm-3.0.5/Utilities/gdcm_charls.h:21:11: fatal error: 'CharLS/charls.h' file not found
# include <CharLS/charls.h>
          ^

This makes sense since the buildbot workers use a case-sensitive filesystem and the file provided by charls 2.1.0 is charls/charls.h not CharLS/charls.h.

gdcm used to build successfully with charls 2.0.0 e.g. this log from 10.13. There the configure output says:

-- Found CHARLS: /opt/local/lib/libCharLS.dylib

What appears to have happened is that charls changed the capitalization of its include directory and library between 2.0.0 and 2.1.0. In 2.0.0, it's CharLS; in 2.1.0, it's charls.

Was this change in capitalization intentional? I don't see it mentioned in the charls 2.1.0 release notes. Nothing changed in the portfile between 2.0.0 and 2.1.0 to account for this. Veence, can you figure this out, maybe ask the developers of charls and determine which capitalization they intend to use from now on? Then we can make sure the charls port uses that capitalization in its include dir and library name. Then we can revbump and modify all ports that use charls to use that capitalization.

Attachments (1)

gdcm_charls.h.patch (357 bytes) - added by bal-agates 2 years ago.
Patch for gdcm_charls.h changing case of include folder name.

Download all attachments as: .zip

Change History (5)

comment:1 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)

Vince committed [bcc04bf03c5f6579a5a1a85ff795eb9785b2642c/macports-ports] to allow gdal to compile against the new charls. I guess that means we've decided that the change made in charls 2.1.0 is desired and will remain? If so, gdcm needs to be changed as well.

comment:2 Changed 2 years ago by bal-agates

In the CharLS GitHub repository I could not find a specific commit that changed the directory name from include/CharLS to include/charls. Too many commits to sift through and I am not certain what to look for. CharLS tags have the following dates

2.0.0 = 5/18/2016
2.1.0 = 12/29/2019
2.2.0 = 1/10/2021

What I have observed in the current project is that all includes within the CharLS project (unittest, test, fuzztest and samples directories) are lower case of the form

#include <charls/*.h>

from this I would infer that is the defacto standard.

The gdcm SourceForge project latest version is 3.0.10, several versions beyond the MacPorts 3.0.5, but it still contains

./Utilities/gdcm_charls.h:# include <CharLS/charls.h>

I am attaching a patch file for gdcm_charls.h that changes the case. If someone gets inspired this could be added to the gdcm project and it might fix the builtbot problem and any other filesystem that is case sensitive.

Changed 2 years ago by bal-agates

Attachment: gdcm_charls.h.patch added

Patch for gdcm_charls.h changing case of include folder name.

comment:3 Changed 2 years ago by Schamschula (Marius Schamschula)

Resolution: fixed
Status: assignedclosed

In 7390c3b1e6a65c5134ba31a3091b5d6a30bb8241/macports-ports (master):

y

gdcm: update to 3.0.10

Closes: #60697
Closes: #60696
See: #64033

comment:4 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

In c8ada3ffc55de3d2a1719dedd7a9ca6d259a55d6/macports-ports (master):

gdcm: Fix build on case-sensitive filesystems

See: #60696
Closes: #64765

Note: See TracTickets for help on using tickets.