From c6a1412132b691107f31161f0ef9b80097b9fe5b Mon Sep 17 00:00:00 2001 From: Jonathan Marler Date: Fri, 5 Apr 2019 20:35:59 -0600 Subject: [PATCH] rund: init at version 1.0.0 Adding a D Programming Language Compiler Wrapper tool that runs and caches D programs. This is an alternative to the existing `rdmd` tool. It's a rewrite that leverages a new compiler feature that allows it to run the compiler once instead of having to run it twice like `rdmd` does. I decided to create a new tool rather than trying to support both older and new compilers in the same tool. It also introduces new features like "Source Compiler Directives" which allow D Language source files to contain compiler configuration such as import paths, environment variables, etc. --- pkgs/development/tools/rund/default.nix | 49 +++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 51 insertions(+) create mode 100644 pkgs/development/tools/rund/default.nix 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 { };