-
Notifications
You must be signed in to change notification settings - Fork 212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add possibility to use pre-built shared libs during case.build #4308
Comments
@jedwards4b , thoughts? |
We are using prebuilt pio libraries on cheyenne, it uses this code in the buildlib.pio:
this relies on the pio module setting the two env variables PIO_VERSION_MAJOR and PIO_TYPENAME_VALID_VALUES |
For components, how about something like |
I think that the use of modules can simplify a lot of what @bartgol is suggesting. |
So if we prebuild pio, and have those two env vars defined, case.build will skip PIO build? That would work, I suppose. |
|
Doesn't creating a module require a sysadmin to do something? We can get that done on machines we control but not sure about NERSC, OLCF, ALCF. |
How do you link to pre-built ESMF? Module? |
@rljacob We can prob just add a bunch of env vars in config machines, to point to the installation and declare the PIO_XYZ needed by cime... |
Yes - esmf is built as a module. |
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
The request in this issue is largely already implemented in the build system. |
This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
The need for prebuilt libs stems from a couple of needs:
Here's how I envision this to be implemented:
USE_PREBUILT_LIBS
(or something like that), with valid valuesnone
,all
, or a comma-separated list of libs (e.g,USE_PREBUILT_LIBS=pio,gptl
).${LIBNAME}_ROOT
. Then, case.build will add$compiler/$buildtype
to get the full installation path (wherebuildtype
is eitherdebug
orrelease
). If we feel brave, we could also add some more buildtypes, based on other XML config options (I'm thinking about stuff like certain PIO compile-time options).Additional comments:
create_test
could default toUSE_PREBUILT_LIBS="none"
, for bwd compatibility. Or we could have config_machines store a default for this variable, so that e3sm/cesm can choose different approaches, or we could have different approaches on different machines. E.g., on new machines we start with "none", and if the maintainer finds time, they can install prebuilt libs.create_test
could have a flag, like--use-prebuilt-libs=a,b,c
to force using prebuilt libs fora,b,c
, if the machine default is to build them on the fly. A symmetric option could be--build-shared=d,e
, in case the machine default is do use pre-built. Obviously, using both at the same time is not allowed.The text was updated successfully, but these errors were encountered: