Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Loris Bennett
"Alan O'Cais"  writes:

> EasyBuild recognises modules only, if the module name is available then it is 
> installed. In your case you have the path to the original module tree in
> MODULEPATH so it is able to load the exact module. Try
> unset MODULEPATH
> and add the --missing option to see what would get installed (the default 
> location is added by EasyBuild to MODULEPATH, so it can be completely unset
> when you call the command).

Thanks Alan and Markus.  I was staring at the EasyBuild configuration and
forgetting about the Lmod configuration.

Now I can get my sword out ... (https://xkcd.com/303/)

Cheers,

Loris

> On Fri, 2 Dec 2022 at 11:58, Loris Bennett  wrote:
>
>  "Alan O'Cais"  writes:
>
>  > Ever configuartion setting can be done in multiple ways, see 
> https://easybuilders.github.io/easybuild-tutorial/2022-isc22/configuration/ 
> for a
>  good
>  > overview.
>  >
>  > The easiest way to do arch support is to have use .../easybuild/ as 
> the --prefix for each node type. The only stuff you should really worry
>  about
>  > have multiple copies of are the sources, so you can set --sourcepath to 
> .../easybuild/sources to avoid that duplication. For each node then you
>  > configure the profile so that it detects the right path(s) for `module use 
> /path/to//modules/all` 
>
>  OK
>
>  > On Fri, 2 Dec 2022 at 11:01, Loris Bennett  
> wrote:
>  >
>  >  I was basing my approach on the first answer given here:
>  >
>  >
> https://www.reddit.com/r/HPC/comments/y1gdch/how_to_manage_easybuild_on_hpc_with_multiple_cpu/
>  >
>  >  But I see now that the problem being solved there is slightly different
>  >  to mine, as two existing clusters were being merged, so the software for
>  >  the two different architectures had already been built.
>  >
>  >  "Alan O'Cais"  writes:
>  >
>  >  > Sorry, wrong name: --installpath-modules
>  >
>  >  OK, thanks.  Is there no corresponding environment variable?
>  >
>  >  > If you are not using this explicitly in your config, then you are 
> relying on EASYBUILD_PREFIX to set the default, see
>  >  > 
> https://docs.easybuild.io/en/latest/Configuration.html#mandatory-configuration-settings
>  for details. By setting _just_ EASYBUILD_INSTALLPATH,
>  you
>  >  are
>  >  > only changing where software gets installed, everything else is 
> remaining the same (and EasyBuild relies only on the module files to know if
>  >  something
>  >  > is installed or not).
>
>  Something seems to be wrong with my set-up.  I have defined my own variable
>
>[build@a001 ~]$ echo $EASYBUILD_INSTALLPATH_MODULES 
>/trinity/shared/easybuild/arch/amd/zen3/modules
>
>  which in fact EasyBuild seems to recognise:
>
>[build@a001 ~]$ eb --show-config
>#
># Current EasyBuild configuration
># (C: command line argument, D: default value, E: environment variable, F: 
> configuration file)
>#
>buildpath   (F) = /trinity/shared/easybuild/build
>containerpath   (F) = /trinity/shared/easybuild/containers
>hooks   (F) = /trinity/home/build/hooks/hpc_hooks.py
>installpath (E) = /trinity/shared/easybuild/arch/amd/zen3/software
>installpath-modules (E) = /trinity/shared/easybuild/arch/amd/zen3/modules
>packagepath (F) = /trinity/shared/easybuild/packages
>prefix  (E) = /trinity/shared/easybuild
>repositorypath  (F) = /trinity/shared/easybuild/ebfiles_repo
>robot-paths (D) = 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs
>sourcepath  (F) = /trinity/shared/easybuild/sources
>
>  However, EasyBuild still doesn't want to build the dependency: 
>
>  [build@a001 ~]$ eb Bison-3.8.2.eb 
> --installpath-modules=$EASYBUILD_INSTALLPATH_MODULES --robot --dry-run --force
>  == Temporary log file in case of crash 
> /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log
>  == found valid index for 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
> using it...
>  == found valid index for 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
> using it...
>  Dry run: printing build status of easyconfigs and dependencies
>   * [x] 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
>  (module: M4/1.4.19)
>   * [F] 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
>  (module: Bison/3.8.2)
>  == Temporary log file(s) /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log* have been 
> removed.
>  == Temporary directory /tmp/eb-aqpm3paq has been removed.
>
>  What am I doing wrong?
>
>  Cheers,
>
>  Loris
>
>  [snip (116 lines)]
>
>  -- 
>  Dr. Loris Bennett (Herr/Mr)
>  ZEDAT, Freie Universität Berlin
>
-- 
Dr. Loris Bennett (Herr/Mr)
ZEDAT, Freie Universität Berlin


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Alan O'Cais
EasyBuild recognises modules only, if the module name is available then it
is installed. In your case you have the path to the original module tree in
MODULEPATH so it is able to load the exact module. Try
unset MODULEPATH
and add the --missing option to see what would get installed (the default
location is added by EasyBuild to MODULEPATH, so it can be completely unset
when you call the command).

