diff --git a/source/dub/recipe/packagerecipe.d b/source/dub/recipe/packagerecipe.d index 7775bdb..9e10a47 100644 --- a/source/dub/recipe/packagerecipe.d +++ b/source/dub/recipe/packagerecipe.d @@ -20,6 +20,7 @@ import std.exception : enforce; import std.file; import std.range; +import std.process : environment; /** @@ -179,6 +180,9 @@ { auto files = appender!(string[]); + import dub.project : buildSettingsVars; + auto envVars = environment.toAA(); + foreach (suffix, paths; paths_map) { if (!platform.matchesSpecification(suffix)) continue; @@ -188,9 +192,8 @@ auto path = NativePath(spath); if (!path.absolute) path = base_path ~ path; if (!existsFile(path) || !isDir(path.toNativeString())) { - import dub.project : buildSettingsVars; import std.algorithm : any, find; - const hasVar = buildSettingsVars.any!((string var) { + const hasVar = chain(buildSettingsVars, envVars.byKey).any!((string var) { return spath.find("$"~var).length > 0 || spath.find("${"~var~"}").length > 0; }); if (!hasVar) diff --git a/test/issue1504-envvar-in-path.sh b/test/issue1504-envvar-in-path.sh new file mode 100755 index 0000000..51cb805 --- /dev/null +++ b/test/issue1504-envvar-in-path.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e + +. $(dirname "${BASH_SOURCE[0]}")/common.sh + +rm -rf ${CURR_DIR}/issue1504-envvar-in-path/.dub +rm -rf ${CURR_DIR}/issue1504-envvar-in-path/test +rm -rf ${CURR_DIR}/output-1504.txt + + +export MY_VARIABLE=teststrings +# pragma(msg) outputs to stderr +${DUB} build --force --root ${CURR_DIR}/issue1504-envvar-in-path 2> ${CURR_DIR}/output-1504.txt + +grep "env_variables_work" < ${CURR_DIR}/output-1504.txt + +# Don't manage to make it work +#grep "Invalid source" < ${CURR_DIR}/output-1504.txt && true + diff --git a/test/issue1504-envvar-in-path/.no_build b/test/issue1504-envvar-in-path/.no_build new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue1504-envvar-in-path/.no_build diff --git a/test/issue1504-envvar-in-path/dub.json b/test/issue1504-envvar-in-path/dub.json new file mode 100644 index 0000000..1858aa6 --- /dev/null +++ b/test/issue1504-envvar-in-path/dub.json @@ -0,0 +1,5 @@ +{ + "name": "test", + "stringImportPaths": ["$MY_VARIABLE"] +} + diff --git a/test/issue1504-envvar-in-path/source/app.d b/test/issue1504-envvar-in-path/source/app.d new file mode 100644 index 0000000..131d984 --- /dev/null +++ b/test/issue1504-envvar-in-path/source/app.d @@ -0,0 +1,5 @@ +pragma(msg, import("message.txt")); + +void main() +{ +} \ No newline at end of file diff --git a/test/issue1504-envvar-in-path/teststrings/message.txt b/test/issue1504-envvar-in-path/teststrings/message.txt new file mode 100644 index 0000000..88f0c20 --- /dev/null +++ b/test/issue1504-envvar-in-path/teststrings/message.txt @@ -0,0 +1 @@ +env_variables_work \ No newline at end of file