1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: base-3.15.5/templates/makeBaseApp/top/iocBoot/ioc/Makefile@Common |
From: | John Dobbins <[email protected]> |
To: | Andrew Johnson <[email protected]> |
Cc: | "[email protected]" <[email protected]> |
Date: | Mon, 23 Apr 2018 20:38:12 +0000 |
Andrew,
In fact on my machine
Unsetting it fixed the problem. Thanks for your follow through.
John
From: Andrew Johnson <[email protected]>
Sent: Monday, April 23, 2018 4:24 PM To: John Dobbins Cc: [email protected] Subject: Re: base-3.15.5/templates/makeBaseApp/top/iocBoot/ioc/Makefile@Common Hi John.
On 04/23/2018 02:30 PM, John Dobbins wrote: > I restarted from scratch with 3.15.5 and got same result. > Did same with 3.15.4 and got same result. > 3.15.3 works. All of this is consistent with the date of the change you > indicated. Interesting. I just switched to a different account so I shouldn't be relying on any personal configurations and created a new makeBaseApp example IOC from a different Base-3.15.5 tree, and the result works. There's something different about your setup; I'm running RHEL-7.5, but I also tried it on RHEl-6.9 with no difference. The difference must be due to something in our environments (more below). > I did "make -d" in iocBoot/iocmyExample and reproduce the tail here: > > Updating goal targets.... > Considering target file `all'. > File `all' does not exist. > Considering target file `install'. > File `install' does not exist. > Considering target file `buildInstall'. > File `buildInstall' does not exist. > Finished prerequisites of target file `buildInstall'. > Must remake target `buildInstall'. > Successfully remade target file `buildInstall'. > Finished prerequisites of target file `install'. > Must remake target `install'. > Successfully remade target file `install'. > Finished prerequisites of target file `all'. > Must remake target `all'. > Successfully remade target file `all'. > make: Nothing to be done for `all'. > > The target envPaths is not considered. This used to be considered after > buildInstall. For comparison, here's my tail from 'make -d': > Updating goal targets.... > Considering target file `all'. > File `all' does not exist. > Considering target file `install'. > File `install' does not exist. > Considering target file `buildInstall'. > File `buildInstall' does not exist. > Considering target file `envPaths'. > File `envPaths' does not exist. > Considering target file `../../configure/RELEASE'. > File `../../configure/RELEASE' was considered already. > Considering target file `../../configure/CONFIG_SITE'. > File `../../configure/CONFIG_SITE' was considered already. > Finished prerequisites of target file `envPaths'. > Must remake target `envPaths'. > Invoking recipe from /iocapps2/R3.15.5/base/3-15-5-aes1/configure/RULES.ioc:34 to update target `envPaths'. > perl -CSD /iocapps2/R3.15.5/base/3-15-5-aes1/bin/linux-x86_64/convertRelease.pl -t /home/phoebus/EPICS/TEMP/3.15-example envPaths > Putting child 0x25652b0 (envPaths) PID 24690 on the chain. > Live child 0x25652b0 (envPaths) PID 24690 > Reaping winning child 0x25652b0 PID 24690 > Removing child 0x25652b0 PID 24690 from chain. > Successfully remade target file `envPaths'. > Finished prerequisites of target file `buildInstall'. > Must remake target `buildInstall'. > Successfully remade target file `buildInstall'. > Finished prerequisites of target file `install'. > Must remake target `install'. > Successfully remade target file `install'. > Finished prerequisites of target file `all'. > Must remake target `all'. > Successfully remade target file `all'. So in my case envPaths is seen as a dependency of buildInstall, but it isn't in yours. The appropriate build rules are found in the base-3.15 configure/RULES.ioc file which was not modified when the ARCH variable was removed from those Makefiles, but it looks like it probably should have been. This part explains why: > ifeq ($(filter $(ARCH),$(BUILD_ARCHS)),$(strip $(ARCH))) > buildInstall$(DIVIDER)$(ARCH) buildInstall: $(TARGETS) > > clean$(DIVIDER)$(ARCH) clean: > $(RM) cdCommands envPaths dllPath.bat relPaths.sh > else > buildInstall$(DIVIDER)$(ARCH) buildInstall: > clean$(DIVIDER)$(ARCH) clean: > endif That if condition assumes that ARCH is set and is one of the words in BUILD_ARCHS. If ARCH is unset the if condition is apparently evaluated as true, but if your environment has the environment variable ARCH set to something that is not a configured EPICS build architecture the else branch would be taken and the contents of TARGETS will be ignored. I set ARCH in my environment to garbage and got the same results as you. Could you try 'echo $ARCH' and see what you get? The proper solution might be to set ARCH to $(EPICS_HOST_ARCH) in Makefile@Common but I need to think about this a bit to decide what the best fix is. There should be other changes to that file if it is to work properly with ARCH unset. Thanks for helping track this down! - Andrew -- Arguing for surveillance because you have nothing to hide is no different than making the claim, "I don't care about freedom of speech because I have nothing to say." -- Edward Snowdon |