EPICS Home

Experimental Physics and Industrial Control System


 
2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: 3.14.8 / cygwin dependency
From: Ralph Lange <[email protected]>
To: Jeff Hill <[email protected]>
Date: Mon, 23 Jan 2006 17:14:16 +0100
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  <20062007  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  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024