go.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. bUser := os.Getenv("V_USER")
  16. if len(bUser) > 0 {
  17. ldFlags += " -X v2ray.com/ext/tools/conf.bUser=" + bUser
  18. }
  19. }
  20. cmd := exec.Command(
  21. "go", "build",
  22. "-tags", "json",
  23. "-o", targetFile,
  24. "-compiler", "gc",
  25. "-ldflags", ldFlags,
  26. "-gcflags", "-trimpath="+goPath,
  27. "-asmflags", "-trimpath="+goPath,
  28. "v2ray.com/core/main")
  29. cmd.Env = append(cmd.Env, "GOOS="+string(goOS), "GOARCH="+string(goArch), "CGO_ENABLED=0")
  30. cmd.Env = append(cmd.Env, os.Environ()...)
  31. output, err := cmd.CombinedOutput()
  32. if len(output) > 0 {
  33. fmt.Println(string(output))
  34. }
  35. return err
  36. }
  37. func signFile(file string) error {
  38. pass := os.Getenv("GPG_SIGN_PASS")
  39. cmd := exec.Command("gpg", "--digest-algo", "SHA512", "--no-tty", "--batch", "--passphrase", pass, "--output", file+".sig", "--detach-sig", file)
  40. cmd.Env = append(cmd.Env, os.Environ()...)
  41. output, err := cmd.CombinedOutput()
  42. if len(output) > 0 {
  43. fmt.Println(string(output))
  44. }
  45. return err
  46. }