diff --git a/.travis.yml b/.travis.yml index 1233bd8..daa1e3b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -64,7 +64,7 @@ - d: gdc-4.8.5 env: [FRONTEND=2.068] - stage: deploy - d: dmd + d: ldc os: osx script: echo "Deploying to GitHub releases ..." && ./release.sh deploy: @@ -75,9 +75,8 @@ api_key: $GH_REPO_TOKEN on: tags: true - - d: dmd - # DMD 32-bit is needed for 32-bit compilation - script: echo "Deploying to GitHub releases ..." && DMD=$(find $HOME/dlang | grep "dmd-.*/linux/bin32/dmd") ./release.sh + - d: ldc + script: echo "Deploying to GitHub releases ..." && ./release.sh env: [ARCH=32] addons: apt: @@ -92,7 +91,7 @@ api_key: $GH_REPO_TOKEN on: tags: true - - d: dmd + - d: ldc script: echo "Deploying to GitHub releases ..." && ./release.sh deploy: - provider: releases diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b13752..9017de7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,18 @@ Changelog ========= +v1.8.1 - 2018- +------------------- + +- Fixed a regression in 1.8.0 that caused linker files specified as `sourceFiles` to not get inherited properly - [issue #1408][issue1408], [pull #1409][issue1409] +- Fixed a regression in 1.8.0 that caused `mainSourceFile` to be passed twice to the compiler on Windows - [issue #1407][issue1407], [pull #1410][issue1410] + +[issue1407]: https://github.com/dlang/dub/issues/1407 +[issue1408]: https://github.com/dlang/dub/issues/1408 +[issue1409]: https://github.com/dlang/dub/issues/1409 +[issue1410]: https://github.com/dlang/dub/issues/1410 + + v1.8.0 - 2018-03-01 ------------------- diff --git a/appveyor.yml b/appveyor.yml index 143d03a..6a84e42 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -36,6 +36,7 @@ branches: only: - master + - stable install: - ps: function ResolveLatestDMD diff --git a/release.sh b/release.sh index e889a30..ceec952 100755 --- a/release.sh +++ b/release.sh @@ -4,11 +4,17 @@ VERSION=$(git describe --abbrev=0 --tags) ARCH="${ARCH:-64}" +CUSTOM_FLAGS="" unameOut="$(uname -s)" case "$unameOut" in - Linux*) OS=linux; ;; - Darwin*) OS=osx; ;; + Linux*) + OS=linux + CUSTOM_FLAGS="-L--export-dynamic" + ;; + Darwin*) + OS=osx + ;; *) echo "Unknown OS: $unameOut"; exit 1 esac @@ -21,5 +27,5 @@ archiveName="dub-$VERSION-$OS-$ARCH_SUFFIX.tar.gz" echo "Building $archiveName" -DFLAGS="-release -m$ARCH" DMD="$(command -v $DMD)" ./build.sh +DFLAGS="-release -m$ARCH ${CUSTOM_FLAGS}" DMD="$(command -v $DMD)" ./build.sh tar cvfz "bin/$archiveName" -C bin dub diff --git a/source/dub/generators/generator.d b/source/dub/generators/generator.d index 144276d..588a111 100644 --- a/source/dub/generators/generator.d +++ b/source/dub/generators/generator.d @@ -269,6 +269,7 @@ const depbs = &depti.buildSettings; if (depbs.targetType == TargetType.executable) continue; + // add to (link) dependencies ti.dependencies ~= depname; ti.linkDependencies ~= depname; @@ -404,7 +405,7 @@ parent.addStringImportPaths(child.stringImportPaths); // linking of static libraries is done by parent if (child.targetType == TargetType.staticLibrary) { - parent.addLinkerFiles(child.sourceFiles.filter!isLinkerFile.array); + parent.addSourceFiles(child.sourceFiles.filter!isLinkerFile.array); parent.addLibs(child.libs); parent.addLFlags(child.lflags); } diff --git a/source/dub/recipe/packagerecipe.d b/source/dub/recipe/packagerecipe.d index f5f38b8..30873b5 100644 --- a/source/dub/recipe/packagerecipe.d +++ b/source/dub/recipe/packagerecipe.d @@ -169,8 +169,10 @@ if (!this.targetName.empty) dst.targetName = this.targetName; if (!this.workingDirectory.empty) dst.workingDirectory = this.workingDirectory; if (!this.mainSourceFile.empty) { - dst.mainSourceFile = this.mainSourceFile; - dst.addSourceFiles(this.mainSourceFile); + auto p = NativePath(this.mainSourceFile); + p.normalize(); + dst.mainSourceFile = p.toNativeString(); + dst.addSourceFiles(dst.mainSourceFile); } string[] collectFiles(in string[][string] paths_map, string pattern) @@ -297,3 +299,23 @@ return ret; } else static assert(false, "Unsupported type: "~T.stringof); } + +unittest { // issue #1407 - duplicate main source file + { + BuildSettingsTemplate t; + t.mainSourceFile = "./foo.d"; + t.sourceFiles[""] = ["foo.d"]; + BuildSettings bs; + t.getPlatformSettings(bs, BuildPlatform.init, NativePath("/")); + assert(bs.sourceFiles == ["foo.d"]); + } + + version (Windows) {{ + BuildSettingsTemplate t; + t.mainSourceFile = "src/foo.d"; + t.sourceFiles[""] = ["src\\foo.d"]; + BuildSettings bs; + t.getPlatformSettings(bs, BuildPlatform.init, NativePath("/")); + assert(bs.sourceFiles == ["src\\foo.d"]); + }} +} diff --git a/source/dub/version_.d b/source/dub/version_.d index 2c7127c..c7872e5 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.8.0"; +enum dubVersion = "v1.8.1-beta.1"; diff --git a/test/fetchzip.sh b/test/fetchzip.sh index ce03723..723e698 100755 --- a/test/fetchzip.sh +++ b/test/fetchzip.sh @@ -10,7 +10,7 @@ "$DUB" build --single "$DIR"/test_registry.d "$DIR"/test_registry --folder="$DIR/issue1336-registry" --port=$PORT & PID=$! -sleep 0.2 +sleep 1 trap 'kill $PID 2>/dev/null || true' exit echo "Trying to download gitcompatibledubpackage (1.0.4)" diff --git a/test/issue1408-inherit-linker-files/.no_run b/test/issue1408-inherit-linker-files/.no_run new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue1408-inherit-linker-files/.no_run diff --git a/test/issue1408-inherit-linker-files/.no_test b/test/issue1408-inherit-linker-files/.no_test new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue1408-inherit-linker-files/.no_test diff --git a/test/issue1408-inherit-linker-files/dep.d b/test/issue1408-inherit-linker-files/dep.d new file mode 100644 index 0000000..d0a80bf --- /dev/null +++ b/test/issue1408-inherit-linker-files/dep.d @@ -0,0 +1 @@ +module dep; diff --git a/test/issue1408-inherit-linker-files/dub.sdl b/test/issue1408-inherit-linker-files/dub.sdl new file mode 100644 index 0000000..4aaaed8 --- /dev/null +++ b/test/issue1408-inherit-linker-files/dub.sdl @@ -0,0 +1,14 @@ +name "test" +targetType "executable" +dependency ":dep" version="*" +sourceFiles "main.d" +// make lib.d available for import +importPaths "." + +subPackage { + name "dep" + sourceFiles "dep.d" + sourceFiles "lib/liblib.a" platform="posix" + sourceFiles "lib/lib.lib" platform="windows" + preBuildCommands "dub build --root=\"$PACKAGE_DIR/lib\"" +} diff --git a/test/issue1408-inherit-linker-files/lib.d b/test/issue1408-inherit-linker-files/lib.d new file mode 100644 index 0000000..0f143cf --- /dev/null +++ b/test/issue1408-inherit-linker-files/lib.d @@ -0,0 +1,3 @@ +module lib; + +void foo(); diff --git a/test/issue1408-inherit-linker-files/lib/dub.sdl b/test/issue1408-inherit-linker-files/lib/dub.sdl new file mode 100644 index 0000000..0706e67 --- /dev/null +++ b/test/issue1408-inherit-linker-files/lib/dub.sdl @@ -0,0 +1,3 @@ +name "lib" +targetType "staticLibrary" +sourceFiles "lib.d" diff --git a/test/issue1408-inherit-linker-files/lib/lib.d b/test/issue1408-inherit-linker-files/lib/lib.d new file mode 100644 index 0000000..22c8012 --- /dev/null +++ b/test/issue1408-inherit-linker-files/lib/lib.d @@ -0,0 +1,5 @@ +module lib; + +void foo() +{ +} diff --git a/test/issue1408-inherit-linker-files/main.d b/test/issue1408-inherit-linker-files/main.d new file mode 100644 index 0000000..06383a2 --- /dev/null +++ b/test/issue1408-inherit-linker-files/main.d @@ -0,0 +1,6 @@ +import lib; + +void main() +{ + foo(); +}