Closed barracuda156 closed 1 year ago
So I can setup the checks correctly, what's your output from:
uname -s
uname -m
@andrjohns Thank you for responding!
36-171% uname -s
Darwin
36-171% uname -m
Power Macintosh
36-171% uname -p
powerpc
P. S. I have seen elsewhere that arm32
and mips
also require -latomic
, but cannot verify that personally. I assume i386
would need it too, at least with GCC. But my personal concern is just ppc
(= ppc32).
Can you try this branch: https://github.com/andrjohns/QuickJSR/tree/ppc-32bit
Yes, that works perfectly fine, the flag is passed, installation succeeds.
ar: creating archive ../inst/lib//libquickjs.a
/opt/local/bin/g++-mp-12 -std=gnu++14 -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 -Wl,-rpath,/opt/local/lib/libgcc -L/opt/local/lib -lMacportsLegacySupport -arch ppc -o QuickJSR.so init.o qjs.o qjs_impl.o -L../inst/lib// -lquickjs -latomic -F/opt/local/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
installing to /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/destroot/opt/local/Library/Frameworks/R.framework/Versions/4.2/Resources/library/00LOCK-QuickJSR/00new/QuickJSR/libs
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** 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 (QuickJSR)
---> Installing R-QuickJSR @1.0.4_0
Executing: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/destroot" && /usr/bin/tar -cvf - . | /opt/local/bin/lbzip2 -c9 > /opt/local/var/macports/software/R-QuickJSR/R-QuickJSR-1.0.4_0.darwin_10.ppc.tbz2
Merged the fix to main
It looks like the fix may also be needed on some 32-bit ARM platforms: see what happens on Debian's armel port.
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘QuickJSR’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/<<PKGBUILDDIR>>/debian/r-cran-quickjsr/usr/lib/R/site-library/00LOCK-r-cran-quickjsr-1.0.7/00new/QuickJSR/libs/QuickJSR.so':
/<<PKGBUILDDIR>>/debian/r-cran-quickjsr/usr/lib/R/site-library/00LOCK-r-cran-quickjsr-1.0.7/00new/QuickJSR/libs/QuickJSR.so: undefined symbol: __atomic_exchange_8
Error: loading failed
@charles-plessy The proper solution would be a test for support of 8-byte atomics without libatomic
and then a conditional dependency. This would fix 32-bit arm, mips and Rosetta (where uname
will have Intel, not PowerPC). I do not really know however how to implement such test outside of CMake build system.
@charles-plessy CRAN version updated to always link to libatomic on 32-bit distros
P. S. I not sure how this gonna work with Clang on i386, but perhaps it is not a big concern. For powerpc that was never an issue since at least on Darwin we are sure that the compiler is GCC, and GCC always gonna have libatomic
. Clang does not have it, but uses compiler-rt library (well, I guess so). I cannot test at the moment whether the linker dismisses the flag or the build gonna fail due to a missing lib.
Thanks! The new release solved the problem on our side :)
I not sure how this gonna work with Clang on i386
It causes build failure:
ld: library not found for -latomic
clang: error: linker command failed with exit code 1 (use -v to see invocation)
@ryandesign @andrjohns It should probably be restricted to GCC. (arm32 issue on Debian used gcc, from the log.)
I am not sure if Clang can use libatomic in principle, but it is probably something rather exotic if possible at all.
@ryandesign @barracuda156 Can you let me know if this branch fixes things: https://github.com/andrjohns/QuickJSR/tree/clang32-atomics
@andrjohns Applying 5393e43bb5ccac8e41e19e976fe5baa9e4cd892f patch onto 1.1.3 does not work for a build with GCC, -latomic
does not get passed and linking fails. Should I pick something else too?
Can you post the full build log with the failure?
@andrjohns Sure:
:debug:main Starting logging for R-QuickJSR @1.1.3_1
:debug:sysinfo Mac OS X 10.6 (darwin/10.0.0d2) arch powerpc
:debug:sysinfo MacPorts 2.9.99
:debug:sysinfo Xcode 3.2, CLT none
:debug:sysinfo SDK 10.6
:debug:sysinfo MACOSX_DEPLOYMENT_TARGET: 10.6
:msg:main ---> Computing dependencies for R-QuickJSR:info:main .:debug:main Searching for dependency: gcc13
:debug:main Found Dependency: receipt exists for gcc13
:debug:main Searching for dependency: R
:debug:main Found Dependency: receipt exists for R
:debug:main Searching for dependency: R-jsonlite
:debug:main Found Dependency: receipt exists for R-jsonlite
:debug:main Searching for dependency: R-R6
:debug:main Found Dependency: receipt exists for R-R6
:debug:main Searching for dependency: R-Rcpp
:debug:main Found Dependency: receipt exists for R-Rcpp
:debug:main Found Dependency: path: /opt/local/share/doc/libgcc filename: README regex: ^README$
:debug:main Searching for dependency: libgcc
:debug:main Didn't find receipt, going to depspec regex for: libgcc
:debug:main Found Dependency: path: /opt/local/share/doc/libgcc filename: README regex: ^README$
:debug:main Searching for dependency: legacy-support
:debug:main Found Dependency: receipt exists for legacy-support
:debug:main Searching for dependency: R-CRAN-recommended
:debug:main Found Dependency: receipt exists for R-CRAN-recommended
:debug:main Executing org.macports.main (R-QuickJSR)
:debug:main Skipping completed org.macports.fetch (R-QuickJSR)
:debug:main Skipping completed org.macports.checksum (R-QuickJSR)
:debug:main Skipping completed org.macports.extract (R-QuickJSR)
:debug:main Skipping completed org.macports.patch (R-QuickJSR)
:debug:configure configure phase started at Mon May 6 14:46:27 CST 2024
:notice:configure ---> Configuring R-QuickJSR
:debug:configure Preferred compilers: macports-gcc-13 macports-gcc-12 macports-gcc-11 macports-gcc-10 macports-gcc-9 macports-gcc-8 macports-gcc-7 macports-gcc-6 macports-gcc-5
:debug:configure Using compiler 'MacPorts GCC 13'
:debug:configure Executing proc-pre-org.macports.configure-configure-0
:debug:configure Found Dependency: path: /opt/local/share/doc/libgcc filename: README regex: ^README$
:debug:configure Active variants check for source-type install considers depends_fetch depends_extract depends_lib depends_build depends_run: R-jsonlite R-R6 R-Rcpp libgcc-powerpc legacy-support R-CRAN-recommended gcc13 R
:debug:configure Executing proc-pre-org.macports.configure-configure-1
:debug:configure compilers.enforce_c list:
:debug:configure compilers.enforce_fortran list:
:debug:configure compilers.enforce_some_fortran list:
:debug:configure compilers PG: GCC version reports being UNKNOWN to MacPorts
:debug:configure compilers PG: RPATH added to ldflags as GCC version is UNKNOWN
:debug:configure Executing org.macports.configure (R-QuickJSR)
:debug:configure Environment:
:debug:configure CC='/opt/local/bin/gcc-mp-13'
:debug:configure CC_PRINT_OPTIONS='YES'
:debug:configure CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/.CC_PRINT_OPTIONS'
:debug:configure CFLAGS='-pipe -Os -arch ppc'
:debug:configure CPATH='/opt/local/include'
:debug:configure CPLUS_INCLUDE_PATH='/opt/local/include/LegacySupport'
:debug:configure CPPFLAGS='-isystem/opt/local/include/LegacySupport -I/opt/local/include'
:debug:configure CXX='/opt/local/bin/g++-mp-13'
:debug:configure CXXFLAGS='-pipe -Os -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc'
:debug:configure C_INCLUDE_PATH='/opt/local/include/LegacySupport'
:debug:configure DEVELOPER_DIR='/Developer'
:debug:configure DYLD_LIBRARY_PATH='/opt/local/lib/libgcc'
:debug:configure F77='/opt/local/bin/gfortran-mp-13'
:debug:configure F90='/opt/local/bin/gfortran-mp-13'
:debug:configure F90FLAGS='-pipe -Os -m32'
:debug:configure FC='/opt/local/bin/gfortran-mp-13'
:debug:configure FCFLAGS='-pipe -Os -m32'
:debug:configure FFLAGS='-pipe -Os -m32'
:debug:configure INSTALL='/usr/bin/install -c'
:debug:configure LDFLAGS='-Wl,-headerpad_max_install_names -L/opt/local/lib -lMacportsLegacySupport -Wl,-rpath,/opt/local/lib/libgcc -arch ppc'
:debug:configure LIBRARY_PATH='/opt/local/lib'
:debug:configure MACOSX_DEPLOYMENT_TARGET='10.6'
:debug:configure MACPORTS_LEGACY_SUPPORT_CPPFLAGS='-isystem/opt/local/include/LegacySupport'
:debug:configure MACPORTS_LEGACY_SUPPORT_ENABLED='1'
:debug:configure MACPORTS_LEGACY_SUPPORT_LDFLAGS='-L/opt/local/lib -lMacportsLegacySupport'
:debug:configure OBJC='/opt/local/bin/gcc-mp-13'
:debug:configure OBJCFLAGS='-pipe -Os -arch ppc'
:debug:configure OBJCPLUS_INCLUDE_PATH='/opt/local/include/LegacySupport'
:debug:configure OBJCXX='/opt/local/bin/g++-mp-13'
:debug:configure OBJCXXFLAGS='-pipe -Os -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc'
:debug:configure OBJC_INCLUDE_PATH='/opt/local/include/LegacySupport'
:info:configure Executing: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/QuickJSR" && /opt/local/bin/R CMD build . --no-manual --no-build-vignettes --keep-empty-dirs
:debug:configure system: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/QuickJSR" && /opt/local/bin/R CMD build . --no-manual --no-build-vignettes --keep-empty-dirs
:info:configure * checking for file ‘./DESCRIPTION’ ... OK
:info:configure * preparing ‘QuickJSR’:
:info:configure * checking DESCRIPTION meta-information ... OK
:info:configure * cleaning src
:info:configure * checking for LF line-endings in source and make files and shell scripts
:info:configure * checking for empty or unneeded directories
:info:configure * building ‘QuickJSR_1.1.3.tar.gz’
:debug:configure Executing portconfigure::configure_finish
:debug:build build phase started at Mon May 6 14:46:32 CST 2024
:notice:build ---> Building R-QuickJSR
:debug:build Executing proc-pre-org.macports.build-build-0
:info:build xinstall: mkdir /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build
:debug:build Executing org.macports.build (R-QuickJSR)
:debug:build Environment:
:debug:build CC_PRINT_OPTIONS='YES'
:debug:build CC_PRINT_OPTIONS_FILE='/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/.CC_PRINT_OPTIONS'
:debug:build CPATH='/opt/local/include'
:debug:build CPLUS_INCLUDE_PATH='/opt/local/include/LegacySupport'
:debug:build C_INCLUDE_PATH='/opt/local/include/LegacySupport'
:debug:build DEVELOPER_DIR='/Developer'
:debug:build DYLD_LIBRARY_PATH='/opt/local/lib/libgcc'
:debug:build LIBRARY_PATH='/opt/local/lib'
:debug:build MACOSX_DEPLOYMENT_TARGET='10.6'
:debug:build MACPORTS_LEGACY_SUPPORT_CPPFLAGS='-isystem/opt/local/include/LegacySupport'
:debug:build MACPORTS_LEGACY_SUPPORT_ENABLED='1'
:debug:build MACPORTS_LEGACY_SUPPORT_LDFLAGS='-L/opt/local/lib -lMacportsLegacySupport'
:debug:build OBJCPLUS_INCLUDE_PATH='/opt/local/include/LegacySupport'
:debug:build OBJC_INCLUDE_PATH='/opt/local/include/LegacySupport'
:info:build Executing: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/QuickJSR" && /opt/local/bin/R CMD INSTALL . --library=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build --install-tests
:debug:build system: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/QuickJSR" && /opt/local/bin/R CMD INSTALL . --library=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build --install-tests
:info:build * installing *source* package ‘QuickJSR’ ...
:info:build file ‘src/Makevars’ has the wrong MD5 checksum
:info:build ** using staged installation
:info:build ** libs
:info:build using C compiler: ‘gcc-mp-13 (MacPorts gcc13 13.2.0_4+stdlib_flag) 13.2.0’
:info:build using C++ compiler: ‘g++-mp-13 (MacPorts gcc13 13.2.0_4+stdlib_flag) 13.2.0’
:info:build Warning in system2("xcrun", "--show-sdk-path", TRUE, TRUE) :
:info:build running command ''xcrun' --show-sdk-path 2>&1' had status 64
:info:build using SDK: ‘NA’‘NA’‘NA’‘NA’‘NA’‘NA’
:info:build /opt/local/bin/gcc-mp-13 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -c quickjsr_impl.c -o quickjsr_impl.o
:info:build /opt/local/bin/g++-mp-13 -std=gnu++17 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -c quickjsr.cpp -o quickjsr.o
:info:build /opt/local/bin/g++-mp-13 -std=gnu++17 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -c init.cpp -o init.o
:info:build /opt/local/bin/gcc-mp-13 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -funsigned-char -fwrapv -std=c11 -c quickjs/cutils.c -o quickjs/cutils.o
:info:build /opt/local/bin/gcc-mp-13 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -funsigned-char -fwrapv -std=c11 -c quickjs/libbf.c -o quickjs/libbf.o
:info:build /opt/local/bin/gcc-mp-13 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -funsigned-char -fwrapv -std=c11 -c quickjs/libregexp.c -o quickjs/libregexp.o
:info:build /opt/local/bin/gcc-mp-13 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -funsigned-char -fwrapv -std=c11 -c quickjs/libunicode.c -o quickjs/libunicode.o
:info:build /opt/local/bin/gcc-mp-13 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -funsigned-char -fwrapv -std=c11 -c quickjs/quickjs.c -o quickjs/quickjs.o
:info:build /opt/local/bin/gcc-mp-13 -I"/opt/local/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"../inst/include/" -I/opt/local/include/LegacySupport -DSTRICT_R_HEADERS -D_GNU_SOURCE -DCONFIG_BIGNUM -DCONFIG_VERSION=\"2024-01-13\" -I'/opt/local/Library/Frameworks/R.framework/Versions/4.4/Resources/library/Rcpp/include' -isystem/opt/local/include/LegacySupport -I/opt/local/include -fPIC -pipe -Os -arch ppc -funsigned-char -fwrapv -std=c11 -c quickjs/quickjs-libc.c -o quickjs/quickjs-libc.o
:info:build ar -rs ../inst/lib//libquickjs.a quickjs/cutils.o quickjs/libbf.o quickjs/libregexp.o quickjs/libunicode.o quickjs/quickjs.o quickjs/quickjs-libc.o
:info:build ar: creating archive ../inst/lib//libquickjs.a
:info:build /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 QuickJSR.so quickjsr_impl.o quickjsr.o init.o ../inst/lib//libquickjs.a -L/opt/local/lib -lMacportsLegacySupport -F/opt/local/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
:info:build installing to /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build/00LOCK-QuickJSR/00new/QuickJSR/libs
:info:build ** R
:info:build ** inst
:info:build ** tests
:info:build ** byte-compile and prepare package for lazy loading
:info:build ** help
:info:build *** installing help indices
:info:build ** building package indices
:info:build ** testing if installed package can be loaded from temporary location
:info:build Error: package or namespace load failed for ‘QuickJSR’ in dyn.load(file, DLLpath = DLLpath, ...):
:info:build unable to load shared object '/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build/00LOCK-QuickJSR/00new/QuickJSR/libs/QuickJSR.so':
:info:build dlopen(/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build/00LOCK-QuickJSR/00new/QuickJSR/libs/QuickJSR.so, 6): Symbol not found: ___atomic_fetch_add_8
:info:build Referenced from: /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build/00LOCK-QuickJSR/00new/QuickJSR/libs/QuickJSR.so
:info:build Expected in: dynamic lookup
:info:build Error: loading failed
:info:build Execution halted
:info:build ERROR: loading failed
:info:build * removing ‘/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build/QuickJSR’
:info:build Command failed: cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/QuickJSR" && /opt/local/bin/R CMD INSTALL . --library=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_R_R-QuickJSR/R-QuickJSR/work/build --install-tests
:info:build Exit code: 1
:error:build Failed to build R-QuickJSR: command execution failed
:debug:build Error code: CHILDSTATUS 11039 1
Configure should pass
-latomic
when 8-byte atomics is not hardware-supported.