On Fri, 2 Dec 2022 at 11:58, Loris Bennett 
wrote:

> "Alan O'Cais"  writes:
>
> > Ever configuartion setting can be done in multiple ways, see
> https://easybuilders.github.io/easybuild-tutorial/2022-isc22/configuration/
> for a good
> > overview.
> >
> > The easiest way to do arch support is to have use .../easybuild/
> as the --prefix for each node type. The only stuff you should really worry
> about
> > have multiple copies of are the sources, so you can set --sourcepath to
> .../easybuild/sources to avoid that duplication. For each node then you
> > configure the profile so that it detects the right path(s) for `module
> use /path/to//modules/all`
>
> OK
>
> > On Fri, 2 Dec 2022 at 11:01, Loris Bennett 
> wrote:
> >
> >  I was basing my approach on the first answer given here:
> >
> >
> https://www.reddit.com/r/HPC/comments/y1gdch/how_to_manage_easybuild_on_hpc_with_multiple_cpu/
> >
> >  But I see now that the problem being solved there is slightly different
> >  to mine, as two existing clusters were being merged, so the software for
> >  the two different architectures had already been built.
> >
> >  "Alan O'Cais"  writes:
> >
> >  > Sorry, wrong name: --installpath-modules
> >
> >  OK, thanks.  Is there no corresponding environment variable?
> >
> >  > If you are not using this explicitly in your config, then you are
> relying on EASYBUILD_PREFIX to set the default, see
> >  >
> https://docs.easybuild.io/en/latest/Configuration.html#mandatory-configuration-settings
> for details. By setting _just_ EASYBUILD_INSTALLPATH, you
> >  are
> >  > only changing where software gets installed, everything else is
> remaining the same (and EasyBuild relies only on the module files to know if
> >  something
> >  > is installed or not).
>
> Something seems to be wrong with my set-up.  I have defined my own variable
>
>   [build@a001 ~]$ echo $EASYBUILD_INSTALLPATH_MODULES
>   /trinity/shared/easybuild/arch/amd/zen3/modules
>
> which in fact EasyBuild seems to recognise:
>
>   [build@a001 ~]$ eb --show-config
>   #
>   # Current EasyBuild configuration
>   # (C: command line argument, D: default value, E: environment variable,
> F: configuration file)
>   #
>   buildpath   (F) = /trinity/shared/easybuild/build
>   containerpath   (F) = /trinity/shared/easybuild/containers
>   hooks   (F) = /trinity/home/build/hooks/hpc_hooks.py
>   installpath (E) =
> /trinity/shared/easybuild/arch/amd/zen3/software
>   installpath-modules (E) = /trinity/shared/easybuild/arch/amd/zen3/modules
>   packagepath (F) = /trinity/shared/easybuild/packages
>   prefix  (E) = /trinity/shared/easybuild
>   repositorypath  (F) = /trinity/shared/easybuild/ebfiles_repo
>   robot-paths (D) =
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs
>   sourcepath  (F) = /trinity/shared/easybuild/sources
>
> However, EasyBuild still doesn't want to build the dependency:
>
> [build@a001 ~]$ eb Bison-3.8.2.eb
> --installpath-modules=$EASYBUILD_INSTALLPATH_MODULES --robot --dry-run
> --force
> == Temporary log file in case of crash
> /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log
> == found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs,
> so using it...
> == found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs,
> so using it...
> Dry run: printing build status of easyconfigs and dependencies
>  * [x]
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
> (module: M4/1.4.19)
>  * [F]
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
> (module: Bison/3.8.2)
> == Temporary log file(s) /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log* have
> been removed.
> == Temporary directory /tmp/eb-aqpm3paq has been removed.
>
> What am I doing wrong?
>
> Cheers,
>
> Loris
>
> [snip (116 lines)]
>
> --
> Dr. Loris Bennett (Herr/Mr)
> ZEDAT, Freie Universität Berlin
>


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Markus Geimer

Loris,

Do you have $MODULEPATH also set to the new modules tree?  The setting
`--installpath-modules` only specifies where *new* modules should go,
but AFAIK doesn't fully override the search paths for existing modules.

Markus


On 12/2/22 11:58, Loris Bennett wrote:

"Alan O'Cais"  writes:


Ever configuartion setting can be done in multiple ways, see 
https://easybuilders.github.io/easybuild-tutorial/2022-isc22/configuration/ for 
a good
overview.

The easiest way to do arch support is to have use .../easybuild/ as the 
--prefix for each node type. The only stuff you should really worry about
have multiple copies of are the sources, so you can set --sourcepath to 
.../easybuild/sources to avoid that duplication. For each node then you
configure the profile so that it detects the right path(s) for `module use 
/path/to//modules/all`


OK


On Fri, 2 Dec 2022 at 11:01, Loris Bennett  wrote:

  I was basing my approach on the first answer given here:


