Experimental Physics and Industrial Control System
The os/posix/osdExecinfoBackTrace.cpp file is pretty simple, so someone
could put a copy of it in the os/Linux directory which would then take
precedence over the posix one for Linux targets. That would be where the
code could explicitly look for glibc and uclib and assume musl if not –
Michael's SourceForge page above provides help with how to detect the
others. I don't know how many other libc's are in use on Linux,
hopefully none of the others take musl's approach to compile-time
identification.
The alternative would be to require musl users to add a line like
OP_SYS_CPPFLAGS += -D__MUSL__
to their configure/os/CONFIG_SITE.Common.linux-x86_64 file before building and to use that as another input to the macros in os/posix/osdExecinfoBackTrace.cpp.
We would be happy to see a patch file implementing one of these two
approaches.
** Changed in: epics-base
Importance: Undecided => Wishlist
** Changed in: epics-base
Status: New => Triaged
--
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:
Triaged
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:
[Bug 1892190] Re: Building epics-base fails on musl based systems J. Lewis Muir via Core-talk
- Next:
[Bug 1892190] Re: Building epics-base fails on musl based systems mdavidsaver 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
- Navigate by Thread:
- Prev:
[Bug 1892190] Re: Building epics-base fails on musl based systems J. Lewis Muir via Core-talk
- Next:
[Bug 1892190] Re: Building epics-base fails on musl based systems mdavidsaver 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