Skip to contentSkip to conversation

gcc-runtime: Move content from gcclibdir into libdir

PATCH Superseded Khem Raj 2 participants 4 messages Aug 12, 2019 – Aug 13, 2019

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Khem Raj

author
#0 lore raw

PATCH 1/1 gcc-runtime: Move content from gcclibdir into libdir

OE does not use the traditional /usr/lib/gcc prefix to store gcc-runtime it basically is moved into libdir, however some newer files were installed by newer versions of gcc especially libgomp ( omp.h openacc.h ) into gcclibdir, so we have content in both directories, this confuses other tools which are trying to guess the gcc installation and its runtime location, since now we have two directories, the tools either choose one or other and we get inconsistent behavior, e.g. clang for aarch64 uses /usr/lib but same clang for riscv64 chose /usr/lib/gcc

This change ensures that OE ends up with single valid location for gcc runtime files

---
 meta/recipes-devtools/gcc/gcc-runtime.inc    | 5 +++++
 meta/recipes-devtools/gcc/gcc-runtime_8.3.bb | 3 ++-
 meta/recipes-devtools/gcc/gcc-runtime_9.1.bb | 3 ++-
 3 files changed, 9 insertions(+), 2 deletions(-)
meta/recipes-devtools/gcc/gcc-runtime.inc +5 -0
index a5c2600d7f..ebba774108 100644
@@ -77,6 +77,11 @@ do_install () {
 		cd ${B}/${TARGET_SYS}/$d/
 		oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/${TARGET_SYS}/$d/ install
 	done
+	if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include ]; then
+		install -d ${D}${libdir}/${TARGET_SYS}/${BINV}/include 
+		mv ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/* ${D}${libdir}/${TARGET_SYS}/${BINV}/include
+		rmdir --ignore-fail-on-non-empty -p ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include
+	fi
 	rm -rf ${D}${infodir}/libgomp.info ${D}${infodir}/dir
 	rm -rf ${D}${infodir}/libitm.info ${D}${infodir}/dir
 	rm -rf ${D}${infodir}/libquadmath.info ${D}${infodir}/dir
meta/recipes-devtools/gcc/gcc-runtime_8.3.bb +2 -1
index a1c7a76d0b..172af4e7e1 100644
@@ -5,7 +5,8 @@ require gcc-runtime.inc
 EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
 
 FILES_libgomp-dev += "\
-    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
 "
 
 # Building with thumb enabled on armv6t fails
meta/recipes-devtools/gcc/gcc-runtime_9.1.bb +2 -1
index a1c7a76d0b..172af4e7e1 100644
@@ -5,7 +5,8 @@ require gcc-runtime.inc
 EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
 
 FILES_libgomp-dev += "\
-    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
 "
 
 # Building with thumb enabled on armv6t fails
Signature · 1 line
2.22.0
#1 lore raw
Quoted 15 lines · Khem Raj

OE does not use the traditional /usr/lib/gcc prefix to store gcc- runtime
it basically is moved into libdir, however some newer files were installed by newer versions of gcc especially libgomp ( omp.h openacc.h )
into gcclibdir, so we have content in both directories, this confuses other tools which are trying to guess the gcc installation and its runtime location, since now we have two directories, the tools either choose one or other and we get inconsistent behavior, e.g. clang for aarch64 uses /usr/lib but same clang for riscv64 chose /usr/lib/gcc

This change ensures that OE ends up with single valid location for gcc
runtime files

Quoted 6 lines
---
 meta/recipes-devtools/gcc/gcc-runtime.inc    | 5 +++++
 meta/recipes-devtools/gcc/gcc-runtime_8.3.bb | 3 ++-
 meta/recipes-devtools/gcc/gcc-runtime_9.1.bb | 3 ++-
 3 files changed, 9 insertions(+), 2 deletions(-)

This appears to break mingw:

https://autobuilder.yoctoproject.org/typhoon/#/builders/89/builds/925

Cheers,

Richard

Quoted 53 lines
meta/recipes-devtools/gcc/gcc-runtime.inc +0 -0
index a5c2600d7f..ebba774108 100644
@@ -77,6 +77,11 @@ do_install () {
 		cd ${B}/${TARGET_SYS}/$d/
 		oe_runmake 'DESTDIR=${D}'

MULTIBUILDTOP=${B}/${TARGET_SYS}/$d/ install

meta/recipes-devtools/gcc/gcc-runtime.inc +3 -0
 	done
+	if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include ]; then
+		install -d ${D}${libdir}/${TARGET_SYS}/${BINV}/include 
+		mv ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/*

${D}${libdir}/${TARGET_SYS}/${BINV}/include

meta/recipes-devtools/gcc/gcc-runtime.inc +1 -0
+		rmdir --ignore-fail-on-non-empty -p

${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include

meta/recipes-devtools/gcc/gcc-runtime.inc +1 -0
+	fi
 	rm -rf ${D}${infodir}/libgomp.info ${D}${infodir}/dir
 	rm -rf ${D}${infodir}/libitm.info ${D}${infodir}/dir
 	rm -rf ${D}${infodir}/libquadmath.info ${D}${infodir}/dir
meta/recipes-devtools/gcc/gcc-runtime_8.3.bb +2 -1
index a1c7a76d0b..172af4e7e1 100644
@@ -5,7 +5,8 @@ require gcc-runtime.inc
 EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
 
 FILES_libgomp-dev += "\
-    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
 "
 
 # Building with thumb enabled on armv6t fails
meta/recipes-devtools/gcc/gcc-runtime_9.1.bb +2 -1
index a1c7a76d0b..172af4e7e1 100644
@@ -5,7 +5,8 @@ require gcc-runtime.inc
 EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
 
 FILES_libgomp-dev += "\
-    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
 "
 
 # Building with thumb enabled on armv6t fails
Signature · 1 line
2.22.0
author
#2 lore raw
Quoted 24 lines · Richard Purdie
Quoted 15 lines · Khem Raj

OE does not use the traditional /usr/lib/gcc prefix to store gcc- runtime
it basically is moved into libdir, however some newer files were installed by newer versions of gcc especially libgomp ( omp.h openacc.h )
into gcclibdir, so we have content in both directories, this confuses other tools which are trying to guess the gcc installation and its runtime location, since now we have two directories, the tools either choose one or other and we get inconsistent behavior, e.g. clang for aarch64 uses /usr/lib but same clang for riscv64 chose /usr/lib/gcc

This change ensures that OE ends up with single valid location for gcc
runtime files

Quoted 6 lines
---
 meta/recipes-devtools/gcc/gcc-runtime.inc    | 5 +++++
 meta/recipes-devtools/gcc/gcc-runtime_8.3.bb | 3 ++-
 meta/recipes-devtools/gcc/gcc-runtime_9.1.bb | 3 ++-
 3 files changed, 9 insertions(+), 2 deletions(-)
Quoted 4 lines

This appears to break mingw:

https://autobuilder.yoctoproject.org/typhoon/#/builders/89/builds/925

seems virtual:nativesdk:/home/pokybuild/yocto-worker/meta-mingw/build/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb:do_package

but I cant see which files can you help

Quoted 59 lines

Cheers,

Richard

Quoted 53 lines
meta/recipes-devtools/gcc/gcc-runtime.inc +0 -0
index a5c2600d7f..ebba774108 100644
@@ -77,6 +77,11 @@ do_install () {
              cd ${B}/${TARGET_SYS}/$d/
              oe_runmake 'DESTDIR=${D}'

MULTIBUILDTOP=${B}/${TARGET_SYS}/$d/ install
done

meta/recipes-devtools/gcc/gcc-runtime.inc +3 -0
+     if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include ]; then
+             install -d ${D}${libdir}/${TARGET_SYS}/${BINV}/include
+             mv ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/*

${D}${libdir}/${TARGET_SYS}/${BINV}/include
+ rmdir --ignore-fail-on-non-empty -p
${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include

meta/recipes-devtools/gcc/gcc-runtime.inc +1 -0
+     fi
      rm -rf ${D}${infodir}/libgomp.info ${D}${infodir}/dir
      rm -rf ${D}${infodir}/libitm.info ${D}${infodir}/dir
      rm -rf ${D}${infodir}/libquadmath.info ${D}${infodir}/dir
meta/recipes-devtools/gcc/gcc-runtime_8.3.bb +2 -1
index a1c7a76d0b..172af4e7e1 100644
@@ -5,7 +5,8 @@ require gcc-runtime.inc
 EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
 
 FILES_libgomp-dev += "\
-    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
 "
 
 # Building with thumb enabled on armv6t fails
meta/recipes-devtools/gcc/gcc-runtime_9.1.bb +2 -2
index a1c7a76d0b..172af4e7e1 100644
@@ -5,7 +5,8 @@ require gcc-runtime.inc
 EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
 
 FILES_libgomp-dev += "\
-    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
+    ${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
 "
 
 # Building with thumb enabled on armv6t fails
--

2.22.0

#3 lore raw
Quoted 33 lines · Khem Raj
Quoted 31 lines · Richard Purdie
Quoted 21 lines · Khem Raj

OE does not use the traditional /usr/lib/gcc prefix to store gcc- runtime
it basically is moved into libdir, however some newer files were installed by newer versions of gcc especially libgomp ( omp.h openacc.h )
into gcclibdir, so we have content in both directories, this confuses
other tools which are trying to guess the gcc installation and its
runtime location, since now we have two directories, the tools either
choose one or other and we get inconsistent behavior, e.g. clang for
aarch64 uses /usr/lib but same clang for riscv64 chose /usr/lib/gcc

This change ensures that OE ends up with single valid location for
gcc
runtime files

Quoted 6 lines
---
 meta/recipes-devtools/gcc/gcc-runtime.inc    | 5 +++++
 meta/recipes-devtools/gcc/gcc-runtime_8.3.bb | 3 ++-
 meta/recipes-devtools/gcc/gcc-runtime_9.1.bb | 3 ++-
 3 files changed, 9 insertions(+), 2 deletions(-)

This appears to break mingw:

Quoted 7 lines
Quoted 2 lines

https://autobuilder.yoctoproject.org/typhoon/#/builders/89/builds/925

seems virtual:nativesdk:/home/pokybuild/yocto-worker/meta-
mingw/build/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb:do_package

but I cant see which files can you help

They're in the 1b and 2b logs, e.g.:

https://autobuilder.yoctoproject.org/typhoon/api/v2/logs/731185/raw

Cheers,

Richard