@@ -139,36 +139,23 @@ func ProcessArgsWithLDFlags(args []string, projectRoot, pythonPath, pythonHome s
139
139
result := make ([]string , 0 , len (args ))
140
140
141
141
// Prepare the -X flags we want to add
142
- var xFlags []string
143
- if pythonHome != "" {
144
- xFlags = append (xFlags , fmt .Sprintf ("-X 'github.com/cpunion/go-python.ProjectRoot=%s'" , projectRoot ))
145
- }
142
+ ldflags := fmt .Sprintf ("-X 'github.com/cpunion/go-python.ProjectRoot=%s'" , projectRoot )
146
143
147
144
// Prepare rpath flag if needed
148
- var rpathFlag string
149
- if pythonHome != "" {
150
- pythonLibDir := filepath .Join (pythonHome , "lib" )
151
- switch runtime .GOOS {
152
- case "darwin" , "linux" :
153
- rpathFlag = fmt .Sprintf ("-extldflags '-Wl,-rpath,%s'" , pythonLibDir )
154
- case "windows" :
155
- // Windows doesn't use rpath
156
- rpathFlag = ""
157
- default :
158
- // Use Linux format for other Unix-like systems
159
- rpathFlag = fmt .Sprintf ("-extldflags '-Wl,-rpath=%s'" , pythonLibDir )
160
- }
145
+ pythonLibDir := env .GetPythonLibDir (projectRoot )
146
+ switch runtime .GOOS {
147
+ case "darwin" , "linux" :
148
+ ldflags += fmt .Sprintf (" -extldflags '-Wl,-rpath,%s'" , pythonLibDir )
149
+ case "windows" :
150
+ // Windows doesn't use rpath
151
+ default :
152
+ // Use Linux format for other Unix-like systems
153
+ ldflags += fmt .Sprintf (" -extldflags '-Wl,-rpath=%s'" , pythonLibDir )
161
154
}
162
155
163
- // Find existing -ldflags if any
164
- foundLDFlags := false
165
156
for i := 0 ; i < len (args ); i ++ {
166
157
arg := args [i ]
167
158
if strings .HasPrefix (arg , "-ldflags=" ) || arg == "-ldflags" {
168
- foundLDFlags = true
169
- // Copy everything before this arg
170
- result = append (result , args [:i ]... )
171
-
172
159
// Get existing flags
173
160
var existingFlags string
174
161
if strings .HasPrefix (arg , "-ldflags=" ) {
@@ -177,44 +164,15 @@ func ProcessArgsWithLDFlags(args []string, projectRoot, pythonPath, pythonHome s
177
164
existingFlags = args [i + 1 ]
178
165
i ++ // Skip the next arg since we've consumed it
179
166
}
180
-
181
- // Combine all flags
182
- var allFlags []string
183
- if len (xFlags ) > 0 {
184
- allFlags = append (allFlags , xFlags ... )
185
- }
186
- if strings .TrimSpace (existingFlags ) != "" {
187
- allFlags = append (allFlags , existingFlags )
188
- }
189
- if rpathFlag != "" {
190
- allFlags = append (allFlags , rpathFlag )
191
- }
192
-
193
- // Add combined ldflags
194
- result = append (result , "-ldflags" )
195
- result = append (result , strings .Join (allFlags , " " ))
196
-
197
- // Add remaining args
198
- result = append (result , args [i + 1 :]... )
199
- break
200
- }
201
- }
202
-
203
- // If no existing -ldflags found, add new ones at the beginning if we have any flags to add
204
- if ! foundLDFlags {
205
- if len (xFlags ) > 0 || rpathFlag != "" {
206
- var allFlags []string
207
- allFlags = append (allFlags , xFlags ... )
208
- if rpathFlag != "" {
209
- allFlags = append (allFlags , rpathFlag )
167
+ existingFlags = strings .TrimSpace (existingFlags )
168
+ if ldflags != "" {
169
+ ldflags += " " + existingFlags
210
170
}
211
- result = append ( result , "-ldflags" )
212
- result = append (result , strings . Join ( allFlags , " " ) )
171
+ } else {
172
+ result = append (result , arg )
213
173
}
214
- result = append (result , args ... )
215
174
}
216
-
217
- return result
175
+ return append ([]string {"-ldflags" , ldflags }, result ... )
218
176
}
219
177
220
178
// GetGoCommandHelp returns the formatted help text for the specified go command
0 commit comments