- main README: add Pmodules background from wiki, unx-mx_adm group replaces -adm account for updating modules in /etc/psi/MX, and how to propagate main to the build-* tutorial branches - module READMEs: fix titles/paths to match module directories (DIALS, jfjoch_viewer), replace -adm login steps with unx-mx_adm note Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
50 lines
2.5 KiB
Markdown
50 lines
2.5 KiB
Markdown
# MX
|
|
|
|
This project includes all MX modules in use.
|
|
|
|
All modules are build with modbuild/2.1.2
|
|
Documentation for how-to-build modules can be found in: https://github.com/Pmodules/Pmodules/wiki
|
|
|
|
## Pmodules background (from the wiki)
|
|
|
|
- Modules are organized in hierarchical groups; all modules in this repo belong to the `MX` group (`module use MX`).
|
|
- Filesystem layout: modulefile at `$PREFIX/GROUP/modulefiles/NAME/VERSION`, installation at `$PREFIX/GROUP/NAME/VERSION`, per-version config at `$PREFIX/GROUP/modulefiles/NAME/.config-VERSION` (YAML).
|
|
- Release stages: **unstable**, **stable**, **deprecated**. Newly built modules land in unstable; opt in with `module use unstable`.
|
|
- Pmodules automatically sets `$NAME_DIR`, `$NAME_HOME`, `$NAME_PREFIX`, `$NAME_VERSION` on load and prepends standard directories (`$PREFIX/bin` to `PATH`, `$PREFIX/lib` to `LD_LIBRARY_PATH`, ...) if they exist -- no explicit `setenv`/`prepend-path` needed in the modulefile.
|
|
|
|
## Permissions
|
|
|
|
No need to switch to an -adm account any more: members of the `unx-mx_adm` group can update the modules in `/etc/psi/MX` directly. If you run into permission problems, please let the admins know.
|
|
|
|
## Tutorial branches (build-*)
|
|
|
|
Each participant works on their own `build-<module>` branch (e.g. `build-dials`). All of them start from `main`.
|
|
|
|
To propagate new material from `main` to the `build-*` branches:
|
|
|
|
While the branches are still identical to main (fast-forward, no force needed):
|
|
|
|
```
|
|
git push origin main:build-dials main:build-buster main:build-careless main:build-crystfel main:build-phenix main:build-pymol main:build-autoproc main:build-xtrapol8
|
|
|
|
for b in dials buster careless crystfel phenix pymol autoproc xtrapol8; do
|
|
git branch -f build-$b main
|
|
done
|
|
```
|
|
|
|
Once the branches have diverged (people committed on them), merge main into each instead:
|
|
|
|
```
|
|
for b in dials buster careless crystfel phenix pymol autoproc xtrapol8; do
|
|
git checkout build-$b && git merge main && git push
|
|
done
|
|
git checkout main
|
|
```
|
|
|
|
If `git push origin main:build-xxx` fails with "non-fast-forward", the branch has its own commits: switch to the merge loop, do not force-push over other people's work.
|
|
|
|
## Module tips
|
|
1. modules is name/version (not name/name-version)
|
|
2. Solution to unbound variables: `/opt/psi/MX/phenix/phenix-1.20-4459/build/setpaths.sh: line 4: LIBTBX_BUILD_RELOCATION_HINT: unbound variable` is to add `puts stdout "set +x nounset"` before the source statement in the modulefile
|
|
3. wait until the tutorial on 18th August 2026
|