Sticky modules¶
Configuration¶
- No specific configuration
Specification¶
Once loaded a sticky module cannot be unloaded unless forced or reloaded.
If module is super-sticky instead of sticky, it cannot be unloaded even if forced, only if it is reloaded afterward
Stickyness definition relies on Module tags
module-tag sticky foo/1.0
defines module foo/1.0 as stickymodule-tag super-sticky foo/1.0
defines module foo/1.0 as super-sticky
Stickyness specified over a symbolic version or a module alias has no effect
module-tag
allows to specify a symbolic module version or a module alias- but associated tag will apply to the symbolic version or alias only
- as modulefile targetted by symbol or alias does not inherit their tags
- so a sticky or super-sticky tag set on a symbolic version or alias has no effect
Sticky module can be swapped with another version from same module when stickness is defined over module parent name
For instance if stickyness is defined over module foo, foo/1.0 can be swapped with foo/2.0
Such swap could occur from a
restore
or aswitch
sub-commandAs soon as stickyness is defined over a precise module version name (like foo/1.0) such module cannot be swapped by another version of foo module
Stickyness defined over module parent name (like foo) means any version from module foo must be loaded
When stickyness is defined for several module versions using advanced version specifiers like foo@1: or foo@1.0,2.0
- it means stickyness applies to the module versions
- thus they cannot be swapped by another version
In case stickness is defined over module parent name and another
module-tag
defines stickyness over specific module version name- it means stickyness applies to the module version
- thus these versions targetted specifically with
module-tag
cannot be swapped by another version from same module
When a super-sticky module depends on a non-super-sticky module
- If a forced
purge
command occurs, the dependent module will be unloaded - Which let the super-sticky module with a missing dependency
- If a forced
Current limitations¶
When swapping a sticky module explicitely targetted by the
module-tag
command and which is the default version- For instance
module-tag sticky foo/1.0
andmodule-version foo/1.0 default
- If specified swapped-on module is the generic module name, for instance foo
switch
sub-command raises an error even if the sticky module is the default version (either implicit or explicitely set) for this module
- For instance