From cb36543338f9cf5e0d26c0000b5b73b2f4891eda Mon Sep 17 00:00:00 2001 From: tottoto Date: Mon, 23 Sep 2024 09:56:49 +0900 Subject: [PATCH] chore: Make codegen independent from protoc --- .github/workflows/CI.yml | 4 --- CONTRIBUTING.md | 3 +-- codegen/Cargo.toml | 1 + codegen/src/main.rs | 23 +++++++++++++++--- tonic-health/src/generated/grpc_health_v1.bin | Bin 2875 -> 2875 bytes .../src/generated/reflection_v1.bin | Bin 7639 -> 7639 bytes .../src/generated/reflection_v1alpha1.bin | Bin 7198 -> 7198 bytes tonic-types/src/generated/types.bin | Bin 24305 -> 24071 bytes 8 files changed, 22 insertions(+), 9 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e187bcd41..57ffa443d 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -46,10 +46,6 @@ jobs: steps: - uses: actions/checkout@v4 - uses: hecrj/setup-rust-action@v2 - - name: Install protoc - uses: taiki-e/install-action@v2 - with: - tool: protoc@3.25.1 - uses: Swatinem/rust-cache@v2 - run: cargo run --package codegen - run: git diff --exit-code diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4a47e263c..c7d116c01 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -211,8 +211,7 @@ example would explicitly use `Timeout::new`. For example: When making changes to `tonic-build` that affects the generated code you will need to ensure that each of the sub crates gets updated as well. Each of the sub crates like, for example `tonic-health`, generate their gRPC code via `codegen` -crate. This requires `Protocol Buffers Compiler` of which version is same as the -one used in the GitHub Action (see [`codegen` job](./.github/workflows/CI.yml)). +crate. ``` cargo run --package codegen diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index f4d9f3290..1a8ff398d 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -8,4 +8,5 @@ version = "0.1.0" [dependencies] tempfile = "3.8.0" +protox = "0.7" tonic-build = {path = "../tonic-build", default-features = false, features = ["prost", "cleanup-markdown"]} diff --git a/codegen/src/main.rs b/codegen/src/main.rs index e67be9b4d..fce593a18 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -1,4 +1,10 @@ -use std::path::{Path, PathBuf}; +use std::{ + io::{BufWriter, Write as _}, + path::{Path, PathBuf}, +}; + +use protox::prost::{bytes::BytesMut, Message as _}; +use tonic_build::FileDescriptorSet; fn main() { // tonic-health @@ -82,12 +88,16 @@ fn codegen( let out_dir = root_dir.join(out_dir); let file_descriptor_set_path = root_dir.join(file_descriptor_set_path); + let fds = protox::compile(&iface_files, &include_dirs).unwrap(); + + let fds_out = std::fs::File::create(file_descriptor_set_path).unwrap(); + write_fds(&fds, fds_out); + tonic_build::configure() .build_client(build_client) .build_server(build_server) .out_dir(&tempdir) - .file_descriptor_set_path(file_descriptor_set_path) - .compile_protos(&iface_files, &include_dirs) + .compile_fds(fds) .unwrap(); for path in std::fs::read_dir(tempdir.path()).unwrap() { @@ -105,3 +115,10 @@ fn codegen( std::fs::copy(&path, &to).unwrap(); } } + +fn write_fds(fds: &FileDescriptorSet, file: std::fs::File) { + let mut writer = BufWriter::new(file); + let mut buf = BytesMut::with_capacity(fds.encoded_len()); + fds.encode(&mut buf).unwrap(); + writer.write_all(&buf).unwrap(); +} diff --git a/tonic-health/src/generated/grpc_health_v1.bin b/tonic-health/src/generated/grpc_health_v1.bin index 52efb312248858eba8a5024742a401fbc68b32fb..06b20f41f0b9e8262702ce14dced68a0e8c618f2 100644 GIT binary patch delta 233 zcmXwzOA5j;5QZm{CZthO(w7BS1q;4VaNSieB3_^(?ma{fqR?e`F6>3Tgt#$-argbq zd^3NScIkbNq0$Tuk07%Lu_>70vv8t^S_FW=U5es=5-y>#H<8(^b delta 276 zcmXwxI|{-;5I|>V*07lf%0?5Tu~0DL2NVPg!OEN1T13QFJVY)cSlWw?7qW6cqlN%Bc%u*hL9 diff --git a/tonic-reflection/src/generated/reflection_v1.bin b/tonic-reflection/src/generated/reflection_v1.bin index 4b4ecaef9d7cc999759a06523a81fdb2b6fdbca3..b6add193e8ed5a46d62c03e5cadc2c77422ee4f4 100644 GIT binary patch delta 750 zcmX|hYyuoO!h4F^_1OKn9Y_&11!g`ie`XMbEV@V=k-eKT*~%>MfR`n%7r?@7j$9b1}S z)W;c9_EA5ObJ7tOw``~bVWk`>?$Kg!hHeM#pztuz6(MO7e5I}VigM6Xpm*mVQ>{@^ z+f{a7w5Gc8mr)j0SipQ1=6*P!H#6#ho(DZS_lrJ;-{`e!C+0}TEo3foPu8V?LdP3C zr7tSYI|4v@gV*S%x=*8KQN;72D`gQkMVtHty=oRk0BCKKccyEtJw|p^w8l9Hz9tfi zqb+(gqvjshg{GI$CHg(10`#Vc$&b&OF%HyXJ~+-DjB#-INTpyKh>-T0lj$(tW-WL} z;c}j}^O28^9jEUHQ&OEDW}~qm=Sh(#$BC{K?m5PLEF^8ZjJ1+<=~nV5VoE$@I+Fp0 z<(L}CrDeLR7wEbEw}kW#!xNjdo2Pde-nf*G$zs#p?gyHrao6CQ8J>8`cnv2DNNn+p zaZS7Fp+;T^1P7Q$Z{_<3_)ooT&9vzjpD2q~D}|qU8B5SlI{-CGqj&-4o5-Tes tZLOA3*Xm1Oa<5((O(>OZoF>GajMao5j(~ak$$esbH{3hh!+XQi{{eKKV&eb+ delta 657 zcmXw#ziSjh6vuaGW`Er5-FZ9Q?&fZt)7vCo4CII>1i~SR1RFgIElgvOgdAxkMop1` zl^~>2e1%=aR#F5GOc6w}iU`37a-IGIBG^SO^u1lTd!O%ozwbLU!|t%VdteVP*SGkB zbfw7@kBpcmSMi#0MHVD;y==_Hx{;)!RGh|4jE#0Gnu^nyi6@PjRK!g(PzZ7JT2 zo3bb^+h7KkHIvz#Y{iokK~5YgY{QYgkzlCBTsjaK!irX*loQ%o6(3~rC){zm7FwqS zyl@)u(fLflj*$PY41*mn?Z!0>gPpN)cF2Szagib#y;3Yj|I-Qqc`ogG0o& zdN}x1-Zx3RCF-zK(J-tm5Z)FsO!*q-{cD6vB7$wi5B{YDu`m3zj4=zV`|5N~_@Msi z*x;4AZ^CRfi0Qj{`dw@Onbd@YrnR$^(5rr@yKUgz&INjcULxovn=Er82%_xokkGv8 zRbVC1@G>}ty)c4jVFM1s-;SlkmWhkrMW^6L^ky9SiOC#U!hVPP5nYudCk#UPG!jzs TDJ8#-G~7k|?!DCqtLOg#Cz@rK diff --git a/tonic-reflection/src/generated/reflection_v1alpha1.bin b/tonic-reflection/src/generated/reflection_v1alpha1.bin index 62d18b45bed5de7ac5d2cc6d8c288d8efdc7c725..5d3cd025d0bc001a5ea490492b76cda1f5e5ac36 100644 GIT binary patch delta 724 zcmX|u&CL?}CZALL?`GgwsMii(I831cZZtqJ$}Wv5lq>z-?mf%jx8HnkW_I@0_SRm%v|UFD8Cqd& zkq_L5{6Iy1L)ED!YxU5|Nbw`@Jb(6#DxfYohxv#1^_U2)JUFf@yR<<0Nkg#ZuzhLl z@D1M-TXtxzILTz}{}y~NFfze>7Ut){EuGm9(pgF!nf>mfA=vt`?WzL~=f3fux#*I9 zTa>L{B&9q>AVdtPTNVK{sg@xG4zi9R1P;jM3-kB+<9rn+%dquXnABlII$ah3G^Hzs z5H?)x8NzHsYEO2%5{pMv}kBpa~UUS+!iUxWQ zqod2SY`urkiQEuuBPZe@d_4IOZ415(y`DVPoin_vED4is0s4LRU5XLQLgOMI= zi*kOIWc)Nq`EByI2WgyDZ`RA&@$5|y;Ttu|BoI0n`zilinDVby)xKRW?g-N@makn`04|4ut!T4AVQaD5lcaI zvRk`+hl-Tau|o$T;3A@ngQE^k{s#^fgyN>3_slsy_df6Qe&6?wSB_WS9NOcvnJq&I zE_A~;eXUNPqPKK7<2HcR`K~Al%hn9d_RXkV$;ku-EjqDxZOb<$6XZFPz7&7bEvKtK z&2g7T`1IQO+5k4WtF|)DFm%w=m7EZ2Hm}hE-?MQ-i$_!{$nkRFTvwGgDoIgNT6~}? zo&OaJmCjT=saU9VYIXWp`es2}Wwc*T+C{;bu8!-mS|$Rp+GB;B)S9@Q6CypC(0Tc( zI{Gf|wC>8Rk`0}*8<`2fq$!)t36(T%<%CMQaGid6&&MC!cX|VEpC^-5HBG;^oD76WXADd!m`p26t9TdiRtzO5d2UNG-7lSB-984x*vwL5XST{yrA9ba8~^!%g|8Xk@Hy@g!0bS zChbrER=Zy?dR9&7wEEt$eD+dj1zL}4aS6}u;DT&VXHt~W0YLx?dKD#n(|)u)dNNx2 E3&c%dJpcdz diff --git a/tonic-types/src/generated/types.bin b/tonic-types/src/generated/types.bin index 8af4e92be3100c6c490d5ddaa2f1935a01022829..94b818cff6b002961605c219e3f9fa362e6b86bc 100644 GIT binary patch delta 1752 zcmZuxO=w(I6u#%)H#2W;{>GQgyh&tc;!J)_sYy-zBPEG#iV3kM(@acEjR8fn2!)i< zY;+`GEET#j9J)|ODY_C7(YFvJ$wCSiT|`Jhs})gDi_JzcrO=J%ym#NEpu6+;eeay} zzH|TDg7cf8^tHnq>Zh*159yc_$%=OYw5>rps$Hb@t%R1Aa3U3sx7|p1yRj7s8ZYb5 zy-HnD#&r8cX=+k?)rMY`tk`w>JFP8CNa0v-gG{wu(caIAs}`nHl_S8h_&vHoN4P?< z+ma03h>x)KoR6p4Dqc>_uCW1jgQ)@nRUr{_0D-DNT~Noiqw?aYu?k|;SRLZ9u{uSM zvARUwSl!}29oN$C48UyGIf~J2f}=VZ&oI&1@K@-c^sZv6@|Pp$|Qf>(W8FROIy>LN}LL3+76T zZqsjz$QdgsCXJP&0-;z-6mHw_O5H7XN-Ikc>5`q$*TJYlEn}tc z$6g9A+f8O*Qi57`nnREFvP{2pT^S*$vUl#t>p)6SWfDTLBocxulMakWnDYP1AY506 z7&oiwtO=q^^qN?AZH4#$R}i$r0`2e-vqWZMliFb_vqa`%leEEPY?3yJ&DTax{}&O` zM$)@9ct_%gL!kyllr_+XTSFIF1AR`;9|-t3RA0V;6T=x?A1>lA!vO>&%cfu2-u`gC z#6L$LW!y|Mz)2rBL%7xx84r$)0?r(Fn;Lb@l8P>lpktQymXFT^?v5TLn6pTUQzve! zJn^l@gI}Y3zE$&U$fLSd`u5_u2bh}(T2g*XuTgkl;t#-{lWrp)xRR1oavo$7M^4_s zbHx$-wdmqjG3yOJ^*G>#$<{;@HD(2kSr@_5_`&2?`0CU_g75nsPTk*JX3lCzb(1=Q7P-KpBe|eJ{?p>4EHBo`OowumP!W+=KhQl-tVO`=%i<68{*CW zGZXdSrfo>Mp-ZLPK({*m^vBpZ8w?obxveiL>~+iz04~i1@ffek`kLdFIq;cxAfEE6 zVv--Q9cXO}T`JvS=J%g@3y;l*3_RXd4$sYhgAbk#!-~S!n0V~;leEEw=O3cB_aG6x zp|;=l9;91+a&j%sN*%iNKlY%m2{)cyMRy_Cgl$&z8?UHup&!e4C3wIayrTB!9tM1I zG3X=i54g|my|OrgyNjtc{|j+{A-5@RuBt`M8Y@}5uaxLFF}L=prOnOJ3&jv~MvO7X b#UM6Gnv62X#js6FL%riIq#u)Z_)Pr^$2a#1 delta 1761 zcmZ`(ZD?Cn7{2G8oAl*iyT)S=(;?*t*uV`ytWZ&On>A zN!n4NR3>a9qSNCU7W^-md9%nX9Pn)q+W+|S|kEUj=(@S$!Pd?V0 z&Bo7Kg=5xqYGJ0(pUD?ena8YH3xAOAHUDp+rBj}^%$Ug+>4&0K^Q&%iV03thnO*P` z{mwY`t>|uc&CN7TQ58eGLR5e7s#`qkx}{B-J$W-bZ4RcE%tU+QV5?bp+{#&I3jUd_ zc`iL=%`BM*HI&BUTX~hR{eWSEB9ss4Q-*92oPtn_{_^`HlwzQ0A8-mn zDb^~@b~tznp;xMPWvc)bD}hcm;sAp|A(f@-X;iN)F$!x{9)7p(Hz#asQFXo%Y~b6$ z^PJcF_*{KGd(=6X%NDW+*=?Q)ZL>R#%xP#LC3o)u*r_$LQ){ErSE?1E%r#n`3WQQ@ zQsVYbs1>0U_m#VXP>Ri1>U}T(FcyfV8pE-WQ-Sb`$DRt!f`o&Y#D%a|_fZWjKrP+F z?vkQ0X_~*+{8b!Ukp54n(t6duI+ZqR*i*D<6FM(Gj-4mi-T9puunC<9m&jfd=SB_AMekD=r5ke^j%6>p7#oDqR5Q^Q0|5Tk$eCQx2 z9Syv-<0Y?V&^DFXDHBzJa@yS0{3BT0>KH*&B)}B+cQ%NrPPZy@s0tOoBAdkJw~qn}M{Sb2Aoq-2!pK_~`N~+B-yGXOeh2x}<6-f^_yFNACkvSM zcaZhp$tXWGaRBKLKqn`nFD6rbB^lt8$&h${;*g!lHimyX8RkDu_TzECBj0}}q?bne E9}ZwM5dZ)H