@@ -107,28 +107,22 @@ func (s *PluginServe) writeTablesJSON(ctx context.Context, dir string) error {
107107 return os .WriteFile (outputPath , buffer .Bytes (), 0644 )
108108}
109109
110- func (s * PluginServe ) build (pluginDirectory , goos , goarch , distPath , pluginVersion string ) (* TargetBuild , error ) {
111- pluginFileName := fmt .Sprintf ("plugin-%s-%s-%s-%s" , s .plugin .Name (), pluginVersion , goos , goarch )
110+ func (s * PluginServe ) build (pluginDirectory string , target plugin. BuildTarget , distPath , pluginVersion string ) (* TargetBuild , error ) {
111+ pluginFileName := fmt .Sprintf ("plugin-%s-%s-%s-%s" , s .plugin .Name (), pluginVersion , target . OS , target . Arch )
112112 pluginPath := path .Join (distPath , pluginFileName )
113113 importPath , err := s .getModuleName (pluginDirectory )
114114 if err != nil {
115115 return nil , err
116116 }
117117 ldFlags := fmt .Sprintf ("-s -w -X %[1]s/plugin.Version=%[2]s -X %[1]s/resources/plugin.Version=%[2]s" , importPath , pluginVersion )
118- if s .plugin .IsStaticLinkingEnabled () && strings .EqualFold (goos , plugin .GoOSLinux ) {
119- ldFlags += " -linkmode external -extldflags=-static"
120- }
121118 args := []string {"build" , "-o" , pluginPath }
122119 args = append (args , "-buildmode=exe" )
123120 args = append (args , "-ldflags" , ldFlags )
124121 cmd := exec .Command ("go" , args ... )
125122 cmd .Dir = pluginDirectory
126123 cmd .Stdout = os .Stdout
127124 cmd .Stderr = os .Stderr
128- cmd .Env = os .Environ ()
129- cmd .Env = append (cmd .Env , fmt .Sprintf ("GOOS=%s" , goos ))
130- cmd .Env = append (cmd .Env , fmt .Sprintf ("GOARCH=%s" , goarch ))
131- cmd .Env = append (cmd .Env , fmt .Sprintf ("CGO_ENABLED=%v" , getEnvOrDefault ("CGO_ENABLED" , "0" ))) // default to CGO_ENABLED=0
125+ cmd .Env = append (os .Environ (), target .EnvVariables ()... )
132126 if err := cmd .Run (); err != nil {
133127 return nil , fmt .Errorf ("failed to build plugin with `go %v`: %w" , args , err )
134128 }
@@ -178,8 +172,8 @@ func (s *PluginServe) build(pluginDirectory, goos, goarch, distPath, pluginVersi
178172 }
179173
180174 return & TargetBuild {
181- OS : goos ,
182- Arch : goarch ,
175+ OS : target . OS ,
176+ Arch : target . Arch ,
183177 Path : targetZip ,
184178 Checksum : "sha256:" + checksum ,
185179 }, nil
@@ -421,7 +415,7 @@ func (s *PluginServe) newCmdPluginPackage() *cobra.Command {
421415 targets := []TargetBuild {}
422416 for _ , target := range s .plugin .Targets () {
423417 fmt .Println ("Building for OS: " + target .OS + ", ARCH: " + target .Arch )
424- targetBuild , err := s .build (pluginDirectory , target . OS , target . Arch , distPath , pluginVersion )
418+ targetBuild , err := s .build (pluginDirectory , target , distPath , pluginVersion )
425419 if err != nil {
426420 return fmt .Errorf ("failed to build plugin for %s/%s: %w" , target .OS , target .Arch , err )
427421 }
0 commit comments