@@ -66,12 +66,13 @@ type GetBase func(context.Context, string) (name.Reference, Result, error)
66
66
67
67
// buildContext provides parameters for a builder function.
68
68
type buildContext struct {
69
- creationTime v1.Time
70
- ip string
71
- dir string
72
- mergedEnv []string
73
- platform v1.Platform
74
- config Config
69
+ creationTime v1.Time
70
+ ip string
71
+ dir string
72
+ mergedEnv []string
73
+ mergedFlags []string
74
+ mergedLdflags []string
75
+ platform v1.Platform
75
76
}
76
77
77
78
type builder func (context.Context , buildContext ) (string , error )
@@ -95,6 +96,8 @@ type gobuild struct {
95
96
trimpath bool
96
97
buildConfigs map [string ]Config
97
98
env []string
99
+ flags []string
100
+ ldflags []string
98
101
platformMatcher * platformMatcher
99
102
dir string
100
103
labels map [string ]string
@@ -118,6 +121,8 @@ type gobuildOpener struct {
118
121
trimpath bool
119
122
buildConfigs map [string ]Config
120
123
env []string
124
+ flags []string
125
+ ldflags []string
121
126
platforms []string
122
127
labels map [string ]string
123
128
dir string
@@ -147,6 +152,8 @@ func (gbo *gobuildOpener) Open() (Interface, error) {
147
152
trimpath : gbo .trimpath ,
148
153
buildConfigs : gbo .buildConfigs ,
149
154
env : gbo .env ,
155
+ flags : gbo .flags ,
156
+ ldflags : gbo .ldflags ,
150
157
labels : gbo .labels ,
151
158
dir : gbo .dir ,
152
159
platformMatcher : matcher ,
@@ -830,17 +837,17 @@ func createBuildArgs(ctx context.Context, buildCtx buildContext) ([]string, erro
830
837
return nil , err
831
838
}
832
839
833
- if len (buildCtx .config . Flags ) > 0 {
834
- flags , err := applyTemplating (buildCtx .config . Flags , data )
840
+ if len (buildCtx .mergedFlags ) > 0 {
841
+ flags , err := applyTemplating (buildCtx .mergedFlags , data )
835
842
if err != nil {
836
843
return nil , err
837
844
}
838
845
839
846
args = append (args , flags ... )
840
847
}
841
848
842
- if len (buildCtx .config . Ldflags ) > 0 {
843
- ldflags , err := applyTemplating (buildCtx .config . Ldflags , data )
849
+ if len (buildCtx .mergedLdflags ) > 0 {
850
+ ldflags , err := applyTemplating (buildCtx .mergedLdflags , data )
844
851
if err != nil {
845
852
return nil , err
846
853
}
@@ -927,14 +934,25 @@ func (g *gobuild) buildOne(ctx context.Context, refStr string, base v1.Image, pl
927
934
return nil , fmt .Errorf ("could not create env for %s: %w" , ref .Path (), err )
928
935
}
929
936
937
+ // Merge global and build config flags.
938
+ var mergedFlags []string
939
+ mergedFlags = append (mergedFlags , g .flags ... )
940
+ mergedFlags = append (mergedFlags , config .Flags ... )
941
+
942
+ // Merge global and build config ldflags.
943
+ var mergedLdflags []string
944
+ mergedLdflags = append (mergedLdflags , g .ldflags ... )
945
+ mergedLdflags = append (mergedLdflags , config .Ldflags ... )
946
+
930
947
// Do the build into a temporary file.
931
948
file , err := g .build (ctx , buildContext {
932
- creationTime : g .creationTime ,
933
- ip : ref .Path (),
934
- dir : g .dir ,
935
- mergedEnv : mergedEnv ,
936
- platform : * platform ,
937
- config : config ,
949
+ creationTime : g .creationTime ,
950
+ ip : ref .Path (),
951
+ dir : g .dir ,
952
+ mergedEnv : mergedEnv ,
953
+ mergedFlags : mergedFlags ,
954
+ mergedLdflags : mergedLdflags ,
955
+ platform : * platform ,
938
956
})
939
957
if err != nil {
940
958
return nil , fmt .Errorf ("build: %w" , err )
0 commit comments