https://www.reddit.com/r/HPC/comments/y1gdch/how_to_manage_easybuild_on_hpc_with_multiple_cpu/

  But I see now that the problem being solved there is slightly different
  to mine, as two existing clusters were being merged, so the software for
  the two different architectures had already been built.

  "Alan O'Cais"  writes:

  > Sorry, wrong name: --installpath-modules

  OK, thanks.  Is there no corresponding environment variable?

  > If you are not using this explicitly in your config, then you are relying 
on EASYBUILD_PREFIX to set the default, see
  > 
https://docs.easybuild.io/en/latest/Configuration.html#mandatory-configuration-settings
 for details. By setting _just_ EASYBUILD_INSTALLPATH, you
  are
  > only changing where software gets installed, everything else is remaining 
the same (and EasyBuild relies only on the module files to know if
  something
  > is installed or not).


Something seems to be wrong with my set-up.  I have defined my own variable

   [build@a001 ~]$ echo $EASYBUILD_INSTALLPATH_MODULES
   /trinity/shared/easybuild/arch/amd/zen3/modules

which in fact EasyBuild seems to recognise:

   [build@a001 ~]$ eb --show-config
   #
   # Current EasyBuild configuration
   # (C: command line argument, D: default value, E: environment variable, F: 
configuration file)
   #
   buildpath   (F) = /trinity/shared/easybuild/build
   containerpath   (F) = /trinity/shared/easybuild/containers
   hooks   (F) = /trinity/home/build/hooks/hpc_hooks.py
   installpath (E) = /trinity/shared/easybuild/arch/amd/zen3/software
   installpath-modules (E) = /trinity/shared/easybuild/arch/amd/zen3/modules
   packagepath (F) = /trinity/shared/easybuild/packages
   prefix  (E) = /trinity/shared/easybuild
   repositorypath  (F) = /trinity/shared/easybuild/ebfiles_repo
   robot-paths (D) = 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs
   sourcepath  (F) = /trinity/shared/easybuild/sources

However, EasyBuild still doesn't want to build the dependency:

[build@a001 ~]$ eb Bison-3.8.2.eb 
--installpath-modules=$EASYBUILD_INSTALLPATH_MODULES --robot --dry-run --force
== Temporary log file in case of crash /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log
== found valid index for 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
using it...
== found valid index for 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
using it...
Dry run: printing build status of easyconfigs and dependencies
  * [x] 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
 (module: M4/1.4.19)
  * [F] 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
 (module: Bison/3.8.2)
== Temporary log file(s) /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log* have been 
removed.
== Temporary directory /tmp/eb-aqpm3paq has been removed.

What am I doing wrong?

Cheers,

Loris

[snip (116 lines)]



--
Dr. Markus Geimer
Juelich Supercomputing Centre
Institute for Advanced Simulation
Forschungszentrum Juelich GmbH
52425 Juelich, Germany

Phone: +49-2461-61-1773
Fax:   +49-2461-61-6656
Email: m.gei...@fz-juelich.de
WWW:   https://www.fz-juelich.de/ias/jsc

-
-
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Volker Rieke
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr. Astrid Lambrecht,
Prof. Dr. Frauke Melchior
-
-

Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Loris Bennett
"Alan O'Cais"  writes:

> Ever configuartion setting can be done in multiple ways, see 
> https://easybuilders.github.io/easybuild-tutorial/2022-isc22/configuration/ 
> for a good
> overview.
>
> The easiest way to do arch support is to have use .../easybuild/ as the 
> --prefix for each node type. The only stuff you should really worry about
> have multiple copies of are the sources, so you can set --sourcepath to 
> .../easybuild/sources to avoid that duplication. For each node then you
> configure the profile so that it detects the right path(s) for `module use 
> /path/to//modules/all` 

OK

> On Fri, 2 Dec 2022 at 11:01, Loris Bennett  wrote:
>
>  I was basing my approach on the first answer given here:
>
>
> https://www.reddit.com/r/HPC/comments/y1gdch/how_to_manage_easybuild_on_hpc_with_multiple_cpu/
>
>  But I see now that the problem being solved there is slightly different
>  to mine, as two existing clusters were being merged, so the software for
>  the two different architectures had already been built.
>
>  "Alan O'Cais"  writes:
>
>  > Sorry, wrong name: --installpath-modules
>
>  OK, thanks.  Is there no corresponding environment variable?
>
>  > If you are not using this explicitly in your config, then you are relying 
> on EASYBUILD_PREFIX to set the default, see
>  > 
> https://docs.easybuild.io/en/latest/Configuration.html#mandatory-configuration-settings
>  for details. By setting _just_ EASYBUILD_INSTALLPATH, you
>  are
>  > only changing where software gets installed, everything else is remaining 
> the same (and EasyBuild relies only on the module files to know if
>  something
>  > is installed or not).

Something seems to be wrong with my set-up.  I have defined my own variable

  [build@a001 ~]$ echo $EASYBUILD_INSTALLPATH_MODULES 
  /trinity/shared/easybuild/arch/amd/zen3/modules

which in fact EasyBuild seems to recognise:

  [build@a001 ~]$ eb --show-config
  #
  # Current EasyBuild configuration
  # (C: command line argument, D: default value, E: environment variable, F: 
