diff options
author | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2011-01-21 08:25:02 +0000 |
---|---|---|
committer | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2011-01-21 08:25:02 +0000 |
commit | 08abc174f6eb1b70bcb52337e1c3416452cc42e7 (patch) | |
tree | f67f01d1849c4651375931afc5d84d5aee52d366 /pkgs | |
parent | 15333c2665081738b8ff0a69524c88f74bbaf1ea (diff) | |
download | nixlib-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.nix | 51 | ||||
-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.nix | 111 | ||||
-rw-r--r-- | pkgs/development/interpreters/ruby/overwrites.nix | 6 | ||||
-rw-r--r-- | pkgs/development/interpreters/ruby/patches.nix | 50 |
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"; + }; +} |