go.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "os/exec"
  6. "time"
  7. )
  8. func buildV2Ray(targetFile string, version string, goOS GoOS, goArch GoArch, extraLdFlags string) error {
  9. goPath := os.Getenv("GOPATH")
  10. ldFlags := "-s " + extraLdFlags
  11. if version != "custom" {
  12. year, month, day := time.Now().UTC().Date()
  13. today := fmt.Sprintf("%04d%02d%02d", year, int(month), day)
  14. ldFlags = ldFlags + " -X v2ray.com/core.version=" + version + " -X v2ray.com/core.build=" + today
  15. }
  16. cmd := exec.Command(
  17. "go", "build",
  18. "-tags", "json",
  19. "-o", targetFile,
  20. "-compiler", "gc",
  21. "-ldflags", ldFlags,
  22. "-gcflags", "-trimpath="+goPath,
  23. "-asmflags", "-trimpath="+goPath,
  24. "v2ray.com/core/main")
  25. cmd.Env = append(cmd.Env, "GOOS="+string(goOS), "GOARCH="+string(goArch), "CGO_ENABLED=0")
  26. cmd.Env = append(cmd.Env, os.Environ()...)
  27. output, err := cmd.CombinedOutput()
  28. if len(output) > 0 {
  29. fmt.Println(string(output))
  30. }
  31. return err
  32. }
  33. func signFile(file string) error {
  34. pass := os.Getenv("GPG_SIGN_PASS")
  35. cmd := exec.Command("gpg", "--digest-algo", "SHA512", "--no-tty", "--batch", "--passphrase", pass, "--output", file+".sig", "--detach-sig", file)
  36. cmd.Env = append(cmd.Env, os.Environ()...)
  37. output, err := cmd.CombinedOutput()
  38. if len(output) > 0 {
  39. fmt.Println(string(output))
  40. }
  41. return err
  42. }