configuration file)
  #
  buildpath   (F) = /trinity/shared/easybuild/build
  containerpath   (F) = /trinity/shared/easybuild/containers
  hooks   (F) = /trinity/home/build/hooks/hpc_hooks.py
  installpath (E) = /trinity/shared/easybuild/arch/amd/zen3/software
  installpath-modules (E) = /trinity/shared/easybuild/arch/amd/zen3/modules
  packagepath (F) = /trinity/shared/easybuild/packages
  prefix  (E) = /trinity/shared/easybuild
  repositorypath  (F) = /trinity/shared/easybuild/ebfiles_repo
  robot-paths (D) = 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs
  sourcepath  (F) = /trinity/shared/easybuild/sources

However, EasyBuild still doesn't want to build the dependency: 

[build@a001 ~]$ eb Bison-3.8.2.eb 
--installpath-modules=$EASYBUILD_INSTALLPATH_MODULES --robot --dry-run --force
== Temporary log file in case of crash /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log
== found valid index for 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
using it...
== found valid index for 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
using it...
Dry run: printing build status of easyconfigs and dependencies
 * [x] 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
 (module: M4/1.4.19)
 * [F] 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
 (module: Bison/3.8.2)
== Temporary log file(s) /tmp/eb-aqpm3paq/easybuild-vqgytl2y.log* have been 
removed.
== Temporary directory /tmp/eb-aqpm3paq has been removed.

What am I doing wrong?

Cheers,

Loris

[snip (116 lines)]

-- 
Dr. Loris Bennett (Herr/Mr)
ZEDAT, Freie Universität Berlin


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Alan O'Cais
Ever configuartion setting can be done in multiple ways, see
https://easybuilders.github.io/easybuild-tutorial/2022-isc22/configuration/
for a good overview.

The easiest way to do arch support is to have use .../easybuild/ as
the --prefix for each node type. The only stuff you should really worry
about have multiple copies of are the sources, so you can set --sourcepath
to .../easybuild/sources to avoid that duplication. For each node then you
configure the profile so that it detects the right path(s) for `module use
/path/to//modules/all`

On Fri, 2 Dec 2022 at 11:01, Loris Bennett 
wrote:

