Conversation
cb233fb to
45704c2
Compare
714535a to
43f7f7b
Compare
9ffe87f to
f8c80fd
Compare
a9ccf76 to
7ece328
Compare
|
When walking home, I realized that the subtopics are very predictable. Doing a full lookup every subtopic might be avoidable with clever ordering. This is also work for the future, if required. |
|
I'm having some problems with the Python bindings. The polymorphism for Memory, SharedMemory and LocalMemory is not working as expected. I don't really understand why not. Pybind11 knows about the inheritance structure and should upcast the shared_ptr to a shared_ptr just fine. |
|
I've moved to a cheaper memory allocator, based on a thread-local pool fed by a buddy allocator. This is the final iteration of the allocator. I've also moved to a single Event structure for signaling. New benchmarks: Distributed as follows:
|
…rs seeded by true randomness.
This has been replaced by Event.
ivalaginja
left a comment
There was a problem hiding this comment.
I am slowly getting accustomed to this new concept but it's taking some time. I have a first round of questions that I was hoping to get answers to before being able to wrap this up on my side.
| data = b'hello world' | ||
| arr = np.frombuffer(data, dtype='uint8') | ||
|
|
||
| broker.publish_data(topic, data) |
There was a problem hiding this comment.
How is this different from publish_message()? Also, what is data? Is it a synonym for payload? Trying to relate things to the figures in #272 (comment).
There was a problem hiding this comment.
@ehpor Please correct me if I am wrong. (and yes, I did dive a bit into the C++ code to see what's going on)
The difference is that publish_message already has a message object ready to be published to the broker, but that is not the case here. In this example, we only have topic and data, without any message object being created yet.
Without publishing a message, the broker has no access to any information.
So publish_data() needs to do several things:
- Assign a trace_id, which is needed to trace our message.
- Prepare a message, meaning it creates a message object (Header and Payload, see the message content fig. ) ready for publication.
- Set the data information for the message, so it is complete and ready to be published.
- Publish the message, making it available to the broker.
Hence, assert (retrieved_message.payload == arr).all() should pass. payload stores the data of the message.
There was a problem hiding this comment.
@ivalaginja Data is not a synonym for payload. A payload is part of a message. Data is not part of a message. But a payload is data.
The reason for this function is similar to the Datastream.submit_data() vs. Datastream.request_new_frame() & Datastream.submit_frame(). The first is a convenience function for the latter two. Maybe my naming can be improved?
@alexisyslau Exactly. Unless you're hyperoptimizing, most people are not using the Datastream.request_new_frame() and Datastream.submit_frame() separately. Using those allows, in some cases, to remove a copy of the image. But most people will be using the Datastream.submit_data(), which combines the two, and the memory copy in between.
The same thing is true here. I'm expecting very little use of MessageBroker.prepare_message() & MessageBroker.publish_message() in favor of MessageBroker.publish_data() which combines the two and the memory copy in between. However, similar to the case of Datastreams, I want it to be available when people need it.
There was a problem hiding this comment.
I see! Thanks to both of you! I think the naming is fine, especially when you trace it back to the data streams. Makes sense!
| broker.publish_data(topic, data * 2) | ||
| message_2 = broker.get_newest_message(topic) | ||
|
|
||
| assert str(message_2.trace_id) != str(message_1.trace_id) |
There was a problem hiding this comment.
What are the differences between trace_id, message_id and Partial frame ID?
There was a problem hiding this comment.
A trace ID is set for each new information. It is typically assigned to the original data that came in, ie. the source of the "information". Eg. a camera service would create new trace IDs for each camera image. But a WFS reconstructor service would retain the same trace ID of the image that it computed the reconstruction for. Therefore, by using the trace ID, we can trace the flow of that camera information through the entire system. The technical term for this is "distributed tracing".
A payload ID is unique per data. In case partial messages are submitted (ie. pixel streaming), the payload for these messages will be the same, so they retain the same payload ID. A payload ID identifies a unique array.
A message/frame ID is sequential numbering per topic. The trace ID and payload ID are not. It allows us to figure out whether we missed frames, and to request the previous/next message for a particular message.
A partial frame ID is a numbering within a message. It increments sequentially, starting from zero. It gets incremented each time a partial message is submitted. I didn't test the partial message generation in this PR. It probably needs more work.
| waiting.wait(1) | ||
| assert waiting.is_set() |
There was a problem hiding this comment.
If this times out without a signal, shouldn't waiting.is_set() return False?
There was a problem hiding this comment.
Yes, this is checking that the wait didn't time out. I could also do:
assert waiting.wait(1)I'll add comments.
There was a problem hiding this comment.
Added more comments to the test.
There was a problem hiding this comment.
Oh I had inverted the purpose of the test in my head. Makes sense! Thanks!
| ArrayInfo &array_info = message.m_Header->payload_info.array_info; | ||
|
|
||
| array_info.data_type = 'u'; | ||
| array_info.byte_order = '='; |
There was a problem hiding this comment.
Most of the CPUs and GPUs should be little-endian so using the native order should be ok normally. But is it better to force it to be little-endian <? This will make sure we always interpret the array in the same way.
There was a problem hiding this comment.
Since the data type here is a byte (u), which is one byte long, the byte order doesn't matter. But, I'm not sure why I chose = compared to @, which are native byte order and native alignment, and native byte order and no alignment respectively. Again, no difference in this case, but native everything should be the default in other parts of the code, e.g. when submitting an array.
ivalaginja
left a comment
There was a problem hiding this comment.
I left a couple more questions about some details, but over all things make a lot more sense now. I also still need to run these tests.
| def test_message_subscription(broker): | ||
| topic = "test_message_subscription" | ||
|
|
||
| subscription_newest = broker.subscribe(topic, mode=MessageSubscriptionMode.NewestOnly) |
There was a problem hiding this comment.
New question: why do we need to subscribe to the broker, and then work through the subscription? Intuitively, I would have asked the broker directly for a next message, next message ID etc. Is it only to be able to define the subscription mode or is there more behind it?
There was a problem hiding this comment.
One big problem currently with datastreams is that the next frame ID is linked to your opened datastream. Furthermore, service proxies cache the datastream object, since closing and reopening is an expensive operation and so we are minimizing that. This means that if you do stream.get_next_frame() on the same stream, given to you on the same service, the threads will compete for the next frame. Ie. the threads are bound to the same subscription.
By splitting the subscription up from the message broker / datastream, you avoid this problem. The next frame id to read is stored in the subscription, where it's supposed to be, rather than in the message broker / datastream. This was an oversight when developing catkit2 datastreams, and I'm kinda surprised that we haven't run into bugs of this kind so far.
| assert message_2.payload[0] == 10 | ||
| assert message_3.payload[0] == 11 | ||
|
|
||
| assert subscription_newest.try_get_next_message() is None |
There was a problem hiding this comment.
So this means once I get a message through a subscription, that message does not exist anymore? Would make sense, just double-checking - and trying to find the correct vocabulary for this ^^
There was a problem hiding this comment.
Yep, a single subscription can only access a certain message once. The try_get_next_frame() function is there for datastreams as well, but hidden behind a timeout=0, which reads badly.
So, there is get_next_message() which gets the next message in your subscription, according to your MessageSubscriptionMode, which will wait for that message if it's not there yet or return immediately if it is. And we have try_get_next_message() which doesn't wait and will return None if it's not available yet.
| assert subscription_sequential.try_get_next_message() is None | ||
|
|
||
| subscription_newest2 = broker.subscribe(topic, starting_frame_id=1, mode=MessageSubscriptionMode.NewestOnly) | ||
| assert subscription_newest2.next_message_id == 2 |
There was a problem hiding this comment.
Why is this 2 if you give it a starting ID of 2? Does it not give you the same one? The sequential subscription below shows the behavior I expect, so why does the "newest" subscription mode automatically up the message id?
There was a problem hiding this comment.
MessageSubscriptionMode.Sequential will try to give you messages without dropped frames, even if there are newer messages available. MessageSubscriptionMode.NewestOnly will instead drop frames to give you the most recent update. In this case, subscription_newest2 is trying to read frame 1, but sees that frame 2 is already there, so it will skip frame 1 and give you frame 2. subscription_sequential2 will not skip frames, and so will give you frame 1 first, then frame 2 afterwards (untested here, because that was already tested a few asserts above).
There was a problem hiding this comment.
(Potentially stupid) follow-up question: How come there is frame 2 already there?
There was a problem hiding this comment.
We submitted three frames to the message broker: frame 0, 1 and 2.
There was a problem hiding this comment.
Or I'm misunderstanding the question.
There was a problem hiding this comment.
Submitted where? I only see them submitted at the very top, and we access them all later on, so they shouldn't be there anymore, no? Or does a new subscription have access to all the messages?
There was a problem hiding this comment.
Messages are not consumed. You can access historical data as well. The last N messages are kept for each topic (currently N = 32), similar to how the last N frames are kept for datastreams.
Sorry, I should have said that earlier. This is different than Apacha Kafka or Aeron, if you're familiar with those. In those frameworks, messages are only delivered once, and only accessible if published after you created your subscription. In our message broker, messages are delivered once and then can be accessed later, kinda like a time series database. I'm not fully convinced about the latter capability, since I don't think we ever used it on HiCAT. And it complicates the networking interface that I'm building now.
There was a problem hiding this comment.
Ah gotcha!! I don't know those in particular, but that's the type of systems I was in touch with previously. Makes sense, thanks a lot for the effort you put into all these explanations!
|
@ehpor I am unsure what I am doing wrong. I am trying to reinstall catkit2 so that I can test the tests, but the installation fails with the below error message. I am slowly acquiring PTSD from Cmake errors 😬 (catkit2) maintenances-MacBook-Pro-6:catkit2 ilaginja$ pip install -e .
Obtaining file:///Users/ilaginja/repos/catkit2
Installing build dependencies ... done
Checking if build backend supports build_editable ... done
Getting requirements to build editable ... done
Installing backend dependencies ... done
Preparing editable metadata (pyproject.toml) ... done
Building wheels for collected packages: catkit2
Building editable for catkit2 (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building editable for catkit2 (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [41 lines of output]
2025-05-07 09:28:20,644 - scikit_build_core - INFO - RUN: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/cmake -E capabilities
2025-05-07 09:28:20,674 - scikit_build_core - INFO - CMake version: 3.29.3
*** scikit-build-core 0.11.2 using CMake 3.29.3 (editable)
2025-05-07 09:28:20,724 - scikit_build_core - INFO - Build directory: /private/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmptmubhn3l/build
*** Configuring CMake...
2025-05-07 09:28:20,765 - scikit_build_core - INFO - RUN: ninja --version
2025-05-07 09:28:21,413 - scikit_build_core - INFO - Ninja version: 1.11.1
2025-05-07 09:28:21,415 - scikit_build_core - INFO - RUN: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/cmake -S. -B/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmptmubhn3l/build -DCMAKE_BUILD_TYPE:STRING=Release -C/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmptmubhn3l/build/CMakeInit.txt -DCMAKE_INSTALL_PREFIX=/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmptmubhn3l/wheel/platlib -DCMAKE_MAKE_PROGRAM=ninja
loading initial cache file /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmptmubhn3l/build/CMakeInit.txt
-- The C compiler identification is AppleClang 13.0.0.13000027
-- The CXX compiler identification is AppleClang 13.0.0.13000027
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at catkit_core/CMakeLists.txt:41 (find_package):
By not providing "Findcppzmq.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "cppzmq", but
CMake did not find one.
Could not find a package configuration file provided by "cppzmq" with any
of the following names:
cppzmqConfig.cmake
cppzmq-config.cmake
Add the installation prefix of "cppzmq" to CMAKE_PREFIX_PATH or set
"cppzmq_DIR" to a directory containing one of the above files. If "cppzmq"
provides a separate development package or SDK, be sure it has been
installed.
-- Configuring incomplete, errors occurred!
*** CMake configuration failed
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building editable for catkit2
Failed to build catkit2
ERROR: Could not build wheels for catkit2, which is required to install pyproject.toml-based projects
(catkit2) maintenances-MacBook-Pro-6:catkit2 ilaginja$
|
|
For me, this has always been a problem of not activating the environment, or, worse, conda telling me the environment is activated while it is not. After deactivating the environment, then reactivating it again, it works for me. Another check is to see if cppzmq is installed FYI: I've been becoming so fed up with this, that there is #312 which removes cppzmq as dependency (not the root cause btw), and #276 (for doing a correct build of the library). |
|
... it actually seems like I don't have cppmq installed? No output when I run |
|
I'll just install it manually. God knows on what outdated env file I created this environment. |
|
Uuughh. Time for a completely new environment from scratch? (catkit2) maintenances-MacBook-Pro-6:catkit2 ilaginja$ pip install -e .
Obtaining file:///Users/ilaginja/repos/catkit2
Installing build dependencies ... done
Checking if build backend supports build_editable ... done
Getting requirements to build editable ... done
Installing backend dependencies ... done
Preparing editable metadata (pyproject.toml) ... done
Building wheels for collected packages: catkit2
Building editable for catkit2 (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building editable for catkit2 (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [37 lines of output]
2025-05-07 09:42:40,744 - scikit_build_core - INFO - RUN: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/cmake -E capabilities
2025-05-07 09:42:40,772 - scikit_build_core - INFO - CMake version: 3.29.4
*** scikit-build-core 0.11.2 using CMake 3.29.4 (editable)
2025-05-07 09:42:40,820 - scikit_build_core - INFO - Build directory: /private/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmpbgzqkwlc/build
*** Configuring CMake...
2025-05-07 09:42:40,855 - scikit_build_core - INFO - RUN: ninja --version
2025-05-07 09:42:41,118 - scikit_build_core - INFO - Ninja version: 1.11.1
2025-05-07 09:42:41,120 - scikit_build_core - INFO - RUN: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/cmake -S. -B/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmpbgzqkwlc/build -DCMAKE_BUILD_TYPE:STRING=Release -C/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmpbgzqkwlc/build/CMakeInit.txt -DCMAKE_INSTALL_PREFIX=/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmpbgzqkwlc/wheel/platlib -DCMAKE_MAKE_PROGRAM=ninja
loading initial cache file /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmpbgzqkwlc/build/CMakeInit.txt
-- The C compiler identification is AppleClang 13.0.0.13000027
-- The CXX compiler identification is AppleClang 13.0.0.13000027
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at catkit_core/CMakeLists.txt:45 (find_package):
Could not find a package configuration file provided by "Eigen3" with any
of the following names:
Eigen3Config.cmake
eigen3-config.cmake
Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
"Eigen3_DIR" to a directory containing one of the above files. If "Eigen3"
provides a separate development package or SDK, be sure it has been
installed.
-- Configuring incomplete, errors occurred!
*** CMake configuration failed
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building editable for catkit2
Failed to build catkit2
ERROR: Could not build wheels for catkit2, which is required to install pyproject.toml-based projects
(catkit2) maintenances-MacBook-Pro-6:catkit2 ilaginja$ |
|
@ehpor I really don't know what I am doing wrong. I ran (catkit2) maintenances-MacBook-Pro-6:catkit2 ilaginja$ pip install -e .
Obtaining file:///Users/ilaginja/repos/catkit2
Installing build dependencies ... done
Checking if build backend supports build_editable ... done
Getting requirements to build editable ... done
Installing backend dependencies ... done
Preparing editable metadata (pyproject.toml) ... done
Building wheels for collected packages: catkit2
Building editable for catkit2 (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building editable for catkit2 (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [94 lines of output]
2025-05-07 09:49:08,924 - scikit_build_core - INFO - RUN: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/cmake -E capabilities
2025-05-07 09:49:08,975 - scikit_build_core - INFO - CMake version: 3.27.4
*** scikit-build-core 0.10.7 using CMake 3.27.4 (editable)
2025-05-07 09:49:09,068 - scikit_build_core - INFO - Build directory: /private/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build
*** Configuring CMake...
2025-05-07 09:49:09,130 - scikit_build_core - INFO - RUN: ninja --version
2025-05-07 09:49:09,380 - scikit_build_core - INFO - Ninja version: 1.11.1
2025-05-07 09:49:09,384 - scikit_build_core - INFO - RUN: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/cmake -S. -B/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build -DCMAKE_BUILD_TYPE:STRING=Release -C/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/CMakeInit.txt -DCMAKE_INSTALL_PREFIX=/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/wheel/platlib -DCMAKE_MAKE_PROGRAM=ninja
loading initial cache file /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/CMakeInit.txt
-- The C compiler identification is AppleClang 13.0.0.13000027
-- The CXX compiler identification is AppleClang 13.0.0.13000027
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found nlohmann_json: /Users/ilaginja/opt/miniconda3/envs/catkit2/lib/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.9.1")
-- Found Protobuf: /Users/ilaginja/opt/miniconda3/envs/catkit2/lib/libprotobuf.dylib (found version "3.20.3")
CMake Warning (dev) at /Users/ilaginja/opt/miniconda3/envs/catkit2/lib/python3.7/site-packages/pybind11/share/cmake/pybind11/FindPythonLibsNew.cmake:101 (message):
Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules
are removed. Run "cmake --help-policy CMP0148" for policy details. Use
the cmake_policy command to set the policy and suppress this warning, or
preferably upgrade to using FindPython, either by calling it explicitly
before pybind11, or by setting PYBIND11_FINDPYTHON ON before pybind11.
Call Stack (most recent call first):
/Users/ilaginja/opt/miniconda3/envs/catkit2/lib/python3.7/site-packages/pybind11/share/cmake/pybind11/pybind11Tools.cmake:50 (find_package)
/Users/ilaginja/opt/miniconda3/envs/catkit2/lib/python3.7/site-packages/pybind11/share/cmake/pybind11/pybind11Common.cmake:228 (include)
/Users/ilaginja/opt/miniconda3/envs/catkit2/lib/python3.7/site-packages/pybind11/share/cmake/pybind11/pybind11Config.cmake:250 (include)
catkit2/CMakeLists.txt:10 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Found PythonInterp: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/python3.7 (found suitable version "3.7.16", minimum required is "3.7")
-- Found PythonLibs: /Users/ilaginja/opt/miniconda3/envs/catkit2/lib/libpython3.7m.dylib
-- Performing Test HAS_FLTO_THIN
-- Performing Test HAS_FLTO_THIN - Success
-- Found pybind11: /Users/ilaginja/opt/miniconda3/envs/catkit2/lib/python3.7/site-packages/pybind11/include (found version "2.13.6")
-- Found nlohmann_json: /Users/ilaginja/opt/miniconda3/envs/catkit2/lib/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found suitable version "3.9.1", minimum required is "3.2.0")
-- Configuring done (4.4s)
-- Generating done (0.1s)
-- Build files have been written to: /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build
*** Building project with Ninja...
2025-05-07 09:49:13,954 - scikit_build_core - INFO - RUN: /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/cmake --build /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build -v
Change Dir: '/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build'
Run Build Command(s): ninja -v
[1/61] cd /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit2 && /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/protoc --proto_path=/Users/ilaginja/repos/catkit2/catkit2/../proto/ --python_out=/Users/ilaginja/repos/catkit2/catkit2/./proto/ /Users/ilaginja/repos/catkit2/catkit2/../proto/core.proto /Users/ilaginja/repos/catkit2/catkit2/../proto/logging.proto /Users/ilaginja/repos/catkit2/catkit2/../proto/service.proto /Users/ilaginja/repos/catkit2/catkit2/../proto/testbed.proto /Users/ilaginja/repos/catkit2/catkit2/../proto/tracing.proto
[2/61] cd /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core && /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/protoc --cpp_out /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen/ -I /Users/ilaginja/repos/catkit2/catkit_core -I /Users/ilaginja/repos/catkit2/proto /Users/ilaginja/repos/catkit2/proto/core.proto
[3/61] cd /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core && /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/protoc --cpp_out /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen/ -I /Users/ilaginja/repos/catkit2/catkit_core -I /Users/ilaginja/repos/catkit2/proto /Users/ilaginja/repos/catkit2/proto/service.proto
[4/61] cd /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core && /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/protoc --cpp_out /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen/ -I /Users/ilaginja/repos/catkit2/catkit_core -I /Users/ilaginja/repos/catkit2/proto /Users/ilaginja/repos/catkit2/proto/tracing.proto
[5/61] cd /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core && /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/protoc --cpp_out /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen/ -I /Users/ilaginja/repos/catkit2/catkit_core -I /Users/ilaginja/repos/catkit2/proto /Users/ilaginja/repos/catkit2/proto/logging.proto
[6/61] cd /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core && /Users/ilaginja/opt/miniconda3/envs/catkit2/bin/protoc --cpp_out /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen/ -I /Users/ilaginja/repos/catkit2/catkit_core -I /Users/ilaginja/repos/catkit2/proto /Users/ilaginja/repos/catkit2/proto/testbed.proto
[7/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/LocalMemory.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/LocalMemory.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/LocalMemory.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/LocalMemory.cpp
[8/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/HostName.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/HostName.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/HostName.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/HostName.cpp
[9/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/BuddyAllocator.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/BuddyAllocator.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/BuddyAllocator.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/BuddyAllocator.cpp
[10/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Log.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Log.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Log.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Log.cpp
[11/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Event.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Event.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Event.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Event.cpp
[12/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/HybridPoolAllocator.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/HybridPoolAllocator.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/HybridPoolAllocator.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/HybridPoolAllocator.cpp
[13/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/HashMap.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/HashMap.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/HashMap.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/HashMap.cpp
[14/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/LogConsole.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/LogConsole.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/LogConsole.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/LogConsole.cpp
[15/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/PoolAllocator.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/PoolAllocator.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/PoolAllocator.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/PoolAllocator.cpp
[16/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/LogFile.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/LogFile.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/LogFile.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/LogFile.cpp
[17/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Client.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Client.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Client.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Client.cpp
[18/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Command.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Command.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Command.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Command.cpp
[19/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/ServiceState.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/ServiceState.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/ServiceState.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/ServiceState.cpp
[20/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/SharedMemory.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/SharedMemory.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/SharedMemory.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/SharedMemory.cpp
[21/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/DataStream.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/DataStream.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/DataStream.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/DataStream.cpp
[22/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Server.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Server.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Server.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Server.cpp
[23/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Property.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Property.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Property.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Property.cpp
[24/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Timing.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Timing.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Timing.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Timing.cpp
[25/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Shareable.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Shareable.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Shareable.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Shareable.cpp
[26/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/MessageBroker.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/MessageBroker.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/MessageBroker.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/MessageBroker.cpp
[27/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/proto/core.pb.cc.o -MF catkit_core/CMakeFiles/catkit_core.dir/proto/core.pb.cc.o.d -o catkit_core/CMakeFiles/catkit_core.dir/proto/core.pb.cc.o -c /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/proto/core.pb.cc
FAILED: catkit_core/CMakeFiles/catkit_core.dir/proto/core.pb.cc.o
/Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/proto/core.pb.cc.o -MF catkit_core/CMakeFiles/catkit_core.dir/proto/core.pb.cc.o.d -o catkit_core/CMakeFiles/catkit_core.dir/proto/core.pb.cc.o -c /var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/proto/core.pb.cc
clang: error: no such file or directory: '/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/proto/core.pb.cc'
clang: error: no input files
[28/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Util.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Util.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Util.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Util.cpp
[29/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/LogForwarder.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/LogForwarder.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/LogForwarder.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/LogForwarder.cpp
[30/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Tensor.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Tensor.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Tensor.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Tensor.cpp
[31/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Uuid.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Uuid.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Uuid.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Uuid.cpp
[32/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Tracing.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Tracing.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Tracing.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Tracing.cpp
[33/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/ServiceProxy.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/ServiceProxy.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/ServiceProxy.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/ServiceProxy.cpp
[34/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Types.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Types.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Types.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Types.cpp
[35/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/Service.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/Service.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/Service.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/Service.cpp
[36/61] /Library/Developer/CommandLineTools/usr/bin/g++ -DPROTOBUF_USE_DLLS -I/var/folders/28/w2xb9gbd7_g3wxh48m73qv840000gp/T/tmp0xk3ekoc/build/catkit_core/gen -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include -isystem /Users/ilaginja/opt/miniconda3/envs/catkit2/include/eigen3 -O3 -DNDEBUG -std=gnu++17 -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk -fPIC -g -MD -MT catkit_core/CMakeFiles/catkit_core.dir/TestbedProxy.cpp.o -MF catkit_core/CMakeFiles/catkit_core.dir/TestbedProxy.cpp.o.d -o catkit_core/CMakeFiles/catkit_core.dir/TestbedProxy.cpp.o -c /Users/ilaginja/repos/catkit2/catkit_core/TestbedProxy.cpp
ninja: build stopped: subcommand failed.
*** CMake build failed
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building editable for catkit2
Failed to build catkit2
ERROR: Could not build wheels for catkit2, which is required to install pyproject.toml-based projects |
|
@ivalaginja That looks like the same error that @brynickson had during the hackathon. I don't remember how she fixed that or what the problem was. I do remember if felt like magic. |
|
And yes, protobuf is also something that I intend to rip out after the message broker transition. We will not need it anymore after that. |
@raphaelpclt @brynickson any pointers on how this was fixed? |
@ehpor I am now told by @raphaelpclt that you were actually working through this with @brynickson, who is currently out of office ^^ |
From what I remember it was a compiling tools issue - a package needing to be updated. Maybe cmake? |
|
Ha. @raphaelpclt and I found a solution: upgrade cmake manually to version 3.31.2 Installation worked now. Tests tbd. |
ivalaginja
left a comment
There was a problem hiding this comment.
The python test code makes sense to me, and the tests pass on my MacOs 12.2. Note that I run a conda environment with Python 3.9.12 (THD2 default) and I had to upgrade cmake to 3.31.2.
If you could still answer my last question that'd be great, but that's just for my own understanding anyway.
I guess we better hold off of merging until we get more reviews in?
|
Yep, forgot to show my testing:
There are two PRs open (#310 & #311), which reference this one, that make improvements / bugfixes. And a third one on the way working on network communications between message brokers (introducing a ShardedMessageBroker class). |
|
@ehpor btw, does this PR require rewriting some of the catkit2 docs? Or does this touch all our unwritten docs only? ^^ |
|
Only touches the unwritten part of the docs 😭 |
|
Merging at the end of today @RemiSoummer, unless you have objections. |
|
@ehpor I haven't had a chance to even start looking at it, so go ahead if you need to merge it. |

This PR adds a
MessageBrokerclass for distributing arbitrary-sized messages. Messages are put in shared memory, either CPU or GPU shared memory (the latter not implemented), and can be distributed between processes.A
Messagecontains:boston_dm/correction_howfs/valueorboston_dm/correction_howfs/set, which follows a hierarchical naming convention.The
MessageBrokerallows us to listen to new messages at any level in the hierarchical structure. This means that we can listen to either a single message topic or many message topics at the same time. TheMessageBrokeralso allows us to send messages with any topic.Relies on #289.