Experimental Physics and Industrial Control System
|
Hi Jeff,
It's even worse:
Obviously I'm running into filesystem cache race conditions (??)
With the $(wildcard) done by make, I get some cases where (that's my
interpretation) make runs the wildcard before the file has been fully
created. I'm printing the command line for the install script and
there's no filename, just the target directory. The install script
complains and stops the make run. When I look into the directory, the
file is there. Running another make perfectly installs the file.
When I remove the ($wildcard) function in RULES_BUILD and directly use
the (traditional) $<, everything works fine.
So right now I'm successfully experimenting with "$(sort $< $(wildcard
$<*))" to force mentioning the real target once for the install script
line. Weird!
You probably didn't see it because you're using cygwin, where the shell
(or the cygwin dll used by cygwin make) does the wildcard expansion.
Ralph
ps. We probably should have a set of VMware virtual machines to download
from the APS server with different Windowses and compilers readily
installed - creating a set of comparable Windows reference compile
hosts. The VMware player (that you need to run these virtual machines on
Windows or Linux) is free to use. Would be a very easy-to-use and
flexible way to run test compilations on a variety of systems without
having multiple hardware. Creates a license problem for Windows guest
systems, I guess. Not much of a problem for most Linux guests, though.
Jeff Hill wrote:
Thanks Rlaph.
Actually surprised that I havent seen this here.
Jeff
-----Original Message-----
From: Ralph Lange [mailto:[email protected]]
Sent: Monday, January 23, 2006 7:47 AM
To: Janet Anderson
Cc: EPICS Core Talk
Subject: Re: 3.14.8 / cygwin dependency
Hi Janet,
I found the change that broke the non-cygwin build:
In RULES_BUILD 1.88.2.14 the line to install binaries was changed from
@$(INSTALL_PRODUCT) -d -m 555 $< $(INSTALL_BIN)
to
ifdef WIN32
@$(INSTALL_PRODUCT) -d -m 555 $<* $(INSTALL_BIN)
else
@$(INSTALL_PRODUCT) -d -m 555 $< $(INSTALL_BIN)
endif
Immediately afterwards the wildcard was taken back for
BORLAND compilations. The problem is that the standard
Windows shell - or whatever make uses
to call programs on non-cygnus systems - does not allow wildcards in
this place. Changing the "$<*" to "$(wildcard $<*)" lets make do the
wildcard job, which should be the better option, anyway.
What exactly were you trying to "catch" with that wildcard? For my
Microsoft non-cygnus system I actually can't think of any other files
that would be matched by it.
I didn't commit any changes to CVS as I wasn't sure about the
usefulness
of that wildcard.
So - if we need the wildcard, please change it as shown above, which
will work everywhere. If we don't need the wildcard, going
back to the
traditional line is fine with me.
Cheers,
Ralph
- Navigate by Date:
- Prev:
Re: 3.14.8 / cygwin dependency Ralph Lange
- Next:
Re: 3.14.8 / cygwin dependency Ralph Lange
- Index:
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: 3.14.8 / cygwin dependency Ralph Lange
- Next:
Re: 3.14.8 / cygwin dependency Ralph Lange
- Index:
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|
ANJ, 02 Feb 2012 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
·
Search
·
EPICS V4
·
IRMIS
·
Talk
·
Bugs
·
Documents
·
Links
·
Licensing
·
|