Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019 
<== Date ==> <== Thread ==>

Subject: RE: Build problem with db dependencies
From: Gougnaud Françoise <francoise.gougnaud@cea.fr>
To: "tech-talk@aps.anl.gov" <tech-talk@aps.anl.gov>
Date: Wed, 21 Mar 2012 08:37:39 +0000
Hi,
I have exactly the same problem since I started using EPICS Base R3.14.12.2. I never had this problem before with R3.14.12.

None of the solutions discussed here works with R3.14.12.2. I also applied the patch contained in the R3.14.12.2 known problems without success.

Cheers,

-----Message d'origine-----
De : tech-talk-bounces@aps.anl.gov [mailto:tech-talk-bounces@aps.anl.gov] De la part de Ralph Lange
Envoyé : mardi 20 mars 2012 08:47
À : tech-talk@aps.anl.gov
Objet : Re: Build problem with db dependencies

You can also try creating the dependencies correctly, e.g. by putting

$(COMMON_DIR)/%.db$(RAW)$(DEP): %.substitutions
        @$(RM) $@
        $(PERL) -e 'undef $$/; $$_=<>;
@d=m/(?:^|})\s*file\s+\"?([^\"{\s]*)\s*\{/mg; print
"$(COMMON_DIR)/$*.db$(RAW): @d\n";' $< > $@.tmp
        $(MV) $@.tmp $@

or something functionally equivalent into your RULES file.

Amazing how perl turns everything into an obvious one-liner, isn't it?

Cheers,
~Ralph


