Skip to content
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

Adding documentation on how to build and run on top of EESSI without EB #175

Open
wants to merge 12 commits into
base: main
Choose a base branch
from

Conversation

hvelab
Copy link

@hvelab hvelab commented Apr 30, 2024

To follow up the short-term solution in issue https://gitlab.com/eessi/support/-/issues/48

Copy link
Member

@ocaisa ocaisa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hvelab This is a good start. I think it is probably worth explaining the weird addition of the GCCcore path to LD_LIBRARY_PATH

## Manually building software op top of EESSI
Building software on top of EESSI would require your linker to use the same system-dependencies as the software in EESSI does. In other words: it requires you to link against libraries from the compatibility layer, instead of from your host OS.
## Manually building software op top of EESSI (without EasyBuild)

Copy link
Member

@ocaisa ocaisa May 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's probably worth adding a big fat warning at the beginning that this is really currently only for those who have a good understanding of what LD_LIBRARY_PATH is, what a runtime linker is and how library dependencies are resolved on Linux:

Suggested change
!!! warning
We are working on a module file that should make building on top of EESSI (without using EasyBuild)
more straightforward, particularly when using `Autotools` or `CMake`. Right now, it is a little convoluted
and requires you to have a decent grasp of
* What a runtime linker (`ld-linux*.so`) is and does
* How to influence the behaviour of the runtime linker with `LD_LIBRARY_PATH`
* The difference between `LIBRARY_PATH` and `LD_LIBRARY_PATH`
As such, this documentation is intended for "experts" in the runtime linker and it's behaviour,
and most cases are untested. Any feedback on this topic is highly appreciated.

Copy link
Member

@ocaisa ocaisa May 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hvelab I learned about LD_RUN_PATH today, that is used at link time and removes the need for LD_LIBRARY_PATH at runtime. It means you can set

LD_RUN_PATH=$LIBRARY_PATH:$EBROOTGCCcore/lib64

at compile time only, and the application should run just fine afterwards. You can probably even have export a shell function that does that for you (bash only)

Copy link
Author

@hvelab hvelab May 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ocaisa Which way do you think it's the best to add this piece of information? Should we replace the runtime part line where

export LD_LIBRARY_PATH=$LIBRARY_PATH:$EBROOTGCCcore/lib64

is mentioned or should we add it in a separate section as an untested feature?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's already tested in the sense that we've tried it and it works. I imagine there are probably corner cases where it will not work. I would be inclined to replace the use of LD_LIBRARY_PATH as this is a much more straightforward solution.

Copy link
Author

@hvelab hvelab Jun 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just pushed a commit with these changes: ed0c5dd

docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
docs/using_eessi/building_on_eessi.md Outdated Show resolved Hide resolved
hvelab and others added 11 commits May 27, 2024 14:13
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Co-authored-by: ocaisa <alan.ocais@cecam.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants