[ 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to