conda-forge / perl-feedstock

A conda-smithy repository for perl.
BSD 3-Clause "New" or "Revised" License
3 stars 32 forks source link

GCC 4.8 incompatible #16

Closed epruesse closed 3 years ago

epruesse commented 7 years ago

perl 5.22.0.1-0 was compiled with gcc 4.9, enabling the use of -fstack-protector-strong when compiling perl bindings with MakeMaker and leading to failure with standard conda gcc 4.8.

Perhaps add toolchain to the build requirements?

epruesse commented 7 years ago

The offending lines are in ./lib/perl5/5.22.0/x86_64-linux-thread-multi/Config_heavy.pl:

199:ccflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
229:cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
991:lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'
992:ldflags='  -fstack-protector-strong -L/usr/local/lib'
1336:ccflags_nolargefiles='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include  -D_FORTIFY_SOURCE=2'
1337:ldflags_nolargefiles='  -fstack-protector-strong -L/usr/local/lib'

This should be fixable by #12 or a rebuild, if gcc 4.9 was used on accident.

jakirkham commented 7 years ago

I don't think gcc 4.9 is being used though. We only install gcc 4.8. 😕

epruesse commented 7 years ago

Maybe an accident? All I can see is that Perl decided to use a 4.9 flag which doesn't work with 4.8. May have been a bug in the perl build chain, or may have been caused by a temporary failure in the build setup where 4.9 was used (for whatever reason). It seems to be fixed in 5.22.2 though.

Still... should this be added to the tests perhaps?

jakirkham commented 7 years ago

Just to be clear, there is no gcc 4.9 on the image. Only gcc 4.8.2. Feel free to check. Though I could be misunderstanding the comment.

If we install the gcc package from defaults, then we get gcc 4.8.5. It's newer than the devtoolset-2 one. How are we sure this problem won't occur with it too?

Patching perl might be a solution. A quick Google turned up this. Maybe newer versions of perl have better ways of handling disabling -fstack-protector-strong. Perhaps it is worthwhile to do some research on this problem so we can find the right fix.

Sorry, I don't follow your suggestion, what are you proposing be added to the tests?

mbargull commented 3 years ago

We use our own compiler stack since a good while now. Closing as outdated.