The "posix" code in Base supports more than just Linux with glibc,
uclibc, or perhaps musl. It also includes the c libraries from Apple,
freebsd, and (at least for the moment) solaris. All of these provide
the backtrace() function. So it is easier to express uclibc as the
exception.
Still, I think it would be acceptable if someone were motivated to
figure out all of the relevant macros, and do the testing. Perhaps
aided by:
https://sourceforge.net/p/predef/wiki/Home/
Personally. I looked into musl recently and was disappointed by the
deliberate omission of identifying macros (eg. __MUSL__). It strikes me
as presumptuous for a new entrant to demand a rewrite and retest of
existing compatibility logic as a price of entry. Maybe it would be
better to use uclibc instead of musl?
https://wiki.musl-libc.org/faq.html#Q:-Why-is-there-
no-%3Ccode%3E__MUSL__%3C/code%3E-macro?
--
You received this bug notification because you are a member of EPICS
Core Developers, which is subscribed to EPICS Base.
Matching subscriptions: epics-core-list-subscription
https://bugs.launchpad.net/bugs/1892190
Title:
Building epics-base fails on musl based systems
Status in EPICS Base:
New
Bug description:
I am trying to build EPICS base 7.0.4 inside a docker container based
on alpine linux, which uses musl in place of glibc.
The build options used are CXXFLAGS="-DIPPORT_USERRESERVED=5000
-fPIC".
The build fails because the "backtrace" function does not exist in
musl:
/usr/bin/g++ -o iocLogServer -L/EPICS/base/lib/linux-x86_64 -Wl,-rpath,/EPICS/base/lib/linux-x86_64 -rdynamic -m64 iocLogServer.o -lCom
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: /EPICS/base/lib/linux-x86_64/libCom.so: undefined reference to `backtrace'
collect2: error: ld returned 1 exit status
Looking into epics-
base/modules/libcom/src/osi/os/posix/osdExecinfoBackTrace.cpp, which
is the only file using that function, I was in the end able to
successfully build EPICS by adding "-D__UCLIBC_MAJOR__=0" to the build
options.
However, it would be better to detect the presence of backtrace() by
testing the existence of __GLIBC__ or __GNU_LIBRARY__, or,
alternatively, to provide the user with the possibility of disabling
backtrace support.
To manage notifications about this bug go to:
https://bugs.launchpad.net/epics-base/+bug/1892190/+subscriptions
- References:
- [Bug 1892190] [NEW] Building epics-base fails on musl based systems Sébastien Wertz via Core-talk
- Navigate by Date:
- Prev:
Jenkins build became unstable: epics-pvAccess-mac #411 APS Jenkins via Core-talk
- Next:
[Bug 1892190] Re: Building epics-base fails on musl based systems J. Lewis Muir via Core-talk
- Index:
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:
[Bug 1892190] [NEW] Building epics-base fails on musl based systems Sébastien Wertz via Core-talk
- Next:
[Bug 1892190] Re: Building epics-base fails on musl based systems J. Lewis Muir via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
2025
|