diff options
Diffstat (limited to 'nix-overlays/dub/package.nix')
-rw-r--r-- | nix-overlays/dub/package.nix | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/nix-overlays/dub/package.nix b/nix-overlays/dub/package.nix new file mode 100644 index 0000000..b537a43 --- /dev/null +++ b/nix-overlays/dub/package.nix @@ -0,0 +1,93 @@ +{ + lib, + stdenv, + fetchFromGitHub, + curl, + ldc, + dcompiler ? ldc, + libevent, + rsync, +}: + +assert dcompiler != null; + +stdenv.mkDerivation (finalAttrs: { + pname = "dub"; + version = "1.39.0"; + + enableParallelBuilding = true; + + src = fetchFromGitHub { + owner = "dlang"; + repo = "dub"; + rev = "v${finalAttrs.version}"; + hash = "sha256-73b15A9+hClD6IbuxTy9QZKpTKjUFYBuqGOclUyhrnM="; + }; + + postPatch = '' + patchShebangs test + ''; + + nativeBuildInputs = [ dcompiler libevent rsync ]; + buildInputs = [ curl ]; + + preBuild = '' + for DCn in dmd ldmd2 gdmd; do + echo "... check for D compiler $DCn ..." + export DC=$(type -P $DCn || echo "") + if [ ! "$DC" == "" ]; then + break + fi + done + #export DMD=${ldc}/bin/ldmd2 + if [ "$DC" == "" ]; then + exit "Error: could not find D compiler" + fi + echo "$DCn found and used as D compiler in buildPhase for $pname" + ''; + + buildPhase = '' + runHook preBuild + $DC -run ./build.d + runHook postBuild + ''; + + doCheck = !stdenv.hostPlatform.isDarwin; + + checkPhase = '' + runHook preCheck + export DUB=$NIX_BUILD_TOP/source/bin/dub + export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ + if [ "$DC" == "" ]; then + exit "Error: could not find D compiler" + fi + echo "DC out --> $DC" + export HOME=$TMP + + rm -rf test/issue502-root-import + rm -r test/dpath-variable # requires execution of dpath-variable.sh + rm -rf test/git-dependency + rm -rf test/use-c-sources # added to build v1.33.0 + rm -rf test/pr2642-cache-db # added to build v1.34.0 + rm -rf test/pr2644-describe-artifact-path # added to build v1.36.0 + rm -rf test/pr2647-build-deep # added to build v1.36.0 + + ./test/run-unittest.sh + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + install -Dm755 bin/dub $out/bin/dub + runHook postInstall + ''; + + meta = with lib; { + description = "Package and build manager for D programs and libraries"; + homepage = "https://code.dlang.org/"; + license = licenses.mit; + mainProgram = "dub"; + maintainers = with maintainers; [ jtbx ]; + platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + }; +}) |