From: "Andreas K. Huettel" <dilfridge@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: [gentoo-dev] perl-module.eclass: respect CFLAGS, LDFLAGS - please review
Date: Sun, 22 Jun 2014 11:41:01 +0200 [thread overview]
Message-ID: <201406221141.08772.dilfridge@gentoo.org> (raw)
[-- Attachment #1: Type: Text/Plain, Size: 4655 bytes --]
TL;DR:
Please review and test (also in exotic settings, arches, prefix?) the patch
below for perl-module.eclass
Sending this to the list since perl is pretty deep down in the system, and
since I'm not 100% sure of this stuff. Needs review.
Also people familiar with Perl have voiced doubts if we should meddle with the
perl-module CFLAGS and LDFLAGS at all, maybe making these changes conditional
on something like I_KNOW_WHAT_I_AM_DOING. Hoping for comments.
Detail discussion and test results follows below the patch.
=======================================
Index: perl-module.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/perl-module.eclass,v
retrieving revision 1.139
diff -u -B -r1.139 perl-module.eclass
--- perl-module.eclass 30 Mar 2014 19:25:14 -0000 1.139
+++ perl-module.eclass 22 Jun 2014 09:35:16 -0000
@@ -139,6 +139,8 @@
--libdoc= \
--destdir="${D}" \
--create_packlist=0 \
+ --config "optimize=${CFLAGS}" \
+ --config "lddlflags=-shared ${LDFLAGS}" \
"${myconf_local[@]}"
einfo "perl Build.PL" "$@"
perl Build.PL "$@" <<< "${pm_echovar}" \
@@ -150,6 +152,8 @@
INSTALLDIRS=vendor \
INSTALLMAN3DIR='none' \
DESTDIR="${D}" \
+ OPTIMIZE="${CFLAGS}" \
+ LDDLFLAGS="-shared ${LDFLAGS}" \
"${myconf_local[@]}"
einfo "perl Makefile.PL" "$@"
perl Makefile.PL "$@" <<< "${pm_echovar}" \
@@ -178,12 +182,12 @@
|| die "Compilation failed"
elif [[ -f Makefile ]] ; then
set -- \
- OTHERLDFLAGS="${LDFLAGS}" \
+ OPTIMIZE="${CFLAGS}" \
+ LDDLFLAGS="-shared ${LDFLAGS}" \
"${mymake_local[@]}"
einfo "emake" "$@"
emake "$@" \
|| die "Compilation failed"
-# OPTIMIZE="${CFLAGS}" \
fi
}
=======================================
The details:
Right now, if you build perl modules, e.g. ExtUtils::MakeMaker imports the
CFLAGS and LDFLAGS used when building dev-lang/perl. They are stored for
example in /usr/lib*/perl5/*/*/Config_heavy.pl in the "optimize" and
"lddlflags" variable.
The CFLAGS variable from the environment is not used at all; the cause for
this is so far unknown. (If things were working "according to spec", they
would be appended behind the "optimize" values... which is not really what we
want either.)
Once OPTIMIZE="${CFLAGS}" is set, it overwrites the value from
Config_heavy.pl. This means modules get built with the current CFLAGS.
We can also overwrite lddlflags with the make.conf LDFLAGS by setting the
mystic environment variable LDDLFLAGS (there's more than one way to do it!),
but for this to work I have to manually add the parameter "-shared".
** I'm assuming here that Perl wants to have shared library objects everywhere
and that this parameter is accepted everywhere. If that is not true, please
suggest an improvement or cry "foul" ... :| **
https://bugs.gentoo.org/show_bug.cgi?id=261375
=======================================
Testing done
(in a chroot, amd64, stable except perl modules that are only ~arch and their
deps):
1) built a module using ExtUtils::MakeMaker against "perl with wrong flags"
and checked log for flags (perl-core/Encode)
2) built a module using ModUtils::Build against "perl with wrong flags" and
checked log for flags (dev-perl/Class-Load-XS)
3) built (nearly) everything using perl-modules.eclass (~1400 packages, either
newest stable or if no stable ebuild newest ~arch) and checked for obvious
problems by grepping the logs
Test results from 1)
All good.
Test results from 2)
Both CFLAGS and LDFLAGS are (still) inserted double. Reason so far unclear,
odd but not problematic.
Test results from 3)
Before patching eclass:
240 packages throwing CFLAGS QA warning
After modification, the following packages still throw CFLAGS QA warning:
app-mobilephone/obexftp-0.23-r2
dev-perl/Wx-Scintilla-0.390.0
media-libs/ming-0.4.4
net-analyzer/net-snmp-5.7.3_pre3
net-analyzer/rrdtool-1.4.8
www-apache/libapreq2-2.13
www-apache/mod_perl-2.0.7
After modification, *IN ADDITION TO THOSE ABOVE* the "bad" flags occur in the
logs of the following packages:
app-pda/pilot-link-0.12.5
dev-libs/stfl-0.22-r1
dev-perl/Text-BibTeX-0.690.0
dev-perl/math-pari-2.10.806.50
dev-vcs/subversion-1.7.14
games-arcade/frozen-bubble-2.2.1_beta1
sci-biology/vienna-rna-1.8.5
sci-libs/gdal-1.10.1
sys-fs/owfs-2.7_p21-r2
sys-libs/libapparmor-2.8.3
No additional build failures.
--
Andreas K. Huettel
Gentoo Linux developer
dilfridge@gentoo.org
http://www.akhuettel.de/
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 966 bytes --]
next reply other threads:[~2014-06-22 9:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-22 9:41 Andreas K. Huettel [this message]
2014-06-22 9:54 ` [gentoo-dev] perl-module.eclass: respect CFLAGS, LDFLAGS - please review Michał Górny
2014-06-22 18:17 ` Andreas K. Huettel
2014-06-22 13:02 ` [gentoo-dev] " Duncan
2014-06-22 13:11 ` Kent Fredric
2014-06-22 13:31 ` Rich Freeman
2014-06-22 18:13 ` Andreas K. Huettel
2014-06-22 19:10 ` Kent Fredric
2014-06-22 19:24 ` Kent Fredric
2014-06-23 2:24 ` Duncan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201406221141.08772.dilfridge@gentoo.org \
--to=dilfridge@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox