mschubert/clustermq

Simple receive hangs on macOS

Closed this issue · 23 comments

workers_running are only counted after a worker is registered, so you need to call w$recv() first (yielding NULL) - so this is expected, but the documentation should still be at bit clearer.

I tried this on my Mac:

options(clustermq.scheduler = "multiprocess")
library(clustermq)
w <- workers(n_jobs = 1L)
w$recv()

But it silently hangs at recv().

Originally posted by @wlandau in #303 (comment)

This was likely fixed in ea218f5 (no more timeouts on GHA CI), @wlandau can you confirm?

Never mind, still there

I got my Linux box back up and running, and I tried the example using 9f3d6d2. This time I got an explicit error:

options(clustermq.scheduler = "multiprocess")
library(clustermq)
w <- workers(n_jobs = 1L)
#> Error in eval(expr, envir, enclos): Invalid argument

Created on 2023-10-12 with reprex v2.0.2

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.3.0 (2023-04-21)
#>  os       Ubuntu 22.04.3 LTS
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       America/New_York
#>  date     2023-10-12
#>  pandoc   3.1.1 @ /usr/lib/rstudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version    date (UTC) lib source
#>  cli           3.6.1.9000 2023-10-04 [1] Github (r-lib/cli@d888311)
#>  clustermq   * 0.9.0      2023-10-11 [1] Github (mschubert/clustermq@9f3d6d2)
#>  codetools     0.2-19     2023-02-01 [1] CRAN (R 4.3.0)
#>  digest        0.6.33     2023-07-07 [1] CRAN (R 4.3.0)
#>  evaluate      0.21       2023-05-05 [1] CRAN (R 4.3.0)
#>  fastmap       1.1.1      2023-02-24 [1] CRAN (R 4.3.0)
#>  fs            1.6.3      2023-07-20 [1] CRAN (R 4.3.0)
#>  glue          1.6.2      2022-02-24 [1] CRAN (R 4.3.0)
#>  htmltools     0.5.5      2023-03-23 [1] CRAN (R 4.3.0)
#>  knitr         1.43       2023-05-25 [1] CRAN (R 4.3.0)
#>  lifecycle     1.0.3      2022-10-07 [1] CRAN (R 4.3.0)
#>  magrittr      2.0.3      2022-03-30 [1] CRAN (R 4.3.0)
#>  purrr         1.0.1      2023-01-10 [1] CRAN (R 4.3.0)
#>  R.cache       0.16.0     2022-07-21 [1] CRAN (R 4.3.0)
#>  R.methodsS3   1.8.2      2022-06-13 [1] CRAN (R 4.3.0)
#>  R.oo          1.25.0     2022-06-12 [1] CRAN (R 4.3.0)
#>  R.utils       2.12.2     2022-11-11 [1] CRAN (R 4.3.0)
#>  R6            2.5.1      2021-08-19 [1] CRAN (R 4.3.0)
#>  Rcpp          1.0.11     2023-07-06 [1] CRAN (R 4.3.0)
#>  reprex        2.0.2      2022-08-17 [1] CRAN (R 4.3.0)
#>  rlang         1.1.1      2023-04-28 [1] CRAN (R 4.3.0)
#>  rmarkdown     2.21       2023-03-26 [1] CRAN (R 4.3.0)
#>  rstudioapi    0.14       2022-08-22 [1] CRAN (R 4.3.0)
#>  sessioninfo   1.2.2      2021-12-06 [1] CRAN (R 4.3.0)
#>  styler        1.10.1     2023-06-05 [1] CRAN (R 4.3.0)
#>  vctrs         0.6.3      2023-06-14 [1] CRAN (R 4.3.0)
#>  withr         2.5.1      2023-09-26 [1] CRAN (R 4.3.0)
#>  xfun          0.40       2023-08-09 [1] CRAN (R 4.3.0)
#>  yaml          2.3.7      2023-01-23 [1] CRAN (R 4.3.0)
#> 
#>  [1] /home/landau/R/R-4.3.0/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────

By the way, should I use the master branch or develop?

