diff --git a/pkgs/development/tools/rund/default.nix b/pkgs/development/tools/rund/default.nix new file mode 100644 index 000000000000..a2433da2997b --- /dev/null +++ b/pkgs/development/tools/rund/default.nix @@ -0,0 +1,49 @@ +{stdenv, lib, fetchFromGitHub, ldc ? null, dcompiler ? ldc }: + +assert dcompiler != null; + +stdenv.mkDerivation rec { + pname = "rund"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "dragon-lang"; + repo = pname; + rev = "v${version}"; + sha256 = "10x6f1nn294r5qnpacrpcbp348dndz5fv4nz6ih55c61ckpkvgcf"; + }; + + buildInputs = [ dcompiler ]; + buildPhase = '' + for candidate in dmd ldmd2 gdmd; do + echo Checking for DCompiler $candidate ... + dc=$(type -P $candidate || echo "") + if [ ! "$dc" == "" ]; then + break + fi + done + if [ "$dc" == "" ]; then + exit "Error: could not find a D compiler" + fi + echo Using DCompiler $candidate + $dc -I=$src/src -i -run $src/make.d build --out $NIX_BUILD_TOP + ''; + + doCheck = true; + checkPhase = '' + $NIX_BUILD_TOP/rund make.d test + ''; + + installPhase = '' + mkdir -p $out/bin + mv $NIX_BUILD_TOP/rund $out/bin + ''; + + meta = with stdenv.lib; { + description = "A compiler-wrapper that runs and caches D programs"; + homepage = https://github.com/dragon-lang/rund; + license = lib.licenses.boost; + maintainers = with maintainers; [ jonathanmarler ]; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 96c3c564d1b1..0059177550b4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5943,6 +5943,8 @@ in runningx = callPackage ../tools/X11/runningx { }; + rund = callPackage ../development/tools/rund { }; + runzip = callPackage ../tools/archivers/runzip { }; rw = callPackage ../tools/misc/rw { };