refactor(tvix/*/protos): separate lint target

Break up the go-bindings derivation. Keep "protos" containing all proto
files (well, and the buf config), and use it for a check phase running
linter and formatter, as well as the existing "go-bindings" attribute

Change-Id: I52cb9d08570bb76452acb831eb711c5b6c0eacfb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10239
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-12-09 15:40:57 +02:00 committed by clbot
parent 8486f87e3c
commit 43943e2623
3 changed files with 107 additions and 46 deletions

View file

@ -1,20 +1,43 @@
{ depot, pkgs, ... }: {
{ depot, pkgs, ... }:
let
protos = depot.nix.sparseTree {
name = "build-protos";
root = depot.path.origSrc;
paths = [
# We need to include castore.proto (only), as it's referred.
../../castore/protos/castore.proto
./build.proto
./rpc_build.proto
../../../buf.yaml
../../../buf.gen.yaml
];
};
in
depot.nix.readTree.drvTargets {
inherit protos;
# Lints and ensures formatting of the proto files.
check = pkgs.stdenv.mkDerivation {
name = "proto-check";
src = protos;
nativeBuildInputs = [
pkgs.buf
];
buildPhase = ''
export HOME=$TMPDIR
buf lint
buf format -d --exit-code
touch $out
'';
};
# Produces the golang bindings.
go-bindings = pkgs.stdenv.mkDerivation {
name = "go-bindings";
src = depot.nix.sparseTree {
name = "build-protos";
root = depot.path.origSrc;
paths = [
# We need to include castore.proto (only), as it's referred.
../../castore/protos/castore.proto
./build.proto
./rpc_build.proto
../../../buf.yaml
../../../buf.gen.yaml
];
};
src = protos;
nativeBuildInputs = [
pkgs.buf
@ -24,8 +47,6 @@
buildPhase = ''
export HOME=$TMPDIR
buf lint
buf format -d --exit-code
buf generate
mkdir -p $out

View file

@ -1,19 +1,41 @@
{ depot, pkgs, ... }: {
{ depot, pkgs, ... }:
let
protos = depot.nix.sparseTree {
name = "castore-protos";
root = depot.path.origSrc;
paths = [
./castore.proto
./rpc_blobstore.proto
./rpc_directory.proto
../../../buf.yaml
../../../buf.gen.yaml
];
};
in
depot.nix.readTree.drvTargets {
inherit protos;
# Lints and ensures formatting of the proto files.
check = pkgs.stdenv.mkDerivation {
name = "proto-check";
src = protos;
nativeBuildInputs = [
pkgs.buf
];
buildPhase = ''
export HOME=$TMPDIR
buf lint
buf format -d --exit-code
touch $out
'';
};
# Produces the golang bindings.
go-bindings = pkgs.stdenv.mkDerivation {
name = "go-bindings";
src = depot.nix.sparseTree {
name = "castore-protos";
root = depot.path.origSrc;
paths = [
./castore.proto
./rpc_blobstore.proto
./rpc_directory.proto
../../../buf.yaml
../../../buf.gen.yaml
];
};
src = protos;
nativeBuildInputs = [
pkgs.buf
@ -23,8 +45,6 @@
buildPhase = ''
export HOME=$TMPDIR
buf lint
buf format -d --exit-code
buf generate
mkdir -p $out

View file

@ -1,20 +1,42 @@
{ depot, pkgs, ... }: {
{ depot, pkgs, ... }:
let
protos = depot.nix.sparseTree {
name = "store-protos";
root = depot.path.origSrc;
paths = [
# We need to include castore.proto (only), as it's referred.
../../castore/protos/castore.proto
./pathinfo.proto
./rpc_pathinfo.proto
../../../buf.yaml
../../../buf.gen.yaml
];
};
in
depot.nix.readTree.drvTargets {
inherit protos;
# Lints and ensures formatting of the proto files.
check = pkgs.stdenv.mkDerivation {
name = "proto-check";
src = protos;
nativeBuildInputs = [
pkgs.buf
];
buildPhase = ''
export HOME=$TMPDIR
buf lint
buf format -d --exit-code
touch $out
'';
};
# Produces the golang bindings.
go-bindings = pkgs.stdenv.mkDerivation {
name = "go-bindings";
src = depot.nix.sparseTree {
name = "castore-protos";
root = depot.path.origSrc;
paths = [
# We need to include castore.proto (only), as it's referred.
../../castore/protos/castore.proto
./pathinfo.proto
./rpc_pathinfo.proto
../../../buf.yaml
../../../buf.gen.yaml
];
};
src = protos;
nativeBuildInputs = [
pkgs.buf
@ -24,8 +46,6 @@
buildPhase = ''
export HOME=$TMPDIR
buf lint
buf format -d --exit-code
buf generate
mkdir -p $out