This is very strange, I've never seen that either on my own machine or on CI. Can you debug() and R to see which argument is invalid and why?

By the way, should I use the master branch or develop?

Please use master, I'll try and keep it stable again

It happens here:

bound = private$master$listen(addr)

addr looks like this:

str(addr)
#> chr [1:100] "tcp://*:9643" "tcp://*:8037" "tcp://*:6011" "tcp://*:6130" "tcp://*:8978" "tcp://*:7333" ...

and private$master$listen looks like this:

Class method definition for method listen()
function (...) 
{
    " std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > listen(Rcpp::CharacterVector)  \n   "
    .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x557a74239dd0>, 
        dll = list(name = "Rcpp", path = "/home/landau/R/R-4.3.0/library/Rcpp/libs/Rcpp.so", 
            dynamicLookup = TRUE, handle = <pointer: 0x557a772e5500>, 
            info = <pointer: 0x557a745a95e0>), numParameters = -1L), 
        <pointer: 0x557a7d21cd90>, <pointer: 0x557a7935fc90>, 
        .pointer, ...)
}
<environment: 0x557a7cd86f68>

Does the following work for you?

m = methods::new(clustermq:::CMQMaster)
m$listen(c("tcp://*:9643", "tcp://*:8037", "tcp://*:6011" ))

Nope, same error.

But the following works?

clustermq:::has_connectivity("127.0.0.1")

Yes, it returns TRUE.

What about

m = methods::new(clustermq:::CMQMaster)
m$listen("tcp://*:*")

