Skip to content

Commit

Permalink
minor fixes/changed to docs for dev.eessi.io repo
Browse files Browse the repository at this point in the history
  • Loading branch information
boegel authored Nov 16, 2024
1 parent 5c8ebb9 commit 81533f8
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions docs/adding_software/adding_development_software.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

!!! warning "`dev.eessi.io` is still in active development and focused on MultiXscale"

The `dev.eessi.io` repository and functionality is still in its earlie stages.
The repository, build, and deploy procedures are functional, but may change
The `dev.eessi.io` repository and functionality is still in its early stages.
The repository itself and build + deploy procedure for it are functional, but may change
often for the time being.

Our focus is currently on including and supporting developers and applications in the
Expand Down Expand Up @@ -45,9 +45,9 @@ commit ID to `software-commit` under `options`.

#### easyconfig files and `--software-commit`
The approach to build and install software is similar to that of `software.eessi.io`.
It requires one or more easyconfig files. Easybuild files used for building for `dev.eessi.io`
It requires one or more easyconfig files. Easyconfig files used for building for `dev.eessi.io`
do not need to be a part of an [EasyBuild release](https://github.com/easybuilders/easybuild-easyconfigs), unlike builds for
`software.eessi.io`. In this case, the development easyconfigs can simply be placed under `project/easyconfigs`.
`software.eessi.io`. In this case, the development easyconfigs can be located under `easyconfigs/` in the `dev.eessi.io` repository being used.

To allow for development builds, we leverage the `--software-commit` functionality (requires [EasyBuild](https://easybuild.io/) v4.9.3 or higher). This lets us build a given application from
a specific commit in repository. This can also be done from a fork, by changing the `github_account` field in the easyconfig file.
Expand All @@ -74,36 +74,36 @@ sources = ['%(software_commit)s.tar.gz']
Using `--software-commit` disables the use of `--robot`, so make sure that you explicitly include
new dependencies that might need to be installed. Otherwise, the easyconfig files won't be found.

One can also make new changes to the easyconfig file, for example, if the new functionality requires new build or
You can also make additional changes to the easyconfig file, for example, if the new functionality requires new build or
runtime dependencies, patches, configuration options, etc. It's a good idea to try installing from a specific commit locally first,
to at least see if everything is parsed correctly and confirm that the right sources are being downloaded.


While the process to build for `dev.eessi.io` is similar to the one for the [production repository](../repositories/software.eessi.io.md) there
While the process to build for `dev.eessi.io` is similar to the one for the [production repository](../repositories/software.eessi.io.md), there
are a few additional details to keep in mind.

#### Versions
#### Software version

Installations to the EESSI production repository refer to specific versions of applications, however, Development builds can't follow the same
approach as they are most often not pegged to a release. Because of this, it is possible to add a descriptive "version" name to the `version` field
Installations to the EESSI production repository refer to specific versions of applications. However, development builds can't follow the same
approach as they are most often not pegged to a release. Because of this, it is possible to include a descriptive "version" label to the `version` parameter
in the easyconfig file for a given (set of) installations.

Note that some applications are built with custom easyblocks which may
use the `version` field to determine how the installation is meant to work (e.g., versions >2 need to copy files from to a new directory). Make sure
Note that some applications are built with custom easyblocks, which may
use the `version` parameter to determine how the installation is meant to work (for example, recent versions need to copy files from to a new directory). Make sure
that you account for this, otherwise you may install software differently than intended. If you encounter issues, you can open an issue in our
[support portal](https://gitlab.com/eessi/support#eessi-support-portal).

#### Installing dependencies

Installations in `dev.eessi.io` are done _on top_ of `software.eessi.io`. That means if your development build depends on some application that is
already installed in `software.eessi.io`, then that will simply be used. However, if you need to add a new dependency, then this must included as
part of the build. That means including an easystack file for it, and adding it to the right easystack file.
part of the build. That means including an easyconfig file for it, and adding it to the right easystack file.

#### Using commit IDs or tags for `--software-commit`

Installing with `--software-commit` requires that you include either a commit ID or a tag. The installation procedure will use the commit ID or tag to
obtain the source from the right state. Because tags can be changed to point to a different commit ID, we recommend you avoid using them but stick with
the commit ID itself. You can then include this in the `versionsuffix` on your easyconfig file, to generate a unique (if ugly) module name.
Installing with `--software-commit` requires that you include either a commit ID or a tag. The installation procedure will use this to
obtain the sources for the build. Because tags can be changed to point to a different commit ID, we recommend you avoid using them and sticking to
the commit ID itself. You can then include this in the `versionsuffix` on your easyconfig file, to generate a unique (though "ugly") module name.

#### Patch files

Expand All @@ -130,23 +130,23 @@ needs to be in place so that a build can be triggered.
version used to install the software. Following our example for
`ESPREsSo`, it would look like:

``` yml
```yaml
easyconfigs:
- ESPResSo-devel-foss-2023a-software-commit.eb:
options:
software-commit: 2ba17de6096933275abec0550981d9122e4e5f28 # release 4.2.2
```

The `ESPResSo-devel-foss-2023a-software-commit.eb` would be the easyconfig file added in our example step above.
`ESPResSo-devel-foss-2023a-software-commit.eb` would be the name of the easyconfig file added in our example step above.
Note the option passing the `software-commit` for the development version that should be built.
For the sake of this example, the chosen commit actually corresponds to the 4.2.2 release.
For the sake of this example, the chosen commit actually corresponds to the [4.2.2 release of ESPResSo](https://github.com/espressomd/espresso/releases/tag/4.2.2).

### Triggering builds

We use the [EESSI build-test-deploy bot](../bot.md) to handle software builds.
All one needs to do is open a PR with the changes adding the easyconfig and easystack
files and commenting `bot: build`. This can only be done by previously authorized users.
The current build cluster builds only for the `zen2` CPU microarchitecture, but this is likely to change.
The current build cluster for `dev.eessi.io` builds only for the `zen2` CPU microarchitecture, but this is likely to change.

Once a build is complete and the `bot:deploy` label is added, a staging PR can be merged to deploy the
application to the `dev.eessi.io` cvmfs repository. On a system with `dev.eessi.io` mounted, then all
Expand Down

0 comments on commit 81533f8

Please sign in to comment.