On 11/22/18 1:07 AM, Abdalla Ahmad via Tech-talk wrote:
> Hi
>
>
>
> I managed to package epics base 3.15.6 and some other support modules as RPM package to be included in our local CentOS repo. Recently we thought of creating a global repo to be shared with the community, but the big problem we faced is the choice epics base version.
>
>
>
> Anything that depends on EPICS base must have its EPICS_BASE defined in the configure/RELEASE file, and since there are more than one major version of EPICS, some might try base 3.14, 3.15 or 3.16 or even 7. In order for the RPM spec file to work properly, EPICS_BASE must be hardcoded in configure/RELEASE. So the question is, does it make since to create separate repo for each base version and each repo contains all support modules built against the corresponding base version? What we think of right now is 4 repos: base 3.14, base 3.15, base 3.16 and base 7. What do you think of this approach?
Now for the longer answer.
Firstly, from your question about INSTALL_LOCATION I guess you haven't come across:
https://github.com/epicsdeb
Which started as a side project of mine back in 2009, and is these days looked
after by Anton Derbenev (NSLS2), Martin Konrad (FRIB), and a few others.
While deb vs. spec incompatibility will keep you from directly using this work,
it does solve the same problem. So I'll try to highlight some key points:
The basic build recipe[1][2] for Base is:
LD_LIBRARY_PATH=$PWD/lib/$(EPICS_HOST_ARCH):$(LD_LIBRARY_PATH) \
make \
LINKER_USE_RPATH=NO \
SHRLIB_VERSION=<module-version> \
INSTALL_LOCATION=$PWD/debian/tmp \
FINAL_LOCATION=/usr/lib/epics \
EPICS_SITE_VERSION=<package-version>
[1] https://github.com/epicsdeb/epics-debhelper/blob/fb87203e7c662f68fde27151a3a23998f3a5ddb1/lib/Debian/Debhelper/Buildsystem/epicsmake.pm#L38-L66
[2] https://github.com/epicsdeb/epics-base/blob/5e0e68dfc6c2cdd700aef15b65fdd0068c7e00f7/debian/rules#L62
The epics module packages install most files under /usr/lib/epics, without
per-module subdirectories (package managers would error on any conflicts).
The main exceptions to this are caget and friends, which are placed in
/usr/bin for convenience. Also the fully qualified libraries (eg. libc.so.6)
are placed under /usr/lib to be in the default runtime linker search path.
The end result is that basic usage doesn't require any environment variables
to be set (a Debian policy).
Here is a condensed listing of the three main binary packages of Base.
$ for pkg in epics-catools epics-dev libepics3.15.3; do echo "===== $pkg ====="; dpkg -L $pkg; done
===== epics-catools =====
/usr/bin/caRepeater
/usr/bin/caget
/usr/bin/cainfo
/usr/bin/camonitor
/usr/bin/caput
/usr/bin/casw
/usr/share
/usr/share/doc
/usr/share/doc/epics-catools
/usr/share/doc/epics-catools/README
/usr/share/doc/epics-catools/changelog.Debian.gz
/usr/share/doc/epics-catools/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/caget.1.gz
/usr/share/man/man1/cainfo.1.gz
/usr/share/man/man1/camonitor.1.gz
/usr/share/man/man1/caput.1.gz
/usr/share/man/man1/makeBaseApp.1.gz
/usr/share/man/man1/makeBaseExt.1.gz
/usr/share/man/man8
/usr/share/man/man8/caRepeater.8.gz
===== epics-dev =====
/etc/epics/configure
/etc/epics/configure/CONFIG
... Allows administrator customization
/usr/bin
/usr/bin/ascheck
/usr/bin/iocLogServer
/usr/bin/makeBaseApp
/usr/bin/makeBaseExt
/usr/bin/msi
/usr/bin/softIoc
/usr/lib
/usr/lib/epics
/usr/lib/epics/bin
/usr/lib/epics/bin/linux-x86_64
/usr/lib/epics/bin/linux-x86_64/antelope
/usr/lib/epics/bin/linux-x86_64/ascheck
...
/usr/lib/epics/configure
/usr/lib/epics/configure/Sample.Makefile
# /usr/lib/epics/configure also has symlinks to everything in /etc/epics/configure
# so that any administrator customization would actually be used.
/usr/lib/epics/db
/usr/lib/epics/db/softIocExit.db
/usr/lib/epics/dbd
/usr/lib/epics/dbd/aSubRecord.dbd
...
/usr/lib/epics/include
/usr/lib/epics/include/aSubRecord.h
...
/usr/lib/epics/include/os
/usr/lib/epics/include/os/Linux
/usr/lib/epics/include/os/Linux/epicsAtomicOSD.h
...
/usr/lib/epics/lib
/usr/lib/epics/lib/linux-x86_64
/usr/lib/epics/lib/linux-x86_64/libCom.a
/usr/lib/epics/lib/linux-x86_64/libCom.so
# note absence of libCom.so.3.15.3 for $(EPICS_HOST_ARCH) only. See below.
...
/usr/lib/epics/lib/linux-x86_64-debug
/usr/lib/epics/lib/linux-x86_64-debug/libCom.a
/usr/lib/epics/lib/linux-x86_64-debug/libCom.so
/usr/lib/epics/lib/linux-x86_64-debug/libCom.so.3.15.3
...
/usr/lib/epics/lib/perl
/usr/lib/epics/lib/perl/DBD
/usr/lib/epics/lib/perl/DBD/Base.pm
/usr/share/perl5/EPICS
...
/usr/lib/epics/startup
/usr/lib/epics/startup/EpicsHostArch
/usr/lib/epics/startup/EpicsHostArch.pl
/usr/lib/epics/startup/Site.profile
/usr/lib/epics/templates
/usr/lib/epics/templates/makeBaseApp
...
/usr/share
/usr/share/doc
/usr/share/doc/epics-dev
/usr/share/doc/epics-dev/README
/usr/share/doc/epics-dev/changelog.Debian.gz
/usr/share/doc/epics-dev/copyright
...
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/epics-dev
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/softIoc.1.gz
/usr/share/man/man1/softioc.1.gz
/usr/share/pkgconfig
/usr/share/pkgconfig/epics-base-linux-x86_64-debug.pc
/usr/share/pkgconfig/epics-base-linux-x86_64.pc
...
/usr/share/pkgconfig/epics-base.pc
/usr/lib/epics/lib/host # a symlink to the appropriate linux-*
===== libepics3.15.3 =====
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libCom.so.3.15.3
/usr/lib/x86_64-linux-gnu/libca.so.3.15.3
/usr/lib/x86_64-linux-gnu/libcas.so.3.15.3
/usr/lib/x86_64-linux-gnu/libdbCore.so.3.15.3
/usr/lib/x86_64-linux-gnu/libdbRecStd.so.3.15.3
/usr/lib/x86_64-linux-gnu/libgdd.so.3.15.3
/usr/share
/usr/share/doc
/usr/share/doc/libepics3.15.3
/usr/share/doc/libepics3.15.3/README
/usr/share/doc/libepics3.15.3/README.Debian
/usr/share/doc/libepics3.15.3/changelog.Debian.gz
/usr/share/doc/libepics3.15.3/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libepics3.15.3
- References:
- Packaging EPICS and support modules as RPM Abdalla Ahmad via Tech-talk
- Navigate by Date:
- Prev:
Re: Purpose of INSTALL_LOCATION Variable Michael Davidsaver via Tech-talk
- Next:
Re: Packaging EPICS and support modules as RPM Michael Davidsaver via Tech-talk
- 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:
Packaging EPICS and support modules as RPM Abdalla Ahmad via Tech-talk
- Next:
Re: Packaging EPICS and support modules as RPM Michael Davidsaver via Tech-talk
- 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
|