From de5fa8339f323b0714d0dc25896f8863fbf3429f Mon Sep 17 00:00:00 2001 From: Herwig Hochleitner Date: Sun, 28 Feb 2016 16:50:59 +0100 Subject: [PATCH] dust: init at 0-91 --- pkgs/development/interpreters/pixie/dust.nix | 27 ++++ .../pixie/make-paths-configurable.patch | 122 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 3 files changed, 150 insertions(+) create mode 100644 pkgs/development/interpreters/pixie/dust.nix create mode 100644 pkgs/development/interpreters/pixie/make-paths-configurable.patch diff --git a/pkgs/development/interpreters/pixie/dust.nix b/pkgs/development/interpreters/pixie/dust.nix new file mode 100644 index 000000000000..2478ecf53cb2 --- /dev/null +++ b/pkgs/development/interpreters/pixie/dust.nix @@ -0,0 +1,27 @@ +{ stdenv, pixie, fetchgit }: + +stdenv.mkDerivation { + name = "dust-0-91"; + src = fetchgit { + url = "https://github.com/pixie-lang/dust.git"; + rev = "efe469661e749a71e86858fd006f61464810575a"; + sha256 = "0krh7ynald3gqv9f17a4kfx7sx8i31l6j1fhd5k8b6m8cid7f9c1"; + }; + buildInputs = [ pixie ]; + patches = [ ./make-paths-configurable.patch ]; + configurePhase = '' + pixiePath="${pixie}/bin/pxi" \ + basePath="$out/share/dust" \ + substituteAll dust.in dust + chmod +x dust + ''; +# FIXME: AOT for dust +# buildPhase = '' +# find . -name "*.pxi" -exec pixie-vm -c {} \; +# ''; + installPhase = '' + mkdir -p $out/bin $out/share/dust + cp -a src/ run.pxi $out/share/dust + mv dust $out/bin/dust + ''; +} diff --git a/pkgs/development/interpreters/pixie/make-paths-configurable.patch b/pkgs/development/interpreters/pixie/make-paths-configurable.patch new file mode 100644 index 000000000000..122ab6e2c07b --- /dev/null +++ b/pkgs/development/interpreters/pixie/make-paths-configurable.patch @@ -0,0 +1,122 @@ +From 0cbb82e606610d36e52c70d888995fbbf9b0d7c8 Mon Sep 17 00:00:00 2001 +From: Herwig Hochleitner +Date: Sun, 28 Feb 2016 16:34:14 +0100 +Subject: [PATCH] make paths configurable + +--- + dust | 52 ---------------------------------------------------- + dust.in | 43 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 43 insertions(+), 52 deletions(-) + delete mode 100755 dust + create mode 100755 dust.in + +diff --git a/dust b/dust +deleted file mode 100755 +index ffced9b..0000000 +--- a/dust ++++ /dev/null +@@ -1,52 +0,0 @@ +-#!/usr/bin/env bash +- +-base_path=$0 +-if [ -L "$base_path" ]; then +- base_path=`readlink $base_path` +-fi +-base_path=`dirname $base_path` +- +-pixie_path=`which pixie-vm` +-if [ -z "$pixie_path" ]; then +- echo "Error: 'pixie-vm' must be on your PATH" +- exit 1 +-fi +- +-function set_load_path() { +- load_path="" +- if ([ -f "project.edn" ] || [ -f "project.pxi" ]) && [ -f ".load-path" ]; then +- load_path="`cat .load-path`" +- fi +-} +- +-if [ ! -f "project.edn" ] && [ -f "project.pxi" ]; then +- echo "Warning: 'project.pxi' is deprecated, please use 'project.edn'." +- echo "To start you can run the following command:" +- echo " pixie-vm -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'" +- echo +-fi +- +-set_load_path +-run_dust="$pixie_path -l $base_path/src $load_path $base_path/run.pxi" +- +-case $1 in +- ""|"repl") +- rlwrap_cmd="" +- if [ -n "`which rlwrap`" ]; then +- rlwrap_cmd="rlwrap -aignored -n" +- fi +- $rlwrap_cmd $pixie_path $load_path +- ;; +- "run") +- shift +- file=$1 +- shift +- $pixie_path $load_path $file $@ +- ;; +- -h|--help) +- $run_dust help +- ;; +- *) +- $run_dust $@ +- ;; +-esac +diff --git a/dust.in b/dust.in +new file mode 100755 +index 0000000..44a7fbd +--- /dev/null ++++ b/dust.in +@@ -0,0 +1,43 @@ ++#!/usr/bin/env bash ++ ++base_path=@basePath@ ++pixie_path=@pixiePath@ ++ ++function set_load_path() { ++ load_path="" ++ if ([ -f "project.edn" ] || [ -f "project.pxi" ]) && [ -f ".load-path" ]; then ++ load_path="`cat .load-path`" ++ fi ++} ++ ++if [ ! -f "project.edn" ] && [ -f "project.pxi" ]; then ++ echo "Warning: 'project.pxi' is deprecated, please use 'project.edn'." ++ echo "To start you can run the following command:" ++ echo " pixie-vm -l $base_path/src -e '(require dust.project :as p) (p/load-project!) (prn (dissoc @p/*project* :path))'" ++ echo ++fi ++ ++set_load_path ++run_dust="$pixie_path -l $base_path/src $load_path $base_path/run.pxi" ++ ++case $1 in ++ ""|"repl") ++ rlwrap_cmd="" ++ if [ -n "`which rlwrap`" ]; then ++ rlwrap_cmd="rlwrap -aignored -n" ++ fi ++ $rlwrap_cmd $pixie_path $load_path ++ ;; ++ "run") ++ shift ++ file=$1 ++ shift ++ $pixie_path $load_path $file $@ ++ ;; ++ -h|--help) ++ $run_dust help ++ ;; ++ *) ++ $run_dust $@ ++ ;; ++esac +-- +2.7.1 + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 74bba53647cd..403a356a5802 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5508,6 +5508,7 @@ let }; pixie = callPackage ../development/interpreters/pixie { }; + dust = callPackage ../development/interpreters/pixie/dust.nix { }; bundix = callPackage ../development/interpreters/ruby/bundix { ruby = ruby_2_1_3;