case-sensitivity issue with ${cmake_share_module_dir} and probably ${qt_cmake_module_dir}

Michael Dickens michaelld at macports.org
Mon Feb 9 11:25:17 PST 2015


Hi René - We have tried to get the use of [Mm]odules to be just with
'M', since that's the way CMake does it internally. We fixed the CMake
PortGroup a while back, and I'd guess that most of the projects using it
have been rev-bumped since then -- and, most of them now correctly
install into the ${prefix}/share/cmake/Modules directory on
case-sensitive file systems (note: so long as the install is -within-
the ${prefix}/share/cmake directory for "name/NameConfig.cmake"-style
installs, the project ("name" in this case) should be found by CMake; we
need to name the specific directory for the older Find*.cmake form of
finding packages). That said, there are likely some ports out there that
either ignore MacPorts' settings, or have not been rev-bumped, or some
such elk -- such that they do not "do the right thing" with respect to
where they install their CMake files. I'd guess that -most- of the ports
installing CMake files "do the right thing" by now; when someone comes
upon one that needs fixing, I hope a ticket is opened to get it fixed. I
actively push back upstream fixes such as these, generally with good
results -- most devs seem to be happy to make generic changes that add
flexibility while maintaing defaults. - MLD

On Mon, Feb 9, 2015, at 11:26 AM, René J.V. Bertin wrote:
> I just stumbled across yet another example of something going wrong with
> path case in binary packages, for unclear reasons. A port I'm working on
> warned it couldn't find a dependency, and after a bit of searching I saw
> I have
> 
> /opt/local/share/cmake/modules
> /opt/local/share/cmake/Modules
> 
> which are of course 2 different directories on case-sensitive
> filesystems. 
> The lower-case directory contains only a cmake file for Eigen3 (installed
> through a binary package), whereas the other contains cmake files for a
> number of packages I installed from source. My own MacPorts tree sits on
> a case-sensitive filesystem (but my bootdisk is case-insensitive).
> 
> %> fgrep odules
> /opt/local/var/macports/sources/svn.macports.org/trunk/dports/_resources/port1.0/group/cmake-1.0.tcl
> # standard place to install extra CMake modules
> set cmake_share_module_dir ${prefix}/share/cmake/Modules
> %> fgrep odules
> /opt/local/site-ports/_resources/port1.0/group/qt4-1.0.tcl
>     set qt_cmake_module_dir ${prefix}/share/cmake/Modules
> 
> I understand that the buildslaves run on a case-sensitive filesystem too,
> so I'd expect Eigen3's .cmake file to be in a directory called
> share/cmake/Modules. Yet when I check:
> 
> %> tar -xvf
> /opt/local/var/macports/software/eigen3/eigen3-3.2.2_0.darwin_13.noarch.tbz2
> |& fgrep odules
> x ./opt/local/share/cmake/modules/
> x ./opt/local/share/cmake/modules/FindEigen3.cmake
> 
> This one is just as annoying as the earlier reported ports that use mixed
> case on headerfile directories (and the headers themselves).
> 
> It there are build logs for individual packages online I'd love to take a
> peek, but I half suspect to see nothing odd in there.


More information about the macports-dev mailing list