diff --git a/source/dub/compilers/compiler.d b/source/dub/compilers/compiler.d index 06d7831..9dde323 100644 --- a/source/dub/compilers/compiler.d +++ b/source/dub/compilers/compiler.d @@ -175,7 +175,7 @@ version (Posix) { try { - auto pkgconfig_bin = "pkg-config"; + enum pkgconfig_bin = "pkg-config"; string[] pkgconfig_libs; foreach (lib; settings.libs) if (execute([pkgconfig_bin, "--exists", "lib"~lib]).status == 0) @@ -184,7 +184,7 @@ logDiagnostic("Using pkg-config to resolve library flags for %s.", pkgconfig_libs.map!(l => "lib"~l).array.join(", ")); if (pkgconfig_libs.length) { - auto libflags = execute(["pkg-config", "--libs"] ~ pkgconfig_libs.map!(l => "lib"~l)().array()); + auto libflags = execute([pkgconfig_bin, "--libs"] ~ pkgconfig_libs.map!(l => "lib"~l)().array()); enforce(libflags.status == 0, format("pkg-config exited with error code %s: %s", libflags.status, libflags.output)); foreach (f; libflags.output.split()) { if (f.startsWith("-Wl,")) settings.addLFlags(f[4 .. $].split(",")); @@ -226,11 +226,11 @@ { int status; if (output_callback) { - auto result = execute(args); + auto result = executeShell(escapeShellCommand(args)); output_callback(result.status, result.output); status = result.status; } else { - auto compiler_pid = spawnProcess(args); + auto compiler_pid = spawnShell(escapeShellCommand(args)); status = compiler_pid.wait(); } enforce(status == 0, args[0] ~ " failed with exit code "~to!string(status)); diff --git a/source/dub/compilers/dmd.d b/source/dub/compilers/dmd.d index bf56aae..43bec23 100644 --- a/source/dub/compilers/dmd.d +++ b/source/dub/compilers/dmd.d @@ -67,7 +67,7 @@ } settings.addDFlags(arch_flags); - auto result = execute(compiler_binary ~ arch_flags ~ ["-quiet", "-run", fil.toNativeString()]); + auto result = executeShell(escapeShellCommand(compiler_binary ~ arch_flags ~ ["-quiet", "-run", fil.toNativeString()])); enforce(result.status == 0, format("Failed to invoke the compiler %s to determine the build platform: %s", compiler_binary, result.output)); diff --git a/source/dub/compilers/gdc.d b/source/dub/compilers/gdc.d index 56952b3..ac150bb 100644 --- a/source/dub/compilers/gdc.d +++ b/source/dub/compilers/gdc.d @@ -67,7 +67,7 @@ } settings.addDFlags(arch_flags); - auto compiler_result = execute(compiler_binary ~ arch_flags ~ ["-o", (getTempDir()~"dub_platform_probe").toNativeString(), fil.toNativeString()]); + auto compiler_result = executeShell(escapeShellCommand(compiler_binary ~ arch_flags ~ ["-o", (getTempDir()~"dub_platform_probe").toNativeString(), fil.toNativeString()])); enforce(compiler_result.status == 0, format("Failed to invoke the compiler %s to determine the build platform: %s", compiler_binary, compiler_result.output)); auto result = execute([(getTempDir()~"dub_platform_probe").toNativeString()]); diff --git a/source/dub/package_.d b/source/dub/package_.d index fa17995..d73e8d3 100644 --- a/source/dub/package_.d +++ b/source/dub/package_.d @@ -892,7 +892,7 @@ auto git_dir_param = "--git-dir=" ~ git_dir.toNativeString(); static string exec(scope string[] params...) { - auto ret = execute(params); + auto ret = executeShell(escapeShellCommand(params)); if (ret.status == 0) return ret.output.strip; logDebug("'%s' failed with exit code %s: %s", params.join(" "), ret.status, ret.output.strip); return null;