Subject: |
Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] |
From: |
Andrew Johnson <[email protected]> |
To: |
[email protected] |
Date: |
Fri, 2 Nov 2012 13:38:27 -0500 |
Hi Guys,
The fact that both Ernest and Ralph want to be able to install files in an
IOC-specific directory tells me that the build system needs to be able to do
something like this, but it's not clear what the requirements are or where the
files should go. The install path ioc/<name> is an obvious target location,
but whatever we come up with will need to support the current way of building
IOCs as well.
Janet has taken a look at Ernest's original request and says it's not going to
work without making build system changes, so I think we/you should agree on
what we want to achieve before we fiddle with the current system too much.
IIRC Gemini has been using a build system that installs st.cmd files among
others for quite a long time, and I hope someone from there will pipe up with
what your requirements are or how your current application builds work so we
can consider them as well.
In the mean-time, it is possible for any application to override the build
rules in Base (it actually overrides the setting of the CONFIG variable that
gnumake uses to find the files) without having to make any changes to Base
itself or without having to have a private copy of those rules. You just set
the RULES variable in your RELEASE file to point to a top area that contains a
configure directory with your local version of the files CONFIG, RULES,
RULES_DIRS, RULES_TOP and RULES.ioc.
Hoping for some collaboration here, although I know you're all busy.
- Andrew
On 2012-11-01 Williams Jr., Ernest L. wrote:
> ________________________________________
> From: [email protected] [[email protected]] On
> Behalf Of Ralph Lange [[email protected]] Sent: Thursday, November 01,
> 2012 8:12 AM
> To: EPICS Tech Talk
> Subject: Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12]
>
> Hi Ernest,
>
> the main issue behind this:
> In the traditional EPICS build system, IOC startup files (actually
> everything under iocBoot) are considered source files. Other than for
> libraries, databases etc., these sources are not compiled in any way, and
> they do not create any products that are installed. Without an
> installation step, $(INSTALL_LOCATION) does not apply. ====
> ELW
> ====
> =================================================================
> I think this is actually wrong and should be addressed.
> They are indeed products built in the IOC area:
> (1) envPaths or for vxWorks "cdCommands"
> (2) The st.cmd is simply an ASCII text file; like a very simple database
> needing no MACRO expansion. In other words the st.cmd needs to be simply
> installed.
>
> Bottom line: Anything that is loaded by an IOC should be an installable set
> of libraries, files, etc...
>
> Not having this of course, breaks symmetry. :(
>
> Although, I know it has always been this way. My INSTALLATION_TOP has
> always been right along side my APP. Now, I really want to push the
> products to a different location.
> ===================================================================
>
>
>
>
>
> For our HZB/BESSY developments, we are creating the startup files
> programmatically in an ...App directory, so we changed our rules to treat
> .../iocBoot as an installation directory (much like lib, bin, ...), and
> install the created startup scripts there. In this setting, there is an
> installation step for these files, and $(INSTALL_LOCATION) works as
> expected. ======
> ELW
> ======
> ===============================================================
> I recommend that this become part of the EPICS main distribution for the
> reasons I stated above. This would everyone creating their own solution.
> In this case, for backward compatability can we leave "iocBoot" in tact and
> create such as "ioc" ?
> ================================================================
>
>
> Trying to select the relevant configuration parts....
>
>
> Our CONFIG contains:
>
> INSTALL_BOOT := $(INSTALL_LOCATION)/iocBoot
> UNINSTALL_DIRS += $(INSTALL_BOOT)
>
>
> The ...App Makefile uses this by setting:
>
> IOCS = $( /* database call to get ioc names */ )
> STCMD_INSTALLS = $(IOCS:%=$(INSTALL_BOOT)/ioc%/st.cmd)
>
> build: $(STCMD_INSTALLS)
>
> $(STCMD_INSTALLS): $(INSTALL_BOOT)/ioc%/st.cmd: $(COMMON_DIR)/st.cmd.%
> @echo "Installing $@"
> @$(CP) $< st.cmd
> @$(INSTALL) -d -m 644 st.cmd $(@D)
> @$(RM) st.cmd
>
> $(COMMON_DIR)/st.cmd.%: ../%.st.cmd
> @$(CP) $< $@
>
>
> Hope this shows the general direction...
> =================================================
> =====
> ELW
> =====
> ==================================================
> Thanks, this is the direction we would like to go in.
> Just be nice to get this into EPICS BASE as well.
> Everything loaded on the IOC is a product. :)
> ==================================================
>
>
> Thanks again.
>
> Cheers,
> Ernest
>
>
>
>
>
> Cheers,
> ~Ralph
>
>
> On 30.10.2012 16:51, Ernest L. Williams Jr. wrote:
> Hi Janet,
>
> How is it going?
>
> For IOC Application deployment; I would like to take advantage of the
> $(INSTALL LOCATION). The only problem is that IOC Startup files do not get
> installed along with other products such as databases, libraries, etc...
>
> So, I tried to do something like the following:
>
> In my $IOC_APP_TOP/iocBoot/<iocName>
>
> Create CONFIG_STARTUP:
> ============ CONFIG_STARTUP ========================
> FILE_TYPE += STARTUP
> INSTALL_EDL = $(INSTALL_LOCATION)/ioc/vioc-b34-cd39
> =====================================================
>
> Add to Makefile:
>
> ========== Makefile =====================================
> TOP = ../..
> include $(TOP)/configure/CONFIG
> # =====================================================
> # Config for installing IOC startup related files:
> # =====================================================
> CFG += CONFIG_STARTUP
>
> ARCH = linuxRT-x86
> TARGETS = envPaths
> INSTALL_STARTUP += envPaths rtPrioritySetup.cmd st.cmd
> include $(TOP)/configure/RULES
> include $(TOP)/configure/RULES.ioc
> # =====================================================
>
>
> The above does not work.
>
> [ernesto@cdlx01 vioc-b34-cd39]$ make
> /afs/slac/g/lcls/epics/base/base-R3-14-12/configure/RULES_DIRS:72: ***
> target file `clean' has both : and :: entries. Stop.
>
>
> Can you recommend a way to achieve this in the context of the EPICS
> Make/Build system?
>
> Cheers,
> Ernest
>
- Andrew
--
READ CAREFULLY. By reading this email, you agree, on behalf of your
employer, to release me from all obligations and waivers arising from
any and all NON-NEGOTIATED agreements, licenses, terms-of-service,
shrink-wrap, click-wrap, browse-wrap, confidentiality, non-disclosure,
non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I
have entered into with your employer, its partners, licensors, agents
and assigns, in perpetuity, without prejudice to my ongoing rights
and privileges. You further represent that you have the authority to
release me from any BOGUS AGREEMENTS on behalf of your employer.
- Replies:
- Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Bruce Hill
- References:
- User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Ernest L. Williams Jr.
- Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Ralph Lange
- RE: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Williams Jr., Ernest L.
- Navigate by Date:
- Prev:
Re: vdct and info tags Williams Jr., Ernest L.
- Next:
Re: vdct and info tags Michael Davidsaver
- 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: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Williams Jr., Ernest L.
- Next:
Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Bruce Hill
- 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
|