{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }: assert dcompiler != null; stdenv.mkDerivation rec { pname = "dub"; version = "1.38.1"; enableParallelBuilding = true; src = fetchFromGitHub { owner = "dlang"; repo = "dub"; rev = "v${version}"; sha256 = "sha256-8Lr/0sx4SKwU1aNOxZArta0RXpDM+EWl29ZsPDdPWFo="; }; #postUnpack = '' # patchShebangs . #''; dubvar = "\\$DUB"; postPatch = '' patchShebangs test # Can be removed with https://github.com/dlang/dub/pull/1368 substituteInPlace test/fetchzip.sh \ --replace "dub remove" "\"${dubvar}\" remove" ''; nativeBuildInputs = [ dcompiler libevent rsync ]; buildInputs = [ curl ]; buildPhase = '' for DC_ in dmd ldmd2 gdmd; do echo "... check for D compiler $DC_ ..." export DC=$(type -P $DC_ || echo "") if [ ! "$DC" == "" ]; then break fi done if [ "$DC" == "" ]; then exit "Error: could not find D compiler" fi echo "$DC_ found and used as D compiler in buildPhase for $pname" $DC ./build.d ./build ''; doCheck = !stdenv.isDarwin; checkPhase = '' export DUB=$NIX_BUILD_TOP/source/bin/dub export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ #export DC=${dcompiler.out}/bin/${if dcompiler.pname=="ldc" then "ldc2" else dcompiler.pname} 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 -rf test/dpath-variable #rm test/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 ''; installPhase = '' mkdir -p $out/bin cp bin/dub $out/bin ''; meta = with lib; { description = "Package and build manager for D applications and libraries"; homepage = "https://code.dlang.org/"; license = licenses.mit; maintainers = with maintainers; [ jtbx ]; platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; }; }