mschubert / clustermq

R package to send function calls as jobs on LSF, SGE, Slurm, PBS/Torque, or each via SSH
https://mschubert.github.io/clustermq/
Apache License 2.0
146 stars 27 forks source link

Simple receive hangs on macOS #311

Closed mschubert closed 11 months ago

mschubert commented 12 months ago

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 https://github.com/mschubert/clustermq/issues/303#issuecomment-1733252781

mschubert commented 12 months ago

This was likely fixed in https://github.com/mschubert/clustermq/commit/ea218f563c18945d7bfe2c109c85ee5e3855acf1 (no more timeouts on GHA CI), @wlandau can you confirm?

Never mind, still there

wlandau commented 12 months ago

I got my Linux box back up and running, and I tried the example using 9f3d6d2e63a2e619574fa9f8ad3d4fbd2e235039. 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 ``` r 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 #> #> ────────────────────────────────────────────────────────────────────────────── ```
wlandau commented 12 months ago

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

mschubert commented 12 months ago

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

wlandau commented 12 months ago

It happens here:

https://github.com/mschubert/clustermq/blob/9f3d6d2e63a2e619574fa9f8ad3d4fbd2e235039/R/pool.r#L17

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>
mschubert commented 12 months ago

Does the following work for you?

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

Nope, same error.

mschubert commented 12 months ago

But the following works?

clustermq:::has_connectivity("127.0.0.1")
wlandau commented 12 months ago

Yes, it returns TRUE.

mschubert commented 12 months ago

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)

wlandau commented 12 months ago

There I get "Error: Invalid argument"

wlandau commented 12 months ago

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

wlandau commented 12 months ago

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.

mschubert commented 11 months ago

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")
mschubert commented 11 months ago

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

wlandau commented 11 months ago

Using remotes::install_github("mschubert/clustermq@debug-portbinding") (fdc8236a0a647f04b9e6f8f17fa42d25ca508496), 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
mschubert commented 11 months ago

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.

wlandau commented 11 months ago

Odd, using 48317bfb3ca0493f9c5bd82504a210846c276b7b I still see:

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

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

wlandau commented 11 months ago

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’ ...
─  preparing ‘clustermq’: (1.3s)
✔  checking DESCRIPTION meta-information ...
─  cleaning src
─  running ‘cleanup’
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories (1.9s)
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/aarch64/le’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/aarch64’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/x86_64/o’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/x86_64’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto’
   Removed empty directory ‘clustermq/src/libzmq/builds/openwrt’
─  building ‘clustermq_0.9.1.tar.gz’

* installing *source* package ‘clustermq’ ...
** 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 package ‘clustermq’
* removing ‘/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/clustermq’
Warning 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.gz’ had 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.gz’ had non-zero exit status
mschubert commented 11 months ago

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)

wlandau commented 11 months ago

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/remotes1dfd2f6✔  checking for file ‘/private/var/folders/4v/vh7xp8553lsbl49svl48g7p00000gp/T/RtmpYJ400S/remotes1dfd2f649c4c/mschubert-clustermq-0aa0e4a/DESCRIPTION’
─  preparing ‘clustermq’: (1.1s)
✔  checking DESCRIPTION meta-information ...
─  cleaning src
─  running ‘cleanup’
─  checking for LF line-endings in source and make files and shell scripts (399ms)
─  checking for empty or unneeded directories (1.9s)
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/aarch64/le’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/aarch64’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/x86_64/o’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto/x86_64’
   Removed empty directory ‘clustermq/src/libzmq/build_qnx/nto’
   Removed empty directory ‘clustermq/src/libzmq/builds/openwrt’
   building ‘clustermq_0.9.1.tar.gz’   
* installing *source* package ‘clustermq’ ...
** 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 package ‘clustermq’
* removing ‘/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/clustermq’
Warning 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.gz’ had 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.gz’ had non-zero exit status
mschubert commented 11 months ago

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.