func BuildGcsfuse()

in tools/util/build_gcsfuse.go [28:88]


func BuildGcsfuse(dstDir string) (err error) {
	// Ensure we have a copy of build_gcsfuse sitting around.
	var toolPath string
	{
		var toolDir string
		toolDir, err = os.MkdirTemp("", "gcsfuse_integration_tests")
		if err != nil {
			err = fmt.Errorf("TempDir: %w", err)
			return
		}

		defer os.RemoveAll(toolDir)

		toolPath = path.Join(toolDir, "build_gcsfuse")
		log.Printf("Building build_gcsfuse at %s", toolPath)

		err = buildBuildGcsfuse(toolPath)
		if err != nil {
			err = fmt.Errorf("buildBuildGcsfuse: %w", err)
			return
		}
	}

	// Figure out where we can find the source code for gcsfuse.
	var srcDir string
	{
		var pkg *build.Package
		pkg, err = build.Import(
			"github.com/googlecloudplatform/gcsfuse/v2",
			"",
			build.FindOnly)

		if err != nil {
			err = fmt.Errorf("build.Import: %w", err)
			return
		}

		srcDir = pkg.Dir
	}

	// Use build_gcsfuse to perform a build.
	log.Printf("Building gcsfuse into %s", dstDir)

	{
		cmd := exec.Command(
			toolPath,
			srcDir,
			dstDir,
			"fake_version",
		)

		var output []byte
		output, err = cmd.CombinedOutput()
		if err != nil {
			err = fmt.Errorf("build_gcsfuse: %w\nOutput:\n%s", err, output)
			return
		}
	}

	return
}