Skip to contentSkip to conversation

distutils-base.bbclass: Do not use -pie with hardening

PATCH Superseded Khem Raj 1 participant 1 message Jun 2, 2017

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore

Khem Raj

author
#0 lore raw

PATCH v2 1/1 distutils-base.bbclass: Do not use -pie with hardening

Fix build when PIE is turned on. It tries to build .so file using -pie and -shared flags together because its doing compile and link in same step CFLAGS and LDFLAGS are combined and does not work, ending in errors e.g.

| /mnt/a/oe/build/tmp/work/cortexa7t2hf-neon-vfpv4-bec-linux-musleabi/python-pygpgme/0.3-r0/recipe-sysroot/usr/l ib/Scrt1.o: In function `_start_c':
| /usr/src/debug/musl/1.1.16+gitAUTOINC+179766aa2e-r0/git/crt/crt1.c:17: undefined reference to `main' | collect2: error: ld returned 1 exit status

This error while cryptic is due to the fact that we are building a shared library but also pass -pie flag to the link step after specify LDHSARED ( which is -shared linker flags )

we can not use -pie when doing shared libs. This is true for all the python modules inheriting setup tools

Disable the pie flags thusly for all modules using setuptools since this setting is done in setuptools makefiles which are then used during module compiles

---
v1 -> v2:
- Move the change to distutils-base to include both python2 and 3

 meta/classes/distutils-base.bbclass | 2 ++
 1 file changed, 2 insertions(+)
meta/classes/distutils-base.bbclass +2 -0
index 9f398d7051..3adbd5c643 100644
@@ -2,3 +2,5 @@ DEPENDS  += "${@["${PYTHON_PN}-native ${PYTHON_PN}", ""][(d.getVar('PACKAGES') =
 RDEPENDS_${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
 
 inherit distutils-common-base pythonnative
+
+SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}
Signature · 1 line
2.13.0