From e86f397118860bd0b31809f8283756905e9518b3 Mon Sep 17 00:00:00 2001 From: Nick Codignotto Date: Fri, 7 Jan 2022 14:41:14 +0000 Subject: [PATCH 1/3] initial (not working) --- WORKSPACE | 27 ++++- actor/BUILD | 15 +++ actor/actor.cpp | 5 + caf.BUILD | 305 +++++++++++++++++++++++++++++++++++++++++++++++ util/BUILD | 10 ++ util/scratch.cpp | 15 +++ 6 files changed, 375 insertions(+), 2 deletions(-) create mode 100644 actor/BUILD create mode 100644 actor/actor.cpp create mode 100644 caf.BUILD create mode 100644 util/scratch.cpp diff --git a/WORKSPACE b/WORKSPACE index 35b8c62..627f93b 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,4 +1,5 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_repository") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") git_repository( name = "googletest", @@ -15,6 +16,28 @@ new_local_repository( new_git_repository( name = "fmt", remote = "https://github.com/fmtlib/fmt", - branch = "master", + commit = "6884aab49b1b7fc6dcba1e27999f1aced0b888be", + shallow_since = "1641501513 -0800", build_file = "//:fmt.BUILD", -) \ No newline at end of file +) + +# new_git_repository( +# name = "org_actor_framework_caf", +# remote = "https://github.com/actor-framework/actor-framework", +# commit = "c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a", +# shallow_since = "1626427996 +0200", +# build_file = "//:caf.BUILD", +# ) + +http_archive( + name = "org_actor_framework_caf", + build_file = "//:caf.BUILD", + url = "https://github.com/actor-framework/actor-framework/archive/c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a.zip", +) + +git_repository( + name = "boringssl", + remote = "https://boringssl.googlesource.com/boringssl", + commit = "5416e4f16bffdc24e71e84d6e3977eed73c6f6b3", + shallow_since = "1641415239 +0000" +) diff --git a/actor/BUILD b/actor/BUILD new file mode 100644 index 0000000..ad6c2aa --- /dev/null +++ b/actor/BUILD @@ -0,0 +1,15 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary") +load("@//:global_copts.bzl", "global_copts") + +package(features = ["-default_compile_flags"]) + +cc_binary( + name = "actor", + srcs = ["actor.cpp"], + copts = global_copts(), + deps = [ + "@org_actor_framework_caf", + "@fmt//:main", + "@ncurses//:main", + ], +) diff --git a/actor/actor.cpp b/actor/actor.cpp new file mode 100644 index 0000000..62dd6fa --- /dev/null +++ b/actor/actor.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + std::cout << "Hello, world!" << std::endl; +} \ No newline at end of file diff --git a/caf.BUILD b/caf.BUILD new file mode 100644 index 0000000..cee3526 --- /dev/null +++ b/caf.BUILD @@ -0,0 +1,305 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") + +licenses(["notice"]) # BSD + +exports_files(["LICENSE"]) + +alias( + name = "org_actor_framework_caf", + actual = ":caf", + visibility = ["//visibility:public"], +) + +cc_binary( + name = "caf_run", + srcs = [ + "tools/caf-run.cpp", + ], + visibility = ["//visibility:public"], + deps = [ + ":caf_core", + ":caf_io", + ], +) + +cc_binary( + name = "caf_vec", + srcs = [ + "tools/caf-vec.cpp", + ], + visibility = ["//visibility:public"], + deps = [ + ":caf_core", + ], +) + +cc_library( + name = "caf", + includes = [ + ".", + "libcaf_core", + "libcaf_io", + "libcaf_openssl", + ], + linkstatic = True, + deps = [ + ":caf_core", + ":caf_io", + ":caf_openssl", + ], +) + +cc_library( + name = "caf_core", + srcs = [ + "libcaf_core/src/abstract_actor.cpp", + "libcaf_core/src/abstract_channel.cpp", + "libcaf_core/src/abstract_group.cpp", + "libcaf_core/src/actor.cpp", + "libcaf_core/src/actor_addr.cpp", + "libcaf_core/src/actor_clock.cpp", + "libcaf_core/src/actor_companion.cpp", + "libcaf_core/src/actor_config.cpp", + "libcaf_core/src/actor_control_block.cpp", + "libcaf_core/src/actor_ostream.cpp", + "libcaf_core/src/actor_pool.cpp", + "libcaf_core/src/actor_profiler.cpp", + "libcaf_core/src/actor_proxy.cpp", + "libcaf_core/src/actor_registry.cpp", + "libcaf_core/src/actor_system.cpp", + "libcaf_core/src/actor_system_config.cpp", + "libcaf_core/src/attachable.cpp", + "libcaf_core/src/behavior.cpp", + "libcaf_core/src/binary_deserializer.cpp", + "libcaf_core/src/binary_serializer.cpp", + "libcaf_core/src/blocking_actor.cpp", + "libcaf_core/src/complexity_based_credit_controller.cpp", + "libcaf_core/src/config_option.cpp", + "libcaf_core/src/config_option_adder.cpp", + "libcaf_core/src/config_option_set.cpp", + "libcaf_core/src/config_value.cpp", + "libcaf_core/src/credit_controller.cpp", + "libcaf_core/src/decorator/sequencer.cpp", + "libcaf_core/src/default_attachable.cpp", + "libcaf_core/src/deserializer.cpp", + "libcaf_core/src/detail/abstract_worker.cpp", + "libcaf_core/src/detail/abstract_worker_hub.cpp", + "libcaf_core/src/detail/append_percent_encoded.cpp", + "libcaf_core/src/detail/behavior_impl.cpp", + "libcaf_core/src/detail/behavior_stack.cpp", + "libcaf_core/src/detail/blocking_behavior.cpp", + "libcaf_core/src/detail/config_consumer.cpp", + "libcaf_core/src/detail/get_mac_addresses.cpp", + "libcaf_core/src/detail/get_process_id.cpp", + "libcaf_core/src/detail/get_root_uuid.cpp", + "libcaf_core/src/detail/glob_match.cpp", + "libcaf_core/src/detail/invoke_result_visitor.cpp", + "libcaf_core/src/detail/message_builder_element.cpp", + "libcaf_core/src/detail/message_data.cpp", + "libcaf_core/src/detail/meta_object.cpp", + "libcaf_core/src/detail/parse.cpp", + "libcaf_core/src/detail/parser/chars.cpp", + "libcaf_core/src/detail/pretty_type_name.cpp", + "libcaf_core/src/detail/private_thread.cpp", + "libcaf_core/src/detail/ripemd_160.cpp", + "libcaf_core/src/detail/serialized_size.cpp", + "libcaf_core/src/detail/set_thread_name.cpp", + "libcaf_core/src/detail/shared_spinlock.cpp", + "libcaf_core/src/detail/simple_actor_clock.cpp", + "libcaf_core/src/detail/stringification_inspector.cpp", + "libcaf_core/src/detail/sync_request_bouncer.cpp", + "libcaf_core/src/detail/test_actor_clock.cpp", + "libcaf_core/src/detail/thread_safe_actor_clock.cpp", + "libcaf_core/src/detail/tick_emitter.cpp", + "libcaf_core/src/detail/type_id_list_builder.cpp", + "libcaf_core/src/detail/uri_impl.cpp", + "libcaf_core/src/downstream_manager.cpp", + "libcaf_core/src/downstream_manager_base.cpp", + "libcaf_core/src/error.cpp", + "libcaf_core/src/event_based_actor.cpp", + "libcaf_core/src/execution_unit.cpp", + "libcaf_core/src/exit_reason_strings.cpp", + "libcaf_core/src/forwarding_actor_proxy.cpp", + "libcaf_core/src/group.cpp", + "libcaf_core/src/group_manager.cpp", + "libcaf_core/src/group_module.cpp", + "libcaf_core/src/inbound_path.cpp", + "libcaf_core/src/init_global_meta_objects.cpp", + "libcaf_core/src/intrusive/inbox_result_strings.cpp", + "libcaf_core/src/intrusive/task_result_strings.cpp", + "libcaf_core/src/invoke_msg_result_strings.cpp", + "libcaf_core/src/ipv4_address.cpp", + "libcaf_core/src/ipv4_endpoint.cpp", + "libcaf_core/src/ipv4_subnet.cpp", + "libcaf_core/src/ipv6_address.cpp", + "libcaf_core/src/ipv6_endpoint.cpp", + "libcaf_core/src/ipv6_subnet.cpp", + "libcaf_core/src/local_actor.cpp", + "libcaf_core/src/logger.cpp", + "libcaf_core/src/mailbox_element.cpp", + "libcaf_core/src/make_config_option.cpp", + "libcaf_core/src/memory_managed.cpp", + "libcaf_core/src/message.cpp", + "libcaf_core/src/message_builder.cpp", + "libcaf_core/src/message_handler.cpp", + "libcaf_core/src/message_priority_strings.cpp", + "libcaf_core/src/monitorable_actor.cpp", + "libcaf_core/src/node_id.cpp", + "libcaf_core/src/outbound_path.cpp", + "libcaf_core/src/pec_strings.cpp", + "libcaf_core/src/policy/downstream_messages.cpp", + "libcaf_core/src/policy/unprofiled.cpp", + "libcaf_core/src/policy/work_sharing.cpp", + "libcaf_core/src/policy/work_stealing.cpp", + "libcaf_core/src/proxy_registry.cpp", + "libcaf_core/src/raise_error.cpp", + "libcaf_core/src/ref_counted.cpp", + "libcaf_core/src/replies_to.cpp", + "libcaf_core/src/response_promise.cpp", + "libcaf_core/src/resumable.cpp", + "libcaf_core/src/scheduled_actor.cpp", + "libcaf_core/src/scheduler/abstract_coordinator.cpp", + "libcaf_core/src/scheduler/test_coordinator.cpp", + "libcaf_core/src/scoped_actor.cpp", + "libcaf_core/src/scoped_execution_unit.cpp", + "libcaf_core/src/sec_strings.cpp", + "libcaf_core/src/serializer.cpp", + "libcaf_core/src/settings.cpp", + "libcaf_core/src/size_based_credit_controller.cpp", + "libcaf_core/src/skip.cpp", + "libcaf_core/src/stream_aborter.cpp", + "libcaf_core/src/stream_manager.cpp", + "libcaf_core/src/stream_priority_strings.cpp", + "libcaf_core/src/string_algorithms.cpp", + "libcaf_core/src/string_view.cpp", + "libcaf_core/src/telemetry/collector/prometheus.cpp", + "libcaf_core/src/telemetry/label.cpp", + "libcaf_core/src/telemetry/label_view.cpp", + "libcaf_core/src/telemetry/metric.cpp", + "libcaf_core/src/telemetry/metric_family.cpp", + "libcaf_core/src/telemetry/metric_registry.cpp", + "libcaf_core/src/term.cpp", + "libcaf_core/src/test_credit_controller.cpp", + "libcaf_core/src/thread_hook.cpp", + "libcaf_core/src/timestamp.cpp", + "libcaf_core/src/tracing_data.cpp", + "libcaf_core/src/tracing_data_factory.cpp", + "libcaf_core/src/type_id_list.cpp", + "libcaf_core/src/uri.cpp", + "libcaf_core/src/uri_builder.cpp", + "libcaf_core/src/uuid.cpp", + ], + hdrs = glob([ + "libcaf_core/caf/**/*.hpp", + ]) + [ + "caf/detail/build_config.hpp", + "caf/detail/core_export.hpp", + ], + includes = [ + ".", + "libcaf_core", + ], + linkopts = [ + "-pthread", + ], + linkstatic = True, + visibility = ["//visibility:public"], +) + +cc_library( + name = "caf_io", + srcs = [ + "libcaf_io/src/detail/prometheus_broker.cpp", + "libcaf_io/src/detail/socket_guard.cpp", + "libcaf_io/src/io/abstract_broker.cpp", + "libcaf_io/src/io/basp/header.cpp", + "libcaf_io/src/io/basp/instance.cpp", + "libcaf_io/src/io/basp/message_queue.cpp", + "libcaf_io/src/io/basp/message_type_strings.cpp", + "libcaf_io/src/io/basp/routing_table.cpp", + "libcaf_io/src/io/basp/worker.cpp", + "libcaf_io/src/io/basp_broker.cpp", + "libcaf_io/src/io/broker.cpp", + "libcaf_io/src/io/connection_helper.cpp", + "libcaf_io/src/io/datagram_servant.cpp", + "libcaf_io/src/io/doorman.cpp", + "libcaf_io/src/io/middleman.cpp", + "libcaf_io/src/io/middleman_actor.cpp", + "libcaf_io/src/io/middleman_actor_impl.cpp", + "libcaf_io/src/io/network/acceptor.cpp", + "libcaf_io/src/io/network/acceptor_manager.cpp", + "libcaf_io/src/io/network/datagram_handler.cpp", + "libcaf_io/src/io/network/datagram_manager.cpp", + "libcaf_io/src/io/network/datagram_servant_impl.cpp", + "libcaf_io/src/io/network/default_multiplexer.cpp", + "libcaf_io/src/io/network/doorman_impl.cpp", + "libcaf_io/src/io/network/event_handler.cpp", + "libcaf_io/src/io/network/interfaces.cpp", + "libcaf_io/src/io/network/ip_endpoint.cpp", + "libcaf_io/src/io/network/manager.cpp", + "libcaf_io/src/io/network/multiplexer.cpp", + "libcaf_io/src/io/network/native_socket.cpp", + "libcaf_io/src/io/network/operation_strings.cpp", + "libcaf_io/src/io/network/pipe_reader.cpp", + "libcaf_io/src/io/network/protocol.cpp", + "libcaf_io/src/io/network/receive_buffer.cpp", + "libcaf_io/src/io/network/scribe_impl.cpp", + "libcaf_io/src/io/network/stream.cpp", + "libcaf_io/src/io/network/stream_manager.cpp", + "libcaf_io/src/io/network/test_multiplexer.cpp", + "libcaf_io/src/io/scribe.cpp", + "libcaf_io/src/policy/tcp.cpp", + "libcaf_io/src/policy/udp.cpp", + ], + hdrs = glob([ + "libcaf_io/caf/**/*.hpp", + ]) + [ + "caf/detail/build_config.hpp", + "caf/detail/io_export.hpp", + ], + includes = [ + ".", + "libcaf_io", + ], + linkopts = [ + "-pthread", + ], + linkstatic = True, + visibility = ["//visibility:public"], + deps = [ + ":caf_core", + ], +) + +cc_library( + name = "caf_openssl", + srcs = [ + "libcaf_openssl/src/openssl/manager.cpp", + "libcaf_openssl/src/openssl/middleman_actor.cpp", + "libcaf_openssl/src/openssl/publish.cpp", + "libcaf_openssl/src/openssl/remote_actor.cpp", + "libcaf_openssl/src/openssl/session.cpp", + ], + hdrs = glob([ + "libcaf_openssl/caf/**/*.hpp", + ]) + [ + "caf/detail/build_config.hpp", + "caf/detail/openssl_export.hpp", + ], + includes = [ + ".", + "libcaf_openssl", + ], + linkopts = [ + "-pthread", + ], + linkstatic = True, + visibility = ["//visibility:public"], + deps = [ + ":caf_core", + ":caf_io", + #"@openssl", + "@boringssl//:ssl", + "@boringssl//:crypto", + ], +) \ No newline at end of file diff --git a/util/BUILD b/util/BUILD index 82edb1e..9918682 100644 --- a/util/BUILD +++ b/util/BUILD @@ -12,3 +12,13 @@ cc_binary( "@ncurses//:main", ], ) + +cc_binary( + name = "scratch", + srcs = ["scratch.cpp"], + copts = global_copts(), + deps = [ + "@fmt//:main", + "@ncurses//:main", + ], +) diff --git a/util/scratch.cpp b/util/scratch.cpp new file mode 100644 index 0000000..e2f87e5 --- /dev/null +++ b/util/scratch.cpp @@ -0,0 +1,15 @@ +#include "include/fmt/format.h" +#include "include/fmt/printf.h" + +#include + +int main(int /*argc*/, char** /*argv*/) { + + std::unique_ptr pint = std::make_unique(); + std::shared_ptr spint = std::move(pint); + *spint = 10; + + fmt::printf("Value is %d\n", *spint); + + return 0; +} \ No newline at end of file From 250ad7bad531de41abc541f25fb02da91821bc00 Mon Sep 17 00:00:00 2001 From: Nick Codignotto Date: Sat, 8 Jan 2022 20:38:57 +0000 Subject: [PATCH 2/3] caf in docker image --- .devcontainer/Dockerfile | 10 ++ .devcontainer/devcontainer.json | 3 +- WORKSPACE | 24 +-- actor/BUILD | 2 +- actor/actor.cpp | 46 ++++- caf.BUILD | 307 +------------------------------- 6 files changed, 69 insertions(+), 323 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a4551db..0215df8 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -11,6 +11,7 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ ca-certificates \ curl \ gnupg2 \ + libssl-dev \ vim \ software-properties-common \ graphviz xdot \ @@ -33,6 +34,15 @@ RUN curl -L -O https://github.com/bazelbuild/buildtools/releases/download/3.5.0/ && chmod +x buildifier \ && mv buildifier /usr/local/bin +RUN curl -L -O https://github.com/actor-framework/actor-framework/archive/c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a.zip \ + && unzip -d caf c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a.zip \ + && cd caf/actor-framework-c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a/ \ + && ./configure \ + && cd build \ + && make \ + && make install \ + && cd ../../.. \ + && rm -rf caf RUN locale-gen en_US.UTF-8 ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9b92ed3..eb040bc 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -38,5 +38,6 @@ // "postCreateCommand": "gcc -v", // Comment out this line to run as root instead. - "remoteUser": "vscode" + "remoteUser": "vscode", + } diff --git a/WORKSPACE b/WORKSPACE index 627f93b..00c8ed3 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -21,23 +21,9 @@ new_git_repository( build_file = "//:fmt.BUILD", ) -# new_git_repository( -# name = "org_actor_framework_caf", -# remote = "https://github.com/actor-framework/actor-framework", -# commit = "c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a", -# shallow_since = "1626427996 +0200", -# build_file = "//:caf.BUILD", -# ) - -http_archive( - name = "org_actor_framework_caf", - build_file = "//:caf.BUILD", - url = "https://github.com/actor-framework/actor-framework/archive/c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a.zip", -) +new_local_repository( + name = "caf", + path = "/usr/local", + build_file = "caf.BUILD", -git_repository( - name = "boringssl", - remote = "https://boringssl.googlesource.com/boringssl", - commit = "5416e4f16bffdc24e71e84d6e3977eed73c6f6b3", - shallow_since = "1641415239 +0000" -) +) \ No newline at end of file diff --git a/actor/BUILD b/actor/BUILD index ad6c2aa..d1f97aa 100644 --- a/actor/BUILD +++ b/actor/BUILD @@ -8,7 +8,7 @@ cc_binary( srcs = ["actor.cpp"], copts = global_copts(), deps = [ - "@org_actor_framework_caf", + "@caf//:main", "@fmt//:main", "@ncurses//:main", ], diff --git a/actor/actor.cpp b/actor/actor.cpp index 62dd6fa..89260e2 100644 --- a/actor/actor.cpp +++ b/actor/actor.cpp @@ -1,5 +1,45 @@ +#include #include -int main() { - std::cout << "Hello, world!" << std::endl; -} \ No newline at end of file +#include "caf/actor_ostream.hpp" +#include "caf/actor_system.hpp" +#include "caf/caf_main.hpp" +#include "caf/event_based_actor.hpp" + +using namespace caf; + +behavior mirror(event_based_actor* self) { + // return the (initial) actor behavior + return { + // a handler for messages containing a single string + // that replies with a string + [=](const std::string& what) -> std::string { + // prints "Hello World!" via aout (thread-safe cout wrapper) + aout(self) << what << std::endl; + // reply "!dlroW olleH" + return std::string{what.rbegin(), what.rend()}; + }, + }; +} + +void hello_world(event_based_actor* self, const actor& buddy) { + // send "Hello World!" to our buddy ... + self->request(buddy, std::chrono::seconds(10), "Hello World!") + .then( + // ... wait up to 10s for a response ... + [=](const std::string& what) { + // ... and print it + aout(self) << what << std::endl; + }); +} + +void caf_main(actor_system& sys) { + // create a new actor that calls 'mirror()' + auto mirror_actor = sys.spawn(mirror); + // create another actor that calls 'hello_world(mirror_actor)'; + sys.spawn(hello_world, mirror_actor); + // the system will wait until both actors are done before exiting the program +} + +// creates a main function for us that calls our caf_main +CAF_MAIN() \ No newline at end of file diff --git a/caf.BUILD b/caf.BUILD index cee3526..92b7305 100644 --- a/caf.BUILD +++ b/caf.BUILD @@ -1,305 +1,14 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") - -licenses(["notice"]) # BSD - -exports_files(["LICENSE"]) - -alias( - name = "org_actor_framework_caf", - actual = ":caf", - visibility = ["//visibility:public"], -) - -cc_binary( - name = "caf_run", - srcs = [ - "tools/caf-run.cpp", - ], - visibility = ["//visibility:public"], - deps = [ - ":caf_core", - ":caf_io", - ], -) - -cc_binary( - name = "caf_vec", - srcs = [ - "tools/caf-vec.cpp", - ], - visibility = ["//visibility:public"], - deps = [ - ":caf_core", - ], -) - -cc_library( - name = "caf", - includes = [ - ".", - "libcaf_core", - "libcaf_io", - "libcaf_openssl", - ], - linkstatic = True, - deps = [ - ":caf_core", - ":caf_io", - ":caf_openssl", - ], -) +load("@rules_cc//cc:defs.bzl", "cc_library") cc_library( - name = "caf_core", + name = "main", srcs = [ - "libcaf_core/src/abstract_actor.cpp", - "libcaf_core/src/abstract_channel.cpp", - "libcaf_core/src/abstract_group.cpp", - "libcaf_core/src/actor.cpp", - "libcaf_core/src/actor_addr.cpp", - "libcaf_core/src/actor_clock.cpp", - "libcaf_core/src/actor_companion.cpp", - "libcaf_core/src/actor_config.cpp", - "libcaf_core/src/actor_control_block.cpp", - "libcaf_core/src/actor_ostream.cpp", - "libcaf_core/src/actor_pool.cpp", - "libcaf_core/src/actor_profiler.cpp", - "libcaf_core/src/actor_proxy.cpp", - "libcaf_core/src/actor_registry.cpp", - "libcaf_core/src/actor_system.cpp", - "libcaf_core/src/actor_system_config.cpp", - "libcaf_core/src/attachable.cpp", - "libcaf_core/src/behavior.cpp", - "libcaf_core/src/binary_deserializer.cpp", - "libcaf_core/src/binary_serializer.cpp", - "libcaf_core/src/blocking_actor.cpp", - "libcaf_core/src/complexity_based_credit_controller.cpp", - "libcaf_core/src/config_option.cpp", - "libcaf_core/src/config_option_adder.cpp", - "libcaf_core/src/config_option_set.cpp", - "libcaf_core/src/config_value.cpp", - "libcaf_core/src/credit_controller.cpp", - "libcaf_core/src/decorator/sequencer.cpp", - "libcaf_core/src/default_attachable.cpp", - "libcaf_core/src/deserializer.cpp", - "libcaf_core/src/detail/abstract_worker.cpp", - "libcaf_core/src/detail/abstract_worker_hub.cpp", - "libcaf_core/src/detail/append_percent_encoded.cpp", - "libcaf_core/src/detail/behavior_impl.cpp", - "libcaf_core/src/detail/behavior_stack.cpp", - "libcaf_core/src/detail/blocking_behavior.cpp", - "libcaf_core/src/detail/config_consumer.cpp", - "libcaf_core/src/detail/get_mac_addresses.cpp", - "libcaf_core/src/detail/get_process_id.cpp", - "libcaf_core/src/detail/get_root_uuid.cpp", - "libcaf_core/src/detail/glob_match.cpp", - "libcaf_core/src/detail/invoke_result_visitor.cpp", - "libcaf_core/src/detail/message_builder_element.cpp", - "libcaf_core/src/detail/message_data.cpp", - "libcaf_core/src/detail/meta_object.cpp", - "libcaf_core/src/detail/parse.cpp", - "libcaf_core/src/detail/parser/chars.cpp", - "libcaf_core/src/detail/pretty_type_name.cpp", - "libcaf_core/src/detail/private_thread.cpp", - "libcaf_core/src/detail/ripemd_160.cpp", - "libcaf_core/src/detail/serialized_size.cpp", - "libcaf_core/src/detail/set_thread_name.cpp", - "libcaf_core/src/detail/shared_spinlock.cpp", - "libcaf_core/src/detail/simple_actor_clock.cpp", - "libcaf_core/src/detail/stringification_inspector.cpp", - "libcaf_core/src/detail/sync_request_bouncer.cpp", - "libcaf_core/src/detail/test_actor_clock.cpp", - "libcaf_core/src/detail/thread_safe_actor_clock.cpp", - "libcaf_core/src/detail/tick_emitter.cpp", - "libcaf_core/src/detail/type_id_list_builder.cpp", - "libcaf_core/src/detail/uri_impl.cpp", - "libcaf_core/src/downstream_manager.cpp", - "libcaf_core/src/downstream_manager_base.cpp", - "libcaf_core/src/error.cpp", - "libcaf_core/src/event_based_actor.cpp", - "libcaf_core/src/execution_unit.cpp", - "libcaf_core/src/exit_reason_strings.cpp", - "libcaf_core/src/forwarding_actor_proxy.cpp", - "libcaf_core/src/group.cpp", - "libcaf_core/src/group_manager.cpp", - "libcaf_core/src/group_module.cpp", - "libcaf_core/src/inbound_path.cpp", - "libcaf_core/src/init_global_meta_objects.cpp", - "libcaf_core/src/intrusive/inbox_result_strings.cpp", - "libcaf_core/src/intrusive/task_result_strings.cpp", - "libcaf_core/src/invoke_msg_result_strings.cpp", - "libcaf_core/src/ipv4_address.cpp", - "libcaf_core/src/ipv4_endpoint.cpp", - "libcaf_core/src/ipv4_subnet.cpp", - "libcaf_core/src/ipv6_address.cpp", - "libcaf_core/src/ipv6_endpoint.cpp", - "libcaf_core/src/ipv6_subnet.cpp", - "libcaf_core/src/local_actor.cpp", - "libcaf_core/src/logger.cpp", - "libcaf_core/src/mailbox_element.cpp", - "libcaf_core/src/make_config_option.cpp", - "libcaf_core/src/memory_managed.cpp", - "libcaf_core/src/message.cpp", - "libcaf_core/src/message_builder.cpp", - "libcaf_core/src/message_handler.cpp", - "libcaf_core/src/message_priority_strings.cpp", - "libcaf_core/src/monitorable_actor.cpp", - "libcaf_core/src/node_id.cpp", - "libcaf_core/src/outbound_path.cpp", - "libcaf_core/src/pec_strings.cpp", - "libcaf_core/src/policy/downstream_messages.cpp", - "libcaf_core/src/policy/unprofiled.cpp", - "libcaf_core/src/policy/work_sharing.cpp", - "libcaf_core/src/policy/work_stealing.cpp", - "libcaf_core/src/proxy_registry.cpp", - "libcaf_core/src/raise_error.cpp", - "libcaf_core/src/ref_counted.cpp", - "libcaf_core/src/replies_to.cpp", - "libcaf_core/src/response_promise.cpp", - "libcaf_core/src/resumable.cpp", - "libcaf_core/src/scheduled_actor.cpp", - "libcaf_core/src/scheduler/abstract_coordinator.cpp", - "libcaf_core/src/scheduler/test_coordinator.cpp", - "libcaf_core/src/scoped_actor.cpp", - "libcaf_core/src/scoped_execution_unit.cpp", - "libcaf_core/src/sec_strings.cpp", - "libcaf_core/src/serializer.cpp", - "libcaf_core/src/settings.cpp", - "libcaf_core/src/size_based_credit_controller.cpp", - "libcaf_core/src/skip.cpp", - "libcaf_core/src/stream_aborter.cpp", - "libcaf_core/src/stream_manager.cpp", - "libcaf_core/src/stream_priority_strings.cpp", - "libcaf_core/src/string_algorithms.cpp", - "libcaf_core/src/string_view.cpp", - "libcaf_core/src/telemetry/collector/prometheus.cpp", - "libcaf_core/src/telemetry/label.cpp", - "libcaf_core/src/telemetry/label_view.cpp", - "libcaf_core/src/telemetry/metric.cpp", - "libcaf_core/src/telemetry/metric_family.cpp", - "libcaf_core/src/telemetry/metric_registry.cpp", - "libcaf_core/src/term.cpp", - "libcaf_core/src/test_credit_controller.cpp", - "libcaf_core/src/thread_hook.cpp", - "libcaf_core/src/timestamp.cpp", - "libcaf_core/src/tracing_data.cpp", - "libcaf_core/src/tracing_data_factory.cpp", - "libcaf_core/src/type_id_list.cpp", - "libcaf_core/src/uri.cpp", - "libcaf_core/src/uri_builder.cpp", - "libcaf_core/src/uuid.cpp", - ], - hdrs = glob([ - "libcaf_core/caf/**/*.hpp", - ]) + [ - "caf/detail/build_config.hpp", - "caf/detail/core_export.hpp", - ], - includes = [ - ".", - "libcaf_core", + "lib/libcaf_openssl.so.0.18.5", + "lib/libcaf_io.so", + "lib/libcaf_openssl.so", + "lib/libcaf_io.so.0.18.5", + "lib/libcaf_core.so.0.18.5", + "lib/libcaf_core.so", ], - linkopts = [ - "-pthread", - ], - linkstatic = True, - visibility = ["//visibility:public"], -) - -cc_library( - name = "caf_io", - srcs = [ - "libcaf_io/src/detail/prometheus_broker.cpp", - "libcaf_io/src/detail/socket_guard.cpp", - "libcaf_io/src/io/abstract_broker.cpp", - "libcaf_io/src/io/basp/header.cpp", - "libcaf_io/src/io/basp/instance.cpp", - "libcaf_io/src/io/basp/message_queue.cpp", - "libcaf_io/src/io/basp/message_type_strings.cpp", - "libcaf_io/src/io/basp/routing_table.cpp", - "libcaf_io/src/io/basp/worker.cpp", - "libcaf_io/src/io/basp_broker.cpp", - "libcaf_io/src/io/broker.cpp", - "libcaf_io/src/io/connection_helper.cpp", - "libcaf_io/src/io/datagram_servant.cpp", - "libcaf_io/src/io/doorman.cpp", - "libcaf_io/src/io/middleman.cpp", - "libcaf_io/src/io/middleman_actor.cpp", - "libcaf_io/src/io/middleman_actor_impl.cpp", - "libcaf_io/src/io/network/acceptor.cpp", - "libcaf_io/src/io/network/acceptor_manager.cpp", - "libcaf_io/src/io/network/datagram_handler.cpp", - "libcaf_io/src/io/network/datagram_manager.cpp", - "libcaf_io/src/io/network/datagram_servant_impl.cpp", - "libcaf_io/src/io/network/default_multiplexer.cpp", - "libcaf_io/src/io/network/doorman_impl.cpp", - "libcaf_io/src/io/network/event_handler.cpp", - "libcaf_io/src/io/network/interfaces.cpp", - "libcaf_io/src/io/network/ip_endpoint.cpp", - "libcaf_io/src/io/network/manager.cpp", - "libcaf_io/src/io/network/multiplexer.cpp", - "libcaf_io/src/io/network/native_socket.cpp", - "libcaf_io/src/io/network/operation_strings.cpp", - "libcaf_io/src/io/network/pipe_reader.cpp", - "libcaf_io/src/io/network/protocol.cpp", - "libcaf_io/src/io/network/receive_buffer.cpp", - "libcaf_io/src/io/network/scribe_impl.cpp", - "libcaf_io/src/io/network/stream.cpp", - "libcaf_io/src/io/network/stream_manager.cpp", - "libcaf_io/src/io/network/test_multiplexer.cpp", - "libcaf_io/src/io/scribe.cpp", - "libcaf_io/src/policy/tcp.cpp", - "libcaf_io/src/policy/udp.cpp", - ], - hdrs = glob([ - "libcaf_io/caf/**/*.hpp", - ]) + [ - "caf/detail/build_config.hpp", - "caf/detail/io_export.hpp", - ], - includes = [ - ".", - "libcaf_io", - ], - linkopts = [ - "-pthread", - ], - linkstatic = True, visibility = ["//visibility:public"], - deps = [ - ":caf_core", - ], -) - -cc_library( - name = "caf_openssl", - srcs = [ - "libcaf_openssl/src/openssl/manager.cpp", - "libcaf_openssl/src/openssl/middleman_actor.cpp", - "libcaf_openssl/src/openssl/publish.cpp", - "libcaf_openssl/src/openssl/remote_actor.cpp", - "libcaf_openssl/src/openssl/session.cpp", - ], - hdrs = glob([ - "libcaf_openssl/caf/**/*.hpp", - ]) + [ - "caf/detail/build_config.hpp", - "caf/detail/openssl_export.hpp", - ], - includes = [ - ".", - "libcaf_openssl", - ], - linkopts = [ - "-pthread", - ], - linkstatic = True, - visibility = ["//visibility:public"], - deps = [ - ":caf_core", - ":caf_io", - #"@openssl", - "@boringssl//:ssl", - "@boringssl//:crypto", - ], ) \ No newline at end of file From 5b6845c87c6d83ebf984fe9f4db49eb873e7730a Mon Sep 17 00:00:00 2001 From: Nick Codignotto Date: Sat, 8 Jan 2022 22:31:05 +0000 Subject: [PATCH 3/3] much faster build with ninja --- .devcontainer/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0215df8..250bde3 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -15,6 +15,7 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ vim \ software-properties-common \ graphviz xdot \ + ninja-build \ && add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ @@ -37,10 +38,10 @@ RUN curl -L -O https://github.com/bazelbuild/buildtools/releases/download/3.5.0/ RUN curl -L -O https://github.com/actor-framework/actor-framework/archive/c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a.zip \ && unzip -d caf c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a.zip \ && cd caf/actor-framework-c2be26e7f9e3e84ef14730590fc4e7b25fb9d29a/ \ - && ./configure \ + && ./configure --generator=Ninja \ && cd build \ - && make \ - && make install \ + && cmake -G "Ninja" .. \ + && ninja install \ && cd ../../.. \ && rm -rf caf