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

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