Subject: Using gcc-ssp for pkgsrc builds?
To: None <tech-pkg@netbsd.org>
From: Luke Maurits <lmaurits@gmail.com>
List: tech-pkg
Date: 07/01/2005 12:56:06
Greetings,
I was wondering if anybody could give me some guidance on setting up
pkgsrc to use the stack-smashing protected gcc (lang/gcc-ssp) by default
when building packages.
I believe this should simply involve telling pkgsrc:
1) To use /usr/pkg/gcc-ssp-2.95.3.13/bin/gcc instead of /usr/bin/gcc
2) To use -fstack-protector for each build,
I'm just not certain where/how I need to specify these things.
I've looked through /usr/pkgsrc/mk/compiler.mk, which seemed a likely
place. It mentions being able to set PKGSRC_COMPILER in /etc/mk.conf,
which seems to be the answer to 1), but the list of valid values does not
include gcc-ssp. I can only imagine pkgsrc is in some way "aware" of the
listed values there (ie: knows their path, etc) - can I "introduce" pkgsrc
to gcc-ssp somewhere, so that PKGSRC_COMPILER="gcc-ssp" will work? Or do
I have to go about it in a different way entirely?
As for 2), will setting CFLAGS+="-fstack-protector" in /etc/mk.conf be
sufficient? I'm a little confused about the relevancy of the PKGMAKECONF
variable, as described in "man packages". It states that if PKGMAKECONF
is not set explicitly, it is set to /dev/null to avoid picking up settings
used by builds in /usr/src. From this I assume that pkgsrc ignores
/etc/mk.conf unless explicitly told to listen to it, so that one can have
separate configurations for pkgsrc builds and builds in /usr/src? If this
is so, why does /usr/pkgsrc/mk/compiler.mk state that PKGSRC_COMPILER
should only be set in /etc/mk.conf, where it would by default be ignored?
Any advice anyone can give me (including whether I should even be trying
to do this in the first place - can I expect gcc-ssp to build most
packages without breaking?) would be much appreciated.
Regards,
Luke