# Agenda for Lmod Zoom Mtg Oct. 6th 2022 at 9:30 Central (14:30 UTC) ## Attendees - Robert McLay (TACC) - Matthew Cawood (TACC) - Kenneth Hoste (HPC-UGent) - Raj Ayyampalayam (University of Georgia) - Sebastien Moretti (SIB, Switzerland) - Kaylea Nelson (Yale Univ.) - Dan Green (NC State Univ.) ## Agenda - Q/A - Quick Demo of git worktree - Presentation on How Lmod loads modulefiles (part 2) - Next Meeting Tue Nov. 8th at 9:30 US Central (15:30 UTC) ## Notes ### Demo on git worktree - see https://git-scm.com/docs/git-worktree - Why use git worktree commands when branching: - A replacement for **git stash** and **git stash pop** - Or **git clone** and check out a different branch somewhere in your account - git worktree is much faster than git clone (and branches do not get lost in your account) - Branches can be left in an incomplete state. You can come back to them later - Important commands - git worktree add **directory** -> create or open a branch - git worktree add ../testing -> switch or open **testing** branch - git worktree list -> list checked out branches - git worktree remove **directory** -> remove branch and files - Doesn't work with git submodules - Uses hard paths: do not rename directory layout - alias gw="git worktree" - Example of three different directory layouts - Have worktrees at the same level as bare repo (type A) - Have layout like ~/w/lmod/{bare,master,testing} (type B) - Checkout main branch then place worktrees in ~/w/lmod/.worktree (type C) - cd w/lmod; git worktree add .worktree/testing - (Add .worktrees in .gitignore) - Youtube links - (type A) https://www.youtube.com/watch?v=2uEqYw-N8uE - (type C) https://www.youtube.com/watch?v=4_p1OdLeDLE&t - (Using worktrees to manage dotfiles w/o symlinks) https://www.youtube.com/watch?v=tBoLDpTWVOM ### How Lmod loads modulefiles (part 2) - presentation available at https://github.com/TACC/Lmod/blob/master/my_docs/22/lmod_zoom_mtg_2022_10_04/presentation.pdf - Part 1 was presented on 7 June 2022 - slides available at https://github.com/TACC/Lmod/blob/master/my_docs/22/lmod_zoom_mtg_2022_06_07/presentation.pdf - once loading of module is done: - module is marked as "active" - framestack is popped - Tcl module files are basically converted to Lua on the fly - but that's the subject of a whole separate talk (next meeting?) - sandbox restricts which functions can be called in a module file - sites can add additional functions that can be called in sandbox - Lmod doesn't actually evaluate the module file, Lua does! - Lmod code is only called when executing setenv(), etc. functions - Lmod will not print any environment changes until all modules being loaded have been processed - all environment changes by modules being loaded are kept in the 'varT' table - a break statement in a module file being loaded may cancel the whole process! ### Q&A - How big is the Lmod codebase? - ~30k LoC (~25k in src/, ~5k in tools/) - bulk is in MasterControl.lua, Spider.lua, Master.lua - NC State Univ. recently started using Lmod on their workstations too - mix of CentOS 7, RHEL8, Ubuntu - all using same Lmod deployment - some apps don't run on some OS's - can an OS restriction be set in a module file? - so output of "module avail" can indicate whether a module is compatible with a particular OS - could separate module files in separate trees (one per OS) - won't work, since module files should always be visible - module files could set a property that specifies where those modules are supported - environment variable could be set via /etc/profile script that specifies type of OS - each module file could call a "central" function that determines whether the module file is compatible - VUB does similar things w.r.t. dynamically hiding module files - see https://github.com/vub-hpc/Lmod-UGent/blob/master/SitePackage.lua for more details - good question for Lmod mailing list - How to subscribe to Lmod mailing list - see https://sourceforge.net/p/lmod/mailman - Ubuntu version of Lmod is quite old? - at least in public repos - see Alexandre's work: https://github.com/surak/Lmod - unclear why his packages are not in public repos ### Next meeting - Tue Nov. 8th at 9:30 US Central (15:30 UTC) - see https://time.is/1530_8_Nov_2022_in_UTC/CT/CET?Lmod_monthly_meeting_Nov%2722