On Tue Mar 20 2012 07:00:45 GMT+0100 (CET), Emma Shepherd <Emma.Shepherd@synchrotron.org.au> wrote:
> Hi Bruce,
>
> Good timing - I just ran into the same problem today!  I agree, it's a pain to have to run 'make rebuild' every time.  Thanks for the patch, that works for me too.
>
> Cheers,
>
> Emma
>
> -----Original Message-----
> From: tech-talk-bounces@aps.anl.gov 
> [mailto:tech-talk-bounces@aps.anl.gov] On Behalf Of Bruce Hill
> Sent: Saturday, 18 February 2012 11:31 AM
> To: tech-talk@aps.anl.gov
> Subject: Build problem with db dependencies
>
> Has anyone else run into a build dependency problem with base-3,14,12?
>
> What I've been finding is that I can build an IOC or module that 
> depends on *.db or *.template files from another module successfully 
> the first time, but it fails on subsequent builds.
>
> Example build output:
> % make
> perl /reg/g/pcds/package/epics/3.14/base/R3.14.12-0.4.0/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../../..
> perl /reg/g/pcds/package/epics/3.14/base/R3.14.12-0.4.0/bin/linux-x86_64/makeMakefile.pl O.RTEMS-beatnik ../../..
> perl /reg/g/pcds/package/epics/3.14/base/R3.14.12-0.4.0/bin/linux-x86_64/makeMakefile.pl O.linux-x86 ../../..
> mkdir O.Common
> /usr/bin/make -C O.linux-x86_64 -f ../Makefile TOP=../../.. 
> T_A=linux-x86_64 install
> make[1]: Entering directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.linux-x86_64'
> perl 
> /reg/g/pcds/package/epics/3.14/base/R3.14.12-0.4.0/bin/linux-x86_64/ma
> keDbDepends.pl ../O.Common/iocAdmin.db ../iocAdmin.substitutions >> iocAdmin.db.d echo "../O.Common/iocAdmin.db : " >> iocAdmin.db.d Inflating database from ../iocAdmin.substitutions
> /reg/g/pcds/package/epics/3.14/extensions/current/bin/linux-x86/msi   -I. -I.. -I../O.Common -I ../../../db     -I/reg/g/pcds/package/epics/3.14/base/R3.14.12-0.4.0/db     -I/reg/g/pcds/package/epics/3.14/modules/autosave/R4.2.1.2-2.7.0/db -I/reg/g/pcds/package/epics/3.14/modules/iocAdmin/R3.0.0-1.6.0/db -I/reg/neh/home/bhill/wa2/trunk/pcds/epics/modules/event/current/db  -S../iocAdmin.substitutions > iocAdmin.tmp
> mv iocAdmin.tmp ../O.Common/iocAdmin.db perl 
> /reg/g/pcds/package/epics/3.14/base/R3.14.12-0.4.0/bin/linux-x86_64/ma
> keDbDepends.pl ../O.Common/evr.db ../evr.substitutions >> evr.db.d 
> echo "../O.Common/evr.db : " >> evr.db.d Inflating database from ../evr.substitutions
> /reg/g/pcds/package/epics/3.14/extensions/current/bin/linux-x86/msi   -I. -I.. -I../O.Common -I ../../../db     -I/reg/g/pcds/package/epics/3.14/base/R3.14.12-0.4.0/db     -I/reg/g/pcds/package/epics/3.14/modules/autosave/R4.2.1.2-2.7.0/db -I/reg/g/pcds/package/epics/3.14/modules/iocAdmin/R3.0.0-1.6.0/db -I/reg/neh/home/bhill/wa2/trunk/pcds/epics/modules/event/current/db  -S../evr.substitutions > evr.tmp
> mv evr.tmp ../O.Common/evr.db
> Installing created db file ../../../db/iocAdmin.db Installing created 
> db file ../../../db/evr.db
> make[1]: Leaving directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.linux-x86_64'
> /usr/bin/make -C O.RTEMS-beatnik -f ../Makefile TOP=../../.. 
> T_A=RTEMS-beatnik install
> make[1]: Entering directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.RTEMS-beatnik'
> make[1]: Nothing to be done for `install'.
> make[1]: Leaving directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.RTEMS-beatnik'
> /usr/bin/make -C O.linux-x86 -f ../Makefile TOP=../../.. T_A=linux-x86 
> install
> make[1]: Entering directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.linux-x86'
> make[1]: Nothing to be done for `install'.
> make[1]: Leaving directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.linux-x86'
> (232) 04:29 PM 
> psusr115:~/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db
> % make
> /usr/bin/make -C O.linux-x86_64 -f ../Makefile TOP=../../.. 
> T_A=linux-x86_64 install
> make[1]: Entering directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.linux-x86_64'
> make[1]: *** No rule to make target `ioc.db', needed by `../O.Common/iocAdmin.db'.  Stop.
> make[1]: Leaving directory `/reg/neh/home/bhill/wa2/epics/iocTest/test-R3.14.12/evr1/myEvrApp/Db/O.linux-x86_64'
> make: *** [install.linux-x86_64] Error 2
>
> The first build succeeds because RELEASE_DBFLAGS has a list of -I 
> directives which includes the released iocAdmin module's db dir, so 
> msi is able to use that to successfully build my iocAdmin.db file.
>
> The problem arises because the first build also creates a dependency 
> file for iocAdmin.db using makeDbDepends.pl that looks like this.
>
> % cat O.linux-x86_64/iocAdmin.db.d
> ../O.Common/iocAdmin.db: ioc.db access.db iocCluster.db 
> ../O.Common/iocAdmin.db :
>
>
> Subsequent builds fail because ioc.db is over in the released iocAdmin  
> module's db dir, which doesn't end up on the vpath for .db files.
>
> I think I have a fix for it, but I can't figure out why this hasn't 
> been a problem for us and others before now.
>
> I'd like to avoid customizing my base configure files to the extent 
> possible, but these changes seem to fix the problem.
>
> % svn diff
> Index: CONFIG_APP_INCLUDE
> ===================================================================
> --- CONFIG_APP_INCLUDE  (revision 8621)
> +++ CONFIG_APP_INCLUDE  (working copy)
> @@ -16,6 +16,8 @@
>     RELEASE_INCLUDES += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/include))
>     RELEASE_DBDFLAGS += $$(addprefix -I,$$(wildcard $$(strip $$($(1)))/dbd))
>     RELEASE_DBFLAGS += $$(addprefix -I,$$(wildcard $$(strip 
> $$($(1)))/db))
> +  RELEASE_DIRS_DBD += $$(wildcard $$(strip $$($(1)))/dbd)  
> + RELEASE_DIRS_DB  += $$(wildcard $$(strip $$($(1)))/db)
>     RELEASE_PERL_MODULE_DIRS += $$(wildcard $$($(1)_LIB)/perl)
>   endef
>   $(foreach top, $(RELEASE_TOPS), $(eval $(call 
> RELEASE_FLAGS_template,$(top)) ))
> Index: RULES.Db
> ===================================================================
> --- RULES.Db    (revision 8757)
> +++ RULES.Db    (working copy)
> @@ -11,10 +11,10 @@
>   #####################################################  vpath
>
>   vpath %.dbd $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DBD)) -vpath 
> %.db $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DB)) -vpath %.vdb 
> $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DB))
> +vpath %.db $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(DB)) 
> +$(RELEASE_DIRS_DB) vpath %.vdb $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir 
> +$(DB)) $(RELEASE_DIRS_DBD)
>   vpath %.substitutions $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR) 
> -vpath %.template $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
> +vpath %.template $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR) 
> +$(RELEASE_DIRS_DB)
>   vpath bpt%.data $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
>   vpath %.acf $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
>   vpath %.acs $(USR_VPATH) $(GENERIC_SRC_DIRS) $(COMMON_DIR)
>
>
> Any comments would be appreciated.
> Thanks,
> - Bruce
>
>
> <br>This message and any attachments may contain proprietary or confidential information. If you are not the intended recipient or you received the message in error, you must not use, copy or distribute the message. Please notify the sender immediately and destroy the original message. Thank you.



Replies:
Re: Build problem with db dependencies Bruce Hill
References:
Build problem with db dependencies Bruce Hill
RE: Build problem with db dependencies Emma Shepherd
Re: Build problem with db dependencies Ralph Lange

Navigate by Date:
Prev: Re: waveform ENUM FTVL or BOOL FTVL Hinko Kocevar
Next: asynDriver problem with vxi11 Dirk Zimoch
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019 
Navigate by Thread:
Prev: Re: Build problem with db dependencies Ralph Lange
Next: Re: Build problem with db dependencies Bruce Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·