Changes between Version 43 and Version 44 of HPC_deploy


Ignore:
Timestamp:
2017-06-15T19:06:30+02:00 (7 years ago)
Author:
Pieter Neerincx
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • HPC_deploy

    v43 v44  
    321321A: First check if the location where !EasyBuild tries to download the source code is still up-to-date. If not update the !EasyConfig. If the location is correct, but !EasyBuild cannot access this location directly for example because it is blocked by our firewall or because it requires authentication, you can try to download the source manually and put it in the cache directory for the app in {{{/apps/sources/[a-z]/NameOfTheApp/}}}. When !EasyBuild finds the cached source code it will skip the download step and continue.
    322322==== Q: How can I resume a partially failed/succeeded deployment of an !EasyConfig with a lot of extra packages/modules?
    323 A: When you have an !EasyConfig for a language like Perl, Python, R, etc. you may have a long list of extra Perl modules, Python eggs, R packages, etc.
    324 If your install failed near the end of these extensions it ain't fun to start all over from scratch.
     323A: When you have an !EasyConfig of type {{{easyblock = 'Bundle'}}} with a long list of extra  modules, packages, etc. for a language like Perl, Python, R, etc. and your install failed partially it ain't fun to start all over from scratch.
    325324You can resume the install after fixing the issue when
    326 * Your config specifies both the extension defaultclass - e.g. {{{exts_defaultclass = 'PerlModule'}}}
    327 * and the extension filter (command to test whether installation of the extension succeeded) - e.g. {{{exts_filter = ("perldoc -lm %(ext_name)s ", "")}}}
    328 * and when you use the {{{--skip}}} and {{{--resume}}} commandline options for the {{{eb}}} command - e.g.:
     325* Your config specifies the extension defaultclass (= the !EasyBlock) using {{{exts_defaultclass = 'someEasyBlock'}}}
     326* and the extension filter (= command to test whether installation of the extension succeeded) using {{{exts_filter = ("someCommand", "")}}}
     327* and when you've added the path where the additional modules/packages will be installed to the language specific environment variable that is used to search for extras - {{{PERL5LIB}}} for Perl, {{{PYTHONPATH}}} for Python, {{{R_LIBS}}} for R, etc.
     328* and when you use the {{{--skip}}} and {{{--resume}}} commandline options for the {{{eb}}} command - e.g.
    329329  {{{
    330330$> eb --skip --rebuild \
    331331      --robot --robot-paths=${HOME}/git/easybuild-easyconfigs/easybuild/easyconfigs/: \
    332         git/easybuild-easyconfigs/easybuild/easyconfigs/p/PerlPlus/PerlPlus-5.22.0-foss-2015b-v17.01.1.eb
     332      path/to/someEaysyConfig.eb
    333333  }}}
     334* and when deployment already finished succesfully resulting in a module file, but there is an easy workaround: just touch an empty module file:
     335  {{{
     336$> touch ${HPC_ENV_PREFIX/modules/all/moduleName/moduleVersion.lua
     337  }}}
     338  Once the deployment finished successfully the fake empty module file will be overwritten with a proper one.
     339
     340Example of a minimal Bundle to extend Perl 5.22.0 with the module Some::Module version 1.2.3 from CPAN:
     341{{{
     342easyblock = 'Bundle'
     343
     344name = 'PerlPlus'
     345version = '5.22.0'          # Same as the vanilla Perl module on which these add-on modules depend.
     346versionsuffix = '-v17.01.1' # In format YY.MM.IncrementedReleaseNumber.
     347
     348homepage = 'http://www.perl.org/'
     349description = """Extra modules for Larry Wall's Practical Extraction and Report Language."""
     350
     351toolchain = {'name': 'foss', 'version': '2015b'}
     352toolchainopts = {'optarch': True, 'pic': True}
     353
     354dependencies = [
     355    ('Perl', version, '-bare'),
     356]
     357
     358modextrapaths = {'PERL5LIB': ['lib/perl5/', 'lib/perl5/site_perl','lib/perl5/site_perl/5.22.0/'] }
     359moduleclass = 'lang'
     360
     361exts_defaultclass = 'PerlModule'
     362exts_filter = ("perldoc -lm %(ext_name)s ", "")
     363exts_list = [
     364    ('Some::Module', '1.2.3', {
     365        'source_tmpl': 'Some-Module-1.2.3.tar.gz',
     366        'source_urls': ['https://cpan.metacpan.org/authors/id/A/AU/AUTHOR'],
     367    }),
     368}}}
     369
     370Example of a minimal Bundle to extend Python 2.7.11 with the egg !SomeEgg version 1.2.3 from !PyPi:
     371
     372{{{
     373easyblock = 'Bundle'
     374
     375name = 'PythonPlus'
     376version = '%(pyver)s'          # Same as the vanilla Python module on which these add-on modules depend.
     377versionsuffix = '-v17.06.1'    # In format YY.MM.IncrementedReleaseNumber.
     378
     379homepage = 'https://www.python.org/'
     380description = """The PythonPlus bundle contains add-on modules for Python."""
     381
     382toolchain = {'name': 'foss', 'version': '2015b'}
     383
     384dependencies = [
     385    ('Python', '2.7.11'),
     386]
     387
     388exts_defaultclass = 'PythonPackage'
     389exts_filter = ('python -c "import %(ext_name)s"', "")
     390
     391exts_list = [
     392    ('SomeEgg', '1.2.3', {
     393        'source_urls': ['https://pypi.python.org/packages/....long URL'],
     394        'checksums': ['da32434ebfebae2c7506e9577ac558f5'],
     395        'source_tmpl': '%(name)s-%(version)s.zip', # Only required when file name deviates from default naming scheme @ PiPy.
     396        'modulename': 'segg', # name of module for Python import command. Only required when not the same as name of the extension.
     397    }),
     398]
     399
     400modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
     401
     402full_sanity_check = True
     403sanity_check_paths = {
     404    'files': [],
     405    'dirs':  ['lib/python%(pyshortver)s/site-packages'],
     406}
     407
     408moduleclass = 'lang'
     409}}}