>
> I was basing my approach on the first answer given here:
>
>
> https://www.reddit.com/r/HPC/comments/y1gdch/how_to_manage_easybuild_on_hpc_with_multiple_cpu/
>
> But I see now that the problem being solved there is slightly different
> to mine, as two existing clusters were being merged, so the software for
> the two different architectures had already been built.
>
> "Alan O'Cais"  writes:
>
> > Sorry, wrong name: --installpath-modules
>
> OK, thanks.  Is there no corresponding environment variable?
>
> > If you are not using this explicitly in your config, then you are
> relying on EASYBUILD_PREFIX to set the default, see
> >
> https://docs.easybuild.io/en/latest/Configuration.html#mandatory-configuration-settings
> for details. By setting _just_ EASYBUILD_INSTALLPATH, you are
> > only changing where software gets installed, everything else is
> remaining the same (and EasyBuild relies only on the module files to know
> if something
> > is installed or not).
>
> Ah, OK.  Is there a recommend directory layout?  I can think of
>
>   easybuild/
>   |-- build
>   |-- ebfiles_repo
>   |-- moduleData
>   |-- modules
>   |   `-- arch
>   |   |-- intel
>   |   `-- amd
>   |-- software
>   |   `-- arch
>   |   |-- intel
>   |   `-- amd
>   `-- sources
>
> or
>
>   easybuild/
>   |-- build
>   |-- ebfiles_repo
>   |-- moduleData
>   |-- arch
>   |   |-- intel
>   |   |   |-- software
>   |   |   `-- modules
>   |   `-- amd
>   |   |   |-- software
>   |   |   `-- modules
>   `-- sources
>
> Are there any factors which would make one preferable to the other?
>
> > On Fri, 2 Dec 2022 at 09:55, Loris Bennett 
> wrote:
> >
> >  Hi Alan,
> >
> >  Is EASYBUILD_MODULEPATH documented anywhere?  It is not set in my
> >  environment and my search on the web didn't turn up any results.
> >
> >  Cheers,
> >
> >  Loris
> >
> >  "Alan O'Cais"  writes:
> >
> >  > You are changing the EASYBUILD_INSTALLPATH, but not changing
> EASYBUILD_MODULEPATH. This means you are overwriting the existing module
> tree. You
> >  don't
> >  > want this, instead you build a new module tree somewhere else. Since
> the tree will be empty, EasyBuild will also install all the deps.
> >  >
> >  > On Fri, 2 Dec 2022 at 09:27, Loris Bennett <
> loris.benn...@fu-berlin.de> wrote:
> >  >
> >  >  Hi Ole,
> >  >
> >  >  Ole Holm Nielsen  writes:
> >  >
> >  >  > Hi Loris,
> >  >  >
> >  >  > On 12/2/22 08:27, Loris Bennett wrote:
> >  >  >> How do I force a total rebuild of, say, a foss toolchain for a
> different
> >  >  >> CPU architecture?
> >  >  >> Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we
> >  >  >> have
> >  >  >> acquired some nodes with AMD Epyc CPUs for which I need to build
> >  >  >> software.
> >  >  >> I have modified EASYBUILD_INSTALLPATH to point to directory for
> the
> >  >  >> new
> >  >  >> architecture and prepended a corresponding directory for the
> modules to
> >  >  >> MODULEPATH.  However, running EasyBuild with the option --force
> just
> >  >  >> rebuilds the package specified, not the dependencies.
> >  >  >> What is the correct way to go about this?
> >  >  >
> >  >  > Probably there are multiple ways to set up modules for multiple
> >  >  > architectures :-)  My choice was to create completely different
> module
> >  >  > trees for each type of hardware (we have 4 generations of Intel
> Xeon).
> >  >  > My notes are in this Wiki page:
> >  >  >
> https://wiki.fysik.dtu.dk/Niflheim_system/EasyBuild_modules/#automounting-the-cpu-architecture-dependent-modules-directory
> >  >  >
> >  >  > IHTH /Ole
> >  >
> >  >  Thanks for the link.  That looks like an good way of dealing with
> >  >  switching between different architectures.
> >  >
> >  >  However, I am not yet quite that far.  My question was more to do
> with
> >  >  how to actually rebuild the software in a second branch.  If I change
> >  >  EASYBUILD_INSTALLPATH and MODULEPATH as described abouve and then run
> >  >  EasyBuild with force I get, say, the following:
> >  >
> >  >[build@a001 ~]$ eb Bison-3.8.2.eb --robot --force --dry-run
> >  >== Temporary log file in case of crash
> /tmp/eb-akrn565i/easybuild-0vsmv95q.log
> >  >== found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs,
> so using it...
> >  >== found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6

Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Loris Bennett


I was basing my approach on the first answer given here:

  
https://www.reddit.com/r/HPC/comments/y1gdch/how_to_manage_easybuild_on_hpc_with_multiple_cpu/

But I see now that the problem being solved there is slightly different
to mine, as two existing clusters were being merged, so the software for
the two different architectures had already been built.

"Alan O'Cais"  writes:

> Sorry, wrong name: --installpath-modules

OK, thanks.  Is there no corresponding environment variable?

> If you are not using this explicitly in your config, then you are relying on 
> EASYBUILD_PREFIX to set the default, see
> https://docs.easybuild.io/en/latest/Configuration.html#mandatory-configuration-settings
>  for details. By setting _just_ EASYBUILD_INSTALLPATH, you are
> only changing where software gets installed, everything else is remaining the 
> same (and EasyBuild relies only on the module files to know if something
> is installed or not).

Ah, OK.  Is there a recommend directory layout?  I can think of 

  easybuild/
  |-- build
  |-- ebfiles_repo
  |-- moduleData
  |-- modules
  |   `-- arch
  |   |-- intel
  |   `-- amd
  |-- software
  |   `-- arch
  |   |-- intel
  |   `-- amd
  `-- sources

or

  easybuild/
  |-- build
  |-- ebfiles_repo
  |-- moduleData
  |-- arch
  |   |-- intel
  |   |   |-- software
  |   |   `-- modules
  |   `-- amd
  |   |   |-- software
  |   |   `-- modules
  `-- sources

Are there any factors which would make one preferable to the other?

