about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorYury G. Kudryashov <urkud.urkud@gmail.com>2011-01-21 08:25:02 +0000
committerYury G. Kudryashov <urkud.urkud@gmail.com>2011-01-21 08:25:02 +0000
commit08abc174f6eb1b70bcb52337e1c3416452cc42e7 (patch)
treef67f01d1849c4651375931afc5d84d5aee52d366 /pkgs
parent15333c2665081738b8ff0a69524c88f74bbaf1ea (diff)
downloadnixlib-08abc174f6eb1b70bcb52337e1c3416452cc42e7.tar
nixlib-08abc174f6eb1b70bcb52337e1c3416452cc42e7.tar.gz
nixlib-08abc174f6eb1b70bcb52337e1c3416452cc42e7.tar.bz2
nixlib-08abc174f6eb1b70bcb52337e1c3416452cc42e7.tar.lz
nixlib-08abc174f6eb1b70bcb52337e1c3416452cc42e7.tar.xz
nixlib-08abc174f6eb1b70bcb52337e1c3416452cc42e7.tar.zst
nixlib-08abc174f6eb1b70bcb52337e1c3416452cc42e7.zip
Move various functions to separate files.
Also allow overwriting the 'generated' file.

svn path=/nixpkgs/trunk/; revision=25656
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/interpreters/ruby/gem.nix51
-rw-r--r--pkgs/development/interpreters/ruby/generated.nix (renamed from pkgs/development/interpreters/ruby/gems-generated.nix)0
-rw-r--r--pkgs/development/interpreters/ruby/libs.nix111
-rw-r--r--pkgs/development/interpreters/ruby/overwrites.nix6
-rw-r--r--pkgs/development/interpreters/ruby/patches.nix50
5 files changed, 115 insertions, 103 deletions
diff --git a/pkgs/development/interpreters/ruby/gem.nix b/pkgs/development/interpreters/ruby/gem.nix
new file mode 100644
index 000000000000..9a9650f163cb
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/gem.nix
@@ -0,0 +1,51 @@
+{stdenv, fetchurl, ruby, rubygems, makeWrapper, patches, overwrites}:
+
+let
+  gemDefaults = { name, basename, requiredGems, sha256, meta }:
+  {
+    buildInputs = [rubygems ruby makeWrapper];
+    unpackPhase = ":";
+    configurePhase=":";
+    bulidPhase=":";
+
+    src = fetchurl {
+      url = "http://rubygems.org/downloads/${name}.gem";
+      inherit sha256;
+    };
+
+    name = "ruby-${name}";
+
+    propagatedBuildInputs = requiredGems;
+    inherit meta;
+
+    installPhase = ''
+      export HOME=$TMP/home; mkdir -pv "$HOME"
+
+      gem install -V --ignore-dependencies \
+      -i "$out/${ruby.gemPath}" -n "$out/bin" "$src" $gemFlags -- $buildFlags
+      rm -frv $out/${ruby.gemPath}/cache # don't keep the .gem file here
+
+      addToSearchPath GEM_PATH $out/${ruby.gemPath}
+
+      for prog in $out/bin/*; do
+        wrapProgram "$prog" \
+          --prefix GEM_PATH : "$GEM_PATH" \
+          --prefix RUBYLIB : "${rubygems}/lib" \
+          --set RUBYOPT 'rubygems'
+      done
+
+      for prog in $out/gems/*/bin/*; do
+        [[ -e "$out/bin/$(basename $prog)" ]]
+      done
+
+      runHook postInstall
+    '';
+  };
+  mb = stdenv.lib.maybeAttr;
+in
+aName: a@{ name, basename, requiredGems, sha256, meta }:
+  mb name (mb basename (
+    stdenv.mkDerivation (removeAttrs (stdenv.lib.mergeAttrsByFuncDefaults
+      [ (gemDefaults a) (mb name {} patches) (mb basename {} patches) ]
+    ) ["mergeAttrBy"])
+  ) overwrites) overwrites
diff --git a/pkgs/development/interpreters/ruby/gems-generated.nix b/pkgs/development/interpreters/ruby/generated.nix
index f806bc8a9333..f806bc8a9333 100644
--- a/pkgs/development/interpreters/ruby/gems-generated.nix
+++ b/pkgs/development/interpreters/ruby/generated.nix
diff --git a/pkgs/development/interpreters/ruby/libs.nix b/pkgs/development/interpreters/ruby/libs.nix
index 29b15d2222cb..57daafaef408 100644
--- a/pkgs/development/interpreters/ruby/libs.nix
+++ b/pkgs/development/interpreters/ruby/libs.nix
@@ -1,107 +1,12 @@
-{stdenv, fetchurl, writeScript, makeWrapper, rubygems, ruby,
-ncurses, xapianBindings, sqlite, libxml2, libxslt, libffi, zlib, libuuid}:
+{stdenv, config, fetchurl, callPackage}:
 
 let
-  gemsGenerated = (import ./gems-generated.nix) gemsWithVersions;
-  patchUsrBinEnv = writeScript "path-usr-bin-env" ''
-    #!/bin/sh
-    set -x
-    echo "==================="
-    find "$1" -type f -name "*.rb" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
-    find "$1" -type f -name "*.mk" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
-  '';
-  patches = {
-    sup = {
-      buildInputs = [ ncurses xapianBindings gems.ncursesw ];
-    };
-    sqlite3_ruby = { propagatedBuildInputs = [ sqlite ]; };
-    rails = {
-      gemFlags = "--no-ri --no-rdoc";
-      propagatedBuildInputs = [ gems.mime_types gems.rake ];
-    };
-    ncurses = { buildInputs = [ ncurses ]; };
-    ncursesw = { buildInputs = [ ncurses ]; };
-    nokogiri = {
-      buildFlags=["--with-xml2-dir=${libxml2} --with-xml2-include=${libxml2}/include/libxml2"
-                  "--with-xslt-dir=${libxslt}" ];
-    };
-
-    ffi = {
-      postUnpack = "onetuh";
-      propagatedBuildInputs = [ gems.rake ];
-      buildFlags=["--with-ffi-dir=${libffi}"];
-      NIX_POST_EXTRACT_FILES_HOOK = patchUsrBinEnv;
-    };
-
-    xrefresh_server =
-    let patch = fetchurl {
-        url = "http://mawercer.de/~nix/xrefresh.diff.gz";
-        sha256 = "1f7bnmn1pgkmkml0ms15m5lx880hq2sxy7vsddb3sbzm7n1yyicq";
-      };
-    in {
-      propagatedBuildInputs = [ gems.rb_inotify ];
-
-      # monitor implementation for Linux
-      postInstall = ''
-        cd $out/${ruby.gemPath}/gems/*
-        zcat ${patch} | patch -p 1
-      '';
-    };
-
-    xapian_full = {
-      buildInputs = [ gems.rake zlib libuuid ];
-      gemFlags = "--no-rdoc --no-ri";
-    };
-  };
-  gemDefaults = { name, basename, requiredGems, sha256, meta }:
-    {
-      buildInputs = [rubygems ruby makeWrapper];
-      unpackPhase = ":";
-      configurePhase=":";
-      bulidPhase=":";
-
-      src = fetchurl {
-        url = "http://rubygems.org/downloads/${name}.gem";
-        inherit sha256;
-      };
-
-      name = "ruby-${name}";
-
-      propagatedBuildInputs = requiredGems;
-      inherit meta;
-
-      installPhase = ''
-        export HOME=$TMP/home; mkdir -pv "$HOME"
-
-        gem install -V --ignore-dependencies \
-        -i "$out/${ruby.gemPath}" -n "$out/bin" "$src" $gemFlags -- $buildFlags
-        rm -frv $out/${ruby.gemPath}/cache # don't keep the .gem file here
-
-        addToSearchPath GEM_PATH $out/${ruby.gemPath}
-
-        for prog in $out/bin/*; do
-          wrapProgram "$prog" \
-            --prefix GEM_PATH : "$GEM_PATH" \
-            --prefix RUBYLIB : "${rubygems}/lib" \
-            --set RUBYOPT 'rubygems'
-        done
-
-        for prog in $out/gems/*/bin/*; do
-          [[ -e "$out/bin/$(basename $prog)" ]]
-        done
-
-        runHook postInstall
-      '';
-    };
-  gem = aName: a@{ name, basename, requiredGems, sha256, meta }:
-    stdenv.mkDerivation (removeAttrs (stdenv.lib.mergeAttrsByFuncDefaults
-      [
-        (gemDefaults a)
-        (stdenv.lib.maybeAttr name {} patches)
-        (stdenv.lib.maybeAttr basename {} patches)
-      ]
-    ) ["mergeAttrBy"]);
-  gemsWithVersions = stdenv.lib.mapAttrs gem gemsGenerated.gems;
-  gems = gemsWithVersions // gemsGenerated.aliases;
+  generated = stdenv.lib.attrByPath [ "gems" "generated" ] (import ./generated.nix) config;
+  auto = generated merged;
+  patches = callPackage ./patches.nix { } gems;
+  overwrites = callPackage ./overwrites.nix { } gems;
+  merged = stdenv.lib.mapAttrs gem auto.gems;
+  gem = callPackage ./gem.nix { inherit patches overwrites; };
+  gems = merged // auto.aliases;
 in
 gems
diff --git a/pkgs/development/interpreters/ruby/overwrites.nix b/pkgs/development/interpreters/ruby/overwrites.nix
new file mode 100644
index 000000000000..9c3ebf75c318
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/overwrites.nix
@@ -0,0 +1,6 @@
+{ xapianBindings }:
+gems:
+
+{
+  xapian_full = xapianBindings.merge { cfg = { rubySupport = true; }; };
+}
diff --git a/pkgs/development/interpreters/ruby/patches.nix b/pkgs/development/interpreters/ruby/patches.nix
new file mode 100644
index 000000000000..923217cc1f9b
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/patches.nix
@@ -0,0 +1,50 @@
+{fetchurl, writeScript, ruby, ncurses, sqlite, libxml2, libxslt, libffi, zlib,
+  libuuid}:
+gems:
+
+let
+  patchUsrBinEnv = writeScript "path-usr-bin-env" ''
+    #!/bin/sh
+    set -x
+    echo "==================="
+    find "$1" -type f -name "*.rb" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
+    find "$1" -type f -name "*.mk" | xargs sed -i "s@/usr/bin/env@$(type -p env)@g"
+  '';
+in
+{
+  sup = { buildInputs = [ gems.ncursesw ]; };
+  sqlite3 = { propagatedBuildInputs = [ sqlite ]; };
+  rails = { gemFlags = "--no-ri --no-rdoc"; };
+  ncurses = { propagatedBuildInputs = [ ncurses ]; };
+  ncursesw = { propagatedBuildInputs = [ ncurses ]; };
+  nokogiri = {
+    buildFlags=["--with-xml2-dir=${libxml2} --with-xml2-include=${libxml2}/include/libxml2"
+                "--with-xslt-dir=${libxslt}" ];
+  };
+
+  ffi = {
+    postUnpack = "onetuh";
+    buildFlags=["--with-ffi-dir=${libffi}"];
+    NIX_POST_EXTRACT_FILES_HOOK = patchUsrBinEnv;
+  };
+
+  xrefresh_server =
+  let patch = fetchurl {
+      url = "http://mawercer.de/~nix/xrefresh.diff.gz";
+      sha256 = "1f7bnmn1pgkmkml0ms15m5lx880hq2sxy7vsddb3sbzm7n1yyicq";
+    };
+  in {
+    propagatedBuildInputs = [ gems.rb_inotify ];
+
+    # monitor implementation for Linux
+    postInstall = ''
+      cd $out/${ruby.gemPath}/gems/*
+      zcat ${patch} | patch -p 1
+    '';
+  };
+
+  xapian_full = {
+    buildInputs = [ gems.rake zlib libuuid ];
+    gemFlags = "--no-rdoc --no-ri";
+  };
+}