Unverified Commit 58ffa554 authored by Pol Dellaiera's avatar Pol Dellaiera Committed by GitHub
Browse files

mkKops: use lib.extendMkDerivation (#489533)

parents 42fabad0 4ed71b97
Loading
Loading
Loading
Loading
+13 −71
Original line number Diff line number Diff line
@@ -4,87 +4,29 @@
  buildGoModule,
  fetchFromGitHub,
  installShellFiles,
  callPackage,
}:
let
  generic =
    {
      version,
      sha256,
      rev ? version,
      ...
    }@attrs:
    let
      attrs' = removeAttrs attrs [
        "version"
        "sha256"
        "rev"
      ];
  mkKops = callPackage ./mkkops.nix { };
in
    buildGoModule {
      pname = "kops";
      inherit version;

      src = fetchFromGitHub {
        rev = rev;
        owner = "kubernetes";
        repo = "kops";
        inherit sha256;
      };

      vendorHash = null;

      nativeBuildInputs = [ installShellFiles ];

      subPackages = [ "cmd/kops" ];

      ldflags = [
        "-s"
        "-w"
        "-X k8s.io/kops.Version=${version}"
        "-X k8s.io/kops.GitVersion=${version}"
      ];

      doCheck = false;

      postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
        installShellCompletion --cmd kops \
          --bash <($GOPATH/bin/kops completion bash) \
          --fish <($GOPATH/bin/kops completion fish) \
          --zsh <($GOPATH/bin/kops completion zsh)
      '';

      meta = {
        description = "Easiest way to get a production Kubernetes up and running";
        mainProgram = "kops";
        homepage = "https://github.com/kubernetes/kops";
        changelog = "https://github.com/kubernetes/kops/tree/master/docs/releases";
        license = lib.licenses.asl20;
        maintainers = with lib.maintainers; [
          zimbatm
          yurrriq
        ];
      };
    }
    // attrs';
in
rec {
  mkKops = generic;
{
  inherit mkKops;

  kops_1_31 = mkKops rec {
  kops_1_31 = mkKops (finalAttrs: {
    version = "1.31.0";
    sha256 = "sha256-q9megrNXXKJ/YqP/fjPHh8Oji4dPK5M3HLHa+ufwRAM=";
    rev = "v${version}";
  };
    rev = "v${finalAttrs.version}";
  });

  kops_1_32 = mkKops rec {
  kops_1_32 = mkKops (finalAttrs: {
    version = "1.32.1";
    sha256 = "sha256-nQKeTDajtUffPBhPrPuaJ+1XWgLDUltwDQDZHkylys4=";
    rev = "v${version}";
  };
    rev = "v${finalAttrs.version}";
  });

  kops_1_33 = mkKops rec {
  kops_1_33 = mkKops (finalAttrs: {
    version = "1.33.0";
    sha256 = "sha256-VnnKWcU83yqsKW54Q1tr99/Ln8ppMyB7GLl70rUFGDY=";
    rev = "v${version}";
  };
    rev = "v${finalAttrs.version}";
  });
}
+68 −0
Original line number Diff line number Diff line
{
  lib,
  buildGoModule,
  fetchFromGitHub,
  installShellFiles,
  stdenv,
}:
lib.extendMkDerivation {
  constructDrv = buildGoModule;

  excludeDrvArgNames = [
    "sha256"
    "rev"
  ];

  extendDrvArgs =
    finalAttrs:
    {
      version,
      sha256,
      rev ? version,
      ...
    }:
    {
      pname = "kops";

      src = fetchFromGitHub {
        rev = rev;
        owner = "kubernetes";
        repo = "kops";
        inherit sha256;
      };

      vendorHash = null;

      nativeBuildInputs = [ installShellFiles ];

      subPackages = [ "cmd/kops" ];

      ldflags = [
        "-s"
        "-w"
        "-X k8s.io/kops.Version=${finalAttrs.version}"
        "-X k8s.io/kops.GitVersion=${finalAttrs.version}"
      ];

      doCheck = false;

      postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
        installShellCompletion --cmd kops \
          --bash <($GOPATH/bin/kops completion bash) \
          --fish <($GOPATH/bin/kops completion fish) \
          --zsh <($GOPATH/bin/kops completion zsh)
      '';

      meta = {
        description = "Easiest way to get a production Kubernetes up and running";
        mainProgram = "kops";
        homepage = "https://github.com/kubernetes/kops";
        changelog = "https://github.com/kubernetes/kops/tree/master/docs/releases";
        license = lib.licenses.asl20;
        maintainers = with lib.maintainers; [
          zimbatm
          yurrriq
        ];
      };
    };
}