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

Add dev.eessi.io support including project subdirectories #885

Draft
wants to merge 78 commits into
base: 2023.06-software.eessi.io
Choose a base branch
from

Conversation

Neves-P
Copy link
Member

@Neves-P Neves-P commented Jan 24, 2025

This PR replaces open WIP PR #804 (to merge from a more up to date and tested branch) and adds support for building into the dev.eessi.io repository.

Documentation for how to install into dev.eessi.io is available in https://www.eessi.io/docs/adding_software/adding_development_software/, with maintainer documentation to come in EESSI/dev.eessi.io-example#12

With this PR, software builds are installed into /cvmfs/dev.eessi.io/2023.06/$EESSI_DEV_PROJECT/. $EESSI_DEV_PROJECT is determined automatically during the build process and comes from the name of the GitHub repository that the bot is listening according to the format: dev.eessi.io-EESSI_DEV_PROJECT. See: https://github.com/EESSI/dev.eessi.io-example

Existing builds to dev.eessi.io were tested with the code that is about to be merged as verified in EESSI/dev.eessi.io-example#14

Neves-P and others added 30 commits November 1, 2024 11:26
@Neves-P Neves-P requested a review from ocaisa February 14, 2025 18:26
@Neves-P
Copy link
Member Author

Neves-P commented Feb 14, 2025

Talked with @bedroge about this and decided to try just adding a simple if statement to EESSI extend that would account for builds targeting the development repository, changes in: ee2bcb1

I'd like to clarify to things:

  1. How to test this without potentially breaking working code. I suppose that the change to the EESSI-extend module needs to actually be ingested first so that the new module file is used?
  2. Does this actually work, or is there a better or improved way of achieving this.

@ocaisa , would you have any suggestions regarding this?

PS: I'm marking this a draft to prevent accidental merges as this could break production code. This PR also got extremely long with many commits reverting small changes and applying them again. I'm happy to open a new one from a clean branch to prevent polluting the repo's commit history with many trial and error commits.

@Neves-P Neves-P marked this pull request as draft February 14, 2025 18:33
@ocaisa
Copy link
Member

ocaisa commented Feb 17, 2025

Talked with @bedroge about this and decided to try just adding a simple if statement to EESSI extend that would account for builds targeting the development repository, changes in: ee2bcb1

In general, I think this is the way to go. I would like to target the dev repos just the same as we do project extensions. There will need to be a step that generates the path with the subdirectory, but that could all be done with a single environment variable (if the variable EESSI_DEV_PROJECT is set, we are targeting /cvmfs/dev.eessi.io and should use the value of the variable to decide the subdirectory). That would mean you set the variable to the project and there is only a very small amount of special treatment to determine EESSI_PROJECT_INSTALL

I'd like to clarify to things:

  1. How to test this without potentially breaking working code. I suppose that the change to the EESSI-extend module needs to actually be ingested first so that the new module file is used?

EESSI-extend is just an easyconfig that creates a module file, you can install it locally.

  1. Does this actually work, or is there a better or improved way of achieving this.

@ocaisa , would you have any suggestions regarding this?

Rather than complicate our lives with

/cvmfs/dev.eessi.io/versions/2023.06/example/software/linux/aarch64/neoverse_n1

perhaps we should be using

/cvmfs/dev.eessi.io/example/versions/2023.06/software/linux/aarch64/neoverse_n1

then you have direct mapping /cvmfs/software.eessi.io -> /cvmfs/dev.eessi.io/example

@Neves-P
Copy link
Member Author

Neves-P commented Feb 17, 2025

Thanks @ocaisa , indeed that makes it a lot simpler.

In fact, I think we don't need to even touch EESSI-extend (or just tweak the check to see if the project directory exists), because we should be able to just pass /cvmfs/dev.eessi.io/example as EESSI_PROJECT_INSTALL in one go from theEESSI-install.sh. I'll give this a try now on the example repo.

@@ -106,7 +106,6 @@ elseif (os.getenv("EESSI_SITE_INSTALL") ~= nil) then
easybuild_installpath = os.getenv("EESSI_SITE_SOFTWARE_PATH")
else
-- Deal with user and project installs
project_install = os.getenv("EESSI_PROJECT_INSTALL")
Copy link
Member

Choose a reason for hiding this comment

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

This doesn't look right...

Copy link
Member Author

@Neves-P Neves-P Feb 18, 2025

Choose a reason for hiding this comment

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

Changed in e012bd4. (Still shows up in the review for some reason, maybe because I pushed while a review was open?)

Copy link
Member

Choose a reason for hiding this comment

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

Still here...

Comment on lines +25 to +33
# install to $eessi_version/$eessi_dev_project if defined, otherwise install
# to $eessi_version
install_prefix_dir=${eessi_version}${eessi_dev_project:+/$eessi_dev_project}
echo "Setting Install prefix directory to: ${install_prefix_dir}"

if [ -z ${install_prefix_dir} ]; then
echo "\${install_prefix_dir} is empty?!" >&2
exit 2
fi
Copy link
Member

Choose a reason for hiding this comment

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

What is this supposed to match? It doesn't look like it could match the new location /cvmfs/dev.eessi.io/${eessi_dev_project}/versions/...

From the comment, shouldn't it be $eessi_dev_project/versions/$eessi_version

Copy link
Member

Choose a reason for hiding this comment

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

What about keeping the code as was, but updating line 23 such that

cvmfs_repo=${EESSI_CVMFS_REPO}${eessi_dev_project:+/$eessi_dev_project}

Comment on lines +11 to +20
# If $EESSI_DEV_PROJECT is defined, then we are building for dev.eessi.io
# and add a subdirectory to $EESSI_PREFIX
if [ -z ${EESSI_DEV_PROJECT} ]; then
export EESSI_PREFIX=$EESSI_CVMFS_REPO/versions/$EESSI_VERSION
else
echo "\$EESSI_DEV_PROJECT: ${EESSI_DEV_PROJECT}; building for dev.eessi.io"
export EESSI_PREFIX=$EESSI_CVMFS_REPO_OVERRIDE/versions/$EESSI_VERSION/$EESSI_DEV_PROJECT
# Set EESSI_PREFIX to the dev project path for EESSI-extend
export EESSI_CVMFS_INSTALL=$EESSI_PREFIX
fi
Copy link
Member

Choose a reason for hiding this comment

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

Ditto here, you could just tweak the definition of EESSI_CVMFS_REPO_OVERRIDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dev.eessi.io enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants