Bug 35377

Summary: too many levels of symbolic links for compat-egcs
Product: [Retired] Red Hat Raw Hide Reporter: Wehrman, Ian <ian>
Component: compat-egcsAssignee: Jakub Jelinek <jakub>
Status: CLOSED RAWHIDE QA Contact:
Severity: high Docs Contact:
Priority: medium    
Version: 1.0CC: sait.a.umar
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2001-04-09 19:04:49 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Wehrman, Ian 2001-04-09 19:04:45 UTC
with compat-egcs-6.2-1.1.2.14, all the files in
/usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include/ are symbolic
links, and all of them are broken. with a clean install of
compat-egcs-6.2-1.1.2.14, one can verify this with rpm --verify compat-egcs
and see that the output is: 

....L...   /usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include/README
....L...   /usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include/float.h
....L...  
/usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include/iso646.h
....L...  
/usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include/limits.h
....L...   /usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include/proto.h
etc.

among other things, this prevents compilation of the standard kernel source
with kgcc. output looks something like this: 

kgcc -D__KERNEL__ -I/usr/src/linux-current/include -Wall
-Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe 
-march=i686   -c -o init/main.o init/main.c
In file included from /usr/src/linux-current/include/linux/wait.h:13,
                 from /usr/src/linux-current/include/linux/fs.h:12,
                 from /usr/src/linux-current/include/linux/capability.h:17,
                 from /usr/src/linux-current/include/linux/binfmts.h:5,
                 from /usr/src/linux-current/include/linux/sched.h:9,
                 from /usr/src/linux-current/include/linux/mm.h:4,
                 from /usr/src/linux-current/include/linux/slab.h:14,
                 from /usr/src/linux-current/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/usr/src/linux-current/include/linux/kernel.h:10: stdarg.h: Too many levels
of symbolic links
In file included from /usr/src/linux-current/include/linux/wait.h:13,
                 from /usr/src/linux-current/include/linux/fs.h:12,
                 from /usr/src/linux-current/include/linux/capability.h:17,
                 from /usr/src/linux-current/include/linux/binfmts.h:5,
                 from /usr/src/linux-current/include/linux/sched.h:9,
                 from /usr/src/linux-current/include/linux/mm.h:4,
                 from /usr/src/linux-current/include/linux/slab.h:14,
                 from /usr/src/linux-current/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/usr/src/linux-current/include/linux/kernel.h:62: parse error before
`va_list'
/usr/src/linux-current/include/linux/kernel.h:62: warning: function
declaration isn't a prototype
make: *** [init/main.o] Error 1

it looks like this happened in the shuffle of moving kgcc from it's own
rpm, to the compat-egcs package.

Comment 1 Jakub Jelinek 2001-04-10 09:11:07 UTC
No, it happened because compat-egcs-6.2-1.1.2.12 and compat-egcs-6.2-1.1.2.13
used to hardlink the header files between /usr/lib/gcc-lib/i386-{glibc21,redhat}-linux/include
and rpm did not handle this well. If you upgrade from the compat-egcs shipped
in 7.0 originally (or from 6.2), all should be fine.
What you can do now is either rpm -e the compat packages and install them
again, or rm -rf /usr/lib/gcc-lib/i386-glibc21-linux and rpm -Uvh --force
the compat packages.

Comment 2 Wehrman, Ian 2001-04-10 14:08:24 UTC
hmm. this doesn't seem to do the trick for me. i've removed the compat-*
packages, and reinstalled from rawhide. unfortunately, the links are still broken. 

$ pwd
/usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/include
$ ls -l stdarg.h
... stdarg.h -> ../../../i386-glibc21-linux/egcs-2.91.66/include/stdarg.h

all the include files in this directory are links pointing to themselves. am i
missing something?

Comment 3 Jakub Jelinek 2001-04-10 14:29:10 UTC
So after you remove the packages, make sure /usr/lib/gcc-lib/i386-glibc21-linux
tree is empty.
I just did an compat-egcs-6.2-1.1.2.9 (and other subpackages) to
compat-egcs-6.2-1.1.2.14 and the files are ok.

Comment 4 Sammy 2001-04-10 17:55:53 UTC
No...the files are not there....they are symbolic links to themselves! I removed
all the compat rpms, removed the entire directory /usr/lib/gcc-lib/i386-glibc21-linux/
and reinstalled the rpms and links are still pointing to themselves and the real
files are nowhere in the system.


Comment 5 Wehrman, Ian 2001-04-11 19:00:12 UTC
yes, that's what i see over here too. this bug should be reopened.