Skip to content

Commit bb6a8f1

Browse files
authored
fix: properly handle CGO_LDFLAGS/CGO_CFLAGS (#25)
## What's Changed - Don't overwrite user-supplied values - Inject values into the docker container
1 parent da798ed commit bb6a8f1

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

adbc_drivers_dev/make.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ def is_verbose() -> bool:
6262
return to_bool(doit.get_var("VERBOSE", False))
6363

6464

65+
def append_flags(env: dict[str, str], var: str, flags: str) -> None:
66+
if var in env:
67+
env[var] += " " + flags
68+
else:
69+
env[var] = flags
70+
71+
6572
def architecture() -> str:
6673
match platform.machine():
6774
case "AMD64":
@@ -230,16 +237,26 @@ def build(
230237

231238
env = {}
232239

240+
smuggle_vars = ("CGO_CFLAGS", "CGO_LDFLAGS")
241+
for var in smuggle_vars:
242+
if var in os.environ:
243+
env[var] = os.environ[var]
244+
233245
if platform.system() == "Darwin":
234-
env["CGO_CFLAGS"] = "-mmacosx-version-min=10.12"
235-
env["CGO_LDFLAGS"] = "-mmacosx-version-min=10.12"
246+
append_flags(env, "CGO_CFLAGS", "-mmacosx-version-min=10.12")
247+
append_flags(env, "CGO_LDFLAGS", "-mmacosx-version-min=10.12")
236248

237249
if ci and platform.system() == "Linux":
238250
env["SOURCE_ROOT"] = str(repo_root)
239251
env["ARCH"] = architecture()
240252

241253
check_call(["go", "mod", "vendor"], cwd=driver_root)
242254

255+
smuggle_env = ""
256+
for var in smuggle_vars:
257+
if var in env:
258+
smuggle_env += f'{var}="{shlex.quote(env[var])}" '
259+
243260
ldflags += (
244261
" -linkmode external -extldflags=-Wl,--version-script=/only-export-adbc.ld"
245262
)
@@ -254,7 +271,7 @@ def build(
254271
"--",
255272
"bash",
256273
"-c",
257-
f'cd /source/{driver_root.relative_to(repo_root)} && go build -buildmode=c-shared {tags} -o /source/build/{target} -ldflags "{ldflags}" ./pkg',
274+
f'cd /source/{driver_root.relative_to(repo_root)} && env {smuggle_env} go build -buildmode=c-shared {tags} -o /source/build/{target} -ldflags "{ldflags}" ./pkg',
258275
]
259276
check_call(command, cwd=Path(__file__).parent, env=env)
260277
else:

0 commit comments

Comments
 (0)