biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / development / tools / buf / default.nix
blob603c0865419ce1fda31a7654cd808adc39946331
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
4 , protobuf
5 , git
6 , testers
7 , buf
8 , installShellFiles
9 }:
11 buildGoModule rec {
12   pname = "buf";
13   version = "1.31.0";
15   src = fetchFromGitHub {
16     owner = "bufbuild";
17     repo = pname;
18     rev = "v${version}";
19     hash = "sha256-CNt7ZfUMRQNNVusaBgEW64WH1TFYz8yEBfKksGVRVUM=";
20   };
22   vendorHash = "sha256-kagSvwxVE+URRY2C5tRtdRwtHBIdQh3BWUG1b3+L8Os=";
24   patches = [
25     # Skip a test that requires networking to be available to work,
26     # and a test which requires the source checkout to be part of a git repository
27     ./skip_broken_tests.patch
28   ];
30   nativeBuildInputs = [ installShellFiles ];
32   ldflags = [ "-s" "-w" ];
34   nativeCheckInputs = [
35     git # Required for TestGitCloner
36     protobuf # Required for buftesting.GetProtocFilePaths
37   ];
39   preCheck = ''
40     # The tests need access to some of the built utilities
41     export PATH="$PATH:$GOPATH/bin"
42   '';
44   # Allow tests that bind or connect to localhost on macOS.
45   __darwinAllowLocalNetworking = true;
47   installPhase = ''
48     runHook preInstall
50     # Binaries
51     # Only install required binaries, don't install testing binaries
52     for FILE in buf protoc-gen-buf-breaking protoc-gen-buf-lint; do
53       install -D -m 555 -t $out/bin $GOPATH/bin/$FILE
54     done
56     # Completions
57     installShellCompletion --cmd buf \
58       --bash <($GOPATH/bin/buf completion bash) \
59       --fish <($GOPATH/bin/buf completion fish) \
60       --zsh <($GOPATH/bin/buf completion zsh)
62     # Man Pages
63     mkdir man && $GOPATH/bin/buf manpages man
64     installManPage man/*
66     runHook postInstall
67   '';
69   passthru.tests.version = testers.testVersion { package = buf; };
71   meta = with lib; {
72     homepage = "https://buf.build";
73     changelog = "https://github.com/bufbuild/buf/releases/tag/v${version}";
74     description = "Create consistent Protobuf APIs that preserve compatibility and comply with design best-practices";
75     license = licenses.asl20;
76     maintainers = with maintainers; [ jk lrewega ];
77   };