All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] upgrade libc-package.bbclass; add libgcc
@ 2011-01-15 11:23 Dexuan Cui
  2011-01-15 11:23 ` [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o Dexuan Cui
  2011-01-15 11:23 ` [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h Dexuan Cui
  0 siblings, 2 replies; 12+ messages in thread
From: Dexuan Cui @ 2011-01-15 11:23 UTC (permalink / raw)
  To: poky

I tested on qemux86 and qemumips: bitbake poky-image-sdk and
meta-toolchain-sdk can build fine.

The patches are straightforward and should not incur regression.
Anyway, please review them carefully in case I made mistakes. :-)

thanks,
-- Dexuan

Pull URL: git://git.pokylinux.org/poky-contrib.git
  Branch: dcui/master
  Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dcui/master

Thanks,
    Dexuan Cui <dexuan.cui@intel.com>
---


Dexuan Cui (2):
  libgcc: use the new recipe (rather than gcc-runtime) to install
    libgcc_s.so* and crt*.o
  libc-package.bbclass: should not rm scsi/*.h

 meta/classes/libc-package.bbclass                  |    3 -
 meta/conf/distro/include/poky-default.inc          |    1 +
 .../recipes-devtools/gcc/gcc-configure-runtime.inc |   16 +-------
 meta/recipes-devtools/gcc/gcc-package-runtime.inc  |    8 ----
 meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb     |    2 +-
 meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb     |    2 +-
 meta/recipes-devtools/gcc/libgcc_4.5.1.bb          |   43 ++++++++++++++++++++
 7 files changed, 47 insertions(+), 28 deletions(-)
 create mode 100644 meta/recipes-devtools/gcc/libgcc_4.5.1.bb

-- 
1.7.2



^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
  2011-01-15 11:23 [PATCH 0/2] upgrade libc-package.bbclass; add libgcc Dexuan Cui
@ 2011-01-15 11:23 ` Dexuan Cui
  2011-01-15 11:37   ` Koen Kooi
  2011-01-15 11:23 ` [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h Dexuan Cui
  1 sibling, 1 reply; 12+ messages in thread
From: Dexuan Cui @ 2011-01-15 11:23 UTC (permalink / raw)
  To: poky

Currently gcc-runtime installs the files, but actually gcc-runtime's
do_configure checks if the files are available, so before we build gcc-runtime,
we should have some recipe install the files first! -- currently
gcc-cross-intermediate actually does that(gcc-cross also installs the files,
but it installs into the gcc-build-internal* directory), but
gcc-cross-intermediate will have its own sysroot in future, after that,
gcc-runtime won't build. So let us add this new target recipe and move the
installation of the files from gcc-runtime into it.

Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
---
 meta/conf/distro/include/poky-default.inc          |    1 +
 .../recipes-devtools/gcc/gcc-configure-runtime.inc |   16 +-------
 meta/recipes-devtools/gcc/gcc-package-runtime.inc  |    8 ----
 meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb     |    2 +-
 meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb     |    2 +-
 meta/recipes-devtools/gcc/libgcc_4.5.1.bb          |   43 ++++++++++++++++++++
 6 files changed, 47 insertions(+), 25 deletions(-)
 create mode 100644 meta/recipes-devtools/gcc/libgcc_4.5.1.bb

diff --git a/meta/conf/distro/include/poky-default.inc b/meta/conf/distro/include/poky-default.inc
index e5dd647..b693102 100644
--- a/meta/conf/distro/include/poky-default.inc
+++ b/meta/conf/distro/include/poky-default.inc
@@ -11,6 +11,7 @@ PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-interme
 PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
 PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
 PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs = "gcc-runtime"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libgcc = "libgcc"
 PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial = "${POKYLIBC}-initial"
 PREFERRED_PROVIDER_virtual/${SDK_PREFIX}libc-for-gcc-nativesdk ?= "${POKYLIBC}-nativesdk"
 
diff --git a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
index f9ad61d..6cc11e2 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-runtime.inc
@@ -31,28 +31,14 @@ do_compile () {
 }
 
 do_install () {
-	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
-
-	# Install libgcc from our gcc-cross saved data
-	install -d ${D}${base_libdir} ${D}${libdir}
-	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
-
 	for d in ${RUNTIMETARGET}; do
 		cd ${B}/$d/
 		oe_runmake 'DESTDIR=${D}' install
 	done
-
-	# Move libgcc_s into /lib
-	mkdir -p ${D}${base_libdir}
-	if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
-		mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
-	else
-		mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
-	fi
 }
 
 INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ libgcc"
 PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs"
 
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/gcc/gcc-package-runtime.inc b/meta/recipes-devtools/gcc/gcc-package-runtime.inc
index 40a9ed0..e8c9011 100644
--- a/meta/recipes-devtools/gcc/gcc-package-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-package-runtime.inc
@@ -1,6 +1,4 @@
 PACKAGES = "\
-  libgcc \
-  libgcc-dev \
   libstdc++ \
   libstdc++-precompile-dev \
   libstdc++-dev \
@@ -14,12 +12,6 @@ PACKAGES = "\
   libmudflap-dev \
 "
 
-FILES_libgcc = "${base_libdir}/libgcc*.so.*"
-FILES_libgcc-dev = " \
-  ${base_libdir}/libgcc*.so \
-  ${libdir}/${TARGET_SYS}/${BINV}/crt* \
-  ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
-
 FILES_libg2c = "${target_libdir}/libg2c.so.*"
 FILES_libg2c-dev = "\
   ${libdir}/libg2c.so \
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
index 6b375f3..99f927a 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.3.3.bb
@@ -1,4 +1,4 @@
-PR = "r17"
+PR = "r18"
 
 require gcc-${PV}.inc
 require gcc-configure-runtime.inc
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
index ca22e8b..093f9bf 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.5.1.bb
@@ -1,4 +1,4 @@
-PR = "r1"
+PR = "r2"
 
 require gcc-${PV}.inc
 require gcc-configure-runtime.inc
diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
new file mode 100644
index 0000000..37a4d38
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
@@ -0,0 +1,43 @@
+require gcc-${PV}.inc
+
+PR = "r0"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+PROVIDES = "virtual/${TARGET_PREFIX}libgcc"
+
+PACKAGES = "\
+  libgcc \
+  libgcc-dev \
+  "
+
+FILES_libgcc = "${base_libdir}/libgcc*.so.*"
+FILES_libgcc-dev = " \
+  ${base_libdir}/libgcc*.so \
+  ${libdir}/${TARGET_SYS}/${BINV}/crt* \
+  ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
+
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install () {
+	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
+
+	# Install libgcc from our gcc-cross saved data
+	install -d ${D}${base_libdir} ${D}${libdir}
+	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
+
+	# Move libgcc_s into /lib
+	mkdir -p ${D}${base_libdir}
+	if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
+		mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
+	else
+		mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
+	fi
+}
+
+BBCLASSEXTEND = "nativesdk"
+
-- 
1.7.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h
  2011-01-15 11:23 [PATCH 0/2] upgrade libc-package.bbclass; add libgcc Dexuan Cui
  2011-01-15 11:23 ` [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o Dexuan Cui
@ 2011-01-15 11:23 ` Dexuan Cui
  2011-01-15 11:39   ` Koen Kooi
  1 sibling, 1 reply; 12+ messages in thread
From: Dexuan Cui @ 2011-01-15 11:23 UTC (permalink / raw)
  To: poky

{e}glibc should install the scsi/*.h files, which are needed by hal.
Currently hal can build because eglibc-initial (which has its own do_install)
installs the files. In future eglibc will have its own sysroot, so hal
won't build.

BTW: in OE side, eglibc's do_install also doesn't remove the files.

Signed-off-by: Dexuan Cui <dexuan.cui@intel.com>
---
 meta/classes/libc-package.bbclass |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index 4709b33..733f26b 100644
--- a/meta/classes/libc-package.bbclass
+++ b/meta/classes/libc-package.bbclass
@@ -95,9 +95,6 @@ do_install() {
 		mv ${WORKDIR}/SUPPORTED.tmp ${WORKDIR}/SUPPORTED
 	done
 	rm -f ${D}{sysconfdir}/rpc
-	rm -f ${D}${includedir}/scsi/sg.h
-	rm -f ${D}${includedir}/scsi/scsi_ioctl.h
-	rm -f ${D}${includedir}/scsi/scsi.h
 	rm -rf ${D}${datadir}/zoneinfo
 	rm -rf ${D}${libexecdir}/getconf
 }
-- 
1.7.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
  2011-01-15 11:23 ` [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o Dexuan Cui
@ 2011-01-15 11:37   ` Koen Kooi
  2011-01-15 11:55     ` Cui, Dexuan
  0 siblings, 1 reply; 12+ messages in thread
From: Koen Kooi @ 2011-01-15 11:37 UTC (permalink / raw)
  To: Dexuan Cui; +Cc: poky


Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:

> Currently gcc-runtime installs the files, but actually gcc-runtime's
> do_configure checks if the files are available, so before we build gcc-runtime,
> we should have some recipe install the files first! -- currently
> gcc-cross-intermediate actually does that(gcc-cross also installs the files,
> but it installs into the gcc-build-internal* directory), but
> gcc-cross-intermediate will have its own sysroot in future, after that,
> gcc-runtime won't build. So let us add this new target recipe and move the
> installation of the files from gcc-runtime into it.

I understand the problem, but...

> diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
> 
> +do_install () {
> +	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##`
> +
> +	# Install libgcc from our gcc-cross saved data
> +	install -d ${D}${base_libdir} ${D}${libdir}
> +	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}

... why can't gcc-cross create the libgcc(-dev) packages? You're using the exact files gcc-cross installs, so why have an extra recipe? It feels backwards to have one package grab files from another package from sysroots and package those.

regards,

Koen

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h
  2011-01-15 11:23 ` [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h Dexuan Cui
@ 2011-01-15 11:39   ` Koen Kooi
  2011-01-15 11:50     ` Cui, Dexuan
  0 siblings, 1 reply; 12+ messages in thread
From: Koen Kooi @ 2011-01-15 11:39 UTC (permalink / raw)
  To: Dexuan Cui; +Cc: poky


Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:

> {e}glibc should install the scsi/*.h files, which are needed by hal.
> Currently hal can build because eglibc-initial (which has its own do_install)
> installs the files. In future eglibc will have its own sysroot, so hal
> won't build.
> 
> BTW: in OE side, eglibc's do_install also doesn't remove the files.

As some background info: There's a conflict between linux-libc-headers-dev and libc-dev when installing on the target. In OE we do this instead:

koen@dominion:/OE/org.openembedded.dev$ grep scsi recipes/linux-libc-headers/ -rn
recipes/linux-libc-headers/linux-libc-headers_2.6.32.bb:23:     rm -f ${D}${exec_prefix}/include/scsi/scsi.h
recipes/linux-libc-headers/linux-libc-headers_2.6.31.bb:23:     rm -f ${D}${exec_prefix}/include/scsi/scsi.h
recipes/linux-libc-headers/linux-libc-headers_2.6.34.bb:42:     rm -f ${D}${exec_prefix}/include/scsi/scsi.h

regards,

Koen

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h
  2011-01-15 11:39   ` Koen Kooi
@ 2011-01-15 11:50     ` Cui, Dexuan
  2011-01-17 15:44       ` Tom Rini
  0 siblings, 1 reply; 12+ messages in thread
From: Cui, Dexuan @ 2011-01-15 11:50 UTC (permalink / raw)
  To: 'Koen Kooi'; +Cc: poky@yoctoproject.org

Koen Kooi wrote:
> Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:
> 
>> {e}glibc should install the scsi/*.h files, which are needed by hal.
>> Currently hal can build because eglibc-initial (which has its own
>> do_install) installs the files. In future eglibc will have its own
>> sysroot, so hal 
>> won't build.
>> 
>> BTW: in OE side, eglibc's do_install also doesn't remove the files.
> 
> As some background info: There's a conflict between
> linux-libc-headers-dev and libc-dev when installing on the target. In
> OE we do this instead:  
> 
> koen@dominion:/OE/org.openembedded.dev$ grep scsi
> recipes/linux-libc-headers/ -rn 
> recipes/linux-libc-headers/linux-libc-headers_2.6.32.bb:23:     rm -f
> ${D}${exec_prefix}/include/scsi/scsi.h
> recipes/linux-libc-headers/linux-libc-headers_2.6.31.bb:23:     rm -f
> ${D}${exec_prefix}/include/scsi/scsi.h
> recipes/linux-libc-headers/linux-libc-headers_2.6.34.bb:42:     rm -f
> ${D}${exec_prefix}/include/scsi/scsi.h   
My understanding is:
Linux kernel should not export these files: in OE side see 91d3d92a acked by you. :-)
So {e}glibc should supply the files -- previously poky did supply, but 7379ee77 removed the files -- I think this is incorrect.

BTW: in poky, we can see linux-libc-headers_2.6.36.bb also correctly removes the file.

thanks
-- Dexuan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
  2011-01-15 11:37   ` Koen Kooi
@ 2011-01-15 11:55     ` Cui, Dexuan
  2011-01-15 13:12       ` Koen Kooi
  0 siblings, 1 reply; 12+ messages in thread
From: Cui, Dexuan @ 2011-01-15 11:55 UTC (permalink / raw)
  To: 'Koen Kooi', 'Richard Purdie'; +Cc: poky@yoctoproject.org

Koen Kooi wrote:
> Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:
> 
>> Currently gcc-runtime installs the files, but actually gcc-runtime's
>> do_configure checks if the files are available, so before we build
>> gcc-runtime, 
>> we should have some recipe install the files first! -- currently
>> gcc-cross-intermediate actually does that(gcc-cross also installs
>> the files, 
>> but it installs into the gcc-build-internal* directory), but
>> gcc-cross-intermediate will have its own sysroot in future, after
>> that, 
>> gcc-runtime won't build. So let us add this new target recipe and
>> move the 
>> installation of the files from gcc-runtime into it.
> 
> I understand the problem, but...
> 
>> diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
>> b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb 
>> 
>> +do_install () {
>> +	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##` +
>> +	# Install libgcc from our gcc-cross saved data
>> +	install -d ${D}${base_libdir} ${D}${libdir}
>> +	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
> 
> ... why can't gcc-cross create the libgcc(-dev) packages? You're
> using the exact files gcc-cross installs, so why have an extra
> recipe? It feels backwards to have one package grab files from
> another package from sysroots and package those.   
I discussed this with Richard in the #yocto IRC channel several days ago.
Richard thinks the packaging of the files should be in a target recipe rather than a cross one.
Cc Richard for further explanation why doing the packaging in a gcc-cross is a mistake. :-)

Thanks,
-- Dexuan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
  2011-01-15 11:55     ` Cui, Dexuan
@ 2011-01-15 13:12       ` Koen Kooi
  2011-01-15 23:34         ` Richard Purdie
  0 siblings, 1 reply; 12+ messages in thread
From: Koen Kooi @ 2011-01-15 13:12 UTC (permalink / raw)
  To: Cui, Dexuan; +Cc: poky@yoctoproject.org


Op 15 jan 2011, om 12:55 heeft Cui, Dexuan het volgende geschreven:

> Koen Kooi wrote:
>> Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:
>> 
>>> Currently gcc-runtime installs the files, but actually gcc-runtime's
>>> do_configure checks if the files are available, so before we build
>>> gcc-runtime, 
>>> we should have some recipe install the files first! -- currently
>>> gcc-cross-intermediate actually does that(gcc-cross also installs
>>> the files, 
>>> but it installs into the gcc-build-internal* directory), but
>>> gcc-cross-intermediate will have its own sysroot in future, after
>>> that, 
>>> gcc-runtime won't build. So let us add this new target recipe and
>>> move the 
>>> installation of the files from gcc-runtime into it.
>> 
>> I understand the problem, but...
>> 
>>> diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
>>> b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb 
>>> 
>>> +do_install () {
>>> +	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##` +
>>> +	# Install libgcc from our gcc-cross saved data
>>> +	install -d ${D}${base_libdir} ${D}${libdir}
>>> +	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
>> 
>> ... why can't gcc-cross create the libgcc(-dev) packages? You're
>> using the exact files gcc-cross installs, so why have an extra
>> recipe? It feels backwards to have one package grab files from
>> another package from sysroots and package those.   
> I discussed this with Richard in the #yocto IRC channel several days ago.
> Richard thinks the packaging of the files should be in a target recipe rather than a cross one.
> Cc Richard for further explanation why doing the packaging in a gcc-cross is a mistake. :-)

I know packaging files from gcc-cross leads to all kinds of problems, but you're not using a target recipe, you are now indirectly packaging files from gcc-cross instead of directly.

Since the files are exactly the same, why is this work around better than just packaging them directly. Or the other options, just building a new libgcc with a "real" recipe.

regards,

Koen 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
  2011-01-15 13:12       ` Koen Kooi
@ 2011-01-15 23:34         ` Richard Purdie
  2011-01-16  6:13           ` Cui, Dexuan
  0 siblings, 1 reply; 12+ messages in thread
From: Richard Purdie @ 2011-01-15 23:34 UTC (permalink / raw)
  To: Koen Kooi; +Cc: poky@yoctoproject.org

On Sat, 2011-01-15 at 14:12 +0100, Koen Kooi wrote:
> Op 15 jan 2011, om 12:55 heeft Cui, Dexuan het volgende geschreven:
> 
> > Koen Kooi wrote:
> >> Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:
> >> 
> >>> Currently gcc-runtime installs the files, but actually gcc-runtime's
> >>> do_configure checks if the files are available, so before we build
> >>> gcc-runtime, 
> >>> we should have some recipe install the files first! -- currently
> >>> gcc-cross-intermediate actually does that(gcc-cross also installs
> >>> the files, 
> >>> but it installs into the gcc-build-internal* directory), but
> >>> gcc-cross-intermediate will have its own sysroot in future, after
> >>> that, 
> >>> gcc-runtime won't build. So let us add this new target recipe and
> >>> move the 
> >>> installation of the files from gcc-runtime into it.
> >> 
> >> I understand the problem, but...
> >> 
> >>> diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
> >>> b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb 
> >>> 
> >>> +do_install () {
> >>> +	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##` +
> >>> +	# Install libgcc from our gcc-cross saved data
> >>> +	install -d ${D}${base_libdir} ${D}${libdir}
> >>> +	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/* ${D}
> >> 
> >> ... why can't gcc-cross create the libgcc(-dev) packages? You're
> >> using the exact files gcc-cross installs, so why have an extra
> >> recipe? It feels backwards to have one package grab files from
> >> another package from sysroots and package those.   
> > I discussed this with Richard in the #yocto IRC channel several days ago.
> > Richard thinks the packaging of the files should be in a target recipe rather than a cross one.
> > Cc Richard for further explanation why doing the packaging in a gcc-cross is a mistake. :-)
> 
> I know packaging files from gcc-cross leads to all kinds of problems,
> but you're not using a target recipe, you are now indirectly packaging
> files from gcc-cross instead of directly.

Looking at the patch, isn't libgcc a target recipe?

The underlying problem here, highlighted when we dived into the separate
sysroots for the toolchain bootstrap is that gcc-runtime builds libstdc
++ against the gcc-cross-intermediate libgcc as its the one in the
sysroot, not the one from gcc-cross as it should.

I do think we should package things in the target recipe context and I
think this is what Dexuan's patch is doing.

> Since the files are exactly the same, why is this work around better
> than just packaging them directly. Or the other options, just building
> a new libgcc with a "real" recipe.

Building libgcc by itself turns out to be quite horrible to do. I live
in hope the gcc guys clean it up but until then...

Cheers,

Richard



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
  2011-01-15 23:34         ` Richard Purdie
@ 2011-01-16  6:13           ` Cui, Dexuan
  2011-01-17  5:08             ` Cui, Dexuan
  0 siblings, 1 reply; 12+ messages in thread
From: Cui, Dexuan @ 2011-01-16  6:13 UTC (permalink / raw)
  To: 'Richard Purdie', Koen Kooi; +Cc: poky@yoctoproject.org

Richard Purdie wrote:
> On Sat, 2011-01-15 at 14:12 +0100, Koen Kooi wrote:
>> Op 15 jan 2011, om 12:55 heeft Cui, Dexuan het volgende geschreven:
>> 
>>> Koen Kooi wrote:
>>>> Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:
>>>> 
>>>>> Currently gcc-runtime installs the files, but actually
>>>>> gcc-runtime's do_configure checks if the files are available, so
>>>>> before we build gcc-runtime, we should have some recipe install
>>>>> the files first! -- currently gcc-cross-intermediate actually
>>>>> does that(gcc-cross also installs the files, but it installs into
>>>>> the gcc-build-internal* directory), but gcc-cross-intermediate
>>>>> will have its own sysroot in future, after that, gcc-runtime
>>>>> won't build. So let us add this new target recipe and move the
>>>>> installation of the files from gcc-runtime into it. 
>>>> 
>>>> I understand the problem, but...
>>>> 
>>>>> diff --git a/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
>>>>> b/meta/recipes-devtools/gcc/libgcc_4.5.1.bb
>>>>> 
>>>>> +do_install () {
>>>>> +	target=`echo ${MULTIMACH_TARGET_SYS} | sed -e s#-nativesdk##` +
>>>>> +	# Install libgcc from our gcc-cross saved data
>>>>> +	install -d ${D}${base_libdir} ${D}${libdir}
>>>>> +	cp -fpPR ${STAGING_INCDIR_NATIVE}/gcc-build-internal-$target/*
>>>>> ${D} 
>>>> 
>>>> ... why can't gcc-cross create the libgcc(-dev) packages? You're
>>>> using the exact files gcc-cross installs, so why have an extra
>>>> recipe? It feels backwards to have one package grab files from
>>>> another package from sysroots and package those.
>>> I discussed this with Richard in the #yocto IRC channel several
>>> days ago. 
>>> Richard thinks the packaging of the files should be in a target
>>> recipe rather than a cross one. Cc Richard for further explanation
>>> why doing the packaging in a gcc-cross is a mistake. :-) 
>> 
>> I know packaging files from gcc-cross leads to all kinds of problems,
>> but you're not using a target recipe, you are now indirectly
>> packaging files from gcc-cross instead of directly.
> 
> Looking at the patch, isn't libgcc a target recipe?
> 
> The underlying problem here, highlighted when we dived into the
> separate sysroots for the toolchain bootstrap is that gcc-runtime
> builds libstdc ++ against the gcc-cross-intermediate libgcc as its
> the one in the sysroot, not the one from gcc-cross as it should.
> 
> I do think we should package things in the target recipe context and I
> think this is what Dexuan's patch is doing.
> 
>> Since the files are exactly the same, why is this work around better
>> than just packaging them directly. Or the other options, just
>> building a new libgcc with a "real" recipe.
> 
> Building libgcc by itself turns out to be quite horrible to do. I live
> in hope the gcc guys clean it up but until then...
> 
> Cheers,
> 
> Richard

Hi Richard,  Thanks a lot for the explanation!

BTW: after careful checking, I found the crt*.o files are actually not packaged properly into the target image (the log is below) :-(
Looks my patch missed something? But looks the original gcc-runtime recipe also hasn't any special?
I'm debugging this. Any quick hint is appreciate!

NOTE: the following files were installed but not shipped in any package:
  /lib/libgcc_s.so
NOTE:   /lib/libgcc_s.so
  /usr/lib/i586-poky-linux/4.5.1/crtbeginS.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtbeginS.o
  /usr/lib/i586-poky-linux/4.5.1/crtfastmath.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtfastmath.o
  /usr/lib/i586-poky-linux/4.5.1/libgcc.a
NOTE:   /usr/lib/i586-poky-linux/4.5.1/libgcc.a
  /usr/lib/i586-poky-linux/4.5.1/libgcov.a
NOTE:   /usr/lib/i586-poky-linux/4.5.1/libgcov.a
  /usr/lib/i586-poky-linux/4.5.1/crtend.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtend.o
  /usr/lib/i586-poky-linux/4.5.1/crtbeginT.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtbeginT.o
  /usr/lib/i586-poky-linux/4.5.1/crtbegin.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtbegin.o
  /usr/lib/i586-poky-linux/4.5.1/crtendS.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtendS.o
  /usr/lib/i586-poky-linux/4.5.1/crtprec32.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtprec32.o
  /usr/lib/i586-poky-linux/4.5.1/libgcc_eh.a
NOTE:   /usr/lib/i586-poky-linux/4.5.1/libgcc_eh.a
  /usr/lib/i586-poky-linux/4.5.1/crtprec80.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtprec80.o
  /usr/lib/i586-poky-linux/4.5.1/crtprec64.o
NOTE:   /usr/lib/i586-poky-linux/4.5.1/crtprec64.o

Thanks,
-- Dexuan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o
  2011-01-16  6:13           ` Cui, Dexuan
@ 2011-01-17  5:08             ` Cui, Dexuan
  0 siblings, 0 replies; 12+ messages in thread
From: Cui, Dexuan @ 2011-01-17  5:08 UTC (permalink / raw)
  To: 'Richard Purdie', Koen Kooi; +Cc: poky@yoctoproject.org

Cui, Dexuan wrote:
> BTW: after careful checking, I found the crt*.o files are actually
> not packaged properly into the target image (the log is below) :-(
> Looks my patch missed something? But looks the original gcc-runtime
> recipe also hasn't any special?  
> I'm debugging this. Any quick hint is appreciated!
> 
> NOTE: the following files were installed but not shipped in any
>   package: /lib/libgcc_s.so
> NOTE:   /lib/libgcc_s.so
>   /usr/lib/i586-poky-linux/4.5.1/crtbeginS.o
Hi, the issue was fixed: I didn't define PREFERRED_PROVIDER and PROVIDES properly.

I'll resend the new pull request soon.
 
Thanks,
-- Dexuan


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h
  2011-01-15 11:50     ` Cui, Dexuan
@ 2011-01-17 15:44       ` Tom Rini
  0 siblings, 0 replies; 12+ messages in thread
From: Tom Rini @ 2011-01-17 15:44 UTC (permalink / raw)
  To: poky

On 01/15/2011 04:50 AM, Cui, Dexuan wrote:
> Koen Kooi wrote:
>> Op 15 jan 2011, om 12:23 heeft Dexuan Cui het volgende geschreven:
>>
>>> {e}glibc should install the scsi/*.h files, which are needed by hal.
>>> Currently hal can build because eglibc-initial (which has its own
>>> do_install) installs the files. In future eglibc will have its own
>>> sysroot, so hal
>>> won't build.

Unrelated, is it on the roadmap already to upgrade things to use 
devicekit rather than hal?

>>> BTW: in OE side, eglibc's do_install also doesn't remove the files.
>>
>> As some background info: There's a conflict between
>> linux-libc-headers-dev and libc-dev when installing on the target. In
>> OE we do this instead:
>>
>> koen@dominion:/OE/org.openembedded.dev$ grep scsi
>> recipes/linux-libc-headers/ -rn
>> recipes/linux-libc-headers/linux-libc-headers_2.6.32.bb:23:     rm -f
>> ${D}${exec_prefix}/include/scsi/scsi.h
>> recipes/linux-libc-headers/linux-libc-headers_2.6.31.bb:23:     rm -f
>> ${D}${exec_prefix}/include/scsi/scsi.h
>> recipes/linux-libc-headers/linux-libc-headers_2.6.34.bb:42:     rm -f
>> ${D}${exec_prefix}/include/scsi/scsi.h
> My understanding is:
> Linux kernel should not export these files: in OE side see 91d3d92a acked by you. :-)
> So {e}glibc should supply the files -- previously poky did supply, but 7379ee77 removed the files -- I think this is incorrect.
>
> BTW: in poky, we can see linux-libc-headers_2.6.36.bb also correctly removes the file.

Correct.  The kernel (incorrectly) re-introduced exporting <scsi/scsi.h>.

-- 
Tom Rini
Mentor Graphics Corporation


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-01-17 15:44 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-15 11:23 [PATCH 0/2] upgrade libc-package.bbclass; add libgcc Dexuan Cui
2011-01-15 11:23 ` [PATCH 1/2] libgcc: use the new recipe (rather than gcc-runtime) to install libgcc_s.so* and crt*.o Dexuan Cui
2011-01-15 11:37   ` Koen Kooi
2011-01-15 11:55     ` Cui, Dexuan
2011-01-15 13:12       ` Koen Kooi
2011-01-15 23:34         ` Richard Purdie
2011-01-16  6:13           ` Cui, Dexuan
2011-01-17  5:08             ` Cui, Dexuan
2011-01-15 11:23 ` [PATCH 2/2] libc-package.bbclass: should not rm scsi/*.h Dexuan Cui
2011-01-15 11:39   ` Koen Kooi
2011-01-15 11:50     ` Cui, Dexuan
2011-01-17 15:44       ` Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.