I am giving EB a go as a fallback to my currently "beta" Lmod+manual install of
a couple dozen apps. I currently have the following
MODULEPATH_ROOT=/apps/modulefiles # These are all .lua files
LMOD_PACKAGE_PATH=${MODULEPATH_ROOT}/Site # Contains SitePackage.lua
LMOD_PKG_ROOT=/apps
Example of some of the apps installed:
Core:
/apps/gcc/4.8.2
Compiler:
/apps/gcc-4.8.2/openmpi/1.8.1
/apps/gcc-4.8.2/mvapich2/2.0
etc...
My Lua files make heavy use of helper functions in SitePackage.lua so that they
only contain the following plus whatever environment variables are needed:
Compiler/gcc/4.8.2/mvapich2/2.0.lua:
local pkg = loadPkgDefaults(1)
setPkgInfo(pkg)
family("mpi")
<pushenv, setenv and prepend_path lines>
# pkg properties generated based on lua file location
prependModulePath(pathJoin("MPI", pkg.compiler, pkg.id))
My workflow has been something like the following:
1. Build app as user
2. Use 'sudo -E' to install
3. Add .lua file to my local modulefiles ($HOME/modulefiles) which is in Git.
3a. The lua files contain comment at the top with steps to build - not best way
to reproduce builds but better than no documentation
4. Push updated modulefiles repo to /home/admin/modulefiles (bare repo)
5. Become root and pull repo from /home/admin/modulefiles to /apps/modulefiles
The git workflow could be improved greatly using post-receive hooks. I hope to
add some post-receive hooks that update the Lmod spider cache and also write an
updated XML file that contains the module hierarchy and dependencies that is
ingested by our website.
I now want to evaluate EB 1.14.0 to see if I can completely replace my workflow
with EB. I'm concerned with how well I can merge my existed workflow with the
EB design. For example, I know Lua files are not yet supported but am aware
it's on ROADMAP, which is excellent.
Is it totally crazy or unwise to install software using EB then "convert" the
EB generated modulefiles into Lua and have users load modules that are not
generated by EB? Would it then be necessary to build apps using those same Lua
files or would EB need to have the EB generated modulefiles in my MODULEPATH?
I have successfully built GCC/4.8.3, MVAPICH2/2.0 and OpenMPI/1.8.1 using EB
into subdirectories under my existing LMOD_PKG_ROOT. I had to make the
following ENV changes so that "module" commands would only show what EB has
built.
module use /apps/easybuild/modules/all/Core
export MODULEPATH_ROOT=/apps/easybuild/modules/all
export LMOD_DEFAULT_MODULEPATH=/apps/easybuild/modules/all/Core
unset LMOD_PACKAGE_PATH
export MODULEPATH=/apps/easybuild/modules/all/Core
Is there a more sane way to use EB with Lmod but referencing a totally
different set of modules?
Below is my current EB config. Right now only me and one other person would be
building software for use by our users. So I want to also make sure the
permissions are such that we can "destroy" each other's installs (hence the
umask=002 in config below). So far everything installed is 2755/0644 except
for the "easybuild" directories. I'm wondering if other sites use a dedicated
"easybuild" user for building software?
I'm hoping that I'm starting off in the right direction, and want to be sure
that what I'm doing is within scope of what EB expects and will be something I
can live with for next few years before we switch our entire cluster over to
this new setup (a couple weeks and counting :-/).
Thanks
- Trey
$ egrep -v '^$|^#' ~/.easybuild/config.cfg
[MAIN]
debug= True
[basic]
robot=/home/treydock/easybuild,/usr/easybuild/easyconfigs
[config]
buildpath=/opt/easybuild/treydock
installpath=/apps/easybuild
module-naming-scheme=HierarchicalMNS
modules-tool=Lmod
sourcepath=/home/admin/src/el6
subdir-modules=modules
subdir-software=software
[informative]
[override]
umask=002
[regtest]
[software]
[unittest]
=============================
Trey Dockendorf
Systems Analyst I
Texas A&M University
Academy for Advanced Telecommunications and Learning Technologies
Phone: (979)458-2396
Email: [email protected]
Jabber: [email protected]