gopkg.in/hugelgupf/u-root.v2@v2.0.0-20180831055005-3f8fdb0ce09d/tools/makebb/makebb.go (about)

     1  // Copyright 2015-2018 the u-root Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // makebb compiles many Go commands into one bb-style binary.
     6  package main
     7  
     8  import (
     9  	"flag"
    10  	"log"
    11  	"path/filepath"
    12  
    13  	"github.com/u-root/u-root/pkg/golang"
    14  	"github.com/u-root/u-root/pkg/uroot"
    15  	"github.com/u-root/u-root/pkg/uroot/builder"
    16  )
    17  
    18  var outputPath = flag.String("o", "bb", "Path to busybox binary")
    19  
    20  func main() {
    21  	flag.Parse()
    22  
    23  	env := golang.Default()
    24  	if env.CgoEnabled {
    25  		log.Printf("Disabling CGO for u-root...")
    26  		env.CgoEnabled = false
    27  	}
    28  	log.Printf("Build environment: %s", env)
    29  
    30  	pkgs := flag.Args()
    31  	var err error
    32  	if len(pkgs) == 0 {
    33  		pkgs, err = uroot.DefaultPackageImports(env)
    34  	} else {
    35  		pkgs, err = uroot.ResolvePackagePaths(env, pkgs)
    36  	}
    37  	if err != nil {
    38  		log.Fatal(err)
    39  	}
    40  
    41  	o, err := filepath.Abs(*outputPath)
    42  	if err != nil {
    43  		log.Fatal(err)
    44  	}
    45  
    46  	if err := builder.BuildBusybox(env, pkgs, o); err != nil {
    47  		log.Fatal(err)
    48  	}
    49  }