Kenneth,
Splendid answer!

patches = [('three-1.2.3_enhanced.patch', ' three-1.2.3')]

told me 
Can't patch directory 
/my/modulebuildingroot/build/somethingsomething/1.2.3/dummy-dummy-myversionssuffix/one-1.2.3/three-1.2.3:
 no such directory")

So it was assuming the unpacked source of "three-1.2.3" is underneath the 
source of the first software "one-1.2.3" - so the following line is actually 
working:

patches = [('three-1.2.3_enhanced.patch', ' ../three-1.2.3')]

Case closed! Thanks a lot, Kenneth!

Best regards from Berlin,
Wolfram

PS: Thanks also to Jack and Alan (wow - Alan hit the nail directly - I've seen 
it a little too late) - I very much appreciate your answers!





-----Original Message-----
From: Kenneth Hoste [mailto:[email protected]] 
Sent: Wednesday, December 05, 2018 4:50 PM
To: Wolfram Zieger
Cc: [email protected]
Subject: Re: [easybuild] Applying patch to only one of four sources

Dear Wolfram,

The patches are not applied to a particular source (so using empty 
entries in 'patches' doesn't make sense), but are simply applied in the 
build directory which contains all unpacked sources.

To control where the patch is applied, you can specify a location 
(directory) in which the patch should be applied, as follows:

patches = [('three-1.2.3_enhanced.patch', 'this/is/a/subdir')]

Does this help?


regards,

Kenneth

On 05/12/2018 16:14, Wolfram Zieger wrote:
> Hello,
> Within my eb script (dummy toolchain) I have four sources where a certain 
> install order is necessary.
> It installs fine.
> But: If I apply a patch meant for source No. 3, the patch gets applied to 
> source No. 1 which fails (see relevant log entries at the end)
> What can I do to make sure the patch is applied to the third source instead 
> of the first source?
> 
> ---------[part of eb script]-----------------------------------------------
> source_urls = [
>      'https://somethingsomething.com/one/',
>      'https://somethingsomething.com/two/',
>      'https://somethingsomething.com/three/',
>      'https://somethingsomething.com/four/',
> ]
> 
> sources = [
>      'one-install.tar.gz',
>      'two-setup.tar.gz',
>      'three-something.tar.gz',
>      'four-goodone.tar.gz',
> ]
> 
> patches = [
>      'three-1.2.3_enhanced.patch',
> ]
> --------------------------------------------------------------------------------
> 
> By the way - using empty '' values for the patches list is not working.
> Should I use dummy patches for the first two?
> 
> BTW - Here is the relevant part of the log:
> 
> ----log--------------------------------------------------------------------------
> Can't determine patch level for patch 
> /my/ebscripts/three-1.2.3_enhanced.patch from directory
>   
> /my/modulebuildingroot/build/somethingsomething/1.2.3/dummy-dummy-myversionssuffix/one-install-1.2.3
>   (at 
> my/modulebuildingroot/software/EasyBuild/3.5.3/lib/python2.7/site-packages/easybuild_framework-3.5.3-py2.7.egg/easybuild/tools/filetools.py:910
>  in apply_patch)
> --------------------------------------------------------------------------------
> 
> Yeah, it's EasyBUild 3.5.3, but I do not think it's a bug, I think, it's 
> either my syntax or it doesn't work this way at all.
> 
> Of course, it complains about "patch level", but
>     patches = [
>         ('three-1.2.3_enhanced.patch', 1),
>     ]
> (reduced patch depth) even more clearly shows, that it cannot find the file 
> to patch in software source 1 instead of 3.
> 
> Best regards,
> Wolfram
> 
> 
> 

Reply via email to