(sorry for all the requests, I'm not sure what's going on here - it may be that your system doesn't allow lower ports to be bound)

There I get "Error: Invalid argument"

I also got the same error with m$listen(c("tcp://*:59643", "tcp://*:58037", "tcp://*:56011" )) (higher ports)

I'm not sure, but could it be a problem with how the C++ code accepts string inputs? Based on my experience using mirai, my machine's ability to use ports seems normal.

I've created a branch debug-portbinding to narrow this down further.
Can you please try this and paste the output here?

# remotes::install_github("mschubert/clustermq@debug-portbinding")
m = methods::new(clustermq:::CMQMaster)
m$listen("tcp://*:*")
m$listen("invalid")

I believe the Ubuntu issue is now fixed in master (the #ifdef check for the router notify option was checked incorrectly), but the macOS issue remains

Using remotes::install_github("mschubert/clustermq@debug-portbinding") (fdc8236), I see:

m = methods::new(clustermq:::CMQMaster)
m$listen("tcp://*:*")
#> here1
#> here2
#> here3
#> here3.5
#> Error: Invalid argument
m$listen("invalid")
#> here1
#> here2
#> here3
#> here3.5
#> Error: Invalid argument

Yes, that's expected: it means that the issue is with setting the socket option, not the actual port binding. And this should be fixed in master.

Odd, using 48317bf I still see:

options(clustermq.scheduler = "multiprocess")
library(clustermq)
w <- workers(n_jobs = 1L)
#> Error: Invalid argument

As for Mac OS, I could probably install a pre-compiled binary from r-universe.

On Mac OS, it turns out the installation is not finding automake or autoconf in the homebrew locations

$ which autoconf                  
/opt/homebrew/bin/autoconf
$ which automake                  
/opt/homebrew/bin/automake

I tried this in R:

Sys.setenv(PATH = paste("/opt/homebrew/bin", Sys.getenv("PATH"), sep=":"))

and I got a different set of errors:

> remotes::install_github("mschubert/clustermq")
Using github PAT from envvar GITHUB_PAT
Downloading GitHub repo mschubert/clustermq@HEAD
'/usr/bin/git' clone --depth 1 --no-hardlinks --recurse-submodules https://github.com/zeromq/libzmq.git /var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//Rtmpq3SdLz/remotes32d638b9ba9b/mschubert-clustermq-48317bf/src/libzmq
Cloning into '/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//Rtmpq3SdLz/remotes32d638b9ba9b/mschubert-clustermq-48317bf/src/libzmq'...
'/usr/bin/git' clone --depth 1 --no-hardlinks --recurse-submodules https://github.com/zeromq/cppzmq.git /var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//Rtmpq3SdLz/remotes32d638b9ba9b/mschubert-clustermq-48317bf/src/cppzmq
Cloning into '/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//Rtmpq3SdLz/remotes32d638b9ba9b/mschubert-clustermq-48317bf/src/cppzmq'...
── R CMD build ──────────────────────────
✔  checking for file/private/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T/Rtmpq3SdLz/remotes32d638b9ba9b/mschubert-clustermq-48317bf/DESCRIPTION...preparingclustermq: (1.3s)
✔  checking DESCRIPTION meta-information ...cleaning srcrunningcleanup’
─  checking for LF line-endings in source and make files and shell scriptschecking for empty or unneeded directories (1.9s)
   Removed empty directoryclustermq/src/libzmq/build_qnx/nto/aarch64/leRemoved empty directoryclustermq/src/libzmq/build_qnx/nto/aarch64Removed empty directoryclustermq/src/libzmq/build_qnx/nto/x86_64/oRemoved empty directoryclustermq/src/libzmq/build_qnx/nto/x86_64Removed empty directoryclustermq/src/libzmq/build_qnx/ntoRemoved empty directoryclustermq/src/libzmq/builds/openwrt’
─  buildingclustermq_0.9.1.tar.gz* installing *source* packageclustermq...
** using staged installation
* no system libzmq found -> using bundled libzmq
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I config --force -I config
autoreconf: configure.ac: tracing
autoreconf: running: glibtoolize --copy --force
glibtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.
glibtoolize: copying file 'config/ltmain.sh'
glibtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'config'.
glibtoolize: copying file 'config/libtool.m4'
glibtoolize: copying file 'config/ltoptions.m4'
glibtoolize: copying file 'config/ltsugar.m4'
glibtoolize: copying file 'config/ltversion.m4'
glibtoolize: copying file 'config/lt~obsolete.m4'
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal -I config --force -I config
autoreconf: running: /opt/homebrew/Cellar/autoconf/2.71/bin/autoconf --include=config --force
configure.ac:69: warning: The macro `AC_PROG_CC_C99' is obsolete.
configure.ac:69: You should run autoupdate.
./lib/autoconf/c.m4:1659: AC_PROG_CC_C99 is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
m4/ax_check_compile_flag.m4:60: AX_CHECK_COMPILE_FLAG is expanded from...
configure.ac:69: the top level
configure.ac:84: warning: The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
configure.ac:84: You should run autoupdate.
config/ltoptions.m4:148: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:84: the top level
configure.ac:84: warning: AC_LIBTOOL_WIN32_DLL: Remove this warning and the call to _LT_SET_OPTION when you
configure.ac:84: put the 'win32-dll' option into LT_INIT's first parameter.
./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
config/ltoptions.m4:148: AC_LIBTOOL_WIN32_DLL is expanded from...
configure.ac:84: the top level
configure.ac:85: warning: The macro `AC_PROG_LIBTOOL' is obsolete.
configure.ac:85: You should run autoupdate.
config/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
configure.ac:85: the top level
configure.ac:451: warning: The macro `AC_HEADER_STDC' is obsolete.
configure.ac:451: You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
configure.ac:451: the top level
configure.ac:480: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:480: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:646: LIBZMQ_CHECK_EVENTFD_CLOEXEC is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/headers.m4:89: _AC_CHECK_HEADER_COMPILE is expanded from...
./lib/autoconf/headers.m4:56: AC_CHECK_HEADER is expanded from...
lib/m4sugar/m4sh.m4:651: AS_FOR is expanded from...
./lib/autoconf/headers.m4:217: AC_CHECK_HEADERS is expanded from...
configure.ac:480: the top level
configure.ac:534: warning: The macro `AC_HEADER_TIME' is obsolete.
configure.ac:534: You should run autoupdate.
./lib/autoconf/headers.m4:743: AC_HEADER_TIME is expanded from...
configure.ac:534: the top level
configure.ac:817: warning: The macro `AC_TYPE_SIGNAL' is obsolete.
configure.ac:817: You should run autoupdate.
./lib/autoconf/types.m4:776: AC_TYPE_SIGNAL is expanded from...
configure.ac:817: the top level
configure.ac:972: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:972: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:597: LIBZMQ_CHECK_SOCK_CLOEXEC is expanded from...
configure.ac:972: the top level
configure.ac:978: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:978: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:621: LIBZMQ_CHECK_O_CLOEXEC is expanded from...
configure.ac:978: the top level
configure.ac:984: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:984: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:703: LIBZMQ_CHECK_SO_BINDTODEVICE is expanded from...
configure.ac:984: the top level
configure.ac:991: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:991: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:730: LIBZMQ_CHECK_SO_KEEPALIVE is expanded from...
configure.ac:991: the top level
configure.ac:997: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:997: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:757: LIBZMQ_CHECK_TCP_KEEPCNT is expanded from...
configure.ac:997: the top level
configure.ac:1003: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:1003: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:787: LIBZMQ_CHECK_TCP_KEEPIDLE is expanded from...
configure.ac:1003: the top level
configure.ac:1009: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:1009: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:817: LIBZMQ_CHECK_TCP_KEEPINTVL is expanded from...
configure.ac:1009: the top level
configure.ac:1015: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:1015: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:847: LIBZMQ_CHECK_TCP_KEEPALIVE is expanded from...
configure.ac:1015: the top level
configure.ac:1021: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:1021: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:877: LIBZMQ_CHECK_SO_PRIORITY is expanded from...
configure.ac:1021: the top level
configure.ac:1027: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:1027: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
lib/m4sugar/m4sh.m4:692: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
acinclude.m4:904: LIBZMQ_CHECK_GETRANDOM is expanded from...
configure.ac:1027: the top level
configure.ac:28: error: possibly undefined macro: AC_SUBST
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:75: error: missing some pkg-config macros (pkg-config package)
configure.ac:133: error: possibly undefined macro: AC_MSG_RESULT
configure.ac:146: error: possibly undefined macro: AC_DEFINE
configure.ac:254: error: possibly undefined macro: AC_CHECK_LIB
configure.ac:357: error: possibly undefined macro: AC_CHECK_HEADERS
configure.ac:359: error: possibly undefined macro: AC_MSG_ERROR
configure.ac:546: error: missing some pkg-config macros (pkg-config package)
configure.ac:551: error: possibly undefined macro: AC_SEARCH_LIBS
configure.ac:594: error: possibly undefined macro: AC_MSG_NOTICE
configure.ac:889: error: possibly undefined macro: AC_MSG_WARN
autoreconf: error: /opt/homebrew/Cellar/autoconf/2.71/bin/autoconf failed with exit status: 1
autogen.sh: error: autoreconf exited with status 1
ERROR: configuration failed for packageclustermq* removing/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/clustermqWarning messages:
1: In utils::install.packages(pkgs = pkgs, lib = lib, repos = myrepos,  :
  installation of package/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//Rtmpq3SdLz/file32d6298a3335/clustermq_0.9.1.tar.gzhad non-zero exit status
2: In utils::install.packages(pkgs = pkgs, lib = lib, repos = myrepos,  :
  installation of package/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//Rtmpq3SdLz/file32d6298a3335/clustermq_0.9.1.tar.gzhad non-zero exit status

I believe the Ubuntu issue is now fixed in master (the #ifdef check for the router notify option was checked incorrectly)

This time for real

but the macOS issue remains

I think this is fixed too. You could R CMD build in the Ubuntu VM and install the tarball on macOS, or trust that it works on GHA (the CRAN 0.9.1 tarball will not require autoconf/automake)

Thanks @mschubert! My tests for targets and drake now work on Ubuntu. I have migrated both packages to the new interface, and the next CRAN releases will use it.

As for compilation on Mac OS, I am getting a new set of errors. It's no longer a roadblock for me, but if you would like me to open another issue, I can do that.

> remotes::install_github("mschubert/clustermq")
Using github PAT from envvar GITHUB_PAT
Downloading GitHub repo mschubert/clustermq@HEAD
'/usr/bin/git' clone --depth 1 --no-hardlinks --recurse-submodules https://github.com/zeromq/libzmq.git /var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//RtmpYJ400S/remotes1dfd2f649c4c/mschubert-clustermq-0aa0e4a/src/libzmq
Cloning into '/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//RtmpYJ400S/remotes1dfd2f649c4c/mschubert-clustermq-0aa0e4a/src/libzmq'...
remote: Enumerating objects: 857, done.
remote: Counting objects: 100% (857/857), done.
remote: Compressing objects: 100% (630/630), done.
remote: Total 857 (delta 244), reused 607 (delta 199), pack-reused 0
Receiving objects: 100% (857/857), 1008.49 KiB | 6.22 MiB/s, done.
Resolving deltas: 100% (244/244), done.
'/usr/bin/git' clone --depth 1 --no-hardlinks --recurse-submodules https://github.com/zeromq/cppzmq.git /var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//RtmpYJ400S/remotes1dfd2f649c4c/mschubert-clustermq-0aa0e4a/src/cppzmq
Cloning into '/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//RtmpYJ400S/remotes1dfd2f649c4c/mschubert-clustermq-0aa0e4a/src/cppzmq'...
remote: Enumerating objects: 43, done.
remote: Counting objects: 100% (43/43), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 43 (delta 1), reused 21 (delta 0), pack-reused 0
Receiving objects: 100% (43/43), 55.66 KiB | 1.14 MiB/s, done.
Resolving deltas: 100% (1/1), done.
── R CMD build ─────────────────────────────────────────────────────────────────────────────────────────
   checking for file/private/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T/RtmpYJ400S/remotes1dfd2f6checking for file/private/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T/RtmpYJ400S/remotes1dfd2f649c4c/mschubert-clustermq-0aa0e4a/DESCRIPTION’
─  preparingclustermq: (1.1s)
✔  checking DESCRIPTION meta-information ...cleaning srcrunningcleanup’
─  checking for LF line-endings in source and make files and shell scripts (399ms)
─  checking for empty or unneeded directories (1.9s)
   Removed empty directoryclustermq/src/libzmq/build_qnx/nto/aarch64/leRemoved empty directoryclustermq/src/libzmq/build_qnx/nto/aarch64Removed empty directoryclustermq/src/libzmq/build_qnx/nto/x86_64/oRemoved empty directoryclustermq/src/libzmq/build_qnx/nto/x86_64Removed empty directoryclustermq/src/libzmq/build_qnx/ntoRemoved empty directoryclustermq/src/libzmq/builds/openwrtbuildingclustermq_0.9.1.tar.gz* installing *source* packageclustermq...
** using staged installation
./configure: line 17: pkg-config: command not found
* no system libzmq found -> using bundled libzmq
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I config --force -I config
m4:configure.ac:9: ERROR: end of file in string
autom4te: error: /opt/homebrew/opt/m4/bin/m4 failed with exit status: 1
aclocal: error: /opt/homebrew/Cellar/autoconf/2.71/bin/autom4te failed with exit status: 1
autoreconf: error: aclocal failed with exit status: 1
autogen.sh: error: autoreconf exited with status 1
./configure: line 42: ./configure: No such file or directory
make: *** No targets specified and no makefile found.  Stop.
ERROR: configuration failed for packageclustermq* removing/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/clustermqWarning messages:
1: In utils::install.packages(pkgs = pkgs, lib = lib, repos = myrepos,  :
  installation of package/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//RtmpYJ400S/file1dfd234cce45/clustermq_0.9.1.tar.gzhad non-zero exit status
2: In utils::install.packages(pkgs = pkgs, lib = lib, repos = myrepos,  :
  installation of package/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T//RtmpYJ400S/file1dfd234cce45/clustermq_0.9.1.tar.gzhad non-zero exit status

Great to hear it works on Ubuntu!

Please reopen if the Mac error is still an issue from the CRAN tarball of 0.9.1.