package/eigen: use cmake-package infra
authorJulien Olivain <juju@cotds.org>
Mon, 15 Jun 2020 18:49:11 +0000 (20:49 +0200)
committerYann E. MORIN <yann.morin.1998@free.fr>
Tue, 16 Jun 2020 06:50:56 +0000 (08:50 +0200)
The eigen package was introduced as a generic package, but upstream was
in fact using CMake.

The motivation of this change is to fix package detection with CMake.

Eigen3 library normally installs a signature file named
"signature_of_eigen3_matrix_library" to help library detection:
https://gitlab.com/libeigen/eigen/-/blob/3.3.7/CMakeLists.txt#L423

The library also provide a CMake macro that use this file to
detect it:
https://gitlab.com/libeigen/eigen/-/blob/3.3.7/cmake/FindEigen3.cmake#L76

Without the signature file installed, packages searching for this
library with this method will fail. Other packages usings pkg-config are
not affected by this issue.

By using the cmake-package infrastructure, all the needed files
are now installed, fixing this CMake detection issue.

Other changes in this patch:
- Updated the Eigen git repository to the new url:
  https://gitlab.com/libeigen/eigen
- Removed all build and install staging commands
  (now included in upstream cmake)
- Package needs EIGEN_SUPPORTS_IN_SOURCE_BUILD = NO
- Removed the BR2_PACKAGE_EIGEN_UNSUPPORTED_MODULES option,
  as this option is not proposed by the upstream CMake.
  Unsupported module header files are now unconditionally installed. As
  such, no need to introduce a legacy entry for
  BR2_PACKAGE_EIGEN_UNSUPPORTED_MODULES: users that had it enabled will
  still get the files installed, while those that did not will get them
  installed now.
- Updated hash for source package, because the first component in the
  stored paths changed from eigen-eigen-323c052e1731/ to eigen-3.3.7/
  and some mercurial related files (.hg_archival.txt, .hgtags) got
  dropped after the conversion to git.
- Reformat hash file with two spaces delimiters
- Define EIGEN_CONF_OPTS to set pkg-config .pc install path

Signed-off-by: Julien Olivain <juju@cotds.org>
Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
package/eigen/Config.in
package/eigen/eigen.hash
package/eigen/eigen.mk

index 48752e0c8dafe7af30d7e37c1190d976028694c7..ef0a16f2f7e1e5c6c702a6547a7306b3e495d498 100644 (file)
@@ -13,13 +13,5 @@ config BR2_PACKAGE_EIGEN
 
          http://eigen.tuxfamily.org/
 
-if BR2_PACKAGE_EIGEN
-
-config BR2_PACKAGE_EIGEN_UNSUPPORTED_MODULES
-       bool "unsupported modules"
-       help
-         Install eigen unsupported modules
-endif
-
 comment "eigen needs a toolchain w/ C++"
        depends on !BR2_INSTALL_LIBSTDCPP
index e5c8404022b01ada80649564e1192efff0324620..5ec561ad1085ad7168ad214cd435bd0fe2577544 100644 (file)
@@ -1,8 +1,8 @@
 # Locally computed
-sha256 9f13cf90dedbe3e52a19f43000d71fdf72e986beb9a5436dddcd61ff9d77a3ce 3.3.7.tar.bz2
-sha256 4f877e5ae4672568ef82cfd0023e2cef4a7cf55d867ab249efc9569a7eb9e5b1 COPYING.BSD
-sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.GPL
-sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL
-sha256 f5b330efdad110cdd84d585ec61220b0650461fa599e36b13e1726c9346dcfb9 COPYING.MINPACK
-sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 COPYING.MPL2
-sha256 c83230b770f17ef1386ea1fd3681271dd98aa93646bdbfb5bff3a1b7050fff9d COPYING.README
+sha256  685adf14bd8e9c015b78097c1dc22f2f01343756f196acdc76a678e1ae352e11  eigen-3.3.7.tar.bz2
+sha256  4f877e5ae4672568ef82cfd0023e2cef4a7cf55d867ab249efc9569a7eb9e5b1  COPYING.BSD
+sha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING.GPL
+sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL
+sha256  f5b330efdad110cdd84d585ec61220b0650461fa599e36b13e1726c9346dcfb9  COPYING.MINPACK
+sha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  COPYING.MPL2
+sha256  c83230b770f17ef1386ea1fd3681271dd98aa93646bdbfb5bff3a1b7050fff9d  COPYING.README
index 5c9e0284422bd4cb41b66e7c99e6f2f436883c96..16454897176b2253057f4941b2b243288f7a7e5c 100644 (file)
@@ -5,38 +5,16 @@
 ################################################################################
 
 EIGEN_VERSION = 3.3.7
-EIGEN_SOURCE = $(EIGEN_VERSION).tar.bz2
-EIGEN_SITE = https://bitbucket.org/eigen/eigen/get
+EIGEN_SOURCE = eigen-$(EIGEN_VERSION).tar.bz2
+EIGEN_SITE = https://gitlab.com/libeigen/eigen/-/archive/$(EIGEN_VERSION)
 EIGEN_LICENSE = MPL2, BSD-3-Clause, LGPL-2.1
 EIGEN_LICENSE_FILES = COPYING.MPL2 COPYING.BSD COPYING.LGPL COPYING.README
 EIGEN_INSTALL_STAGING = YES
 EIGEN_INSTALL_TARGET = NO
-EIGEN_DEST_DIR = $(STAGING_DIR)/usr/include/eigen3
+EIGEN_SUPPORTS_IN_SOURCE_BUILD = NO
 
-ifeq ($(BR2_PACKAGE_EIGEN_UNSUPPORTED_MODULES),y)
-define EIGEN_INSTALL_UNSUPPORTED_MODULES_CMDS
-       mkdir -p $(EIGEN_DEST_DIR)/unsupported
-       cp -a $(@D)/unsupported/Eigen $(EIGEN_DEST_DIR)/unsupported
-endef
-endif
+# Default Eigen CMake installs .pc file in /usr/share/pkgconfig
+# change it to /usr/lib/pkgconfig, to be consistent with other packages.
+EIGEN_CONF_OPTS = -DPKGCONFIG_INSTALL_DIR=/usr/lib/pkgconfig
 
-# Generate the .pc file at build time
-define EIGEN_BUILD_CMDS
-       sed -r -e 's,^Version: .*,Version: $(EIGEN_VERSION),' \
-               -e 's,^Cflags: .*,Cflags: -I$$\{prefix\}/include/eigen3,' \
-               -e 's,^prefix.*,prefix=/usr,' \
-               $(@D)/eigen3.pc.in >$(@D)/eigen3.pc
-endef
-
-# This package only consists of headers that need to be
-# copied over to the sysroot for compile time use
-define EIGEN_INSTALL_STAGING_CMDS
-       $(RM) -r $(EIGEN_DEST_DIR)
-       mkdir -p $(EIGEN_DEST_DIR)
-       cp -a $(@D)/Eigen $(EIGEN_DEST_DIR)
-       $(EIGEN_INSTALL_UNSUPPORTED_MODULES_CMDS)
-       $(INSTALL) -D -m 0644 $(@D)/eigen3.pc \
-               $(STAGING_DIR)/usr/lib/pkgconfig/eigen3.pc
-endef
-
-$(eval $(generic-package))
+$(eval $(cmake-package))