On 8 Mar 2017, at 15:12, Kenneth Hoste 
<[email protected]<mailto:[email protected]>> wrote:

Hi Joachim,

On 08/03/2017 14:24, Joachim Hein wrote:
On 7 Mar 2017, at 17:41, Kenneth Hoste 
<[email protected]<mailto:[email protected]>> wrote:

Dear EasyBuilders,

I'm happy to announce the release of EasyBuild version 3.1.1 [1].
This is, you've guessed it, the best EasyBuild release so far...

This is a minor bugfix/update release. Highlights include:

   * bug fix in module generator for hierarchical module naming schemes and the 
GCC toolchain bundle (GCCcore + binutils)

       * if you are using GCC(core) in a hierarchical module naming scheme you 
should check the module files in the Compiler/GCC/<version> module subtree,
         and regenerate module files that include a "load GCCcore” statement
Hi Kenneth,

Thanks for raising this so prominently.  If I understand this correct, I need to

eb -f --module-only config_name.eb

For all the relevant modules.  Correct?

It is a long list here.

I would be more careful, and check with 'grep' which module files in 
Compiler/GCC have a load for 'GCCcore’.


Hi Kenneth,

This is a list of the grep procedure on our system

-bash-4.2$ more gcc_modules_for_rebuild.out
4.9.3-2.25/Autoconf/2.69:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/Autoconf/2.69:    module load GCCcore/4.9.3
4.9.3-2.25/Automake/1.15:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/Automake/1.15:    module load GCCcore/4.9.3
4.9.3-2.25/Autotools/20150215:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/Autotools/20150215:    module load GCCcore/4.9.3
4.9.3-2.25/Emacs/24.5:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/Emacs/24.5:    module load GCCcore/4.9.3
4.9.3-2.25/hwloc/1.11.2:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/hwloc/1.11.2:    module load GCCcore/4.9.3
4.9.3-2.25/libtool/2.4.6:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/libtool/2.4.6:    module load GCCcore/4.9.3
4.9.3-2.25/M4/1.4.17:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/M4/1.4.17:    module load GCCcore/4.9.3
4.9.3-2.25/ncurses/6.0:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/ncurses/6.0:    module load GCCcore/4.9.3
4.9.3-2.25/numactl/2.0.11:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/numactl/2.0.11:    module load GCCcore/4.9.3
4.9.3-2.25/OpenBLAS/0.2.15-LAPACK-3.6.0:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/OpenBLAS/0.2.15-LAPACK-3.6.0:    module load GCCcore/4.9.3
4.9.3-2.25/OpenMPI/1.10.2:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/OpenMPI/1.10.2:    module load GCCcore/4.9.3
4.9.3-2.25/OpenMPI/1.10.2~:if { ![ is-loaded GCCcore/4.9.3 ] } {
4.9.3-2.25/OpenMPI/1.10.2~:    module load GCCcore/4.9.3
4.9.3-2.25/Singularity/2.2.1.lua:if not isloaded("GCCcore/4.9.3") then
4.9.3-2.25/Singularity/2.2.1.lua:    load("GCCcore/4.9.3")
5.4.0-2.26/Autoconf/2.69.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/Autoconf/2.69.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/Automake/1.15.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/Automake/1.15.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/Autotools/20150215.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/Autotools/20150215.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/bzip2/1.0.6.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/bzip2/1.0.6.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/CMake/3.6.1.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/CMake/3.6.1.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/CUDA/8.0.44:if { ![ is-loaded GCCcore/5.4.0 ] } {
5.4.0-2.26/CUDA/8.0.44:    module load GCCcore/5.4.0
5.4.0-2.26/CUDA/8.0.44-GCC-5.4.0-2.26.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/CUDA/8.0.44-GCC-5.4.0-2.26.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/CUDA/8.0.44.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/CUDA/8.0.44.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/GMP/6.1.1.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/GMP/6.1.1.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/hwloc/1.11.3:if { ![ is-loaded GCCcore/5.4.0 ] } {
5.4.0-2.26/hwloc/1.11.3:    module load GCCcore/5.4.0
5.4.0-2.26/libffi/3.2.1.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/libffi/3.2.1.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/libtool/2.4.6.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/libtool/2.4.6.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/libxml2/2.9.4.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/libxml2/2.9.4.lua:    load("GCCcore/5.4.0")
5.4.0-2.26/numactl/2.0.11:if { ![ is-loaded GCCcore/5.4.0 ] } {
5.4.0-2.26/numactl/2.0.11:    module load GCCcore/5.4.0
5.4.0-2.26/OpenBLAS/0.2.18-LAPACK-3.6.1:if { ![ is-loaded GCCcore/5.4.0 ] } {
5.4.0-2.26/OpenBLAS/0.2.18-LAPACK-3.6.1:    module load GCCcore/5.4.0
5.4.0-2.26/OpenBLAS/0.2.18-LAPACK-3.6.1-INTERFACE64:if { ![ is-loaded 
GCCcore/5.4.0 ] } {
5.4.0-2.26/OpenBLAS/0.2.18-LAPACK-3.6.1-INTERFACE64:    module load 
GCCcore/5.4.0
5.4.0-2.26/OpenMPI/1.10.3:if { ![ is-loaded GCCcore/5.4.0 ] } {
5.4.0-2.26/OpenMPI/1.10.3:    module load GCCcore/5.4.0
5.4.0-2.26/OpenMPI/1.10.3~:if { ![ is-loaded GCCcore/5.4.0 ] } {
5.4.0-2.26/OpenMPI/1.10.3~:    module load GCCcore/5.4.0
5.4.0-2.26/XZ/5.2.2.lua:if not isloaded("GCCcore/5.4.0") then
5.4.0-2.26/XZ/5.2.2.lua:    load("GCCcore/5.4.0")
6.2.0-2.27/hwloc/1.11.4:if { ![ is-loaded GCCcore/6.2.0 ] } {
6.2.0-2.27/hwloc/1.11.4:    module load GCCcore/6.2.0
6.2.0-2.27/numactl/2.0.11:if { ![ is-loaded GCCcore/6.2.0 ] } {
6.2.0-2.27/numactl/2.0.11:    module load GCCcore/6.2.0
6.2.0-2.27/OpenMPI/2.0.1:if { ![ is-loaded GCCcore/6.2.0 ] } {
6.2.0-2.27/OpenMPI/2.0.1:    module load GCCcore/6.2.0
6.3.0-2.27/hwloc/1.11.5.lua:if not isloaded("GCCcore/6.3.0") then
6.3.0-2.27/hwloc/1.11.5.lua:    load("GCCcore/6.3.0")
6.3.0-2.27/numactl/2.0.11.lua:if not isloaded("GCCcore/6.3.0") then
6.3.0-2.27/numactl/2.0.11.lua:    load("GCCcore/6.3.0")
6.3.0-2.27/OpenBLAS/0.2.19-LAPACK-3.7.0.lua:if not isloaded("GCCcore/6.3.0") 
then
6.3.0-2.27/OpenBLAS/0.2.19-LAPACK-3.7.0.lua:    load("GCCcore/6.3.0")
6.3.0-2.27/OpenMPI/2.0.2.lua:if not isloaded("GCCcore/6.3.0") then
6.3.0-2.27/OpenMPI/2.0.2.lua:    load("GCCcore/6.3.0")




--module-only is indeed useful to regenerate the affected modules, but it needs 
to be used with care, it's not 100% perfect yet (some 'setenv' or 
'prepend_path' statement may be missing or contain incorrect values in some 
cases, or the easyblock used for regenerating the module file may crash).

Not sure I understand this.  Are you suggesting, I should do a full build of 
all the module on the list?



So, back up the existing module files first, and then do a 'diff' after 
regenerating the modules that include a "load GCCcore" to make sure nothing is 
missing in the regenerated module file.


Hmm,  that requires one understands these modules and what needs to be there.   
T o be honnest unless I hit issues, I take a fair amount of Easybuild on trust 
(and complain here if stuff breaks).

If you notice anything strange, please let us know.


No worries - you know me, that I will do this.

Warm  regards
   Joachim

Also, if you could share a list of module files affected by this bug in your 
setup, that would be nice.


regards,

Kenneth


Thanks and best wishes
   Joachim

   * bug fix in packaging support with FPM where unexpected characters in the 
software description caused problems

   * patch for XZ 5.2.2 to avoid breaking the 'rpm' command when the XZ module 
is loaded

   * ensure that the right ncurses dependency is picked up in the CMake 
easyconfig to get a working 'ccmake'

   * updates to easyblocks CGAL, impi, imkl, MCR, NWChem and Qt for recent 
versions of these software packages

   * easyconfig files for the new iomkl/2017a and intel/2017.02 compiler 
toolchains

   * fixed source URLS for various software packages

   * lots of style fixes in existing easyconfig files (in order to enable 
automatic style checking in easyconfig pull requests in the near future)

   * support for 16 new software packages, incl. Caffe

   * updated easyconfigs for binutils 2.28, NWChem 6.6, matplotlib 2.0.0, VTK 
7.1.0, etc.

This brings the total number of supported software packages to 1,168 [2]!
A detailed overview of all changes is available in the release notes [3].

Thanks to everyone who contributed to this release in one way or another!


To upgrade to EasyBuild v3.1.1, there are several options, see [4].
Two particularly easy options include:

   * eb --install-latest-eb-release  # requires EasyBuild v2.9.0 or more recent

   * eb --from-pr 4266               # use easyconfig from PR #4266 [5]



Enjoy!

regards,

Kenneth (a.k.a. boegel)
EasyBuild release manager


[1] https://pypi.python.org/pypi/easybuild/3.1.1
[2] 
http://easybuild.readthedocs.io/en/latest/version-specific/Supported_software.html
[3] http://easybuild.readthedocs.io/en/latest/Release_notes.html
[4] 
http://easybuild.readthedocs.io/en/latest/Installation.html#updating-an-existing-easybuild-installation
[5] https://github.com/hpcugent/easybuild-easyconfigs/pull/4266/files



Reply via email to