go.go 1.3 KB

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