Hi Chris,
On 17/08/15 07:47, Christopher Samuel wrote:
Hi folks,
It turns out that if you try and build GCC 4.9.2 on a Haswell box with
--with-arch=native then the build fails because the assembler in RHEL6.7
doesn't understand some of the instructions GCC emits.
Yes, see also
https://github.com/hpcugent/easybuild-easyconfigs/issues/1605 .
Apparently these are supported by binutils-2.25 and I can see that there
is a GCC-4.9.2-binutils-2.25.eb present in EB but the toolchains don't
use that.
Yet. The foss/2015b toolchain (now in develop, to be included in
EasyBuild 2.2.1 (or 2.3.0) going out soon) does use it (or rather, it
uses the update GCC-4.9.3-binutils-2.25.eb instead).
Is there any better way of getting any GCC build to use a version with
binutils-2.25 other than to copy all the GCC eb's and then edit them to
include a dependency on binutils-2.25?
Well, you can just include binutils as a dependency in the GCC
easyconfig itself (without renaming it), that will work too. This is
basically what we do in the 2015b toolchains, via the (new) subtoolchain
named GNU (which bundles GCC with binutils).
Or you could go with foss/2015b instead (not sure what you're using now).
We did see --amend/--try-amend with versionsuffix=-binutils-2.25 but
instead of adding that onto the GCC-4.9.2.eb when resolving dependencies
it seems to just build GCC-4.9.2.eb as
GCC-4.9.2-binutils-2.25.eb (but without the newer binutils) which is the
opposite of what we're trying to achieve.
WIth --amend=versionsuffix=-foo, you're telling EasyBuild: please look
for an easyconfig that has 'versionsuffix=-foo' that otherwise matching
the one I'm specifying. This should result in GCC-4.9.2-binutils-2.25.eb
being picked up (with the binutils dep included).
With --try-amend=versionsuffix=-foo, you're telling EasyBuild: please
modify the specified easyconfig by including "versionsuffix = '-foo'"
before building it. But this does not imply changing the list of
dependencies.
Something like this *may* work, if you really want to refrain from
copying and modifying the GCC-4.8.2.eb easyconfig file manually:
eb GCC-4.8.2.eb --try-amend="dependencies=,('binutituls', '2.25')"
The ',' indicates that dependencies should be a list, and that the
specified value should be appended to the existing value (which is empty
for GCC, but fine).
eb GCC-4.8.2.eb --try-amend="dependencies=,('binutituls', '2.25')"
If this doesn't work as expected, just copy the GCC-4.8.2.eb easyconfig
and include this: dependencies = [('binutils', '2.25')]
Note that I'm not touching the versionsuffix here, since that would
imply you need to use --try-toolchain-version=4.8.2-binutils-2.25 over
and over again.
Instead, I'm just assuming you're OK with installing GCC/4.8.2 with a
minor site customization, i.e. including a newer binutils version as a
dependency.
Shame this only popped up now but the test system I've had to play with
was Sandybridge and (unsurprisingly) that was supported fine in RHEL6.
Bad test system. ;-)
regards,
Kenneth