I had an R package (later) that I first installed using the RPackage EasyBlock. I needed a patch, which created a configure script. In order to make that executable, I did a chmod relative to %(builddir)s like so:
easyblock = 'RPackage'
name = 'later'
version = '0.7.3'
...
source_urls = ['https://cran.r-project.org/src/contrib/Archive/%(name)s']
sources = ['%(name)s_%(version)s.tar.gz']
patches = [('later-0.7.3_mutex_creation.patch', 1)]
...
preinstallopts = 'chmod u+x %(builddir)s/later/configure;'
...
This worked fine, so I now wanted to apply the same patch + chmod to the general R-3.5.1-foss-2018b.eb, i.e. where later is an extension defined as follows:
('later', '0.7.3', {
'patches': ['later-0.7.3_mutex_creation.patch'],
'checksums': [
'5c57148c255ee5da61cb748550b73bad7094f4e045b99b362473be5e3dbc4212', # later_0.7.3.tar.gz
'f24e0a9d1637a7140e487dcd7b9cfce05fe71ec11d0fe78084eaf9ce98f4dea8', # later-0.7.3_mutex_creation.patch
],
'preinstallopts': 'chmod u+x %(builddir)s/later/configure;',
}),
This results in
= 2020-02-28 22:21:02,337 build_log.py:169 ERROR EasyBuild crashed with an error (at easybuild/base/exceptions.py:124 in __init__): cmd "chmod u+x %(builddir)s/later/configure; R CMD INSTALL /scratch/casparl/R/3.5.1/foss-2019b/later/later --library=/home/casparl/.local/easybuild/Debian10/2019/software/R/3.5.1-foss-2019b/lib64/R/library --no-clean-on-error " exited with exit code 1 and output:
/bin/bash: -c: line 0: syntax error near unexpected token `('
Clearly, the %(builddir)s template is not replaced and as a result, bash throws a syntax error when encountering the opening bracket. I wasn't sure that using %(builddir)s was even supposed to work for extensions (because: should it refer to the builddir of R? Or the builddir of later? That might not be trivial to achieve...). Nevertheless, my fellow EasyBuilders on Slack seemed to think this should work...
I had an R package (
later) that I first installed using the RPackage EasyBlock. I needed a patch, which created a configure script. In order to make that executable, I did achmodrelative to%(builddir)slike so:This worked fine, so I now wanted to apply the same patch + chmod to the general
R-3.5.1-foss-2018b.eb, i.e. wherelateris an extension defined as follows:This results in
Clearly, the
%(builddir)stemplate is not replaced and as a result, bash throws a syntax error when encountering the opening bracket. I wasn't sure that using%(builddir)swas even supposed to work for extensions (because: should it refer to the builddir ofR? Or the builddir oflater? That might not be trivial to achieve...). Nevertheless, my fellow EasyBuilders on Slack seemed to think this should work...