[uClibc 0005264]: Can not build uClibc with locale support without "make distclean" every time

bugs at busybox.net bugs at busybox.net
Mon Oct 6 13:47:59 UTC 2008


A NOTE has been added to this issue. 
====================================================================== 
http://busybox.net/bugs/view.php?id=5264 
====================================================================== 
Reported By:                chrisz
Assigned To:                uClibc
====================================================================== 
Project:                    uClibc
Issue ID:                   5264
Category:                   Other
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     assigned
====================================================================== 
Date Submitted:             10-06-2008 01:31 PDT
Last Modified:              10-06-2008 06:47 PDT
====================================================================== 
Summary:                    Can not build uClibc with locale support without
"make distclean" every time
Description: 
This is a minor issue but is taking up much of my time while trying to sort
through problems. 

When compiling with locale support, if I don't do a "make distclean"
before every build, the compile of uClibc fails with:

extra/locale/gen_wc8bit.c:21:29: error: ./include/bits/uClibc_ctype.h: No
such file or directory

I'm sure there is an easier way to get around this problem than a "make
distclean" at the root level, but the Makefiles are complicated and I
can't find the correct rule to fix this.

Can anyone tell me how to get around this issue in a more sane manner?

Thanks,

Chris

====================================================================== 

---------------------------------------------------------------------- 
 carmelo73 - 10-06-08 01:41  
---------------------------------------------------------------------- 
Hi, I've seen this while compiling with make -j 2. Is this your case ?
It seems to be caused by wrong value of top_scrdir when doing parallel
compilation. 

---------------------------------------------------------------------- 
 chrisz - 10-06-08 04:25  
---------------------------------------------------------------------- 
Carmello,

I'm not using parallel compile, but you are correct that the direct cause
appears to be gen_wc8bit trying to include ./include/bits/uClibc_ctype.h,
when it should be trying to include ../../include/bits/uClibc_ctype.h.
This appears to be set in the Makefile.in directory in extra/locale

Interestingly, the reason why it works with a "make distclean" is because
the make rules for some reason do not try and build the targets
c8tables.h, wctables.h, locale_tables.h, or lt_defines.h

Commenting out the dependencies and associated rules for these targets in
extra/locale/Makefile.in allows the compile to complete with no obvious
differences from that when you do a "make distclean" at the root.

I am curious to know the purpose of these files. 

---------------------------------------------------------------------- 
 carmelo73 - 10-06-08 05:33  
---------------------------------------------------------------------- 
I usually build with locale support, and never seen this before (unless
parallel build).
>From which directory do you compile ?

These files are used for creating locale data structured to be included
within the libc.so.0, unless you use pregenerated files. 

---------------------------------------------------------------------- 
 chrisz - 10-06-08 06:47  
---------------------------------------------------------------------- 
Carmello,

Thank you for your assistance with this. I'm not sure how to reconcile
what I'm seeing with your experiences. I always try and compile from the
top directory of the source tree, in this case uClibc-0.9.30-rc1.

Based on your conviction that the Makefile was correct, I went ahead and
restored it to its original form, except I changed line 15 in
extra/locale/Makefile.in to read ../../include/bits/uClibc_ctype.h instead
of the default $(top_builddir)include/bits/uClibc_ctype.h.  I also verified
$(top_builddir) is set to "./" at this point in the build process, which
concurs with the error message I am seeing "can not open
./include/bits/uClibc_ctype.h".

After making the change, the Makefile works as expected, and gen_wc8bit
compiles and runs normally. Just to be sure, I ran make -j 1 to be
absolutely certain it was not a parallel compile issue, and I got the same
result.

If you have a chance, can you check and let me know what the variable
$(top_builddir) is set to in your environment at the time it tries to make
gen_wc8bit? I have to believe if it works for you and does not for me,
there must be some environmental differences.

Thanks again for your help.

Chris 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
10-06-08 01:31  chrisz         New Issue                                    
10-06-08 01:31  chrisz         Status                   new => assigned     
10-06-08 01:31  chrisz         Assigned To               => uClibc          
10-06-08 01:41  carmelo73      Note Added: 0012804                          
10-06-08 04:25  chrisz         Note Added: 0012814                          
10-06-08 05:33  carmelo73      Note Added: 0012824                          
10-06-08 06:47  chrisz         Note Added: 0012834                          
======================================================================




More information about the uClibc-cvs mailing list