Comments (6)
Hi @onlyjob, the source file is in the CRIU's repository.
https://github.com/checkpoint-restore/criu/blob/criu-dev/images/rpc.proto
rpc/rpc.pb.go
can be generated with:
make rpc/rpc.pb.go
from go-criu.
The problem is that source release is not comprehensive. Downstream we can not download on build and another repository (with .proto file) is not available. Effectively it is partially an open source compliance problem (because generated file is shipped without sources - like pre-compiled binary) but also partially a technical problem because without source we can not ensure integrity of build by re-building all pre-generated files.
from go-criu.
Hmm, this is difficult. We did not include the original file, because it is part of CRIU and we actually, in the go bindings, do not want that file in the repository. We only want the result from the protobuf compiler. The Makefile rule is just as a convenience to easy update the file if necessary.
I understand your point of view, but for us generating the file is not part of the build process. Another motivation to leave out the generation of the build process is to not require the protobuf compiler during build as well as to make sure that the generated file matches what we expect. I often had problems generating protobuf output because of different versions of the protobuf compiler.
from go-criu.
This is precisely why source should be committed to this repository. Yes it would duplicate the original file but that is the only way to take care of situations where/when generated file should be updated from the source by the different compiler. Proper interoperability requires to re-build such files for consistency and sometimes it is just necessary to regenerate such files in order to avoid FTBFS due to mismatch between different .pb.go files produced by incompatible compiler versions.
Imagine what (chaos) will happen if all libraries bundle source-less pre-generated files produced by different compiler versions. This is precisely what we are trying to avoid and that's why it is necessary to provide sources.
I don't see much drama if that one .proto
file will have to be updated from parent repository once in a while.
from go-criu.
Maybe there's a way to add criu as a git submodule? It won't be required to build, but in case someone wants to regenerate the protobuf files there will be a way to do it.
@onlyjob care to implement it?
from go-criu.
Should be solved.
from go-criu.
Related Issues (20)
- rss explore for rss fails with a panic HOT 7
- Enable 'stylecheck' golangci-lint linter HOT 1
- crit: parse data fields in files.img HOT 9
- Restore shelljob in go-criu HOT 9
- CRIT: use proto names instead of camelCase in JSON HOT 7
- Make 7.1.0 release HOT 6
- Port image. functions to go
- port file i/o fucntions for go-crit HOT 1
- Tag SemVer-compatible tags to facilitate go modules HOT 11
- Unable to restore TCP_CORK (1): Operation not supported HOT 1
- make test not working HOT 3
- golang protobuf bump HOT 5
- Proposal: implement stricter merge rules HOT 14
- undefined: syscall.Socketpair and undefined: syscall.AF_LOCAL HOT 5
- tty: Don't have tty to inherit session from, aborting err:0 HOT 2
- Rework magic-gen.go into standalone script
- Remove `vendor` dir and use `go.mod` directly HOT 2
- v6.0.0 release HOT 1
- const stats.StatsDump stats.StatsRestore missing
- proto: namespace conflict with letsencrypt
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 go-criu.