Skip to content
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

*: Consolidate protobuf scripts and update to rust-protobuf 2.8.1 #1275

Merged
merged 6 commits into from
Oct 22, 2019

Conversation

mxinden
Copy link
Member

@mxinden mxinden commented Oct 10, 2019

This pull request does two things:

  • Consolidate the Protobuf build scripts into a single one which is called with the source and destination from within each crate that depends on .proto files. Move the docker build logic into a separate Dockerfile to not rebuild on each generation.

  • Update to rust-protobuf v2.8.1 to reduce the Rust compiler warning noise.

Note:

  • Due to consolidation some import paths changed. Let me know if this bothers you. I might be able to change it with temporary files in the build scripts.

  • I think in the long run we should regenerate the files in our CI on each run to ensure the generated files stay in sync with the .proto files. I would prefer not to trust files generated on an engineers laptop.

Copy link
Contributor

@romanb romanb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 The only thing that comes to mind is that I find many of the target module names for the generated code a bit unfortunate. I'd prefer if there is always some mention of "protobuf" or similar in the name as we usually map back and forth between the protobuf structs and hand-written structs of the same name, i.e. we don't tend to use the protobuf structs as the primary data structures to work with in the code. That means having them in e.g. libp2p_core::keys is a bit misleading. While we're at consolidation, how about always putting the generated code in a crate::protobuf module, or at least in some such submodule for every crate (e.g. libp2p_core::identity::protobuf).

@mxinden
Copy link
Member Author

mxinden commented Oct 11, 2019

With your comment above in mind, what do you think of 9f0e098 @romanb?

@romanb
Copy link
Contributor

romanb commented Oct 14, 2019

Looks good to me!

@mxinden
Copy link
Member Author

mxinden commented Oct 15, 2019

@twittner @tomaka can you take a look at this as well?

Copy link
Contributor

@twittner twittner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@twittner
Copy link
Contributor

twittner commented Oct 17, 2019

  • I think in the long run we should regenerate the files in our CI on each run to ensure the generated files stay in sync with the .proto files.

How about using https://crates.io/crates/prost?

@mxinden
Copy link
Member Author

mxinden commented Oct 21, 2019

@twittner I am fine with either one. Are you fine merging this one first though?

@twittner
Copy link
Contributor

@twittner I am fine with either one. Are you fine merging this one first though?

Sure. I had approved it already.

@mxinden
Copy link
Member Author

mxinden commented Oct 22, 2019

Will have to wait for #1282.

@tomaka tomaka merged commit 206e4e7 into libp2p:master Oct 22, 2019
@tomaka tomaka mentioned this pull request Oct 25, 2019
tomaka added a commit that referenced this pull request Oct 28, 2019
* Configurable multistream-select protocol. Add V1Lazy variant. (#1245)

Make the multistream-select protocol (version) configurable
on transport upgrades as well as for individual substreams.

Add a "lazy" variant of multistream-select 1.0 that delays
sending of negotiation protocol frames as much as possible
but is only safe to use under additional assumptions that
go beyond what is required by the multistream-select v1
specification.

* Improve the code readability of the chat example (#1253)

* Add bridged chats (#1252)

* Try fix CI (#1261)

* Print Rust version on CI

* Don't print where not appropriate

* Change caching strategy

* Remove win32 build

* Remove win32 from list

* Update libsecp256k1 dep to 0.3.0 (#1258)

* Update libsecp256k1 dep to 0.3.0

* Sign now cannot fail

* Upgrade url and percent-encoding deps to 2.1.0 (#1267)

* Upgrade percent-encoding dep to 2.1.0

* Upgrade url dep to 2.1.0

* Revert CIPHERS set to null (#1273)

* Update dependency versions (#1265)

* Update versions of many dependencies

* Bump version of rand

* Updates for changed APIs in rand, ring, and webpki

* Replace references to `snow::Session`

`Session` no longer exists in `snow` but the replacement is two structs `HandshakeState` and `TransportState`
Something will have to be done to harmonize `NoiseOutput.session`

* Add precise type for UnparsedPublicKey

* Update data structures/functions to match new snow's API

* Delete diff.diff

Remove accidentally committed diff file

* Remove commented lines in identity/rsa.rs

* Bump libsecp256k1 to 0.3.1

* Implement /plaintext/2.0.0 (#1236)

* WIP

* plaintext/2.0.0

* Refactor protobuf related issues to compatible with the spec

* Rename: new PlainTextConfig -> PlainText2Config

* Keep plaintext/1.0.0 as PlainText1Config

* Config contains pubkey

* Rename: proposition -> exchange

* Add PeerId to Exchange

* Check the validity of the remote's `Exchange`

* Tweak

* Delete unused import

* Add debug log

* Delete unused field: public_key_encoded

* Delete unused field: local

* Delete unused field: exchange_bytes

* The inner instance should not be public

* identity::Publickey::Rsa is not available on wasm

* Delete PeerId from Config as it should be generated from the pubkey

* Catch up for #1240

* Tweak

* Update protocols/plaintext/src/error.rs

Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>

* Update protocols/plaintext/src/handshake.rs

Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>

* Update protocols/plaintext/src/error.rs

Co-Authored-By: Pierre Krieger <pierre.krieger1708@gmail.com>

* Update protocols/plaintext/src/error.rs

Co-Authored-By: Roman Borschel <romanb@users.noreply.github.com>

* Update protocols/plaintext/src/error.rs

Co-Authored-By: Roman Borschel <romanb@users.noreply.github.com>

* Rename: pubkey -> local_public_key

* Delete unused error

* Rename: PeerIdValidationFailed -> InvalidPeerId

* Fix: HandShake -> Handshake

* Use bytes insteadof Publickey to avoid code duplication

* Replace with ProtobufError

* Merge HandshakeContext<()> into HandshakeContext<Local>

* Improve the peer ID validation to simplify the handshake

* Propagate Remote to allow extracting the PeerId from the Remote

* Collapse the same kind of errors into the variant

* [noise]: `sodiumoxide 0.2.5` (#1276)

Fixes rustsec/advisory-db#192

* examples/ipfs-kad.rs: Remove outdated reference to `without_init` (#1280)

* CircleCI Test Fix (#1282)

* Disabling "Docker Layer Caching" because it breaks one of the circleci checks

* Bump to trigger CircleCI build

* unbump

* zeroize: Upgrade to v1.0 (#1284)

v1.0 final release is out. Release notes:

iqlusioninc/crates#279

* *: Consolidate protobuf scripts and update to rust-protobuf 2.8.1 (#1275)

* *: Consolidate protobuf generation scripts

* *: Update to rust-protobuf 2.8.1

* *: Mark protobuf generated modules with '_proto'

* examples: Add distributed key value store (#1281)

* examples: Add distributed key value store

This commit adds a basic distributed key value store supporting GET and
PUT commands using Kademlia and mDNS.

* examples/distributed-key-value-store: Fix typo

* Simple Warning Cleanup (#1278)

* Cleaning up warnings - removing unused `use`

* Cleaning up warnings - unused tuple value

* Cleaning up warnings - removing dead code

* Cleaning up warnings - fixing deprecated name

* Cleaning up warnings - removing dead code

* Revert "Cleaning up warnings - removing dead code"

This reverts commit f18a765.

* Enable the std feature of ring (#1289)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants