#1661: ExternalLibraries/PAPI does not build with gcc 4.8.2 ------------------------------------+--------------------------------------- Reporter: tbode | Owner: tbode Type: defect | Status: new Priority: major | Milestone: ET_2014_11 Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: PAPI ------------------------------------+---------------------------------------
Comment (by rhaas):
I'm not sure if using a hand-written search-and-replace is the best solution to this. It seems to me that patches are fragile only because we tended to include in them the name of the output directory (so papi-5.3 or so appears in the patch file). However that can be avoided if instead of {{{ patch -p0 <somepatch.patch }}} we use {{{ pushd ${NAME} patch -p1 <somepatch.patch }}} as Tanja's proposed fix does.
The major disadvantage with using perl to me seems that it is actually too flexible. Patch files have a fairly standard syntax and it is straightforward to see what is changed. With a potentially complex perl script it is much harder to see what is changed (and in which files). It also requires that one reads all of configure.sh to see what changes are done.
There's also the usual issue that {{{find -print | xargs foo}}} does not deal with file names containing spaces (or more exotic things like newlines) but given the "portable" solutions mentioned on http://www.unix.com/man-page/POSIX/0/xargs/ I am inclined to wait for it to actually cause problems before even attempting to implement those solutions.
Please note: I fully agree that the patches as currently used are fragile and require lots of work maintaining (and Erik shoulders most of the burden of maintaining most of the ExternalLibraries) and that the perl script proposed will very likely be more robust against trivial changes in the source files.