Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 123804 - glibc-2.3.5-r2 don't rebuild due to error on version-info.h, problem with dash
Summary: glibc-2.3.5-r2 don't rebuild due to error on version-info.h, problem with dash
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: x86 Linux
: Normal enhancement (vote)
Assignee: Gentoo Toolchain Maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-02-23 04:53 UTC by Rod
Modified: 2006-02-23 16:42 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rod 2006-02-23 04:53:27 UTC
Hi,

Something has changed in /var/tmp/portage/glibc-2.3.5-r2/work/build-default-i686-pc-linux-gnu-nptl/csu/version-info.h

during 2006-02-23:

cat /var/tmp/portage/glibc-2.3.5-r2/work/build-default-i686-pc-linux-gnu-nptl/csu/version-info.h
"Compiled on a Linux 2.6.11 system on 2006-02-23.\n"
"Available extensions:
"
"       GNU libio by Per Bothner\n"
"       crypt add-on version 2.1 by Michael Glad and others\n"
"       Native POSIX Threads Library by Ulrich Drepper et al\n"
"       The C stubs add-on version 2.1.2.\n"
"       GNU Libidn by Simon Josefsson\n"
"       BIND-8.2.3-T5B\n"
"       NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk\n"

There are 2 missing '"' on 2nd and 3rd line

This is the error report from gcc:

In file included from version.c:33:
/var/tmp/portage/glibc-2.3.5-r2/work/build-default-i686-pc-linux-gnu-nptl/csu/version-info.h:2: error: missing terminating " character
/var/tmp/portage/glibc-2.3.5-r2/work/build-default-i686-pc-linux-gnu-nptl/csu/version-info.h:3: error: missing terminating " character
version.c:40: error: parse error before string constant
make[2]: *** [/var/tmp/portage/glibc-2.3.5-r2/work/build-default-i686-pc-linux-gnu-nptl/csu/version.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/var/tmp/portage/glibc-2.3.5-r2/work/glibc-2.3.5/csu'
make[1]: *** [csu/subdir_lib] Error 2
make[1]: Leaving directory `/var/tmp/portage/glibc-2.3.5-r2/work/glibc-2.3.5'
make: *** [all] Error 2

!!! ERROR: sys-libs/glibc-2.3.5-r2 failed.
!!! Function toolchain-glibc_src_compile, Line 233, Exitcode 2
!!! (no error message)
!!! If you need support, post the topmost build error, NOT this status message.
Comment 1 Rod 2006-02-23 05:49:18 UTC
My bug report isn't very accurate. I'm still investigating because the same issue happens in glibc-2.3.5-r3 and it looks like the problem is somewhere else, cause I've just compile glibc-2.3.5-r2 inside a gentoo vmware image without any problems.

Lowering severity & priority.
Comment 2 Harald van Dijk (RETIRED) gentoo-dev 2006-02-23 07:21:33 UTC
The problem is with your shell. Please try re-installing bash and making sure /bin/sh points to that, instead of ksh/zsh/some other shell. (I ran into this problem on a non-Gentoo system myself.)
Comment 3 Rod 2006-02-23 07:30:32 UTC
OK, I finally found what the problem is.

In this particulary system I've replaced /bin/sh for /bin/dash.

In the file "/var/tmp/portage/glibc-2.3.5-r2/work/glibc-2.3.5/csu/Makefile" we have this piece of code for generating "/var/tmp/portage/glibc-2.3.5-r2/work/build-default-i686-pc-linux-gnu-nptl/csu/version-info.h"

<START CODE>
         files="$(all-Banner-files)";                           \
         if test -n "$$files"; then                             \
           echo "\"Available extensions:\\n\"";                 \
           sed -e '/^#/d' -e 's/^[[:space:]]*/  /'              \
               -e 's/^\(.*\)$$/\"\1\\n\"/' $$files;             \
         fi) > $@T
<END CODE>

This Makefile belongs do glibc, and it's not being changed by gentoo.

The problem with dash is that dash have an internal echo function that *always* interprets special "chars" like "\n". It's the same as "/bin/echo -e".

Maybe other shells have the same behaviour (I only use bash & dash), so my sugestion is to force a sane shell in the environment of the ebuild process.

I've done some tests changing the echo line and didn't get a universal way with sane interpretation of the echo command.

Example:

*** In dash ***
# echo "\"Available extensions:\\n\""
"Available extensions:
"
# echo '"Available extensions:\\n"'
"Available extensions:\n"
# echo -e '"Available extensions:\\n"'
-e "Available extensions:\n"
# echo '"Available extensions:\n"'
"Available extensions:
"

*** In bash ***
# echo "\"Available extensions:\\n\""
"Available extensions:\n"
# echo '"Available extensions:\\n"'
"Available extensions:\\n"
# echo -e '"Available extensions:\\n"'
"Available extensions:\n"
# echo '"Available extensions:\n"'
"Available extensions:\n"

This is only my 2nd issue regarding problems with dash. Maybe I should give up on it, but what about other shells?...

Regards.

PS: Harald I only saw your post when I was commiting the bug. thks
Comment 4 Harald van Dijk (RETIRED) gentoo-dev 2006-02-23 08:24:05 UTC
This is fixed upstream, by the way, with

http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/csu/Makefile.diff?r1=1.75&r2=1.76&cvsroot=glibc
Comment 5 SpanKY gentoo-dev 2006-02-23 16:42:09 UTC
thanks Harald, added fix from upstream to patch tarballs

Rodrigo: dont take this as meaning changing /bin/sh to different shells is generally supported ... if upstream didnt make the change, i would have propbably marked this bug INVALID ...