Closed HenrikBengtsson closed 3 months ago
Follow up. The system where I'm getting this error does indeed have libatomic
installed;
$ ldconfig -p | grep libatomic
libatomic_ops_gpl.so.1 (libc6,x86-64) => /lib64/libatomic_ops_gpl.so.1
libatomic_ops.so.1 (libc6,x86-64) => /lib64/libatomic_ops.so.1
libatomic.so.1 (libc6,x86-64) => /lib64/libatomic.so.1
and
$ dnf --cacheonly list "libatomic*"
Last metadata expiration check: 1:50:55 ago on Thu Dec 21 12:43:59 2023.
Installed Packages
libatomic.x86_64 8.5.0-18.el8 @wyn-rocky-baseos
libatomic_ops.x86_64 7.6.2-3.el8 @wyn-rocky-appstream
Though, it does not have libatomic_ops-devel.x86_64
installed, but I'd expect to see compilation errors if that's needed. The above error is a linking error.
Iam using std::atomic
but on most systems -latomic isn't needed. But on some systems in (#76) it's required, and on other systems (here) it does not exist.
Do you have any recommendations on how to deal with this? I could try to check for the existence of the flag (not sure of the best way to do so using autoconf).
And libatomic should be added to SystemRequirements
.
Hi @Enchufa2 I'm happy to add it to system requirements if you think that makes sense but the core problem still remains.
Based on what I have read libatomic is a built in to the GCC compiler suite (and also clang) therefore checking for GCC which I do should be enough.
If you or Henrik could help me understand what is the correct solution (and underlying problem) I would appreciate it. I'm sure you are both busy, but please follow up. Thank you :)
Given #76, you should check instead whether it's not a built-in, and then link to it only in those cases.
When libatomic is a built-in, you don't need -latomic
at all, because GCC provides those symbols, and the library (which is packaged separately, as libatomic
in Fedora/RHEL, as libatomic1
in Debian/Ubuntu) is not necessarily installed in the system. Therefore, linking (which was not needed in the first place) may fail.
It should perhaps be restricted to 32-bit versions of ppc, arm and mips then.
Or if possible, add a test for 8-byte atomics support without libatomic, if the test fails, then require libatomic and link to it.
What is the correct way to test for a built-in with shell/autoconf?
I could try AC_COMPILE_IFELSE
for a test program that uses an atomic. Is there a better way?
@traversc I am not really friendly with autoconf, unfortunately. There are a number of examples with CMake which are known to work, AFAICT.
The test would be a better solution, of course. A hack that gonna still work in majority of cases would be an heuristic based on the arch and pointer size (and using uname for this purpose may not work in a straight manner for some platforms).
simple:
dnf install libatomic
in RHEL-9. So I think it also will works on RHEL-8
I think the configure
changes suggested in #91 should work here as well.
I can confirm that version 0.26.2 here on GitHub installs out of the box with R 4.4.0 on Rocky 8;
R version 4.4.0 (2024-04-24) -- "Puppy Cup"
Copyright (C) 2024 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu
...
> remotes::install_github("traversc/qs")
Downloading GitHub repo traversc/qs@HEAD
Running `R CMD build`...
* checking for file ‘/tmp/Rtmphr0XNx/remotes317c5476537b7/traversc-qs-9435604/DESCRIPTION’ ... OK
* preparing ‘qs’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* running ‘cleanup’
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* building ‘qs_0.26.2.tar.gz’
Installing package into '/home/alice/R/x86_64-pc-linux-gnu-library/4.4'
(as 'lib' is unspecified)
* installing *source* package ‘qs’ ...
** using staged installation
checking for pkg-config... /usr/bin/pkg-config
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ -std=gnu++17 accepts -g... yes
C++ compiler: g++ -std=gnu++17
Does not require -latomic flag
zstd 1.4.4 library detected but is lower than bundled version (1.5.2) -- compiling from source
lz4 1.8.3 library detected but is lower than bundled version (1.9.1) -- compiling from source
configure: creating ./config.status
config.status: creating src/Makevars
** libs
using C++ compiler: ‘g++ (GCC) 13.1.1 20230614 (Red Hat 13.1.1-4)’
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c RcppExports.cpp -o RcppExports.o
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c qs_functions.cpp -o qs_functions.o
gcc -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c ZSTD/zstd.c -o ZSTD/zstd.o
ar rcs libQSZSTD.a ZSTD/zstd.o
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c LZ4/lz4.cpp -o LZ4/lz4.o
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c LZ4/lz4hc.cpp -o LZ4/lz4hc.o
ar rcs libQSLZ4.a LZ4/lz4.o LZ4/lz4hc.o
g++ -std=gnu++17 -shared -L/path/to/R-4.4.0/lib64/R/lib -L/usr/local/lib64 -o qs.so RcppExports.o qs_functions.o -L. -lpthread -lQSZSTD -lQSLZ4 -L/path/to/R-4.4.0/lib64/R/lib -lR
installing to /home/alice/R/x86_64-pc-linux-gnu-library/4.4/00LOCK-qs/00new/qs/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** checking absolute paths in shared objects and dynamic libraries
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (qs)
> library(qs)
qs 0.26.2
>
In contract, the current CRAN version, qs 0.26.1, fails to install:
> install.packages("qs")
Installing package into '/home/alice/R/x86_64-pc-linux-gnu-library/4.4'
(as 'lib' is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/qs_0.26.1.tar.gz'
Content type 'application/x-gzip' length 2150826 bytes (2.1 MB)
==================================================
downloaded 2.1 MB
* installing *source* package ‘qs’ ...
** package ‘qs’ successfully unpacked and MD5 sums checked
** using staged installation
checking for pkg-config... /usr/bin/pkg-config
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ -std=gnu++17 accepts -g... yes
C++ compiler: g++ -std=gnu++17
checking for C++ compiler vendor... gnu
zstd 1.4.4 library detected but is lower than bundled version (1.5.2) -- compiling from source
lz4 1.8.3 library detected but is lower than bundled version (1.9.1) -- compiling from source
configure: creating ./config.status
config.status: creating src/Makevars
** libs
using C++ compiler: ‘g++ (GCC) 13.1.1 20230614 (Red Hat 13.1.1-4)’
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c RcppExports.cpp -o RcppExports.o
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c qs_functions.cpp -o qs_functions.o
gcc -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c ZSTD/zstd.c -o ZSTD/zstd.o
ar rcs libQSZSTD.a ZSTD/zstd.o
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c LZ4/lz4.cpp -o LZ4/lz4.o
g++ -std=gnu++17 -I"/path/to/R-4.4.0/lib64/R/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -IZSTD -IZSTD/common -IZSTD/decompress -IZSTD/compress -ILZ4 -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/RApiSerialize/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/stringfish/include' -I'/home/alice/R/x86_64-pc-linux-gnu-library/4.4/BH/include' -I/usr/local/include -fpic -g -O2 -c LZ4/lz4hc.cpp -o LZ4/lz4hc.o
ar rcs libQSLZ4.a LZ4/lz4.o LZ4/lz4hc.o
g++ -std=gnu++17 -shared -L/path/to/R-4.4.0/lib64/R/lib -L/usr/local/lib64 -o qs.so RcppExports.o qs_functions.o -L. -lpthread -latomic -lQSZSTD -lQSLZ4 -L/path/to/R-4.4.0/lib64/R/lib -lR
/opt/rh/gcc-toolset-13/root/usr/libexec/gcc/x86_64-redhat-linux/13/ld: cannot find -latomic: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [/path/to/R-4.4.0/lib64/R/share/make/shlib.mk:10: qs.so] Error 1
ERROR: compilation failed for package ‘qs’
* removing ‘/home/alice/R/x86_64-pc-linux-gnu-library/4.4/qs’
The downloaded source packages are in
'/tmp/RtmpnUZxD0/downloaded_packages'
Warning message:
In install.packages("qs") :
installation of package 'qs' had non-zero exit status
I suggest submitting the fixed version to CRAN - it'll spare lots of users and admins out there some struggle, troubleshooting, and requests for support. Especially now when people are starting to move to the new R 4.4.0 (2024-04-24).
@HenrikBengtsson I sent the update to CRAN, but there seem to be a narrowing in scope of the allowed usage of the R C API that this package depends on, so the update was auto-rejected.
I believe other packages are in the same boat, so I will wait for further clarity. But if you have any tips I would appreciate your insight.
I sent the update to CRAN, but there seem to be a narrowing in scope of the allowed usage of the R C API that this package depends on, so the update was auto-rejected.
Did you receive anything useful when it was "auto-rejected"? Would you mind sharing the response here? That would increase awareness, help others in the same situation, and might increase chances for someone to find a solution.
BTW, do you know what part of the R API we're talking about? Is it the "famous" R connections API/non-API "debate"?
Not R connections, but a more recent change.
Here's the log (copied below for when it gets deleted)
package qs_0.26.2.tar.gz does not pass the incoming checks automatically, please see the following pre-tests: Windows: https://win-builder.r-project.org/incoming_pretest/qs_0.26.2_20240501_100347/Windows/00check.log Status: 1 NOTE Debian: https://win-builder.r-project.org/incoming_pretest/qs_0.26.2_20240501_100347/Debian/00check.log Status: 1 NOTE
* using log directory ‘/srv/hornik/tmp/CRAN/qs.Rcheck’
* using R Under development (unstable) (2024-04-30 r86503)
* using platform: x86_64-pc-linux-gnu
* R was compiled by
Debian clang version 17.0.6 (5)
Debian flang-new version 17.0.6 (5)
* running under: Debian GNU/Linux trixie/sid
* using session charset: UTF-8
* checking for file ‘qs/DESCRIPTION’ ... OK
* checking extension type ... Package
* this is package ‘qs’ version ‘0.26.2’
* package encoding: UTF-8
* checking CRAN incoming feasibility ... [4s/5s] Note_to_CRAN_maintainers
Maintainer: ‘Travers Ching <traversc@gmail.com>’
* checking package namespace information ... OK
* checking package dependencies ... OK
* checking if this is a source package ... OK
* checking if there is a namespace ... OK
* checking for executable files ... OK
* checking for hidden files and directories ... OK
* checking for portable file names ... OK
* checking for sufficient/correct file permissions ... OK
* checking serialization versions ... OK
* checking whether package ‘qs’ can be installed ... [19s/19s] OK
* used C++ compiler: ‘Debian clang version 17.0.6 (11)’
* checking package directory ... OK
* checking for future file timestamps ... OK
* checking ‘build’ directory ... OK
* checking DESCRIPTION meta-information ... OK
* checking top-level files ... OK
* checking for left-over files ... OK
* checking index information ... OK
* checking package subdirectories ... OK
* checking code files for non-ASCII characters ... OK
* checking R files for syntax errors ... OK
* checking whether the package can be loaded ... [0s/0s] OK
* checking whether the package can be loaded with stated dependencies ... [0s/0s] OK
* checking whether the package can be unloaded cleanly ... [0s/0s] OK
* checking whether the namespace can be loaded with stated dependencies ... [0s/0s] OK
* checking whether the namespace can be unloaded cleanly ... [0s/0s] OK
* checking loading without being on the library search path ... [0s/0s] OK
* checking whether startup messages can be suppressed ... [0s/0s] OK
* checking use of S3 registration ... OK
* checking dependencies in R code ... OK
* checking S3 generic/method consistency ... OK
* checking replacement functions ... OK
* checking foreign function calls ... OK
* checking R code for possible problems ... [2s/2s] OK
* checking Rd files ... [0s/0s] OK
* checking Rd metadata ... OK
* checking Rd line widths ... OK
* checking Rd cross-references ... OK
* checking for missing documentation entries ... OK
* checking for code/documentation mismatches ... OK
* checking Rd \usage sections ... OK
* checking Rd contents ... OK
* checking for unstated dependencies in examples ... OK
* checking contents of ‘data’ directory ... OK
* checking data for non-ASCII characters ... [0s/0s] OK
* checking LazyData ... OK
* checking data for ASCII and uncompressed saves ... OK
* checking line endings in shell scripts ... OK
* checking line endings in C/C++/Fortran sources/headers ... OK
* checking line endings in Makefiles ... OK
* checking compilation flags in Makevars ... OK
* checking for GNU extensions in Makefiles ... OK
* checking for portable use of $(BLAS_LIBS) and $(LAPACK_LIBS) ... OK
* checking use of PKG_*FLAGS in Makefiles ... OK
* checking use of SHLIB_OPENMP_*FLAGS in Makefiles ... OK
* checking pragmas in C/C++ headers and code ... OK
* checking compilation flags used ... OK
* checking compiled code ... NOTE
File ‘qs/libs/qs.so’:
Found non-API calls to R: ‘SETLEVELS’, ‘SET_ENCLOS’, ‘SET_FRAME’,
‘SET_HASHTAB’, ‘SET_PRENV’, ‘SET_S4_OBJECT’, ‘SET_TRUELENGTH’
Compiled code should not call non-API entry points in R.
See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual.
* checking installed files from ‘inst/doc’ ... OK
* checking files in ‘vignettes’ ... OK
* checking examples ... [2s/2s] OK
* checking for unstated dependencies in ‘tests’ ... OK
* checking tests ... [182s/161s] OK
Running ‘correctness_testing.R’ [89s/79s]
Running ‘qattributes_testing.R’ [91s/81s]
Running ‘qsavemload_testing.R’ [1s/1s]
* checking for unstated dependencies in vignettes ... OK
* checking package vignettes ... OK
* checking re-building of vignette outputs ... [1s/1s] OK
* checking PDF version of manual ... [3s/3s] OK
* checking HTML version of manual ... [1s/1s] OK
* checking for non-standard things in the check directory ... OK
* checking for detritus in the temp directory ... OK
* DONE
Status: 1 NOTE
This is documented in the WRE here where it differentiates "Public" and "API" entrypoints. I believe other packages will have similar issues, including high profile packages like data.table and vctrs.
On CRAN now
@traversc Now it is broken for systems where libatomic
is needed:
Error: package or namespace load failed for ‘qs’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/00LOCK-qs/00new/qs/libs/qs.so':
dlopen(/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/00LOCK-qs/00new/qs/libs/qs.so, 6): Symbol not found: ___atomic_store_8
Referenced from: /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/00LOCK-qs/00new/qs/libs/qs.so
Expected in: dynamic lookup
Error: loading failed
Execution halted
ERROR: loading failed
---> Extracting qs_0.26.3.tar.gz
Executing: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work" && /usr/bin/gzip -dc '/opt/local/var/macports/distfiles/R-qs/qs_0.26.3.tar.gz' | /usr/bin/gnutar --no-same-owner -xf -
---> Configuring R-qs
Executing: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/qs" && /opt/local/bin/R CMD build . --no-manual --no-build-vignettes --keep-empty-dirs
* checking for file ‘./DESCRIPTION’ ... OK
* preparing ‘qs’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* running ‘cleanup’
* checking vignette meta-information ... OK
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* building ‘qs_0.26.3.tar.gz’
---> Building R-qs
xinstall: mkdir /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build
Executing: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/qs" && /opt/local/bin/R CMD INSTALL . --library=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build --install-tests
* installing *source* package ‘qs’ ...
** package ‘qs’ successfully unpacked and MD5 sums checked
** using staged installation
checking for pkg-config... /opt/local/bin/pkg-config
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether /opt/local/bin/g++-mp-13 -std=gnu++17 accepts -g... yes
C++ compiler: /opt/local/bin/g++-mp-13 -std=gnu++17
Does not require -latomic flag
zstd 1.5.6 library detected -- skipping zstd compilation
lz4 1.9.4 library detected -- skipping lz4 compilation
configure: creating ./config.status
config.status: creating src/Makevars
** libs
using C++ compiler: ‘g++-mp-13 (MacPorts gcc13 13.2.0_4+stdlib_flag) 13.2.0’
Warning in system2("xcrun", "--show-sdk-path", TRUE, TRUE) :
running command ''xcrun' --show-sdk-path 2>&1' had status 64
using SDK: ‘NA’‘NA’‘NA’‘NA’‘NA’‘NA’
/opt/local/bin/g++-mp-13 -std=gnu++17 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/RApiSerialize/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/stringfish/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/BH/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -c RcppExports.cpp -o RcppExports.o
/opt/local/bin/g++-mp-13 -std=gnu++17 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -DRCPP_USE_UNWIND_PROTECT -DRCPP_NO_RTTI -DRCPP_NO_SUGAR -I. -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/RApiSerialize/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/stringfish/include' -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/BH/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -c qs_functions.cpp -o qs_functions.o
/opt/local/bin/g++-mp-13 -std=gnu++17 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/opt/local/Library/Frameworks/R.framework/Resources/lib -Wl,-headerpad_max_install_names -L/opt/local/lib -lMacportsLegacySupport -Wl,-rpath,/opt/local/lib/libgcc -arch ppc -o qs.so RcppExports.o qs_functions.o -L. -lpthread -L/opt/local/lib -lzstd -L/opt/local/lib -llz4 -F/opt/local/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
installing to /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/00LOCK-qs/00new/qs/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** tests
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘qs’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/00LOCK-qs/00new/qs/libs/qs.so':
dlopen(/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/00LOCK-qs/00new/qs/libs/qs.so, 6): Symbol not found: ___atomic_store_8
Referenced from: /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/00LOCK-qs/00new/qs/libs/qs.so
Expected in: dynamic lookup
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build/qs’
Command failed: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/qs" && /opt/local/bin/R CMD INSTALL . --library=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-qs/R-qs/work/build --install-tests
Exit code: 1
Error: Failed to build R-qs: command execution failed
On an up-to-date Rocky 8 Linux system:
If atomic is required, it would be helpful if configure would check for it and give an error already there. If not required, maybe this one is related to https://github.com/traversc/qs/issues/76#issuecomment-1476847821.