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";' $< > [email protected]
$(MV) [email protected] $@
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
<[email protected]> 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: [email protected] [mailto:[email protected]] On Behalf Of Bruce Hill
> Sent: Saturday, 18 February 2012 11:31 AM
> To: [email protected]
> 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/makeDbDepends.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/makeDbDepends.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 Ralph Lange
- RE: Build problem with db dependencies Gougnaud Françoise
- References:
- Build problem with db dependencies Bruce Hill
- RE: Build problem with db dependencies Emma Shepherd
- Navigate by Date:
- Prev:
ARM - EPICS performance evaluation ssahoo
- Next:
Re: Build problem with db dependencies Ralph Lange
- 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
- Navigate by Thread:
- Prev:
RE: Build problem with db dependencies Emma Shepherd
- Next:
Re: Build problem with db dependencies Ralph Lange
- 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
|