Opened 13 years ago

Closed 13 years ago

#29878 closed defect (fixed)

eigen3 @3.0.1_0 Install does not touch signature_of_eigen3_matrix_library

Reported by: FreddieWitherden (Freddie Witherden) Owned by: eborisch (Eric A. Borisch)
Priority: Normal Milestone:
Component: ports Version: 1.9.2
Keywords: Cc:
Port: eigen3

Description

When installing eigen3 through MacPorts the file signature_of_eigen3_matrix_library is not touched in /opt/local/include/eigen3/.

This file is used by FindEigen3.cmake to locate the install directory of Eigen 3. Without the presence of this file any applications or projects which depend on this behavior will fail to build.

Change History (6)

comment:1 Changed 13 years ago by FreddieWitherden (Freddie Witherden)

Cc: freddie@… added

Cc Me!

comment:2 Changed 13 years ago by jmroot (Joshua Root)

Cc: freddie@… removed
Owner: changed from macports-tickets@… to eborisch@…

Please remember to cc the maintainer. You do not need to be in cc when you are the reporter.

comment:3 Changed 13 years ago by eborisch (Eric A. Borisch)

If eigen3 is installed with the default variants ("headers only") this file is not created. If installed with +configured it will be. This is just following the directions in the eigen3 INSTALL documentation.

A header only install is 'Method 1' from the INSTALL file and is extremely fast (port install eigen3 takes 4s on my machine) and has no dependencies. A configured install is 'Method 2' from the INSTALL file and requires CMAKE and is slower (but still fast -- it takes 1m on my machine, assuming you already have cmake installed)

We could certainly do something custom beyond the INSTALL descriptions, but I'd rather avoid making additional assumptions in the Portfile that have to be re-validated with each new revision.

I can certainly change the default to be configured, and add a header_only variant for those that don't need/want cmake and just want the headers (like me!) if this is causing problems; or perhaps change the variant descriptions to explain the configured mode should be used if you intend to build other CMAKE-based packages that depend on eigen3; perhaps call it cmake_support or something similar...

Suggestions from the crowd?

comment:4 Changed 13 years ago by FreddieWitherden (Freddie Witherden)

I believe that we can just get away with touching the file signature_of_eigen3_matrix_library ourselves, without having to rely on the CMake install script to do it for us. This does not add any additional dependencies to the packages and alleviates all known issues with FindEigen3.cmake.

comment:5 Changed 13 years ago by eborisch (Eric A. Borisch)

The cmake install also creates share/pkgconfig/eigen3.pc. Is this used by CMake at all? (I don't know, but I'm guessing not...) Is there someone out there that assumes the existence of signature_of_eigen3_matrix_library guarantees the existence of eigen3.pc? I can't possibly know, but I don't want to get another bug report later asking why the MacPorts version is broken.

My other concern is that, at some point in the future, upstream could do more with the CMake install script than just creating these two additional files. Rather than have to keep track of this, let's just use the documented methods.

I like having "Method 1" available as (1) it's a documented install method from upstream, and (2) it removes the CMake dep for those that aren't interested.

How about a +no_cmake variant (disabled by default) with a description of "Header-only install: Removes CMake dependency; breaks FindEigen3.cmake" ... and the cmake-based install ("Method 2") as the default install?

comment:6 Changed 13 years ago by eborisch (Eric A. Borisch)

Resolution: fixed
Status: newclosed

Fixed in r79657. Implements changes described in previous comment.

Note: See TracTickets for help on using tickets.