Hi all,
I’m a sysadmin who helped Yukui finally get CAMQ compiled on our cluster. I just wanted to report some of the experiences we’ve had with the installation and build process in the hopes that some of the shortcomings might be considered and addressed. The experiences are ordered from specifics to more general observations.
- It appears that CAMQ requires OpenMP support? We ended up using the Intel 2016 compiler and Intel compiled dependencies, and had to add compiler flags for OpenMP to the
LINK*variables in the c shell scripts for building some of the projects. Specifically for the Intelifortcompiler we added-openmp. - I could not find any mention of minimum versions of dependencies or compilers in the online GitHub documentation.
- The c shell build system has terrible idempotency.
- In
config_cmaq.cshif one neglects to set the input paths the first time round, the c shell script creates broken symlinks to non-existant directories! It doesn’t bother to check that the paths exist on the filesystem, and when the path variables are updated, the symlinks are skipped because they already exist even though they do not match the new variables. - For some of the
scripts/bldit_*.cshscripts, the entire$Blddirectory needs to be deleted when updating variables!
- In
- Hiding patch files in release notes is less helpful that cutting a new release with the correct files: https://github.com/USEPA/CMAQ/tree/5.2.1/DOCS/Known_Issues#cmaqv521-i2-icon-and-bcon-fail-to-compile-in-v521
- The c shell build system tells you very little when things do wrong. One has to append
-xto thecshshebang to trace problematic output. - Neither IOAPI nor CMAQ create directory structures specified by the FHS to separate read-only from writable data (
man 7 hier) needed by shared installations. IOAPI 3.1 lacks a sanemake installstep that supports installing to a prefix path, and the way CMAQ organizes its files makes it impossible to create a shared installation for multiple users using environment modules. - Yukui found a Word document with more detailed installation instructions but I did not. The GitHub documentation doesn’t link to that document.
- Some of these issues can be uncovered with better (or any) support for continuous integration and tests. Often times I can look at the CI files to figure out why things are not working, or what we’re doing differently from the developers.