> On Fri, 2 Dec 2022 at 09:55, Loris Bennett  wrote:
>
>  Hi Alan,
>
>  Is EASYBUILD_MODULEPATH documented anywhere?  It is not set in my
>  environment and my search on the web didn't turn up any results.
>
>  Cheers,
>
>  Loris
>
>  "Alan O'Cais"  writes:
>
>  > You are changing the EASYBUILD_INSTALLPATH, but not changing 
> EASYBUILD_MODULEPATH. This means you are overwriting the existing module 
> tree. You
>  don't
>  > want this, instead you build a new module tree somewhere else. Since the 
> tree will be empty, EasyBuild will also install all the deps.
>  >
>  > On Fri, 2 Dec 2022 at 09:27, Loris Bennett  
> wrote:
>  >
>  >  Hi Ole,
>  >
>  >  Ole Holm Nielsen  writes:
>  >
>  >  > Hi Loris,
>  >  >
>  >  > On 12/2/22 08:27, Loris Bennett wrote:
>  >  >> How do I force a total rebuild of, say, a foss toolchain for a 
> different
>  >  >> CPU architecture?
>  >  >> Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we
>  >  >> have
>  >  >> acquired some nodes with AMD Epyc CPUs for which I need to build
>  >  >> software.
>  >  >> I have modified EASYBUILD_INSTALLPATH to point to directory for the
>  >  >> new
>  >  >> architecture and prepended a corresponding directory for the modules to
>  >  >> MODULEPATH.  However, running EasyBuild with the option --force just
>  >  >> rebuilds the package specified, not the dependencies.
>  >  >> What is the correct way to go about this?
>  >  >
>  >  > Probably there are multiple ways to set up modules for multiple
>  >  > architectures :-)  My choice was to create completely different module 
>  >  > trees for each type of hardware (we have 4 generations of Intel Xeon).
>  >  > My notes are in this Wiki page:
>  >  > 
> https://wiki.fysik.dtu.dk/Niflheim_system/EasyBuild_modules/#automounting-the-cpu-architecture-dependent-modules-directory
>  >  >
>  >  > IHTH /Ole
>  >
>  >  Thanks for the link.  That looks like an good way of dealing with
>  >  switching between different architectures.
>  >
>  >  However, I am not yet quite that far.  My question was more to do with
>  >  how to actually rebuild the software in a second branch.  If I change
>  >  EASYBUILD_INSTALLPATH and MODULEPATH as described abouve and then run
>  >  EasyBuild with force I get, say, the following:
>  >
>  >[build@a001 ~]$ eb Bison-3.8.2.eb --robot --force --dry-run
>  >== Temporary log file in case of crash 
> /tmp/eb-akrn565i/easybuild-0vsmv95q.log
>  >== found valid index for 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
> using it...
>  >== found valid index for 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
> using it...
>  >Dry run: printing build status of easyconfigs and dependencies
>  > * [x] 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
>  (module: M4/1.4.19)
>  > * [F] 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
>  (module: Bison/3.8.2)
>  >
>  >  How to I get EasyBuild to build M4 automatically as well?
>  >
>  >  Cheers,
>  >
>  >  Loris
>  >
>  >  -- 
>  >  Dr. Loris Bennett (Herr/Mr)
>  >  ZEDAT, Freie Universität Berlin
>  >
>  -- 
>  Dr. Loris Bennett (Herr/Mr)
>  ZEDAT, Freie Universität Berlin
>
-- 
Dr. Loris Bennett (Herr/Mr)
ZEDAT, Freie Universität Berlin


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Alan O'Cais
Sorry, wrong name: --installpath-modules

If you are not using this explicitly in your config, then you are relying
on EASYBUILD_PREFIX to set the default, see
https://docs.easybuild.io/en/latest/Configuration.html#mandatory-configuration-settings
for details. By setting _just_ EASYBUILD_INSTALLPATH, you are only changing
where software gets installed, everything else is remaining the same (and
EasyBuild relies only on the module files to know if something is installed
or not).

On Fri, 2 Dec 2022 at 09:55, Loris Bennett 
wrote:

> Hi Alan,
>
> Is EASYBUILD_MODULEPATH documented anywhere?  It is not set in my
> environment and my search on the web didn't turn up any results.
>
> Cheers,
>
> Loris
>
> "Alan O'Cais"  writes:
>
> > You are changing the EASYBUILD_INSTALLPATH, but not changing
> EASYBUILD_MODULEPATH. This means you are overwriting the existing module
> tree. You don't
> > want this, instead you build a new module tree somewhere else. Since the
> tree will be empty, EasyBuild will also install all the deps.
> >
> > On Fri, 2 Dec 2022 at 09:27, Loris Bennett 
> wrote:
> >
> >  Hi Ole,
> >
> >  Ole Holm Nielsen  writes:
> >
> >  > Hi Loris,
> >  >
> >  > On 12/2/22 08:27, Loris Bennett wrote:
> >  >> How do I force a total rebuild of, say, a foss toolchain for a
> different
> >  >> CPU architecture?
> >  >> Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we
> >  >> have
> >  >> acquired some nodes with AMD Epyc CPUs for which I need to build
> >  >> software.
> >  >> I have modified EASYBUILD_INSTALLPATH to point to directory for the
> >  >> new
> >  >> architecture and prepended a corresponding directory for the modules
> to
> >  >> MODULEPATH.  However, running EasyBuild with the option --force just
> >  >> rebuilds the package specified, not the dependencies.
> >  >> What is the correct way to go about this?
> >  >
> >  > Probably there are multiple ways to set up modules for multiple
> >  > architectures :-)  My choice was to create completely different
> module
> >  > trees for each type of hardware (we have 4 generations of Intel Xeon).
> >  > My notes are in this Wiki page:
> >  >
> https://wiki.fysik.dtu.dk/Niflheim_system/EasyBuild_modules/#automounting-the-cpu-architecture-dependent-modules-directory
> >  >
> >  > IHTH /Ole
> >
> >  Thanks for the link.  That looks like an good way of dealing with
> >  switching between different architectures.
> >
> >  However, I am not yet quite that far.  My question was more to do with
> >  how to actually rebuild the software in a second branch.  If I change
> >  EASYBUILD_INSTALLPATH and MODULEPATH as described abouve and then run
> >  EasyBuild with force I get, say, the following:
> >
> >[build@a001 ~]$ eb Bison-3.8.2.eb --robot --force --dry-run
> >== Temporary log file in case of crash
> /tmp/eb-akrn565i/easybuild-0vsmv95q.log
> >== found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs,
> so using it...
> >== found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs,
> so using it...
> >Dry run: printing build status of easyconfigs and dependencies
> > * [x]
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
> (module: M4/1.4.19)
> > * [F]
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
> (module: Bison/3.8.2)
> >
> >  How to I get EasyBuild to build M4 automatically as well?
> >
> >  Cheers,
> >
> >  Loris
> >
> >  --
> >  Dr. Loris Bennett (Herr/Mr)
> >  ZEDAT, Freie Universität Berlin
> >
> --
> Dr. Loris Bennett (Herr/Mr)
> ZEDAT, Freie Universität Berlin
>


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Loris Bennett
Hi Alan,

