You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Jiri Daněk (Jira)" <ji...@apache.org> on 2019/09/03 12:01:00 UTC

[jira] [Comment Edited] (PROTON-2100) Switch from CMake to Bazel?

    [ https://issues.apache.org/jira/browse/PROTON-2100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16921367#comment-16921367 ] 

Jiri Daněk edited comment on PROTON-2100 at 9/3/19 12:00 PM:
-------------------------------------------------------------

I've tried Bazel, for ActiveMQ Artemis. Back in the time before the AIO JNI library was split out of the project.

Afaik the main problems with it are:

1) Tooling. There probably isn't that much experience regarding building RPM/DEB packages with Bazel. Although the fact that TensorFlow and other popular projects adopted Bazel is/will change that, slowly.
2) Support for systems besides Linux and Windows. Afaik Windows support is already there. Can Bazel produce artifacts that are easily consumable in CMake, Visual Studio, and language specific package managers like pip or gem, or go get?
3) Dependencies. As I remember, discovering native dependencies with Bazel is painful. Paths to shared libs change between systems. Proton has some optional dependencies. In the Artemis project above I had to do [1] and then [2]. Is there support for pkg-config in Bazel already?
4) Makes build depend on java. Bazel itself is fairly large, ~50 MB. Must be installed on Travis.

Benefits:

1) BUILD file language. That is a plus, for me, actually. It is a restricted version of Python.
2) Test isolation. Tests are run in a sandbox, which can include network sandbox based on cgroups/namespaces. No more port clashes. We could possibly have this with CMake as well (reuse what bazel does, it is fairly self-contained). Bazel just brings it out of the box.

[1] https://github.com/jdanekrh/activemq-artemis/blob/97fcde8f5d437ab75982304d0722a479140b3ae8/WORKSPACE#L31-L71
[2] https://github.com/jdanekrh/activemq-artemis/blob/97fcde8f5d437ab75982304d0722a479140b3ae8/artemis-native/BUILD#L20-L51

Btw, for discussions, project mailing list is probably better place.


was (Author: jdanek):
I've tried Bazel, for ActiveMQ Artemis. Back in the time before the AIO JNI library was split out of the project.

Afaik the main problems with it are:

1) Tooling. There probably isn't that much experience regarding building RPM/DEB packages with Bazel. Although the fact that TensorFlow and other popular projects adopted Bazel is/will change that, slowly.
2) Dependencies. As I remember, discovering native dependencies with Bazel is painful. Paths to shared libs change between systems. Proton has some optional dependencies. In the Artemis project above I had to do [1] and then [2]. Is there support for pkg-config in Bazel already?
3) Makes build depend on java. Bazel itself is fairly large, ~50 MB. Must be installed on Travis.

Benefits:

1) BUILD file language. That is a plus, for me, actually. It is a restricted version of Python.
2) Test isolation. Tests are run in a sandbox, which can include network sandbox based on cgroups/namespaces. No more port clashes. We could possibly have this with CMake as well (reuse what bazel does, it is fairly self-contained). Bazel just brings it out of the box.

[1] https://github.com/jdanekrh/activemq-artemis/blob/97fcde8f5d437ab75982304d0722a479140b3ae8/WORKSPACE#L31-L71
[2] https://github.com/jdanekrh/activemq-artemis/blob/97fcde8f5d437ab75982304d0722a479140b3ae8/artemis-native/BUILD#L20-L51

Btw, for discussions, project mailing list is probably better place.

> Switch from CMake to Bazel?
> ---------------------------
>
>                 Key: PROTON-2100
>                 URL: https://issues.apache.org/jira/browse/PROTON-2100
>             Project: Qpid Proton
>          Issue Type: Wish
>          Components: proton-c
>            Reporter: Omer Katz
>            Priority: Major
>
> Bazel is a modern build system for polygot repositories like qpid-proton.
> Using it should simplify how we build and package our bindings and c library.
> This issue is an opportunity to discuss if we want to switch and if so, how.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org