summaryrefslogtreecommitdiff
path: root/pkgs/applications/networking/cluster/kubernetes/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/cluster/kubernetes/default.nix')
-rw-r--r--pkgs/applications/networking/cluster/kubernetes/default.nix66
1 files changed, 40 insertions, 26 deletions
diff --git a/pkgs/applications/networking/cluster/kubernetes/default.nix b/pkgs/applications/networking/cluster/kubernetes/default.nix
index 75083409ba7b..860ecd1d0784 100644
--- a/pkgs/applications/networking/cluster/kubernetes/default.nix
+++ b/pkgs/applications/networking/cluster/kubernetes/default.nix
@@ -1,55 +1,69 @@
-{ stdenv, fetchFromGitHub, which, go, makeWrapper, iptables, rsync, utillinux, coreutils, e2fsprogs, procps-ng }:
+{ stdenv, lib, fetchFromGitHub, which, go, go-bindata, makeWrapper, rsync
+, iptables, coreutils
+, components ? [
+ "cmd/kubectl"
+ "cmd/kubelet"
+ "cmd/kube-apiserver"
+ "cmd/kube-controller-manager"
+ "cmd/kube-proxy"
+ "plugin/cmd/kube-scheduler"
+ "cmd/kube-dns"
+ "federation/cmd/federation-apiserver"
+ "federation/cmd/federation-controller-manager"
+ ]
+}:
+
+with lib;
stdenv.mkDerivation rec {
name = "kubernetes-${version}";
- version = "1.2.4";
+ version = "1.4.0";
src = fetchFromGitHub {
owner = "kubernetes";
repo = "kubernetes";
rev = "v${version}";
- sha256 = "1a3y0f1l008ywkwwygg9vn2rb722c54i3pbgqks38gw1yyvgbiih";
+ sha256 = "0q7xwdjsmfrz7pnmylkbkr2yxsl2gzzy17aapfznl2hb1ms81kys";
};
- buildInputs = [ makeWrapper which go iptables rsync ];
+ buildInputs = [ makeWrapper which go rsync go-bindata ];
- buildPhase = ''
- GOPATH=$(pwd):$(pwd)/Godeps/_workspace
- mkdir -p $(pwd)/Godeps/_workspace/src/k8s.io
- ln -s $(pwd) $(pwd)/Godeps/_workspace/src/k8s.io/kubernetes
+ outputs = ["out" "man""pause"];
+ postPatch = ''
substituteInPlace "hack/lib/golang.sh" --replace "_cgo" ""
patchShebangs ./hack
- hack/build-go.sh --use_go_build
-
- (cd cluster/addons/dns/kube2sky && go build ./kube2sky.go)
'';
+ WHAT="--use_go_build ${concatStringsSep " " components}";
+
+ postBuild = "(cd build/pause && gcc pause.c -o pause)";
+
installPhase = ''
- mkdir -p "$out/bin" "$out"/libexec/kubernetes/cluster
- cp _output/local/go/bin/{kube*,hyperkube} "$out/bin/"
- cp cluster/addons/dns/kube2sky/kube2sky "$out/bin/"
- cp cluster/saltbase/salt/helpers/safe_format_and_mount "$out/libexec/kubernetes"
- cp -R hack "$out/libexec/kubernetes"
- cp cluster/update-storage-objects.sh "$out/libexec/kubernetes/cluster"
- makeWrapper "$out"/libexec/kubernetes/cluster/update-storage-objects.sh "$out"/bin/kube-update-storage-objects \
- --prefix KUBE_BIN : "$out/bin"
+ mkdir -p "$out/bin" "$man/share/man" "$pause/bin"
+
+ cp _output/local/go/bin/* "$out/bin/"
+ cp build/pause/pause "$pause/bin/pause"
+ cp -R docs/man/man1 "$man/share/man"
'';
preFixup = ''
wrapProgram "$out/bin/kube-proxy" --prefix PATH : "${iptables}/bin"
- wrapProgram "$out/bin/kubelet" --prefix PATH : "${stdenv.lib.makeBinPath [ utillinux procps-ng ]}"
- chmod +x "$out/libexec/kubernetes/safe_format_and_mount"
- wrapProgram "$out/libexec/kubernetes/safe_format_and_mount" --prefix PATH : "${stdenv.lib.makeBinPath [ e2fsprogs utillinux ]}"
- substituteInPlace "$out"/libexec/kubernetes/cluster/update-storage-objects.sh \
- --replace KUBE_OUTPUT_HOSTBIN KUBE_BIN
+ wrapProgram "$out/bin/kubelet" --prefix PATH : "${coreutils}/bin"
+
+ # Remove references to go compiler
+ while read file; do
+ cat $file | sed "s,${go},$(echo "${go}" | sed "s,$NIX_STORE/[^-]*,$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,"),g" > $file.tmp
+ mv $file.tmp $file
+ chmod +x $file
+ done < <(find $out/bin $pause/bin -type f 2>/dev/null)
'';
- meta = with stdenv.lib; {
+ meta = {
description = "Production-Grade Container Scheduling and Management";
license = licenses.asl20;
homepage = http://kubernetes.io;
maintainers = with maintainers; [offline];
- platforms = [ "x86_64-linux" ];
+ platforms = platforms.linux;
};
}