# 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 `/opt/psi/MX` directly. If you run into permission problems, please let the admins know. ## Tutorial branches (build-*) Each participant works on their own `build-` 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