Missing header when updating

I’m trying to update psi4 using
cd …/psi4
git pull
cd build
but the make fails because of a missing header
#include <libderiv/libderiv.h>
in psi4/psi4/src/psi4/libmints/eri.h
Should this have worked, or am I doing something wrong? The make seems to proceed satisfactorily up to this point.

We changed the version of libderiv we used in March. Try conda update libint -c psi4 to get the version used by post-March Psi, and then repeat make. Let us know if that doesn’t work.

Thanks for the suggestion, but I’m not using conda – I originally set psi4 up using git clone, cmake and make. Shouldn’t the current git version reflect the change to libderiv?

I don’t know the build system well enough to talk about how Psi decides which if any version of libderiv to download. This sounds like a question for @loriab

Our grand update in March consisted of using the libderiv header from where everyone else puts it include/libderiv/libderiv.h rather than our special install loc include/libint/libderiv.h. If you literally cp stage/include/libint/libderiv.h stage/include/libderiv/ (may have to make the new dir), then remake, it should work nicely. Post if it doesn’t. The conda package Jonathon mentioned also works universally because I put the header in both locations, so any Psi4 source is happy. Sorry for the trouble.

Oh, and the reason the target libint git version didn’t have to change was because the different install loc was passed to the buildsys as an option – no change to libint itself. https://github.com/psi4/psi4/pull/1572/files

The make works fine with libderiv.h copied into stage/include/libderiv/, but I don’t understand why it’s necessary. The link in the last message implies that the cmake step has to be repeated. Is that usual?

It’s necessary because for years (before 2016) had bundled the libint source as a tarball within the psi4 source. In our source we chose to install the deriv header to include/libint/libderiv.h. When we wrote the CMake, I foolishly chose to not change the #include <libint/libderiv.h> in psi but instead to have a special cmake option to put the header into libint/ instead of libderiv/ as Valeev intended. This worked fine for libint compiled for psi but required patching when packagers build a libint for general downstream. So I finally had psi join the rest of the world and look for #include <libderiv/libderiv.h> at the cost of a bit of upheaval in the psi world.

make, cmake, install are complications to a very simple cp remedy. After anything that gets past the libmints compile, you’re home free.