EPICS Controls 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  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  <2025 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  <2025
<== Date ==> <== Thread ==>

Subject: Re: EPICS INSTALL_LOCATION/FINAL_LOCATION doesn't work?
From: "J. Lewis Muir via Tech-talk" <tech-talk at aps.anl.gov>
To: "Johnson, Andrew N." <anj at anl.gov>
Cc: EPICS Tech-Talk <tech-talk at aps.anl.gov>
Date: Wed, 22 Jan 2025 08:57:27 -0600
On 01/21, Johnson, Andrew N. wrote:
> I think your recipe needs to be something like I’ve shown below, which (after experimentation and carefully reading the Release Notes) works for me on a RHEL-8 system.

Hi, Andrew!

Thank you for taking a look at this!

> I suspect this doesn’t need LD_LIBRARY_PATH to be set at all though. The PYTHON=python3 setting is only necessary for RHEL-8 and above — EPICS builds only need python when you set LINKER_USE_RPATH=ORIGIN. I am planning to replace the Python script with Perl though (thanks Argo!).

Yeah, seems a shame to introduce a build-time dependency on Python for
one script when there's already a dependency on Perl, so thanks for
planning to change that!

> cswdev02% cat > configure/CONFIG_SITE.local
> INSTALL_LOCATION=/tmp/45/work
> FINAL_LOCATION=/tmp/45/opt/epics-7.0.8.1
> LINKER_USE_RPATH=ORIGIN
> LINKER_ORIGIN_ROOT=/tmp/45
> export LD_LIBRARY_PATH=$(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
> PYTHON=python3
> ^D
> ...
> cswdev02% cd /tmp/45
> cswdev02% ldd work/bin/linux-x86_64/caget
>      linux-vdso.so.1 (0x00007ffcbc3dd000)
>      libca.so.4.14.4 => /tmp/45/work/bin/linux-x86_64/../../lib/linux-x86_64/libca.so.4.14.4 (0x00007f31e0ced000)
>      libCom.so.3.23.1 => /tmp/45/work/bin/linux-x86_64/../../lib/linux-x86_64/libCom.so.3.23.1 (0x00007f31e0a6f000)
> ...
> cswdev02% mv work opt/epics-7.0.8.1
> cswdev02% ldd opt/epics-7.0.8.1/bin/linux-x86_64/caget
>      linux-vdso.so.1 (0x00007fff2212b000)
>      libca.so.4.14.4 => /tmp/45/opt/epics-7.0.8.1/bin/linux-x86_64/../../lib/linux-x86_64/libca.so.4.14.4 (0x00007f30c97b6000)
>      libCom.so.3.23.1 => /tmp/45/opt/epics-7.0.8.1/bin/linux-x86_64/../../lib/linux-x86_64/libCom.so.3.23.1 (0x00007f30c9538000)
> ...

This is unfortunate because I was hoping to avoid using $ORIGIN.  (I'm
thinking about packaging, and at least one package management system,
pkgsrc, does not allow the use of $ORIGIN.)  It also seems to contradict
the comment for FINAL_LOCATION in configure/CONFIG_SITE:

----
# The location from which files placed in INSTALL_LOCATION will actually run.
# This path is compiled into executables, and so should be an absolute.
#  May be used to achieve the effect of autotools.  eg.
#   ./configure --prefix=<FINAL_LOCATION>
#   make DESTDIR=<INSTALL_LOCATION>
# Defaults to the absolute expansion of $(INSTALL_LOCATION)
FINAL_LOCATION=/Users/jlmuir/tmp/45/opt/epics-7.0.8.1
----

That comment doesn't say anything about needing to set
LINKER_USE_RPATH=ORIGIN.  Have things changed?

Michael wrote about DESTDIR-like support in 2020 in

  https://epics.anl.gov/core-talk/2020/msg01276.php

where he said:

> @Chris, if your tools complain about -rpath then use LINKER_USE_RPATH=NO
> and FINAL_LOCATION= and set $LD_LIBRARY_PATH in the environment.
> 
> FINAL_LOCATION being a rough analog of 'configure --prefix=...' in
> this context.  eg.
> 
>> export LD_LIBRARY_PATH==$PWD/lib/$EPICS_HOST_ARCH
>> make LINKER_USE_RPATH=NO FINAL_LOCATION=/usr/local/epics INSTALL_LOCATION=/tmp/staging

I was really hoping that that would work!

Lewis

References:
EPICS INSTALL_LOCATION/FINAL_LOCATION doesn't work? J. Lewis Muir via Tech-talk
Re: EPICS INSTALL_LOCATION/FINAL_LOCATION doesn't work? Johnson, Andrew N. via Tech-talk

Navigate by Date:
Prev: Re: EPICS INSTALL_LOCATION/FINAL_LOCATION doesn't work? Michael Davidsaver via Tech-talk
Next: Re: Phytron support for EPICS motor (pull request #8) Peterson, Kevin M. 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  <2025
Navigate by Thread:
Prev: Re: EPICS INSTALL_LOCATION/FINAL_LOCATION doesn't work? Michael Davidsaver via Tech-talk
Next: Question Regarding HLS/LLS Settings and DIR Values Zhibang Shen 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  <2025
ANJ, 22 Jan 2025 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions ·
· Download · Search · IRMIS · Talk · Documents · Links · Licensing ·