szcompressor / SZ

Error-bounded Lossy Data Compressor (for floating-point/integer datasets)
http://szcompressor.org
Other
155 stars 56 forks source link

CMake error for module libzstd #62

Closed Wout12345 closed 4 years ago

Wout12345 commented 4 years ago

During the installation process, when running cmake .. -DCMAKE_INSTALL_PREFIX:PATH=<path>, I get the following error:

-- Checking for one of the modules 'libzstd'
CMake Error at sz/CMakeLists.txt:90 (install):
  install TARGETS given target "zstd" which does not exist in this directory.

-- Configuring incomplete, errors occurred!

Am I missing some library I should have installed first? I didn't see anything about dependencies in the user guide ...

disheng222 commented 4 years ago

I tested the installation using cmake on different linux/unix machines, which is normal to me.

FYI, in the [rootdir]/CMakeLists.txt, the compile tried to find the existing zstd installed on your machine. If found, it will use that libzstd, but if your existing libzstd is problematic (r.g., missing libzstd.so), I believe it will encounter an issue. If existing zstd cannot be found, SZ package has an embedded zstd code, which will be compiled and linked. Maybe you can check if the existing zstd you installed on your machine has any problems.

Before fixing the cmake issue for you, I suggest you to use autotool to compile SZ. That is, you can execute './configure --prefix=pwd/sz-install; make; make install' to compile it.

robertu94 commented 4 years ago

@Wout12345 I wrote the CMake support for SZ. If I recall correctly, this issue arises when using older version of CMake. SZ has a bundled version of libzstd which is supposed to be used when libzstd is not installed; however versions of cmake before 3.13 have limited features to automatically switch between these.

To further diagnosis this problem, can you please send us the following information:

uname -a
cat /etc/os-release
cmake --version
cmake -L $BUILD_DIR
pkg-config --libs libzstd

Another possible option is to install SZ via spack which will guarantee that all of the dependencies are installed correctly.

Wout12345 commented 4 years ago

Thank you for your replies. The issue is probably caused by of my old CMake installation (3.10.2). However, I only use this machine for work and don't have root access to it, so I won't be able to update it myself. Yet, the installation process using autotools seems to have worked, so I'll go with that for now.

In case it's still helpful, here's the information you requested @robertu94:

Linux tucker 4.15.0-117-generic #118-Ubuntu SMP Fri Sep 4 20:02:41 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
cmake version 3.10.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).
-- Checking for one of the modules 'libzstd'
CMake Error at sz/CMakeLists.txt:90 (install):
  install TARGETS given target "zstd" which does not exist in this directory.

-- Configuring incomplete, errors occurred!
See also "/export/home1/home/wouterb/Documents/Research/SZ/cmake-build/CMakeFiles/CMakeOutput.log".
-- Cache values
BUILD_CTAGS:BOOL=OFF
BUILD_DOCKER_CONTAINERS:BOOL=OFF
BUILD_FORTRAN:BOOL=OFF
BUILD_HDF5_FILTER:BOOL=OFF
BUILD_NETCDF_READER:BOOL=OFF
BUILD_PASTRI:BOOL=OFF
BUILD_PYTHON_WRAPPER:BOOL=OFF
BUILD_RANDOMACCESS:BOOL=OFF
BUILD_SHARED_LIBS:BOOL=ON
BUILD_TESTS:BOOL=OFF
BUILD_TIMECMPR:BOOL=OFF
CMAKE_BUILD_TYPE:STRING=Release
CMAKE_INSTALL_PREFIX:PATH=/export/home1/home/wouterb/Documents/Research/SZ/cmake-build
Package libzstd was not found in the pkg-config search path.
Perhaps you should add the directory containing `libzstd.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libzstd' found
robertu94 commented 4 years ago

@Wout12345 just as you can “install” and use SZ without admin privileges, it is also possible to do the same with CMake and or Spack. In fact, spack is a package manager specifically designed to run as an unprivileged user and can be used for SZ

If you are okay, we’ll close this issue. I’ll talk to Sheng offline about how to best document the CMake issue.