Comments you submit will be routed for moderation. If you have an account, please log in first.
Modify

Ticket #2835 (closed defect: fixed)

Opened 8 years ago

Last modified 6 months ago

multiple target patterns -- autotools and cygwin

Reported by: jberry Owned by: wehart
Priority: normal Milestone: acro 2.0
Component: Acro Projects Version: acro 1.0.2
Keywords: Cc:
Subcomponent: Configuration and Building

Description (last modified by wehart) (diff)

This happens on cygwin (recent full install within the past month):

cvs checkout acro-pico (succeeds)
autoreconf -f -i -s (succeeds)
configure --with-debugging (succeeds)
make (succeeds)
make clean (fails)


Making clean in src
make[6]: Entering directory `/home/jberry/acro/packages/tpl/coin/COIN_2006Sep06/Alps/src'
.deps/AlpsCompareActual.Plo:1: * multiple target patterns. Stop.
make[6]: Leaving directory `/home/jberry/acro/packages/tpl/coin/COIN_2006Sep06

Here's a snippet from AlpsCompareActual?.Plo:


/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/ext/new_allocator.h \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_construct.h \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_uninitialized.h \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_list.h \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/list.tcc \
 C:/cygwin/home/jberry/acro/packages/tpl/coin/COIN_2006Sep06/CoinUtils/src/CoinError.hpp \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/string \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/char_traits.h \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/memory \
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_raw_storage_iter.h \


Somehow a Windows path name got written into the .Plo file, and it brings down subsequent build operations (including 'clean'). Replacing this manually with a unix path "solves" the problem. But why are these Windows paths being generated now? Is it something about the use of autotools in Coin/Alps??


$ automake --version
automake (GNU automake) 1.9.6
Written by Tom Tromey <tromey@…>.

Copyright 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ autoconf --version
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie? and Akim Demaille.

Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Attachments

Change History

comment:1 Changed 6 years ago by wehart

This is a known bug. We need to document this in the installation process:

  • On Cygwin, GNU make version 3.81-1 delivered by the default

setup

program doesn't work with the automatic header file dependencies, generated by the compilers. The error message you will see because of this bug will look something like this:

make[2]: Entering directory `/home/andreasw/COIN-svn/OBJgcc-debug/Clp/trunk/Clp/src'

.deps/ClpCholeskyBase.Plo:1: * multiple target patterns. Stop.

Here are two suggested fixes:

  1. Try to obtain the previous version (3.80); for example, you can

download

it from  http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2.

  1. Obtain a fixed 3.81 version, for example from

 http://www.cmake.org/files/cygwin/make.exe. (See the Cygwin mailing list postings  http://cygwin.com/ml/cygwin/2006-09/msg00315.html and
 http://cygwin.com/ml/cygwin/2006-09/msg00153.html)

comment:2 Changed 6 years ago by wehart

  • Version changed from 1.0 to acro 1.0.2
  • Description modified (diff)
  • Milestone set to acro 2.0

comment:3 Changed 6 years ago by jdsiiro

  • Priority changed from high to normal
  • severity normal deleted

Converting all severities into priorities and deprecating the severity field.

comment:4 Changed 5 years ago by wehart

  • Status changed from new to closed
  • Resolution set to fixed

This has been resolved by noting that we need an earlier version of gmake under cygwin. This may not be an issue with more recent cygwin checkouts.

comment:5 Changed 6 months ago by anonymous

Since this bug reports comes up when you Google about this problem, I wanted to document that this was not in fact a problem with the CYGWIN make---it turned out to be a long-standing problem with COIN's build harness that was compensated for by the modified make.

In a nut shell, the autotools provide a dependency tracking system that is more sophisticated than what you get with just a plain makefile. It traces more complex dependencies (multi-step, etc.) and puts them in the .Plo files. If you look, those are just lists of dependencies (headers and so forth) that are used to trigger rebuilds of source file by adding additional targets to the makefile. The dependencies are obtained from the compiler, which can be used to probe them. All of this actually slows down the build, by the way, so using "--disable-dependency-tracking" will speed build times at the loss of the improved dependency tracking (and will fix this problem).

What was happening was simply that a Windows-style path was sneaking into the .Plo file. Since the .Plo file are used as targets in the Makefile, they cannot have colons in them, since that would create a line in the Makefile with two colons and this is the source of the "multiple target patterns" error. We went through and removed some path conversion that were doing manually when CYGWIN was the platform, which was the source of the real problem. I guess that the "fixed" version of make actually detected Widows-style paths in targets and converted them back to Posix-style, but it was never a problem with make itself---this was just compensating for a bug somewhere else.

In the most recent versions of COIN, the stock "make" on CYGWIN will now work.

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.