Is EASYBUILD_MODULEPATH documented anywhere?  It is not set in my
environment and my search on the web didn't turn up any results.

Cheers,

Loris

"Alan O'Cais"  writes:

> You are changing the EASYBUILD_INSTALLPATH, but not changing 
> EASYBUILD_MODULEPATH. This means you are overwriting the existing module 
> tree. You don't
> want this, instead you build a new module tree somewhere else. Since the tree 
> will be empty, EasyBuild will also install all the deps.
>
> On Fri, 2 Dec 2022 at 09:27, Loris Bennett  wrote:
>
>  Hi Ole,
>
>  Ole Holm Nielsen  writes:
>
>  > Hi Loris,
>  >
>  > On 12/2/22 08:27, Loris Bennett wrote:
>  >> How do I force a total rebuild of, say, a foss toolchain for a different
>  >> CPU architecture?
>  >> Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we
>  >> have
>  >> acquired some nodes with AMD Epyc CPUs for which I need to build
>  >> software.
>  >> I have modified EASYBUILD_INSTALLPATH to point to directory for the
>  >> new
>  >> architecture and prepended a corresponding directory for the modules to
>  >> MODULEPATH.  However, running EasyBuild with the option --force just
>  >> rebuilds the package specified, not the dependencies.
>  >> What is the correct way to go about this?
>  >
>  > Probably there are multiple ways to set up modules for multiple
>  > architectures :-)  My choice was to create completely different module 
>  > trees for each type of hardware (we have 4 generations of Intel Xeon).
>  > My notes are in this Wiki page:
>  > 
> https://wiki.fysik.dtu.dk/Niflheim_system/EasyBuild_modules/#automounting-the-cpu-architecture-dependent-modules-directory
>  >
>  > IHTH /Ole
>
>  Thanks for the link.  That looks like an good way of dealing with
>  switching between different architectures.
>
>  However, I am not yet quite that far.  My question was more to do with
>  how to actually rebuild the software in a second branch.  If I change
>  EASYBUILD_INSTALLPATH and MODULEPATH as described abouve and then run
>  EasyBuild with force I get, say, the following:
>
>[build@a001 ~]$ eb Bison-3.8.2.eb --robot --force --dry-run
>== Temporary log file in case of crash 
> /tmp/eb-akrn565i/easybuild-0vsmv95q.log
>== found valid index for 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
> using it...
>== found valid index for 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
> using it...
>Dry run: printing build status of easyconfigs and dependencies
> * [x] 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
>  (module: M4/1.4.19)
> * [F] 
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
>  (module: Bison/3.8.2)
>
>  How to I get EasyBuild to build M4 automatically as well?
>
>  Cheers,
>
>  Loris
>
>  -- 
>  Dr. Loris Bennett (Herr/Mr)
>  ZEDAT, Freie Universität Berlin
>
-- 
Dr. Loris Bennett (Herr/Mr)
ZEDAT, Freie Universität Berlin


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Alan O'Cais
You are changing the EASYBUILD_INSTALLPATH, but not
changing EASYBUILD_MODULEPATH. This means you are overwriting the existing
module tree. You don't want this, instead you build a new module tree
somewhere else. Since the tree will be empty, EasyBuild will also install
all the deps.

On Fri, 2 Dec 2022 at 09:27, Loris Bennett 
wrote:

