tvl-depot/nix/buildTypedGo/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

34 lines
863 B
Nix
Raw Normal View History

# SPDX-License-Identifier: Apache-2.0
#
# A crude wrapper around //nix/buildGo that supports the Go 2 alpha.
#
# The way the alpha is implemented is via a transpiler from typed to
# untyped Go.
{ depot, pkgs, ... }:
let
inherit (builtins)
stringLength
substring;
inherit (depot.nix.buildGo) gpackage program;
go2goext = file: substring 0 ((stringLength file) - 1) file;
go2go = file: pkgs.runCommandNoCC "${go2goext (toString file)}" {} ''
cp ${file} .
${pkgs.go}/bin/go tool go2go translate *.go2
mv *.go $out
'';
in rec {
program = { name, srcs, deps ? [], x_defs ? {} }: depot.nix.buildGo.program {
inherit name deps x_defs;
srcs = map go2go srcs;
};
package = { name, srcs, deps ? [], path ? name, sfiles ? [] }: depot.nix.buildGo.package {
inherit name deps path sfiles;
srcs = map go2go srcs;
};
}