easybuilders / easybuild-easyconfigs

A collection of easyconfig files that describe which software to build using which build options with EasyBuild.
https://easybuild.io
GNU General Public License v2.0
359 stars 688 forks source link

LAMMPS install fails sanity check due to missing Python bindings #19823

Closed cgross95 closed 5 months ago

cgross95 commented 5 months ago

I am working on an install of LAMMPS using a modified EasyConfig (attached here: LAMMPS-21Nov2023-foss-2022b-kokkos-CUDA-12.1.1.eb.txt). The primary modifications I've made include

I believe that I am able to get everything to successfully configure and build, but the build fails at the sanity-check stage with

== 2024-02-08 16:08:35,094 build_log.py:171 ERROR EasyBuild crashed with an error
(at easybuild/tools/build_log.py:111 in caller_info): Sanity check failed: no (non-empty)
directory found at 'lib/python3.10/site-packages' in
/opt/software/LAMMPS/21Nov2023-foss-2022b-kokkos-CUDA-12.1.1

All subsequent Python sanity checks fail because they are trying to import the non-existent lammps module that should be in the site-packages.

I'm confused though because I can't find anywhere in the EasyBlock that actually installs the lammps Python module using the methods described in the LAMMPS documentation. The optional PYTHON LAMMPS package is enabled in the EasyConfig I am using, but it appears that this only enables calling Python from LAMMPS (not vice versa which is what the lammps Python module should do).

One other relevant piece of information is that we are attempting to build on top of EESSI. As such, our EasyBuild configuration is as follows:

buildpath            (E) = /tmp/eessi-build.X8XL08xHUe/easybuild/build
containerpath        (E) = /tmp/eessi-build.X8XL08xHUe/easybuild/containers
debug                (E) = True
experimental         (E) = True
filter-deps          (E) = Autoconf, Automake, Autotools, binutils, bzip2, DBus, flex, gettext, gperf, help2man, intltool, libreadline, libtool, M4, makeinfo, ncurses, util-linux, XZ, zlib, Yasm
filter-env-vars      (E) = LD_LIBRARY_PATH
hooks                (E) = /mnt/home/grosscra/software-layer/eb_hooks.py
ignore-osdeps        (E) = True
installpath          (E) = /opt
module-extensions    (E) = True
packagepath          (E) = /tmp/eessi-build.X8XL08xHUe/easybuild/packages
prefix               (E) = /tmp/eessi-build.X8XL08xHUe/easybuild
read-only-installdir (E) = True
repositorypath       (E) = /tmp/eessi-build.X8XL08xHUe/easybuild/ebfiles_repo
robot-paths          (D) = /cvmfs/software.eessi.io/versions/2023.06/software/linux/aarch64/neoverse_v1/software/EasyBuild/4.9.0/easybuild/easyconfigs
rpath                (E) = True
sourcepath           (E) = /tmp/eessi-build.X8XL08xHUe/easybuild/sources:
sysroot              (E) = /cvmfs/software.eessi.io/versions/2023.06/compat/linux/aarch64
trace                (E) = True
zip-logs             (E) = bzip2
branfosj commented 5 months ago

The LAMMPS install process has changed. For previous versions make install installed the Python bindings. For a recent release this was changed so that make install-python is needed to install these. There is an easyblocks PR that will add this extra step and also update the kokkos cpu mappings: https://github.com/easybuilders/easybuild-easyblocks/pull/3036

laraPPr commented 5 months ago

You will also need a patch to lammps for the easyblock to work. You can find the patch in this PR: easybuilders/easybuild-easyconfigs#19471

cgross95 commented 5 months ago

Perfect, thank you both for the help. That resolved the issue. I am now stuck at the same point as the most recent test in #19471, so I will follow along there.