diff --git a/source/dub/commandline.d b/source/dub/commandline.d index 704d7c6..93981f6 100644 --- a/source/dub/commandline.d +++ b/source/dub/commandline.d @@ -814,6 +814,7 @@ gensettings.rdmd = m_rdmd; gensettings.tempBuild = m_tempBuild; gensettings.parallelBuild = m_parallel; + gensettings.single = m_single; logDiagnostic("Generating using %s", m_generator); dub.generateProject(m_generator, gensettings); diff --git a/source/dub/generators/build.d b/source/dub/generators/build.d index 971ce8f..88722d2 100644 --- a/source/dub/generators/build.d +++ b/source/dub/generators/build.d @@ -396,7 +396,8 @@ foreach (p; packages) allfiles ~= (p.recipePath != NativePath.init ? p : p.basePackage).recipePath.toNativeString(); foreach (f; additional_dep_files) allfiles ~= f.toNativeString(); - if (main_pack is m_project.rootPackage && m_project.rootPackage.getAllDependencies().length > 0) + bool checkSelectedVersions = !settings.single; + if (checkSelectedVersions && main_pack is m_project.rootPackage && m_project.rootPackage.getAllDependencies().length > 0) allfiles ~= (main_pack.path ~ SelectedVersions.defaultFile).toNativeString(); foreach (file; allfiles.data) { diff --git a/source/dub/generators/generator.d b/source/dub/generators/generator.d index 0183041..dca03da 100644 --- a/source/dub/generators/generator.d +++ b/source/dub/generators/generator.d @@ -591,6 +591,10 @@ // only used for generator "build" bool run, force, direct, rdmd, tempBuild, parallelBuild; + + /// single file dub package + bool single; + string[] runArgs; void delegate(int status, string output) compileCallback; void delegate(int status, string output) linkCallback; diff --git a/test/issue103-single-file-package.sh b/test/issue103-single-file-package.sh index cce4674..671e518 100755 --- a/test/issue103-single-file-package.sh +++ b/test/issue103-single-file-package.sh @@ -19,6 +19,11 @@ die $LINENO 'Shebang invocation produced binary in current directory' fi +if ! { ${DUB} run --single issue103-single-file-package-w-dep.d --temp-build 2>&1 || true; } | grep -cF "To force a rebuild"; then + echo "Invocation triggered unnecessary rebuild." + exit 1 +fi + if ${DUB} "issue103-single-file-package-error.d" 2> /dev/null; then echo "Invalid package comment syntax did not trigger an error." exit 1