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]

Reply via email to