In my Prefix installation under Mac OS Sierra, =dev-lang/clang-7.0.0 fails to build with the error "ld: library not found for -latomic". This was when trying to build lib/libclangDaemon.dylib , and that is the first mention of libatomic in the log file. (FWIW, "locate libatomic" only turns up Portage-tree files and a Homebrew formula for libatomic_ops.) emerge --info: Portage 2.3.40.3-prefix (python 3.6.5-final-0, prefix/darwin/macos/10.12/x64, [unavailable], unavailable, 16.7.0 x86_64) ================================================================= System Settings ================================================================= System uname: Darwin-16.7.0-x86_64-i386-64bit Timestamp of repository gentoo_prefix: Mon, 24 Sep 2018 00:56:29 +0000 Head commit of repository gentoo_prefix: bd7f60f003cb9e5c3c8198df92a88ced4a43877c sh bash 4.3_p48-r1 app-shells/bash: 4.3_p48-r1::gentoo_prefix dev-lang/perl: 5.26.2::gentoo_prefix dev-lang/python: 2.7.14-r2::gentoo_prefix, 3.6.5-r1::gentoo_prefix dev-util/cmake: 3.12.2::gentoo_prefix dev-util/pkgconfig: 0.29.2::gentoo_prefix sys-devel/autoconf: 2.69-r4::gentoo_prefix sys-devel/automake: 1.16.1-r1::gentoo_prefix sys-devel/libtool: 2.4.6-r5::gentoo_prefix sys-devel/make: 4.2.1-r4::gentoo_prefix Repositories: gentoo_prefix location: /Users/kingjon/Gentoo/usr/portage sync-type: rsync sync-uri: rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix priority: -1000 sync-rsync-verify-max-age: 24 sync-rsync-verify-metamanifest: yes sync-rsync-verify-jobs: 1 sync-rsync-extra-opts: localoverlay_prefix location: /Users/kingjon/Gentoo/usr/local/portage masters: gentoo_prefix ACCEPT_KEYWORDS="~x64-macos" ACCEPT_LICENSE="* -@EULA" CBUILD="x86_64-apple-darwin16" CC="x86_64-apple-darwin16-clang" CFLAGS="-march=native -O2 -pipe -march=native" CHOST="x86_64-apple-darwin16" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/terminfo" CXX="x86_64-apple-darwin16-clang++" CXXFLAGS="-march=native -O2 -pipe -march=native" DISTDIR="/Users/kingjon/Gentoo/usr/portage/distfiles" EMERGE_DEFAULT_OPTS="--autounmask-keep-masks=y --complete-graph --with-bdeps=y" ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR" FCFLAGS="" FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles force-prefix merge-sync multilib-strict news nostrip parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-logs unmerge-orphans unprivileged" FFLAGS="" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_US.UTF-8" LDFLAGS="-Wl,-dead_strip_dylibs" MAKEOPTS="-j2" PKGDIR="/Users/kingjon/Gentoo/usr/portage/packages" PORTAGE_CONFIGROOT="/Users/kingjon/Gentoo/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" PORTAGE_TMPDIR="/Users/kingjon/Gentoo/var/tmp" USE="aqua coreaudio cxx ipv6 mmx mmxext modules ncurses nls objc objc++ prefix prefix-guest readline sse sse2 sse3 sse4_1 ssl ssse3 unicode x64-macos zlib" ABI_X86="64" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon plan sheets stage words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 ssse3" ELIBC="Darwin" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="keyboard mouse" KERNEL="Darwin" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6 php7-0" POSTGRES_TARGETS="postgres9_5 postgres10" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_6" RUBY_TARGETS="ruby24" USERLAND="GNU" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS ================================================================= Package Settings ================================================================= sys-devel/clang-6.0.1::gentoo_prefix was built with the following: USE="(prefix) (prefix-guest) static-analyzer -debug -default-compiler-rt -default-libcxx -doc -test -xml (-z3)" LLVM_TARGETS="BPF (X86) -AArch64 -AMDGPU -ARM -Hexagon -Lanai -MSP430 -Mips -NVPTX -PowerPC -Sparc -SystemZ -XCore" PYTHON_TARGETS="python2_7" sys-devel/llvm-6.0.1-r1::gentoo_prefix was built with the following: USE="libffi ncurses (prefix) (prefix-guest) -debug -doc -gold -libedit -test -xar -xml" LLVM_TARGETS="BPF (X86) -AArch64 -AMDGPU -ARM -Hexagon -Lanai -MSP430 -Mips -NVPTX -PowerPC -Sparc -SystemZ -XCore" sys-devel/llvm-7.0.0::gentoo_prefix was built with the following: USE="libffi ncurses (prefix) (prefix-guest) -debug -doc -exegesis -gold -libedit -test -xar -xml" LLVM_TARGETS="BPF (X86) -AArch64 -AMDGPU -ARM -Hexagon -Lanai -MSP430 -Mips -NVPTX -PowerPC -Sparc -SystemZ -XCore"
Thank you for the report. Please recompile and *attach* the logfiles and paste the emerge info as described on https://wiki.gentoo.org/wiki/Attach_the_logs_to_the_bug_ticket The logs must be part of the ticket, but not on external websites. We need to have all information at hand before ticket assignment, so that the maintainer can look after it in one session with minimal number of callbacks. Please reopen this ticket (Status:unconfirmed) afterwards. Is dev-libs/libatomic_ops installed?
Created attachment 548238 [details] build.log.gz Build log now attached. No, libatomic_ops is not installed.
for some reason libatomic is used, while it should use compiler-rt IMO
It appears as if HAVE_CXX_ATOMICS64_WITHOUT_LIB is never set such that -latomic is always added to flags. If I set it myself mycmakeargs+=( "-DHAVE_CXX_ATOMICS64_WITHOUT_LIB:BOOL=TRUE" ) I can build clang-7.0.0 just fine.
I think the problem is that CheckAtomic.cmake is somehow not around in the clang ebuild. @llvm: this is probably only a problem for Darwin, are you ok with working around this problem with the define from comment #4 conditionalised for Darwin?
I'd rather like to look why it's happening first. I'll try to find some time over the weekend.
So, if I understand this correctly, a temporary workaround would be to patch the ebuild, like for example: --- clang-7.0.0.ebuild.orig 2018-11-30 13:10:39.000000000 +0100 +++ clang-7.0.0.ebuild 2018-11-30 13:07:34.000000000 +0100 @@ -181,6 +181,12 @@ ) fi + if [[ ${CHOST} == *-darwin* ]] ; then + mycmakeargs+=( + -DHAVE_CXX_ATOMICS64_WITHOUT_LIB:BOOL=TRUE + ) + fi + if [[ -n ${EPREFIX} ]]; then mycmakeargs+=( -DGCC_INSTALL_PREFIX="${EPREFIX}/usr" Right?
yes that's exactly what I did locally
Yes, ok, that did work. However, my bootstapping choked on sys-libs/compiler-rt-sanitizers-7.0.0 afterwards (macos 10.11). Guess that's another bug, however.
(In reply to Michał Górny from comment #6) > I'd rather like to look why it's happening first. I'll try to find some time > over the weekend. Michał, did you have some time to look at this? I'd like to apply the workaround for the time being since every mac user runs into this problem.
Could you also include the build log for LLVM? I think it's not passing something from LLVM to Clang but I don't get where it gets -latomic from. Also .tar with your /usr/lib/llvm/7/lib*/cmake.
Created attachment 557688 [details] llvm and clang build logs, llvm/lib/cmake directory Here you go. I left the machine in this state, so I can provide other things easily if necessary.
Ping. Do you need any help here? I'd really like to apply the workaround for the time being.
Ok, I finally found the culprit. It's in clang-tools-extra repository; that's why I haven't been able to find it. I'll attach a patch for testing in a few minutes.
Created attachment 558406 [details, diff] /etc/portage/patches/sys-devel/clang/0001-clangd-Fix-detecting-atomics-in-stand-alone-builds.patch Please test the attached patch to sys-devel/clang. It's suitable for using as user patch.
I can confirm the patch allows to build 7.0.1
I've submitted it for upstream review. Once I commit it, I'll backport the final version to Gentoo.
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1393d91fc66fd5afad091e408fbadf5bab514678 commit 1393d91fc66fd5afad091e408fbadf5bab514678 Author: Michał Górny <mgorny@gentoo.org> AuthorDate: 2019-01-03 18:36:29 +0000 Commit: Michał Górny <mgorny@gentoo.org> CommitDate: 2019-01-03 18:37:12 +0000 sys-devel/clang: Backport atomic detection fix Closes: https://bugs.gentoo.org/667016 Signed-off-by: Michał Górny <mgorny@gentoo.org> sys-devel/clang/clang-7.0.1.ebuild | 4 +++ ...x-detecting-atomics-in-stand-alone-builds.patch | 38 ++++++++++++++++++++++ 2 files changed, 42 insertions(+)