[cmake-developers] [CMake 0015039]: CMake linked against libc++ on OS X 10.7 cuts lines at 1024 characters

Mantis Bug Tracker mantis at public.kitware.com
Sun Jul 27 04:07:13 EDT 2014


The following issue has been SUBMITTED. 
====================================================================== 
http://www.cmake.org/Bug/view.php?id=15039 
====================================================================== 
Reported By:                Mojca Miklavec
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   15039
Category:                   CMake
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2014-07-27 04:07 EDT
Last Modified:              2014-07-27 04:07 EDT
====================================================================== 
Summary:                    CMake linked against libc++ on OS X 10.7 cuts lines
at 1024 characters
Description: 
As already reported
(http://public.kitware.com/pipermail/cmake-developers/2014-June/010712.html)
building CMake on OS X 10.7 against libc++ fails because some lines are cut at
1024 characters when reading from link.txt.

If I manually execute a couple of commands that have been "cut", the build
eventually succeeds, but the resulting cmake binary is "useless" because any
project that requires lines longer than 1024 characters to compile code, fails
to build as well.

Steps to Reproduce: 
Compile CMake on OS X 10.7 using

CC='/usr/bin/clang'
CXX='/usr/bin/clang++'
CXXFLAGS='-stdlib=libc++'


Additional Information: 
Brad King wrote:

The lines are read here:

 http://cmake.org/gitweb?p=cmake.git;a=blob;f=Source/cmcmd.cxx;hb=v3.0.0#l988

using the GetLineFromStream helper:

 http://cmake.org/gitweb?p=cmake.git;a=blob;f=Source/kwsys/SystemTools.cxx;hb=v3.0.0#l4157

Note the buffer size is 1024.  Something must go wrong with the
stream state to make it look like EOL or EOF to this code.


Ben Boeckel wrote:

The proper way to read lines from a file using iostream is:

    std::string line;
    while (std::getline(istr, line)) {
        // use line
    }

Unfortunately, it looks like there's unavoidable extra logic in there.
Maybe we could do:

    #ifdef BROKEN_STREAMS
    // crutch code
    #else
    // sanity
    #endif

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

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2014-07-27 04:07 Mojca Miklavec New Issue                                    
======================================================================



More information about the cmake-developers mailing list