[OE-core] [PATCH] lsof: define linux C library type when using eglibc

Saul Wold sgw at linux.intel.com
Thu Jul 12 19:30:52 UTC 2012


On 07/11/2012 11:17 PM, b28495 at freescale.com wrote:
> From: Ting Liu <b28495 at 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 at 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}
>   }
>
>





More information about the Openembedded-core mailing list