Comments (7)
Does this mean that the GapicClientPipeline
would also do the work of GrpcClientPipeline
when --language=ruby
? Why should this be different for Ruby vs. other languages?
The pipeline that does the packaging can be distinct from the pipelines that do the gRPC and GAX generation. That way the two generation steps can remain separate, and then be brought together for the package.
For the gRPC generation, I think @geigerj discovered that it's best to use grpcio-tools
for Python, rather than protoc
. Can you elaborate @geigerj?
from artman.
On grpcio-tools
: Currently we get protoc from linuxbrew here: https://github.com/grpc/homebrew-grpc
That site indicates that the linuxbrew method is deprecated for all languages except C/C++. For Python, the replacement is the grpcio-tools
package on PyPI, which includes an executable replacement for protoc that pulls in the Python plugin automatically. (Although I haven't gotten this to work, see grpc/grpc#7857). Presumably there is also a replacement for ruby.
In Python, this is especially necessary because the plugin installed by the linuxbrew formula produces codegen that is only compatible with the beta version of the grpc runtime library, not the 1.0 version.
from artman.
Also agreed with Brian that the difference between Ruby and other languages seems strange -- why can't we just configure the output directory for both pipelines be the same, while keeping the actual implementations separate? This would permit consistency with other languages, both in the invocation of the pipeline, and in the way we structure output for non-cloud APIs.
from artman.
There is also grpc-tools
Ruby package (see https://rubygems.org/gems/grpc-tools). If that's the way to go, let's use this (i.e. adding to the Dockerfile).
from artman.
Having the same output directory (but keeping the separation of the pipeline) would be good enough. One concern is that, that way the instruction for remote pipeline (i.e. self-service) will require a manual step to merge them into a single package, like:
- run GrpcClientPipeline, then download artifacts
- run GapicClientPipeline, then download artifacts
- copy the result of 1 into the result of 2
(4. build the .gem file)
from artman.
I think the copy-and-build step is actually consistent with the current instructions for Java. The artman wrapper will also eventually provide a single command (called "generateLibrary" or similar) that runs both pipelines and downloads the combined result.
from artman.
Okay, if that's consistent with others, that's totally fine.
Let me close this issue by itself. I'll file another issue for the use of its own grpc-tools
.
from artman.
Related Issues (20)
- Missing input file. should be more descriptive HOT 7
- Go: run goimports as part of artman script HOT 15
- Go: release level not being considered HOT 3
- Switch to composer from pear for PHP dependencies HOT 5
- Python: include enums in generated documentation HOT 5
- Error while finding module specification for 'grpc_tools.protoc' (ModuleNotFoundError: No module named 'grpc_tools') HOT 6
- Typos in CONTRIBUTING.rst
- Nested package proto imports fail for Python HOT 2
- --local runs are broken HOT 3
- Samples are not being generated (as of 0.29.1) HOT 3
- Add sample generation to golden test (to catch samplegen regressions) HOT 2
- artman: pull the artman image for me HOT 4
- module has no attribute FullLoader HOT 1
- mysterious error HOT 1
- un-whitelist monitoring
- Java: update protoc plugin
- fix cel API generation HOT 4
- allow passing extra command line options to protoc HOT 1
- Does not work on the github.com/google/fhir protobufs?
- Action Required: Fix Renovate Configuration
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from artman.