* [PATCH] lsof: define linux C library type when using eglibc
@ 2012-07-12 6:17 b28495
2012-07-12 19:30 ` Saul Wold
0 siblings, 1 reply; 5+ messages in thread
From: b28495 @ 2012-07-12 6:17 UTC (permalink / raw)
To: openembedded-core; +Cc: b29882
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}"
+ export LINUX_CLIB
+ fi
yes | ./Configure ${LSOF_OS}
}
--
1.7.3.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] lsof: define linux C library type when using eglibc
2012-07-12 6:17 [PATCH] lsof: define linux C library type when using eglibc b28495
@ 2012-07-12 19:30 ` Saul Wold
2012-07-12 20:09 ` Khem Raj
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Saul Wold @ 2012-07-12 19:30 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer; +Cc: b29882
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}
> }
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] lsof: define linux C library type when using eglibc
2012-07-12 19:30 ` Saul Wold
@ 2012-07-12 20:09 ` Khem Raj
2012-07-13 2:46 ` Liu Ting-B28495
2012-07-13 3:37 ` Liu Ting-B28495
2 siblings, 0 replies; 5+ messages in thread
From: Khem Raj @ 2012-07-12 20:09 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer; +Cc: b29882
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
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] lsof: define linux C library type when using eglibc
2012-07-12 19:30 ` Saul Wold
2012-07-12 20:09 ` Khem Raj
@ 2012-07-13 2:46 ` Liu Ting-B28495
2012-07-13 3:37 ` Liu Ting-B28495
2 siblings, 0 replies; 5+ messages in thread
From: Liu Ting-B28495 @ 2012-07-13 2:46 UTC (permalink / raw)
To: Saul Wold, Patches and discussions about the oe-core layer
Cc: McClintock Matthew-B29882
-----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$
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] lsof: define linux C library type when using eglibc
2012-07-12 19:30 ` Saul Wold
2012-07-12 20:09 ` Khem Raj
2012-07-13 2:46 ` Liu Ting-B28495
@ 2012-07-13 3:37 ` Liu Ting-B28495
2 siblings, 0 replies; 5+ messages in thread
From: Liu Ting-B28495 @ 2012-07-13 3:37 UTC (permalink / raw)
To: Saul Wold, Patches and discussions about the oe-core layer
Cc: McClintock Matthew-B29882, Liu Ting-B28495
-----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.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-07-13 4:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-12 6:17 [PATCH] lsof: define linux C library type when using eglibc b28495
2012-07-12 19:30 ` Saul Wold
2012-07-12 20:09 ` Khem Raj
2012-07-13 2:46 ` Liu Ting-B28495
2012-07-13 3:37 ` Liu Ting-B28495
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox