-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhance the build experience of envoy. #415
Comments
If you can use docker to build, it is not hard and just one command to build and test: We have bazel BUILD files in https://github.com/istio/proxy , @mattklein123 are you open to merge it into envoy repo? |
Bazel support does not enhance build experience in any manner (not from our experience so far!). As @lizan pointed out, there is already a simple one line docker build command, and the docker image comes with all the dependencies installed in it. |
We have been using bazel in istio/proxy for a while, and I do think bazel enhanced the build experience, especially for attaching debuggers, working with tools doesn't work well with docker. It provides dependency resolution without changing the system environment. |
IMHO what needs to be done here is to fix the $ cmake .. && make or even $ cmake -GNinja .. && ninja I have a working branch that I'm planning to push when I have some time to polish |
@Reflejo , agreed, the deps is the most painful part. |
Per offsite meeting, here is I think where we landed here:
@htuch I believe is going to take the lead on a proposal/investigation here. Going to assign to him. |
As long as one can build the system in a docker container, bazel or not
doesn't matter. Building in a container makes things easier to develop on
different platforms (use your favorite ide on the host, mount volume in the
container and build).
@htuch if you do go down the bazel in a container path, you would have to
give folks a fair warning that all of the bazel caching stuff will be
negated. And oh, if you could also provide the bazel/clion scripts that
folks at Google use, it would be great. :)
On Sat, Feb 25, 2017 at 1:24 PM Matt Klein ***@***.***> wrote:
Per offsite meeting, here is I think where we landed here:
- We don't mind multiple build systems, but we need a single source of
truth.
- It's possible we can look at gRPC build system to see how they do
both bazel and cmake.
- We are open to switching to Bazel IFF it doesn't make any of the
existing flows worse and does not make CI any longer than it already is
(given how slow Travis is and the fact that right now we don't have any
other options).
@htuch <https://github.com/htuch> I believe is going to take the lead on
a proposal/investigation here. Going to assign to him.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#415 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AH0qd1anD26m7v7ERTAedETSCjZ9lAiDks5rgHHHgaJpZM4L1zJY>
.
--
~shriram
|
build in docker can make it easier for multiple platforms release, but not
for IDE. For example, if I'm using eclipse cdt, I would prefer to get a
make file which can be imported directly. Today people has to manually
configure their environment and install different kinds of dependencies,
which is the pain point. GitHub submodules are preferred.
On Sun, Feb 26, 2017 at 10:01 AM Shriram Rajagopalan <
notifications@github.com> wrote:
… As long as one can build the system in a docker container, bazel or not
doesn't matter. Building in a container makes things easier to develop on
different platforms (use your favorite ide on the host, mount volume in the
container and build).
@htuch if you do go down the bazel in a container path, you would have to
give folks a fair warning that all of the bazel caching stuff will be
negated. And oh, if you could also provide the bazel/clion scripts that
folks at Google use, it would be great. :)
On Sat, Feb 25, 2017 at 1:24 PM Matt Klein ***@***.***>
wrote:
> Per offsite meeting, here is I think where we landed here:
>
> - We don't mind multiple build systems, but we need a single source of
> truth.
> - It's possible we can look at gRPC build system to see how they do
> both bazel and cmake.
> - We are open to switching to Bazel IFF it doesn't make any of the
> existing flows worse and does not make CI any longer than it already is
> (given how slow Travis is and the fact that right now we don't have any
> other options).
>
> @htuch <https://github.com/htuch> I believe is going to take the lead on
> a proposal/investigation here. Going to assign to him.
>
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub
> <#415 (comment)>, or
mute
> the thread
> <
https://github.com/notifications/unsubscribe-auth/AH0qd1anD26m7v7ERTAedETSCjZ9lAiDks5rgHHHgaJpZM4L1zJY
>
> .
>
--
~shriram
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#415 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AT1vm5DILo90Aacx5cyAyZxLnSwnuPGcks5rgb4KgaJpZM4L1zJY>
.
|
I'll start looking into this during the week. I agree that submodules could be an idea to consider, but I don't think we want to be in the business of building every single transitive dependency, even if this works today, this will put future constraints on what dependencies we can add feasibly. Envoy might have a wider set of dependencies than the gRPC core libraries which use this approach. Whatever the outcome, the Docker build will be maintained - this is necessary for CI and some developers (including me) use this as their primary workflow. It's also orthogonal to the choice of the use of (i) submodules (ii) build system (iii) IDE, we should always be able to encapsulate the build flow in a Docker image. |
jamessynge@ mentions that it would also be useful to not build all tests as the only option. |
Latest discussion on this and a proposal is being tracked at https://docs.google.com/a/google.com/document/d/1XG1F38tZXTaWlrDXZFNoH-0xVm0d4HlrZJ4JXbMWqHo/edit?usp=sharing |
Also my +1 for a better dependencies management. Using find_package() should be the first step and submodules even better so you can still have a full static build. It would ease up a lot setup'ing dev environment. |
I started to look at adding bazel to the Docker image as the first step in Bazelifying Envoy. Following the instructions at https://bazel.build/versions/master/docs/install.html#ubuntu led me to installing Oracle JDK 8, as Ubuntu Trusty doesn't have OpenJDK 8 support as a starter. This comes with a big scary license http://www.oracle.com/technetwork/java/javase/terms/license/index.html, IANAL and unclear if this will fly for Docker redistribution by Lyft. It'll probably be more sane to move to a newer Ubuntu version rather than explore unofficial OpenJDK ports, does this sound sane @mattklein123? |
@htuch Are you trying on Ubuntu 15.10 or 14.04? AFAIK 16.04 with OpenJDK has no problem with bazel. |
This is 14.04, the version of Ubuntu used for the Docker image. If folks are on-board, I will upgrade it to something more recent like 15.10 or 16.04 where there is OpenJDK 8 support. |
16.04 should be fine. If possible can we still build with GCC 4.9? I think this is available on 16.04 pretty easily, though from my own machine, there might be some build issues (I have no idea why this would be the case but I recall potentially having an issue when trying), but let's give it a shot. |
This is in support of Bazelifying the build (envoyproxy#415).
This is in support of Bazelifying the build (#415).
This patch introduces the minimal Bazel infrastructure required to build and execute utility_test, as a step towards conversion of the cmake build system to Bazel (envoyproxy#415). The main contributions are: * Machinery for declaring Envoy C++ library and test targets (envoy_cc_library, envoy_cc_test). * External dependency management that works both inside the Docker CI environment (using prebuilts) and with developer-local dependency fetch/build (based on envoyproxy#416). * Handling of the implicit dependencies that are today sourced via prebuilts. * Simple example of building and running a unit test with only its dependencies built. With the cmake system, we would need to build all of Envoy and all tests to run utility_test. E.g. blaze test //test/common/common:utility_test This is not intended to be used by anyone other than those working with the Bazel conversion at this point. The plan is to add "ci/do_ci.sh bazel.debug" as a Travis target to ensure we don't bit rot.
* Minimal Bazel infrastructure (#415). This patch introduces the minimal Bazel infrastructure required to build and execute utility_test, as a step towards conversion of the cmake build system to Bazel (#415). The main contributions are: * Machinery for declaring Envoy C++ library and test targets (envoy_cc_library, envoy_cc_test). * External dependency management that works both inside the Docker CI environment (using prebuilts) and with developer-local dependency fetch/build (based on #416). * Handling of the implicit dependencies that are today sourced via prebuilts. * Simple example of building and running a unit test with only its dependencies built. With the cmake system, we would need to build all of Envoy and all tests to run utility_test. E.g. blaze test //test/common/common:utility_test This is not intended to be used by anyone other than those working with the Bazel conversion at this point. The plan is to add "ci/do_ci.sh bazel.debug" as a Travis target to ensure we don't bit rot.
We should add support to generate a textual representation of the build dependency graph once done. This will provide a sanity check that we could in future support other build systems and also provide support to those who want to carry out proprietary integrations. @mattwoodyard. |
This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes bazelbuild#2840 See envoyproxy/envoy#415 for additional background and context.
This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes bazelbuild#2840 See envoyproxy/envoy#415 for additional background and context.
This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes bazelbuild#2840 See envoyproxy/envoy#415 for additional background and context.
This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes bazelbuild#2840 See envoyproxy/envoy#415 for additional background and context.
This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this) I'm only doing this in the Linux toolchain because MacOS doesn't do static linking of system libs anyway, and I don't know enough about Windows or FreeBSD to test on those platforms. Closes #4031. PiperOrigin-RevId: 178762357
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: #4474) Fixes #4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes #2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
*** Reason for rollback *** Breaks C++ on gcc 4.8.4 (specifically, TensorFlow: bazelbuild#4474) Fixes bazelbuild#4474 *** Original change description *** When linking mostly-static Linux binaries, link libstdc++.a explicitly. This allows libstdc++ to be statically linked, which is normally only possible when invoking GCC as `g++` with the `-static-libstdc++` flag. Fixes bazelbuild#2840 See envoyproxy/envoy#415 for additional background and context. cc @htuch (for Envoy) and @calpeyser @hlopko (who I talked to earlier about this)... *** RELNOTES: None. PiperOrigin-RevId: 182519445
Automatic merge from submit-queue. [DO NOT MERGE] Auto PR to update dependencies of mixerclient This PR will be merged automatically once checks are successful. ```release-note none ```
* zh-translation: /configuration/listeners/stats.rst * zh-translation: /configuration/listeners/stats.rst, some minor fix according to feadback * Fixed typo * Fixed some more formats * Translation adjustment
Description: clean up streams in the http dispatcher when the underlying stream fires an onReset callback. Previously we were leaking this state. Risk Level: med - stream memory management changes. However, we have a guarantee from the underlying async client implementation that terminal callbacks (onReset, onComplete) will only fire once. Testing: unit tests. Signed-off-by: Jose Nino <jnino@lyft.com> Signed-off-by: JP Simard <jp@jpsim.com>
Description: clean up streams in the http dispatcher when the underlying stream fires an onReset callback. Previously we were leaking this state. Risk Level: med - stream memory management changes. However, we have a guarantee from the underlying async client implementation that terminal callbacks (onReset, onComplete) will only fire once. Testing: unit tests. Signed-off-by: Jose Nino <jnino@lyft.com> Signed-off-by: JP Simard <jp@jpsim.com>
Today build envoy from github is not trivial. And it's even harder to build its tests.
Shall we?
The text was updated successfully, but these errors were encountered: