Bug 1332306

Summary: Review Request: libcxxabi - Low level support for a standard C++ library
Product: [Fedora] Fedora Reporter: Tom "spot" Callaway <tcallawa>
Component: Package ReviewAssignee: Neal Gompa <ngompa13>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: farrellj, jwakely, law, mnewsome, ngompa13, package-review, samuel-rhbugs, schlaffi, tiwoc, tstellar, vcojot, zdenek.zikan
Target Milestone: ---Flags: ngompa13: fedora-review+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-03-15 17:52:00 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1332307    
Bug Blocks:    

Description Tom "spot" Callaway 2016-05-02 20:44:42 UTC
Spec URL: https://spot.fedorapeople.org/libcxxabi.spec
SRPM URL: https://spot.fedorapeople.org/libcxxabi-20160502-1.svn268296.fc24.src.rpm
Description: libcxxabi provides low level support for a standard C++ library.
Fedora Account System Username: spot

Note: Upstream has no versioning system that I can see, does no 'releases'. I need this package to support C++11 in R in EPEL. Also note, this package has a bootstrap cycle with libcxxabi.

Comment 2 schlaffi 2016-06-29 21:57:55 UTC
Just some positive feedback. Thanks for bringing libcxx and libcxxabi to fedora. For my use, I sometimes prefer/need to build with clang++ and libcxx. So it is not only the exotic "C++11 in R" case.

I ended here, because I was wondering why there is a libcxx but no libcxxabi. I think in (almost?) all cases libc++.so requires libc++abi.so. I see you added the dependency to libcxx. Looking forward to pull also libcxxabi from fedora updates :)

Comment 3 Mario Blättermann 2016-07-23 16:36:55 UTC
%{_libdir}/libc++abi.a is in the -devel package. Shouldn't this go in a separate -static package?

Comment 4 Tom "spot" Callaway 2016-07-25 16:39:50 UTC
Good catch:

New Spec: https://spot.fedorapeople.org/libcxxabi.spec
New SRPM: https://spot.fedorapeople.org/libcxxabi-3.8.0-2.fc24.src.rpm

Comment 5 Mario Blättermann 2016-07-29 19:51:35 UTC
There's a problem with the armv7hl architecture (x86_64 and i686 are OK so far), see the scratch build for f24:
http://koji.fedoraproject.org/koji/taskinfo?taskID=15063172

From build.log:

/builddir/build/BUILD/libcxxabi-3.8.0.src/src/cxa_exception.cpp:258:21: error: unknown type name '_Unwind_Control_Block'
        static_cast<_Unwind_Control_Block*>(unwind_exception)->barrier_cache.bitpattern[0]);
                    ^
/builddir/build/BUILD/libcxxabi-3.8.0.src/src/cxa_exception.cpp:258:62: error: member reference base type 'void' is not a structure or union
        static_cast<_Unwind_Control_Block*>(unwind_exception)->barrier_cache.bitpattern[0]);
                                            ~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~
/builddir/build/BUILD/libcxxabi-3.8.0.src/src/cxa_exception.cpp:409:71: error: no member named 'barrier_cache' in '_Unwind_Exception'
        return reinterpret_cast<void*>(exception_header->unwindHeader.barrier_cache.bitpattern[0]);
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
3 errors generated.

Comment 6 Vincent S. Cojot 2017-01-19 22:08:12 UTC
Hi Tom,
I'm using a rebuild of your rpm to install X-Plane 11 on my F24 box. Seems to work fine so far.. :) Before that, I was getting this error an error about missing libc++abi.so.1.
Perhaps this should be included into Fedora as I am sure others will want to run X-Plane on Fedora.
My 2c,
Vincent

Comment 7 Neal Gompa 2017-02-15 12:42:33 UTC
Taking this review...

