qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jiri Daněk (Jira) <j...@apache.org>
Subject [jira] [Comment Edited] (PROTON-2100) Switch from CMake to Bazel?
Date Tue, 03 Sep 2019 12:01:00 GMT

    [ 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


Mime
View raw message