Building without packages
Posted: 30 Sep 2026, 02:52
I'm looking to build a few variants of elegant, so I thought I'd double check to see if there's a neater solution to the problem I've encountered:
I'm building this on an HPC system (a RHEL variant, so rpm-based), and the pre-requirement to install several rpms on every compute node in the cluster is counter to best practice - doing that for every application we install would lead to very large node build images, which we want to avoid. Normally we'd build the application and any dependent libraries on the cluster's network filestore. When I build the SDDS dependency for elegant, I hit a problem with the requirement for GSL - though I suspect I'll have issues with other libraries too. Ideally, I'm looking for:
1) Some way to point the elegant/SDDS build at a pre-built version of GSL outside the standard location
or
2) Some way to build GSL alongside elegant/SDDS
Option 1) doesn't look doable without some serious hacking of the Makefile's internal logic (simply adding -L and -I options isn't enough it seems)
For option 2) it looks like the Makefile has some logic to auto-detect GSL either as a subdirectory or at the same directory level as the SDDS source code, but I hit the same issue that the makefile isn't adding a suitable include path for either location even when they're detected.
Am I missing an easy option here (or some documentation)? My current workaround is to take a compute node offline, temporarily add all the necessary rpms and iteratively test the build applications on a differrent node to work out which dynamic libraries I need to copy across to the network filestore so that it will run without needing those rpms.
Regards,
Mike
I'm building this on an HPC system (a RHEL variant, so rpm-based), and the pre-requirement to install several rpms on every compute node in the cluster is counter to best practice - doing that for every application we install would lead to very large node build images, which we want to avoid. Normally we'd build the application and any dependent libraries on the cluster's network filestore. When I build the SDDS dependency for elegant, I hit a problem with the requirement for GSL - though I suspect I'll have issues with other libraries too. Ideally, I'm looking for:
1) Some way to point the elegant/SDDS build at a pre-built version of GSL outside the standard location
or
2) Some way to build GSL alongside elegant/SDDS
Option 1) doesn't look doable without some serious hacking of the Makefile's internal logic (simply adding -L and -I options isn't enough it seems)
For option 2) it looks like the Makefile has some logic to auto-detect GSL either as a subdirectory or at the same directory level as the SDDS source code, but I hit the same issue that the makefile isn't adding a suitable include path for either location even when they're detected.
Am I missing an easy option here (or some documentation)? My current workaround is to take a compute node offline, temporarily add all the necessary rpms and iteratively test the build applications on a differrent node to work out which dynamic libraries I need to copy across to the network filestore so that it will run without needing those rpms.
Regards,
Mike