| Submitter | Ting Liu |
|---|---|
| Date | July 12, 2012, 6:17 a.m. |
| Message ID | <1342073846-23047-1-git-send-email-b28495@freescale.com> |
| Download | mbox | patch |
| Permalink | /patch/31789/ |
| State | Superseded |
| Headers | show |
Comments
On 07/11/2012 11:17 PM, b28495@freescale.com wrote: > From: Ting Liu <b28495@freescale.com> > > lsof tries to compile a temp c source file and execute the binary to > determine linux C library type (file Configure, line 2689-2717). > It is inpracticable for cross-compilation and may have build issue on > some distros since it depends on host settings. > > Fix below error when building for 64bit target on 64bit host: > [...] > | dsock.c:481:44: error: 'TCP_LISTEN' undeclared (first use in this function) > | dsock.c:482:45: error: 'TCP_CLOSING' undeclared (first use in this function) > [...] > | make: *** [dsock.o] Error 1 > > The actual issue exists in do_configure: > [...] > Testing C library type with cc ... done > Cannot determine C library type; assuming it is not glibc. > > Which is in turn caused by missing 'gnu/stubs-32.h" when compiling > the temp c source file on host: > [...] > fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. > > file gnu/stubs-32.h is provided by 32bit glibc. > > Signed-off-by: Ting Liu <b28495@freescale.com> > --- > meta/recipes-extended/lsof/lsof_4.85.bb | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/meta/recipes-extended/lsof/lsof_4.85.bb b/meta/recipes-extended/lsof/lsof_4.85.bb > index 5823725..d28d2cb 100644 > --- a/meta/recipes-extended/lsof/lsof_4.85.bb > +++ b/meta/recipes-extended/lsof/lsof_4.85.bb > @@ -3,7 +3,7 @@ DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \ > Its name stands for LiSt Open Files, and it does just that." > SECTION = "devel" > LICENSE = "BSD" > -PR = "r1" > +PR = "r2" > > SRC_URI = "ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2" > > @@ -31,6 +31,11 @@ export LSOF_INCLUDE = "${STAGING_INCDIR}" > do_configure () { > export LSOF_AR="${AR} cr" > export LSOF_RANLIB="${RANLIB}" > + if [ "x${EGLIBCVERSION}" != "x" ];then > + LINUX_CLIB=${EGLIBCVERSION/\./} > + LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}" Does this really do what you intent it to? why not set the EGLIBCVERSION directly on the second line, what's the purpose of the /\./? It renders the version empty in my tests. Sau! > + export LINUX_CLIB > + fi > yes | ./Configure ${LSOF_OS} > } > >
On Thu, Jul 12, 2012 at 12:30 PM, Saul Wold <sgw@linux.intel.com> wrote: > > why not set the EGLIBCVERSION directly on the second line, what's the > purpose of the /\./? It renders the version empty in my tests. it has to get rid of (.) e.g. for 2.15 it should be 215 and 2.16 it should become 216
-----Original Message----- From: Saul Wold [mailto:sgw@linux.intel.com] Sent: Friday, July 13, 2012 3:31 AM To: Patches and discussions about the oe-core layer Cc: Liu Ting-B28495; McClintock Matthew-B29882 Subject: Re: [OE-core] [PATCH] lsof: define linux C library type when using eglibc On 07/11/2012 11:17 PM, b28495@freescale.com wrote: > From: Ting Liu <b28495@freescale.com> > > lsof tries to compile a temp c source file and execute the binary to > determine linux C library type (file Configure, line 2689-2717). > It is inpracticable for cross-compilation and may have build issue on > some distros since it depends on host settings. > > Fix below error when building for 64bit target on 64bit host: > [...] > | dsock.c:481:44: error: 'TCP_LISTEN' undeclared (first use in this > | function) > | dsock.c:482:45: error: 'TCP_CLOSING' undeclared (first use in this > | function) > [...] > | make: *** [dsock.o] Error 1 > > The actual issue exists in do_configure: > [...] > Testing C library type with cc ... done Cannot determine C library > type; assuming it is not glibc. > > Which is in turn caused by missing 'gnu/stubs-32.h" when compiling the > temp c source file on host: > [...] > fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. > > file gnu/stubs-32.h is provided by 32bit glibc. > > Signed-off-by: Ting Liu <b28495@freescale.com> > --- > meta/recipes-extended/lsof/lsof_4.85.bb | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/meta/recipes-extended/lsof/lsof_4.85.bb > b/meta/recipes-extended/lsof/lsof_4.85.bb > index 5823725..d28d2cb 100644 > --- a/meta/recipes-extended/lsof/lsof_4.85.bb > +++ b/meta/recipes-extended/lsof/lsof_4.85.bb > @@ -3,7 +3,7 @@ DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \ > Its name stands for LiSt Open Files, and it does just that." > SECTION = "devel" > LICENSE = "BSD" > -PR = "r1" > +PR = "r2" > > SRC_URI = "ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2" > > @@ -31,6 +31,11 @@ export LSOF_INCLUDE = "${STAGING_INCDIR}" > do_configure () { > export LSOF_AR="${AR} cr" > export LSOF_RANLIB="${RANLIB}" > + if [ "x${EGLIBCVERSION}" != "x" ];then > + LINUX_CLIB=${EGLIBCVERSION/\./} > + LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}" Does this really do what you intent it to? why not set the EGLIBCVERSION directly on the second line, what's the purpose of the /\./? It renders the version empty in my tests. Sau! [Liu Ting-B28495] LINUX_CLIB is set to "-DGLIBCV=213" when lsof can figure out the right Linux c library type. String 213 corresponds to the eglibc version 2.13. the purpose of /\./ is to get rid of '.'. Here is my test: -bash-3.2$ EGLIBCVERSION="2.13" -bash-3.2$ echo ${EGLIBCVERSION/\./} 213 -bash-3.2$
-----Original Message----- From: Liu Ting-B28495 Sent: Friday, July 13, 2012 10:47 AM To: 'Saul Wold'; Patches and discussions about the oe-core layer Cc: McClintock Matthew-B29882 Subject: RE: [OE-core] [PATCH] lsof: define linux C library type when using eglibc -----Original Message----- From: Saul Wold [mailto:sgw@linux.intel.com] Sent: Friday, July 13, 2012 3:31 AM To: Patches and discussions about the oe-core layer Cc: Liu Ting-B28495; McClintock Matthew-B29882 Subject: Re: [OE-core] [PATCH] lsof: define linux C library type when using eglibc On 07/11/2012 11:17 PM, b28495@freescale.com wrote: > From: Ting Liu <b28495@freescale.com> > > lsof tries to compile a temp c source file and execute the binary to > determine linux C library type (file Configure, line 2689-2717). > It is inpracticable for cross-compilation and may have build issue on > some distros since it depends on host settings. > > Fix below error when building for 64bit target on 64bit host: > [...] > | dsock.c:481:44: error: 'TCP_LISTEN' undeclared (first use in this > | function) > | dsock.c:482:45: error: 'TCP_CLOSING' undeclared (first use in this > | function) > [...] > | make: *** [dsock.o] Error 1 > > The actual issue exists in do_configure: > [...] > Testing C library type with cc ... done Cannot determine C library > type; assuming it is not glibc. > > Which is in turn caused by missing 'gnu/stubs-32.h" when compiling the > temp c source file on host: > [...] > fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. > > file gnu/stubs-32.h is provided by 32bit glibc. > > Signed-off-by: Ting Liu <b28495@freescale.com> > --- > meta/recipes-extended/lsof/lsof_4.85.bb | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/meta/recipes-extended/lsof/lsof_4.85.bb > b/meta/recipes-extended/lsof/lsof_4.85.bb > index 5823725..d28d2cb 100644 > --- a/meta/recipes-extended/lsof/lsof_4.85.bb > +++ b/meta/recipes-extended/lsof/lsof_4.85.bb > @@ -3,7 +3,7 @@ DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \ > Its name stands for LiSt Open Files, and it does just that." > SECTION = "devel" > LICENSE = "BSD" > -PR = "r1" > +PR = "r2" > > SRC_URI = "ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2" > > @@ -31,6 +31,11 @@ export LSOF_INCLUDE = "${STAGING_INCDIR}" > do_configure () { > export LSOF_AR="${AR} cr" > export LSOF_RANLIB="${RANLIB}" > + if [ "x${EGLIBCVERSION}" != "x" ];then > + LINUX_CLIB=${EGLIBCVERSION/\./} > + LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}" Does this really do what you intent it to? why not set the EGLIBCVERSION directly on the second line, what's the purpose of the /\./? It renders the version empty in my tests. Sau! [Liu Ting-B28495] LINUX_CLIB is set to "-DGLIBCV=213" when lsof can figure out the right Linux c library type. String 213 corresponds to the eglibc version 2.13. the purpose of /\./ is to get rid of '.'. Here is my test: -bash-3.2$ EGLIBCVERSION="2.13" -bash-3.2$ echo ${EGLIBCVERSION/\./} 213 -bash-3.2$ [Liu Ting-B28495] ok, I find why it renders the version empty: In temp/run.configure: .... export BUILD_STRIP="strip" do_configure() { if [ "x2.13" != "x" ];then LINUX_CLIB=${EGLIBCVERSION/\./} LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}" export LINUX_CLIB fi yes | ./Configure linux } Variable EGLIBCVERSION is expanded instead of exported.
Patch
diff --git a/meta/recipes-extended/lsof/lsof_4.85.bb b/meta/recipes-extended/lsof/lsof_4.85.bb index 5823725..d28d2cb 100644 --- a/meta/recipes-extended/lsof/lsof_4.85.bb +++ b/meta/recipes-extended/lsof/lsof_4.85.bb @@ -3,7 +3,7 @@ DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \ Its name stands for LiSt Open Files, and it does just that." SECTION = "devel" LICENSE = "BSD" -PR = "r1" +PR = "r2" SRC_URI = "ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2" @@ -31,6 +31,11 @@ export LSOF_INCLUDE = "${STAGING_INCDIR}" do_configure () { export LSOF_AR="${AR} cr" export LSOF_RANLIB="${RANLIB}" + if [ "x${EGLIBCVERSION}" != "x" ];then + LINUX_CLIB=${EGLIBCVERSION/\./} + LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}" + export LINUX_CLIB + fi yes | ./Configure ${LSOF_OS} }