[cmake-developers] Parallel build of cmake-2.8.3 fails using "MSYS Makefiles" generator under wine

Alan W. Irwin irwin at beluga.phys.uvic.ca
Sat Dec 4 02:34:16 EST 2010


On the wine/MinGW/MSYS platform, the "make -j4 install" command used
to build cmake errored out with a message to the effect that
ranlib.exe could not find Utilities/cmzlib/libcmzlib.a.  However, when
I checked after the failure, that static library was there.  Also, if
I made a completely fresh build without the -j4 option for the make
command, the build and install of cmake succeeded without issues.

When the make -j4 option fails while dropping that option succeeds it
is normally a classic symptom of a dependency issue in the build
system. However, when I look at Utilities/cmzlib/CMakeLists.txt I
don't see anything special there at all that raises a flag about
dependencies, but that is not completely definitive since cmzlib is
mentioned a number of times within the CMake source tree.

Could someone with good familiarity with the build system for
CMake-2.8.3 take a look to make sure a dependency issue can be ruled
out?

I didn't have such issues when I built CMake-2.8.1 before with the
latest MSYS tool chain available at that time.  Of course, that doesn't rule
out it is the change in tool chain versions that is causing
make -j4 to fail rather than some dependency issue introduced between
CMake-2.8.1 and CMake-2.8.3.

Here is some additional background to this story.

I am restarting my investigation of building PLplot dependencies and
PLplot itself using MinGW/MSYS on the Linux wine platform.  (The point
here is it gives me a free (in both senses) Windows platform for
testing PLplot-related builds on my Linux box.)

I first built wine-1.3.8 on Linux, then used the new MinGW/MSYS automated
installer as follows:

wineconsole mingw-get-inst-20101030.exe

to download and install the latest versions of MinGW/MSYS packages.
This task is completely automated and only takes about 5 minutes. That
is a real life saver compared to what I had to do before downloading
and installing all the many different required MinGW/MSYS packages
by hand.

I downloaded and installed the cmake-2.8.3 windows binary version,
then used it to build cmake itself as a test.  The steps used for
that build were as follows (using my particular directory structure):

source the following file under Linux bash to prepare for using wine:

############
# Put compiled version of wine on the PATH
PATH=/home/software/wine/install/bin:$PATH

# Use special newstart prefix
export WINEPREFIX=/home/wine/newstart/.wine

# Advice is to turn all debugging off this way to get
# best performance.
export WINEDEBUG='-all'

# CMake VERSION
export CMAKE_VERSION=2.8.3

# Kill wineserver before (re-)starting it just in case it was running.
wineserver -k
wineserver -p
############

# Start up bash under wine by hand.
wineconsole MinGW/msys/1.0/bin/bash.exe

>From that wine bash environment source (using the "." command) the following file:

############
# Build cmake for Windows under wine.

# Establish PATH to MinGW/MSYS.
. set_mingw_msys_path.wine_sh

# Use downloaded binary version of cmake to build cmake.
PATH=/z/home/wine/newstart/cmake-$CMAKE_VERSION-win32-x86/bin:$PATH

mkdir -p cmake/build_dir cmake/install
rm -rf /home/wine/newstart/cmake/build_dir/* \
/home/wine/newstart/cmake/install
cd cmake/build_dir

env \
CXXFLAGS='-O3' \
cmake -G "MSYS Makefiles"
"-DCMAKE_INSTALL_PREFIX=/z/home/wine/newstart/cmake/install"
/z/home/software/cmake/cmake-$CMAKE_VERSION >& cmake.out

make -j4 install >& make_install.out
############

That generated the error described above while going through the
whole procedure again with -j4 option removed succeeded without any
issues.

Other data: 64-bit (amd64) box with two cpu's.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________

Linux-powered Science
__________________________



More information about the cmake-developers mailing list