commit 574290ab8473c1f941ef2e66ec4c8767bf4904fa Author: Mihai Moldovan Date: Thu Oct 5 00:36:32 2017 +0200 dev-lisp/sbcl-1.4.0: pass down CFLAGS and LDFLAGS in a saner way, respecting default values. Since sbcl uses no-pie builds by default, we should let the build system handle the complexity and only append our {C,LD}FLAGS values. Just overriding them unconditionally in all places will create a big mess. Additionally, make sure that the *FLAGS variables are clean before changing the Makefile. The -s linker flag has proven to be unusable, since sbcl relies on having symbols available. diff --git a/dev-lisp/sbcl/sbcl-1.4.0.ebuild b/dev-lisp/sbcl/sbcl-1.4.0.ebuild index 9f565e6..962d6c3 100644 --- a/dev-lisp/sbcl/sbcl-1.4.0.ebuild +++ b/dev-lisp/sbcl/sbcl-1.4.0.ebuild @@ -107,11 +107,19 @@ src_prepare() { eapply_user - # bugs #526194, #620532 - sed -e "s@CFLAGS +=.*\$@CFLAGS = ${CFLAGS} -Wall -Wsign-compare -Wpointer-arith@" \ - -e "s@LINKFLAGS += -g\$@LINKFLAGS = ${LDFLAGS}@" \ - -e "s@LINKFLAGS += -no-pie\$@LINKFLAGS = ${LDFLAGS} -no-pie@" \ - -e "s@LINKFLAGS += -nopie\$@LINKFLAGS = ${LDFLAGS} -nopie@" \ + # Make sure the *FLAGS variables are sane. + # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail. + strip-unsupported-flags + filter-flags -fomit-frame-pointer -Wl,-s + filter-ldflags -s + + # original bugs #526194, #620532 + # this broke no-pie default builds, c.f. bug #632670 + # Pass CFLAGS down by appending our value, to let users override + # the default values. + # Keep passing LDFLAGS down via the LINKFLAGS variable. + sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \ + -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \ -i src/runtime/GNUmakefile || die sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \ @@ -148,8 +156,6 @@ src_configure() { src_compile() { local bindir="${WORKDIR}"/sbcl-binary - strip-unsupported-flags ; filter-flags -fomit-frame-pointer - if use pax_kernel ; then # To disable PaX on hardened systems pax-mark -mr "${bindir}"/src/runtime/sbcl