These functions work like buildGo.program & buildGo.package, but run the .go2 sources through go2go first before passing them to the //nix/buildGo equivalents. Change-Id: Id1ebab6085c390d6986387370181377b9f5d39e8
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			865 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			865 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # 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 ? [], x_defs ? {}, sfiles ? [] }: depot.nix.buildGo.package {
 | |
|     inherit name deps x_defs sfiles;
 | |
|     srcs = map go2go srcs;
 | |
|   };
 | |
| }
 |