Skip to content

Commit 24f6108

Browse files
committed
Fixed: Redub now simulates the same behavior from dub when using sourcePaths
1 parent 050fc95 commit 24f6108

File tree

4 files changed

+11
-4
lines changed

4 files changed

+11
-4
lines changed

dub_sdl_to_json/source/dub_sdl_to_json.d

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ JSONValue sdlToJSON(SDLNode[] sdl)
6666
import std.exception;
6767
import std.array;
6868
import redub.libs.adv_diff.helpers.index_of;
69-
import std.algorithm.searching:countUntil;
7069

7170
JSONValue ret = JSONValue.emptyObject;
7271

source/redub/buildapi.d

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ struct BuildConfiguration
214214

215215
bool isDebug;
216216
@cacheExclude BuildConfigurationFlags flags = BuildConfigurationFlags.defaultInit;
217+
@cacheExclude bool isUsingDefaultSourcePaths = true;
217218
RedubLanguages language = RedubLanguages.D;
218219
TargetType targetType;
219220

@@ -331,6 +332,7 @@ struct BuildConfiguration
331332
ret.targetType = either(other.targetType, ret.targetType);
332333
ret.targetName = either(other.targetName, ret.targetName);
333334
ret.outputDirectory = either(other.outputDirectory, ret.outputDirectory);
335+
ret.isUsingDefaultSourcePaths = ret.isUsingDefaultSourcePaths && other.isUsingDefaultSourcePaths;
334336
ret = ret.mergeCommands(other);
335337
ret.flags = other.flags;
336338
ret.extraDependencyFiles.exclusiveMergePaths(other.extraDependencyFiles);

source/redub/parsers/automatic.d

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,10 @@ private void partiallyFinishBuildRequirements(ref BuildRequirements req, BuildCo
187187
import std.algorithm.iteration;
188188
auto libraries = req.cfg.sourceFiles.filter!((name) => name.extension.isLibraryExtension);
189189
req.cfg.libraries.exclusiveMergePaths(libraries);
190-
req.cfg.importDirectories.exclusiveMergePaths(req.cfg.sourcePaths); //importPaths is always a mix of custom imports + sourcePaths
190+
191+
//importPaths will always contain sourcePath if it is using the default https://dub.pm/dub-reference/build_settings/#sourcepaths
192+
if(req.cfg.isUsingDefaultSourcePaths)
193+
req.cfg.importDirectories.exclusiveMergePaths(req.cfg.sourcePaths);
191194

192195
///Remove libraries from the sourceFiles.
193196
req.cfg.sourceFiles = inPlaceFilter(req.cfg.sourceFiles, (string file) => !file.extension.isLibraryExtension);

source/redub/parsers/base.d

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,11 @@ void addPostBuildCommands(ref BuildRequirements req, JSONStringArray cmds, Parse
126126
void addSourcePaths(ref BuildRequirements req, JSONStringArray paths, ParseConfig c)
127127
{
128128
import std.array;
129-
if(c.firstRun) req.cfg.sourcePaths = cast(string[])paths.array;
130-
else req.cfg.sourcePaths.exclusiveMergePaths(paths);
129+
req.cfg.isUsingDefaultSourcePaths = false;
130+
if(c.firstRun)
131+
req.cfg.sourcePaths = cast(string[])paths.array;
132+
else
133+
req.cfg.sourcePaths.exclusiveMergePaths(paths);
131134
}
132135
void addSourceFiles(ref BuildRequirements req, JSONStringArray files, ParseConfig c){req.cfg.sourceFiles.exclusiveMerge(files);}
133136
void addExcludedSourceFiles(ref BuildRequirements req, JSONStringArray files, ParseConfig c){req.cfg.excludeSourceFiles.exclusiveMerge(files);}

0 commit comments

Comments
 (0)