mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 13:09:22 -06:00
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
|
||
|
}
|