mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-24 14:41:17 +00:00
goPackages: Split into multiple derivations
This should reduce the closure size for end users who only need go binaries as well as reduce the size of closures hydra builders consume.
This commit is contained in:
parent
0b4bcaad95
commit
83cf8b0cf8
|
@ -63,7 +63,7 @@ in {
|
|||
|
||||
package = mkOption {
|
||||
description = "Confd package to use.";
|
||||
default = pkgs.goPackages.confd;
|
||||
default = pkgs.confd;
|
||||
type = types.package;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -200,13 +200,13 @@ in {
|
|||
|
||||
staticRootPath = mkOption {
|
||||
description = "Root path for static assets.";
|
||||
default = "${cfg.package}/share/go/src/github.com/grafana/grafana/public";
|
||||
default = "${cfg.package.out}/share/go/src/github.com/grafana/grafana/public";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
description = "Package to use.";
|
||||
default = pkgs.goPackages.grafana;
|
||||
default = pkgs.grafana-backend;
|
||||
type = types.package;
|
||||
};
|
||||
|
||||
|
@ -319,7 +319,7 @@ in {
|
|||
wantedBy = ["multi-user.target"];
|
||||
after = ["networking.target"];
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/grafana --config ${cfgFile} web";
|
||||
ExecStart = "${cfg.package-backend}/bin/grafana --config ${cfgFile} web";
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
User = "grafana";
|
||||
};
|
||||
|
|
|
@ -95,7 +95,7 @@ in {
|
|||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.goPackages.hologram}/bin/hologram-server --debug --conf ${cfgFile}";
|
||||
ExecStart = "${pkgs.hologram}/bin/hologram-server --debug --conf ${cfgFile}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -129,19 +129,17 @@ go.stdenv.mkDerivation (
|
|||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
pushd "$NIX_BUILD_TOP/go"
|
||||
while read f; do
|
||||
echo "$f" | grep -q '^./\(src\|pkg/[^/]*\)/${goPackagePath}' || continue
|
||||
mkdir -p "$(dirname "$out/share/go/$f")"
|
||||
cp "$NIX_BUILD_TOP/go/$f" "$out/share/go/$f"
|
||||
done < <(find . -type f)
|
||||
popd
|
||||
|
||||
if [ -z "$dontInstallSrc" ]; then
|
||||
pushd "$NIX_BUILD_TOP/go"
|
||||
while read f; do
|
||||
echo "$f" | grep -q '^./\(src\|pkg/[^/]*\)/${goPackagePath}' || continue
|
||||
mkdir -p "$(dirname "$out/share/go/$f")"
|
||||
cp "$NIX_BUILD_TOP/go/$f" "$out/share/go/$f"
|
||||
done < <(find . -type f)
|
||||
popd
|
||||
fi
|
||||
|
||||
mkdir $bin
|
||||
dir="$NIX_BUILD_TOP/go/bin"
|
||||
[ -e "$dir" ] && cp -r $dir $out
|
||||
[ -e "$dir" ] && cp -r $dir $bin
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
@ -151,7 +149,7 @@ go.stdenv.mkDerivation (
|
|||
cat $file ${removeExpr removeReferences} > $file.tmp
|
||||
mv $file.tmp $file
|
||||
chmod +x $file
|
||||
done < <(find $out/bin -type f 2>/dev/null)
|
||||
done < <(find $bin/bin -type f 2>/dev/null)
|
||||
'';
|
||||
|
||||
disallowedReferences = lib.optional (!allowGoReference) go
|
||||
|
@ -161,6 +159,9 @@ go.stdenv.mkDerivation (
|
|||
|
||||
enableParallelBuilding = enableParallelBuilding;
|
||||
|
||||
# I prefer to call this dev but propagatedBuildInputs expects $out to exist
|
||||
outputs = [ "out" "bin" ];
|
||||
|
||||
meta = {
|
||||
# Add default meta information
|
||||
platforms = lib.platforms.all;
|
||||
|
|
|
@ -818,13 +818,13 @@ let
|
|||
|
||||
clib = callPackage ../tools/package-management/clib { };
|
||||
|
||||
consul = goPackages.consul;
|
||||
consul = goPackages.consul.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
consul-ui = callPackage ../servers/consul/ui.nix { };
|
||||
|
||||
consul-alerts = goPackages.consul-alerts;
|
||||
consul-alerts = goPackages.consul-alerts.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
consul-template = goPackages.consul-template;
|
||||
consul-template = goPackages.consul-template.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
corosync = callPackage ../servers/corosync { };
|
||||
|
||||
|
@ -948,7 +948,7 @@ let
|
|||
|
||||
mcrypt = callPackage ../tools/misc/mcrypt { };
|
||||
|
||||
mongodb-tools = goPackages.mongo-tools;
|
||||
mongodb-tools = goPackages.mongo-tools.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
mstflint = callPackage ../tools/misc/mstflint { };
|
||||
|
||||
|
@ -1701,7 +1701,8 @@ let
|
|||
|
||||
gptfdisk = callPackage ../tools/system/gptfdisk { };
|
||||
|
||||
grafana = callPackage ../development/tools/misc/grafana { };
|
||||
grafana-frontend = callPackage ../development/tools/misc/grafana { };
|
||||
grafana-backend = pkgs.goPackages.grafana.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
grafx2 = callPackage ../applications/graphics/grafx2 {};
|
||||
|
||||
|
@ -2153,7 +2154,7 @@ let
|
|||
lshw = callPackage ../tools/system/lshw { };
|
||||
|
||||
lxc = callPackage ../os-specific/linux/lxc { };
|
||||
lxd = goPackages.lxd;
|
||||
lxd = goPackages.lxd.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
lzip = callPackage ../tools/compression/lzip { };
|
||||
|
||||
|
@ -4074,7 +4075,7 @@ let
|
|||
|
||||
go-repo-root = callPackage ../development/tools/misc/go-repo-root { };
|
||||
|
||||
gox = goPackages.gox;
|
||||
gox = goPackages.gox.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
gprolog = callPackage ../development/compilers/gprolog { };
|
||||
|
||||
|
@ -8664,7 +8665,7 @@ let
|
|||
go = go_1_4;
|
||||
buildGoPackage = import ../development/go-modules/generic {
|
||||
go = go_1_4;
|
||||
govers = go14Packages.govers;
|
||||
govers = go14Packages.govers.bin;
|
||||
inherit parallel lib;
|
||||
};
|
||||
overrides = (config.goPackageOverrides or (p: {})) pkgs;
|
||||
|
@ -8674,7 +8675,7 @@ let
|
|||
go = go_1_5;
|
||||
buildGoPackage = import ../development/go-modules/generic {
|
||||
go = go_1_5;
|
||||
govers = go15Packages.govers;
|
||||
govers = go15Packages.govers.bin;
|
||||
inherit parallel lib;
|
||||
};
|
||||
overrides = (config.goPackageOverrides or (p: {})) pkgs;
|
||||
|
@ -8958,7 +8959,7 @@ let
|
|||
|
||||
dovecot_pigeonhole = callPackage ../servers/mail/dovecot-pigeonhole { };
|
||||
|
||||
etcd = goPackages.etcd;
|
||||
etcd = goPackages.etcd.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
ejabberd = callPackage ../servers/xmpp/ejabberd {
|
||||
erlang = erlangR16;
|
||||
|
@ -8975,7 +8976,7 @@ let
|
|||
v8 = v8_3_24_10;
|
||||
};
|
||||
|
||||
etcdctl = goPackages.etcd;
|
||||
etcdctl = etcd;
|
||||
|
||||
exim = callPackage ../servers/mail/exim { };
|
||||
|
||||
|
@ -10084,7 +10085,7 @@ let
|
|||
|
||||
gotags = callPackage ../development/tools/gotags { };
|
||||
|
||||
golint = goPackages.lint;
|
||||
golint = goPackages.lint.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
godep = callPackage ../development/tools/godep { };
|
||||
|
||||
|
@ -13668,6 +13669,8 @@ let
|
|||
|
||||
chessdb = callPackage ../games/chessdb { };
|
||||
|
||||
confd = pkgs.goPackages.conf.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
construoBase = lowPrio (callPackage ../games/construo {
|
||||
mesa = null;
|
||||
freeglut = null;
|
||||
|
@ -14529,6 +14532,8 @@ let
|
|||
camlp5 = ocamlPackages.camlp5_strict;
|
||||
};
|
||||
|
||||
hologram = pkgs.goPackages.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
isabelle = import ../applications/science/logic/isabelle {
|
||||
inherit (pkgs) stdenv fetchurl nettools perl polyml;
|
||||
inherit (pkgs.emacs24Packages) proofgeneral;
|
||||
|
@ -15130,7 +15135,7 @@ let
|
|||
|
||||
utf8proc = callPackage ../development/libraries/utf8proc { };
|
||||
|
||||
vault = goPackages.vault;
|
||||
vault = goPackages.vault.bin // { outputs = [ "bin" ]; };
|
||||
|
||||
vbam = callPackage ../misc/emulators/vbam {
|
||||
inherit (xlibs) libpthreadstubs;
|
||||
|
|
|
@ -130,12 +130,12 @@ let
|
|||
|
||||
preConfigure = ''
|
||||
# Make the builtin tools available here
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $bin/bin
|
||||
eval $(go env | grep GOTOOLDIR)
|
||||
find $GOTOOLDIR -type f | while read x; do
|
||||
ln -sv "$x" "$out/bin"
|
||||
ln -sv "$x" "$binbin"
|
||||
done
|
||||
export GOTOOLDIR=$out/bin
|
||||
export GOTOOLDIR=$bin/bin
|
||||
'';
|
||||
|
||||
excludedPackages = "\\("
|
||||
|
@ -381,11 +381,11 @@ let
|
|||
};
|
||||
|
||||
consul = buildFromGitHub {
|
||||
rev = "a6317f2fb2ba9d5ae695f7fa703cfb30a1c59af1";
|
||||
date = "2015-07-24";
|
||||
rev = "4adc0b5c660919e3f21c9a60f567fd872b9e3d1e";
|
||||
date = "2015-08-27";
|
||||
owner = "hashicorp";
|
||||
repo = "consul";
|
||||
sha256 = "0jixpl9yksasqx9rkidx8qmqc59m34kiibsqfsv56g87wzyp89rs";
|
||||
sha256 = "1h4hbyr2c8yfmn5ijga5zx470mdplg231kbxbqfpvswrk69q89j3";
|
||||
|
||||
buildInputs = [
|
||||
circbuf armon.go-metrics go-radix gomdb bolt consul-migrate go-checkpoint
|
||||
|
@ -1326,7 +1326,6 @@ let
|
|||
repo = "lint";
|
||||
sha256 = "1bj7zv534hyh87bp2vsbhp94qijc5nixb06li1dzfz9n0wcmlqw9";
|
||||
excludedPackages = "testdata";
|
||||
dontInstallSrc = true;
|
||||
buildInputs = [ tools ];
|
||||
};
|
||||
|
||||
|
@ -1719,11 +1718,11 @@ let
|
|||
# Mongodb incorrectly names all of their binaries main
|
||||
# Let's work around this with our own installer
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $bin/bin
|
||||
while read b; do
|
||||
rm -f go/bin/main
|
||||
go install $goPackagePath/$b/main
|
||||
cp go/bin/main $out/bin/$b
|
||||
cp go/bin/main $bin/bin/$b
|
||||
done < <(find go/src/$goPackagePath -name main | xargs dirname | xargs basename -a)
|
||||
'';
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue