mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
| package compilers
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"os/exec"
 | |
| 	"path/filepath"
 | |
| )
 | |
| 
 | |
| const (
 | |
| 	ArmV6        = "/opt/rpi-tools/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc"
 | |
| 	Armv7        = "arm-linux-gnueabihf-gcc"
 | |
| 	Armv7Musl    = "/tmp/arm-linux-musleabihf-cross/bin/arm-linux-musleabihf-gcc"
 | |
| 	Arm64        = "aarch64-linux-gnu-gcc"
 | |
| 	Arm64Musl    = "/tmp/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc"
 | |
| 	Osx64        = "/tmp/osxcross/target/bin/o64-clang"
 | |
| 	Win64        = "x86_64-w64-mingw32-gcc"
 | |
| 	LinuxX64     = "/tmp/x86_64-centos6-linux-gnu/bin/x86_64-centos6-linux-gnu-gcc"
 | |
| 	LinuxX64Musl = "/tmp/x86_64-linux-musl-cross/bin/x86_64-linux-musl-gcc"
 | |
| )
 | |
| 
 | |
| func Install() error {
 | |
| 	// From the os.TempDir documentation:
 | |
| 	// On Unix systems, it returns $TMPDIR if non-empty,
 | |
| 	// else /tmp. On Windows, it uses GetTempPath,
 | |
| 	// returning the first non-empty value from %TMP%, %TEMP%, %USERPROFILE%,
 | |
| 	// or the Windows directory. On Plan 9, it returns /tmp.
 | |
| 	tmp := os.TempDir()
 | |
| 
 | |
| 	var (
 | |
| 		centosArchive = "x86_64-centos6-linux-gnu.tar.xz"
 | |
| 		osxArchive    = "osxcross.tar.xz"
 | |
| 	)
 | |
| 
 | |
| 	for _, fname := range []string{centosArchive, osxArchive} {
 | |
| 		path := filepath.Join(tmp, fname)
 | |
| 		if _, err := os.Stat(path); err != nil {
 | |
| 			return fmt.Errorf("stat error: %w", err)
 | |
| 		}
 | |
| 		// Ignore gosec G204 as this function is only used in the build process.
 | |
| 		//nolint:gosec
 | |
| 		cmd := exec.Command("tar", "xfJ", fname)
 | |
| 		cmd.Dir = tmp
 | |
| 		if output, err := cmd.CombinedOutput(); err != nil {
 | |
| 			return fmt.Errorf("failed to unpack %q: %q, %w", fname, output, err)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| }
 |