Source: scalapack
Version: 2.2.1-2
Severity: serious

Hi,

I'm building a package that can use scalapack; it uses cmake as build
system and fails configuring as such:

|dh_auto_configure --                                   \
|       -DCMAKE_BUILD_TYPE=             \
|       -DBUILD_SHARED_LIBS=NO                          \
|       -DBUILD_TESTING=YES                             \
|       -DENABLE_SCALAPACK_MPI=YES
|       cd obj-x86_64-linux-gnu && DEB_PYTHON_INSTALL_LAYOUT=deb cmake
|-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None
|-DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var
|-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON
|-DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF
|-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON
|-DFETCHCONTENT_FULLY_DISCONNECTED=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run
|"-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON
|-DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_BUILD_TYPE=
|-DBUILD_SHARED_LIBS=NO -DBUILD_TESTING=YES -DENABLE_SCALAPACK_MPI=YES ..
|-- Setting build type to Release as none was set
|-- Will use the mpi_f08 Fortran module
|CMake Error at
|/usr/lib/cmake/scalapack-2.2.1.openmpi/scalapack-targets.cmake:93
|(message):
|  The imported target "scalapack" references the file
|
|     "/usr/lib/libscalapack-openmpi.so.2.2.1"
|
|  but this file does not exist.  Possible reasons include:
|
|  * The file was deleted, renamed, or moved to another location.
|
|  * An install or uninstall procedure did not complete successfully.
|
|  * The installation package was faulty and contained
|
|     "/usr/lib/cmake/scalapack-2.2.1.openmpi/scalapack-targets.cmake"
|
|  but not all the files it references.
|
|Call Stack (most recent call first):
|  /usr/lib/cmake/scalapack-2.2.1.openmpi/scalapack-config.cmake:2
|(include)
|  CMakeLists.txt:61 (find_package)

Looking at
/usr/lib/cmake/scalapack-2.2.1.openmpi/scalapack-targets-none.cmake it
does not take multiarch into account:

|# grep PREFIX.*openmpi 
/usr/lib/cmake/scalapack-2.2.1.openmpi/scalapack-targets-none.cmake
|  IMPORTED_LOCATION_NONE "${_IMPORT_PREFIX}/lib/libscalapack-openmpi.so.2.2.1"
|list(APPEND _cmake_import_check_files_for_scalapack 
"${_IMPORT_PREFIX}/lib/libscalapack-openmpi.so.2.2.1" )

If I add (see attached patch), the build goes fine. I have not looked so
far at what it would take to change in the scalapack build system to fix
this.


Michael


-- System Information:
Debian Release: 10.13
  APT prefers oldoldstable-updates
  APT policy: (500, 'oldoldstable-updates'), (500, 'oldoldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-22-amd64 (SMP w/2 CPU cores)
Kernel taint flags: TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
--- /usr/lib/cmake/scalapack-2.2.1.openmpi/scalapack-targets-none.cmake	2023-09-15 11:27:13.423032655 +0000
+++ /usr/lib/cmake/scalapack-2.2.1.openmpi/scalapack-targets-none.cmake.new	2023-09-15 11:26:56.347447809 +0000
@@ -8,12 +8,12 @@
 # Import target "scalapack" for configuration "None"
 set_property(TARGET scalapack APPEND PROPERTY IMPORTED_CONFIGURATIONS NONE)
 set_target_properties(scalapack PROPERTIES
-  IMPORTED_LOCATION_NONE "${_IMPORT_PREFIX}/lib/libscalapack-openmpi.so.2.2.1"
+  IMPORTED_LOCATION_NONE "${_IMPORT_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}/libscalapack-openmpi.so.2.2.1"
   IMPORTED_SONAME_NONE "libscalapack-openmpi.so.2.2"
   )
 
 list(APPEND _cmake_import_check_targets scalapack )
-list(APPEND _cmake_import_check_files_for_scalapack "${_IMPORT_PREFIX}/lib/libscalapack-openmpi.so.2.2.1" )
+list(APPEND _cmake_import_check_files_for_scalapack "${_IMPORT_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}/libscalapack-openmpi.so.2.2.1" )
 
 # Commands beyond this point should not need to know the version.
 set(CMAKE_IMPORT_FILE_VERSION)

Reply via email to