EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: [Bug 1892190] Re: Building epics-base fails on musl based systems
From: Andrew Johnson via Core-talk <core-talk at aps.anl.gov>
To: core-talk at aps.anl.gov
Date: Wed, 19 Aug 2020 21:35:26 -0000
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  <20202021  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  <20202021  2022  2023  2024 
ANJ, 20 Aug 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·