> Hi Ole,
>
> Ole Holm Nielsen  writes:
>
> > Hi Loris,
> >
> > On 12/2/22 08:27, Loris Bennett wrote:
> >> How do I force a total rebuild of, say, a foss toolchain for a different
> >> CPU architecture?
> >> Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we
> >> have
> >> acquired some nodes with AMD Epyc CPUs for which I need to build
> >> software.
> >> I have modified EASYBUILD_INSTALLPATH to point to directory for the
> >> new
> >> architecture and prepended a corresponding directory for the modules to
> >> MODULEPATH.  However, running EasyBuild with the option --force just
> >> rebuilds the package specified, not the dependencies.
> >> What is the correct way to go about this?
> >
> > Probably there are multiple ways to set up modules for multiple
> > architectures :-)  My choice was to create completely different module
> > trees for each type of hardware (we have 4 generations of Intel Xeon).
> > My notes are in this Wiki page:
> >
> https://wiki.fysik.dtu.dk/Niflheim_system/EasyBuild_modules/#automounting-the-cpu-architecture-dependent-modules-directory
> >
> > IHTH /Ole
>
> Thanks for the link.  That looks like an good way of dealing with
> switching between different architectures.
>
> However, I am not yet quite that far.  My question was more to do with
> how to actually rebuild the software in a second branch.  If I change
> EASYBUILD_INSTALLPATH and MODULEPATH as described abouve and then run
> EasyBuild with force I get, say, the following:
>
>   [build@a001 ~]$ eb Bison-3.8.2.eb --robot --force --dry-run
>   == Temporary log file in case of crash
> /tmp/eb-akrn565i/easybuild-0vsmv95q.log
>   == found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs,
> so using it...
>   == found valid index for
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs,
> so using it...
>   Dry run: printing build status of easyconfigs and dependencies
>* [x]
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
> (module: M4/1.4.19)
>* [F]
> /trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
> (module: Bison/3.8.2)
>
> How to I get EasyBuild to build M4 automatically as well?
>
> Cheers,
>
> Loris
>
> --
> Dr. Loris Bennett (Herr/Mr)
> ZEDAT, Freie Universität Berlin
>


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-02 Thread Loris Bennett
Hi Ole,

Ole Holm Nielsen  writes:

> Hi Loris,
>
> On 12/2/22 08:27, Loris Bennett wrote:
>> How do I force a total rebuild of, say, a foss toolchain for a different
>> CPU architecture?
>> Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we
>> have
>> acquired some nodes with AMD Epyc CPUs for which I need to build
>> software.
>> I have modified EASYBUILD_INSTALLPATH to point to directory for the
>> new
>> architecture and prepended a corresponding directory for the modules to
>> MODULEPATH.  However, running EasyBuild with the option --force just
>> rebuilds the package specified, not the dependencies.
>> What is the correct way to go about this?
>
> Probably there are multiple ways to set up modules for multiple
> architectures :-)  My choice was to create completely different module 
> trees for each type of hardware (we have 4 generations of Intel Xeon).
> My notes are in this Wiki page:
> https://wiki.fysik.dtu.dk/Niflheim_system/EasyBuild_modules/#automounting-the-cpu-architecture-dependent-modules-directory
>
> IHTH /Ole

Thanks for the link.  That looks like an good way of dealing with
switching between different architectures.

However, I am not yet quite that far.  My question was more to do with
how to actually rebuild the software in a second branch.  If I change
EASYBUILD_INSTALLPATH and MODULEPATH as described abouve and then run
EasyBuild with force I get, say, the following:

  [build@a001 ~]$ eb Bison-3.8.2.eb --robot --force --dry-run
  == Temporary log file in case of crash /tmp/eb-akrn565i/easybuild-0vsmv95q.log
  == found valid index for 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
using it...
  == found valid index for 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs, so 
using it...
  Dry run: printing build status of easyconfigs and dependencies
   * [x] 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/m/M4/M4-1.4.19.eb
 (module: M4/1.4.19)
   * [F] 
/trinity/shared/easybuild/software/EasyBuild/4.6.2/easybuild/easyconfigs/b/Bison/Bison-3.8.2.eb
 (module: Bison/3.8.2)

How to I get EasyBuild to build M4 automatically as well?

Cheers,

Loris

-- 
Dr. Loris Bennett (Herr/Mr)
ZEDAT, Freie Universität Berlin


Re: [easybuild] Force rebuild of module plus all dependencies

2022-12-01 Thread Ole Holm Nielsen

Hi Loris,

On 12/2/22 08:27, Loris Bennett wrote:

How do I force a total rebuild of, say, a foss toolchain for a different
CPU architecture?

Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we have
acquired some nodes with AMD Epyc CPUs for which I need to build
software.

I have modified EASYBUILD_INSTALLPATH to point to directory for the new
architecture and prepended a corresponding directory for the modules to
MODULEPATH.  However, running EasyBuild with the option --force just
rebuilds the package specified, not the dependencies.

What is the correct way to go about this?


Probably there are multiple ways to set up modules for multiple 
architectures :-)  My choice was to create completely different module 
trees for each type of hardware (we have 4 generations of Intel Xeon).  My 
notes are in this Wiki page:

https://wiki.fysik.dtu.dk/Niflheim_system/EasyBuild_modules/#automounting-the-cpu-architecture-dependent-modules-directory

IHTH /Ole


[easybuild] Force rebuild of module plus all dependencies

2022-12-01 Thread Loris Bennett
Hi,

How do I force a total rebuild of, say, a foss toolchain for a different
CPU architecture?

Up to now I had a homogeneous cluster with Intel Xeon CPUs, now we have
acquired some nodes with AMD Epyc CPUs for which I need to build
software.

I have modified EASYBUILD_INSTALLPATH to point to directory for the new
architecture and prepended a corresponding directory for the modules to
MODULEPATH.  However, running EasyBuild with the option --force just
rebuilds the package specified, not the dependencies.

What is the correct way to go about this?

Cheers,

Loris

-- 
Dr. Loris Bennett (Herr/Mr) ZEDAT, Freie Universität Berlin