Skip to content

Commit 6e42edf

Browse files
committed
future-proofed cwd dub fix
1 parent 4780aad commit 6e42edf

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

workspace-d/source/workspaced/com/dub.d

+5-4
Original file line numberDiff line numberDiff line change
@@ -585,14 +585,15 @@ class DubComponent : ComponentWrapper
585585
auto compiler = _compiler;
586586
auto buildPlatform = _platform;
587587

588+
string cwd = instance.cwd;
589+
588590
GeneratorSettings settings;
589591
settings.platform = buildPlatform;
590592
settings.config = _configuration;
591593
settings.buildType = _buildType;
592594
settings.compiler = compiler;
593-
settings.buildSettings = _dub.project.rootPackage.getBuildSettings(buildPlatform, _configuration);
594-
595-
string cwd = instance.cwd;
595+
static if (is(typeof(settings.overrideToolWorkingDirectory)))
596+
settings.overrideToolWorkingDirectory = NativePath(cwd);
596597

597598
auto ret = new typeof(return);
598599
new Thread({
@@ -638,7 +639,7 @@ class DubComponent : ComponentWrapper
638639
import workspaced.dub.lintgenerator : DubLintGenerator;
639640
import std.file : chdir;
640641

641-
new DubLintGenerator(_dub.project).generate(settings);
642+
new DubLintGenerator(_dub.project, NativePath(cwd)).generate(settings);
642643
}
643644
catch (CompilerInvocationException e)
644645
{

workspace-d/source/workspaced/dub/lintgenerator.d

+12-6
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,15 @@ import std.string;
2929

3030
class DubLintGenerator : ProjectGenerator
3131
{
32-
this(Project project)
32+
private
33+
{
34+
NativePath m_cwd;
35+
}
36+
37+
this(Project project, NativePath cwd)
3338
{
3439
super(project);
40+
m_cwd = cwd;
3541
}
3642

3743
override void generateTargets(GeneratorSettings settings, in TargetInfo[string] targets)
@@ -48,14 +54,12 @@ class DubLintGenerator : ProjectGenerator
4854
private void performDirectBuild(GeneratorSettings settings,
4955
ref BuildSettings buildsettings, in Package pack, string config)
5056
{
51-
auto cwd = NativePath(getcwd());
52-
5357
tracef("%s %s: building configuration %s", pack.name, pack.version_, config);
5458

5559
// make all target/import paths relative
5660
string makeRelative(string path)
5761
{
58-
return shrinkPath(NativePath(path), cwd);
62+
return shrinkPath(NativePath(path), m_cwd);
5963
}
6064

6165
buildsettings.targetPath = makeRelative(buildsettings.targetPath);
@@ -81,11 +85,13 @@ class DubLintGenerator : ProjectGenerator
8185
buildsettings.lflags = null;
8286
buildsettings.addOptions(BuildOption.syntaxOnly);
8387
buildsettings.sourceFiles = buildsettings.sourceFiles.filter!(f => !isLinkerFile(settings.platform, f)).array;
84-
trace("Build settings: ", buildsettings);
8588

8689
settings.compiler.prepareBuildSettings(buildsettings, settings.platform, BuildSetting.commandLine);
8790

88-
settings.compiler.invoke(buildsettings, settings.platform, settings.compileCallback);
91+
static if (is(typeof(settings.toolWorkingDirectory)))
92+
settings.compiler.invoke(buildsettings, settings.platform, settings.compileCallback, settings.toolWorkingDirectory);
93+
else
94+
settings.compiler.invoke(buildsettings, settings.platform, settings.compileCallback);
8995
}
9096
}
9197

0 commit comments

Comments
 (0)