Comment 8 Jonathan Wakely 2017-02-15 13:05:14 UTC
(In reply to Tom "spot" Callaway from comment #0)
> Note: Upstream has no versioning system that I can see, does no 'releases'.
> I need this package to support C++11 in R in EPEL.

Could that be solved by using a libsupc++ from a newer GCC, which would be compatible with the rest of the OS?

What's the specific feature that is needed? We might be able to backport it to the RHEL libsupc++.

Has libcxxabi even been built on all the architectures Fedora and EPEL support? I seriously doubt it's been tested by upstream on all of them.

Comment 9 Jason Farrell 2017-02-16 22:37:19 UTC
Thanks for the SRPM, spot.

After a quick rpmbuild I was able to get the X-Plane 11 demo installer running.

Comment 11 Neal Gompa 2017-02-22 12:56:43 UTC
Review notes:

+ Package is named appropriately
+ Files are installed according to Fedora FHS
+ License is correctly marked and license file is included in library package
+ Subpackages are named in compliance with guidelines, and files are split appropriately.

PACKAGE APPROVED.

Comment 12 Gwyn Ciesla 2017-02-24 16:36:16 UTC
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/rpms/libcxxabi

Comment 13 Fedora Update System 2017-03-01 19:18:15 UTC
libcxxabi-3.8.1-2.fc25 libcxx-3.8.1-2.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2017-10562907fe

Comment 14 Fedora Update System 2017-03-01 19:18:29 UTC
libcxxabi-3.8.0-3.fc24 libcxx-3.8.0-5.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2017-409bad2fb2

Comment 15 Fedora Update System 2017-03-02 02:22:48 UTC
libcxx-3.8.1-2.fc25, libcxxabi-3.8.1-2.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-10562907fe

Comment 16 Fedora Update System 2017-03-02 02:53:20 UTC
libcxx-3.8.0-5.fc24, libcxxabi-3.8.0-3.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-409bad2fb2

Comment 17 schlaffi 2017-03-02 20:59:24 UTC
I expected a symlink to libc++abi.so. Otherwise, e.g.

$ clang++ -stdlib=c++ -lc++abi foo.cc

does not work for me.

Comment 18 Daniel Seither 2017-03-02 21:51:56 UTC
I get a symlink for libc++abi.so on Fedora 25 (x86_64):

lrwxrwxrwx. 1 root root   14  1. Mär 19:19 /usr/lib64/libc++abi.so -> libc++abi.so.1
lrwxrwxrwx. 1 root root   16  1. Mär 19:19 /usr/lib64/libc++abi.so.1 -> libc++abi.so.1.0
-rwxr-xr-x. 1 root root 270K  1. Mär 19:19 /usr/lib64/libc++abi.so.1.0

However, when using the Fedora-provided clang-3.8.1-1 and installing libcxx-3.8.1-2 and libcxxabi-3.8.1-2 from updates-testing, I need to manually add -lc++abi to my build command (just like schlaffi did). When using a binary build of clang from llvm.org, this is not necessary [0].

In the libcxx docs [1], it is explained that "some libc++ installations require the user manually link libc++abi themselves". Could this requirement be removed from the Fedora builds?

[0] At least as long as the libcxx and libcxxabi Fedora packages are not installed. Somehow clang uses the system-provided libs instead of its own.

[1] http://libcxx.llvm.org/docs/UsingLibcxx.html#using-libc-on-linux

Comment 19 Daniel Seither 2017-03-02 22:06:06 UTC
This seems to boil down to setting LIBCXX_ENABLE_ABI_LINKER_SCRIPT to ON (which is the default, see [0]) so that libc++.so is not a symlink but a text file with the contents "INPUT(libc++.so.1 -lc++abi)".

[0] http://libcxx.llvm.org/docs/BuildingLibcxx.html#cmdoption-arg-libcxx-enable-abi-linker-script

Comment 20 schlaffi 2017-03-03 07:01:09 UTC
Ah sorry, right, libc++abi.so is of course in libcxxabi-devel.

Comment 21 Fedora Update System 2017-03-04 22:39:00 UTC
libcxx-3.8.0-6.fc24 libcxxabi-3.8.0-3.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2017-409bad2fb2

Comment 22 Fedora Update System 2017-03-04 22:40:01 UTC
libcxx-3.8.1-3.fc25 libcxxabi-3.8.1-2.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2017-10562907fe

Comment 23 Tom "spot" Callaway 2017-03-04 22:42:00 UTC
(In reply to Daniel Seither from comment #19)
> This seems to boil down to setting LIBCXX_ENABLE_ABI_LINKER_SCRIPT to ON
> (which is the default, see [0]) so that libc++.so is not a symlink but a
> text file with the contents "INPUT(libc++.so.1 -lc++abi)".
> 
> [0]
> http://libcxx.llvm.org/docs/BuildingLibcxx.html#cmdoption-arg-libcxx-enable-
> abi-linker-script

Thanks Daniel. I've enabled the linker script in the latest Fedora builds (it is not enabled by default), and adjusted the updates accordingly.

Comment 24 Fedora Update System 2017-03-05 21:50:00 UTC
libcxx-3.8.1-3.fc25, libcxxabi-3.8.1-2.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-10562907fe

Comment 25 Fedora Update System 2017-03-05 21:50:05 UTC
libcxx-3.8.0-6.fc24, libcxxabi-3.8.0-3.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-409bad2fb2

Comment 26 Daniel Seither 2017-03-06 17:17:06 UTC
libcxx 3.8.1-3 works as expected. Thanks a lot! I can now finally retire my manual clang/libc++ installation :)

Comment 27 schlaffi 2017-03-07 17:31:54 UTC
libcxx-3.8.1-3 and libcxxabi-3.8.1-2 + devel work perfect here, too, also for compiling with clang. Also safes me a lot of manual work. Thanks!

Comment 28 Fedora Update System 2017-03-15 17:52:00 UTC
libcxx-3.8.0-6.fc24, libcxxabi-3.8.0-3.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report.

Comment 29 Fedora Update System 2017-03-15 18:21:57 UTC
libcxx-3.8.1-3.fc25, libcxxabi-3.8.1-2.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.