fix sup & enhance ruby import

sup,gem:
  * no longer requires /homeless-shelter to be built
  * sup, gem can be run immediately without exporting GEM_HOME

ruby-support:
  * using mirror server of rubyforge
  * [..] is added at the end of long truncated long descriptions

svn path=/nixpkgs/trunk/; revision=16408
This commit is contained in:
Marc Weber 2009-07-16 20:00:02 +00:00
parent ec0e356b9a
commit 92662d3d0f
2 changed files with 196 additions and 150 deletions

View File

@ -12,10 +12,10 @@ index 0a19016..ef66d30 100644
## ##
diff --git a/lib/rubygems/commands/nix_command.rb b/lib/rubygems/commands/nix_command.rb diff --git a/lib/rubygems/commands/nix_command.rb b/lib/rubygems/commands/nix_command.rb
new file mode 100644 new file mode 100644
index 0000000..1d4ec58 index 0000000..005d5a9
--- /dev/null --- /dev/null
+++ b/lib/rubygems/commands/nix_command.rb +++ b/lib/rubygems/commands/nix_command.rb
@@ -0,0 +1,205 @@ @@ -0,0 +1,226 @@
+require 'net/http' +require 'net/http'
+require 'rubygems/command' +require 'rubygems/command'
+require 'rubygems/doc_manager' +require 'rubygems/doc_manager'
@ -30,10 +30,20 @@ index 0000000..1d4ec58
+ +
+ +
+def nixname(gem) +def nixname(gem)
+ s = gem.kind_of? String ? gem : gem.full_name + s = "#{gem}" == gem ? gem : gem.full_name
+ s.gsub(/[.-]/,'_') + s.gsub(/[.-]/,'_')
+end +end
+ +
+def nixdescription(spec)
+ desc_from_spec = spec.description
+ desc = desc_from_spec.sub(/[.].*/,'') # only keep first sentence
+ desc = desc.length > 120 \
+ ? "description = \"#{ desc[0..120] }\"; # cut to 120 chars" \
+ : "description = \"#{ desc }\";"
+ desc = desc.sub(/";$/,"[...]\";") if desc != desc_from_spec
+ desc.gsub("\n"," ") # no \ns in description
+end
+
+## +##
+# tool creating nix expression to install gems (from ruby forge etc) +# tool creating nix expression to install gems (from ruby forge etc)
+# +#
@ -111,17 +121,28 @@ index 0000000..1d4ec58
+ aliases[spec.name] = spec \ + aliases[spec.name] = spec \
+ if aliases[spec.name].nil? || aliases[spec.name].version < spec.version + if aliases[spec.name].nil? || aliases[spec.name].version < spec.version
+ +
+ # get true mirror url reading redirect contents + src_url = "http://gems.rubyforge.org/gems/#{spec.full_name}.gem"
+ h = Net::HTTP.new('gems.rubyforge.org', 80) +
+ resp, data = h.get("/gems/#{spec.full_name}.gem", nil) + # [> get true mirror url reading redirect contents
+ src_url = resp['location'] + # h = Net::HTTP.new('gems.rubyforge.org', 80)
+ print "redirection: http://gems.rubyforge.org/gems/#{spec.full_name}.gem -> #{src_url}\n" + # resp, data = h.get("/gems/#{spec.full_name}.gem", nil)
+ # if resp.code == "200" then
+ # src_url = "http://gems.rubyforge.org/gems/#{spec.full_name}.gem"
+ # else if resp.code == "302" then
+ # src_url = resp['location']
+ # print "redirection: http://gems.rubyforge.org/gems/#{spec.full_name}.gem -> #{src_url}\n"
+ # else
+ # raise Gem::DependencyError.new("unkown http return code #{resp} #{data}")
+ # end
+ # end
+
+ #raise Gem::DependencyError("src_url is nil, 302 redirection failed?") if src_url.nil?
+ +
+ out = " + out = "
+ #{out} + #{out}
+ #{nixname spec} = rubyDerivation { + #{nixname spec} = rubyDerivation {
+ name = \"ruby-#{spec.full_name}\"; # full_name + name = \"ruby-#{spec.full_name}\"; # full_name
+ nameNoVersion = \"#{spec.name}\"; + nameNoVersion = \"#{nixname spec.name}\";
+ propagatedBuildInputs = [ #{deps.map {|n| n.nil? ? "" : (nixname n) }.join(" ")} ]; + propagatedBuildInputs = [ #{deps.map {|n| n.nil? ? "" : (nixname n) }.join(" ")} ];
+ src = fetchurl { + src = fetchurl {
+ url = \"#{src_url}\"; + url = \"#{src_url}\";
@ -130,7 +151,7 @@ index 0000000..1d4ec58
+ meta = { + meta = {
+ homepage = \"#{spec.homepage}\"; + homepage = \"#{spec.homepage}\";
+ license = [#{spec.licenses.map{|l| "\"#{l}\""}.join(" ") }]; # one of ? + license = [#{spec.licenses.map{|l| "\"#{l}\""}.join(" ") }]; # one of ?
+ description = \"#{ spec.description[0..120] }\"; # cut to 120 chars + #{nixdescription spec}
+ longDescription = \"#{ spec.description }\"; + longDescription = \"#{ spec.description }\";
+ }; + };
+ };\n" + };\n"

View File

@ -32,6 +32,11 @@ let libs =
buildFlags=["--with-xml2-dir=${pkgs.libxml2} --with-xml2-include=${pkgs.libxml2}/include/libxml2" buildFlags=["--with-xml2-dir=${pkgs.libxml2} --with-xml2-include=${pkgs.libxml2}/include/libxml2"
"--with-xslt-dir=${pkgs.libxslt}" ]; }; "--with-xslt-dir=${pkgs.libxslt}" ]; };
rubygems_update = {
postInstall = ''
cd $out/gems/*; patch -p 1 < ${./gem_nix_command.patch}; echo
'';
};
}; };
rubyDerivation = args : rubyDerivation = args :
@ -44,6 +49,7 @@ let libs =
# TODO add some abstraction for this kind of env path concatenation. It's used multiple times # TODO add some abstraction for this kind of env path concatenation. It's used multiple times
installPhase = '' installPhase = ''
ensureDir "$out/nix-support" ensureDir "$out/nix-support"
export HOME=$TMP/home; mkdir "$HOME"
gem install -E -i "$out" "$src" -- $buildFlags gem install -E -i "$out" "$src" -- $buildFlags
rm -fr $out/cache # don't keep the .gem file here rm -fr $out/cache # don't keep the .gem file here
@ -65,11 +71,19 @@ let libs =
done done
EOF EOF
. $out/nix-support/setup-hook . $out/nix-support/setup-hook
for prog in $out/bin/*; do for prog in $out/gems/*/bin/*; do
wrapProgram $prog \ sed -i '1s@.*@#! ${ruby}/bin/ruby@' "$prog"
--suffix RUBYLIB ":" "$RUBYLIB" \ t="$out/bin/$(basename "$prog")"
--suffix GEM_PATH ":" "$GEM_PATH" cat >> "$t" << EOF
#!/bin/sh
export GEM_PATH=$GEM_PATH:\$GEM_PATH
#export RUBYLIB=$RUBYLIB:\$RUBYLIB
exec ruby $prog "\$@"
EOF
chmod +x "$t"
done done
runHook postInstall
''; '';
} args ] } args ]
++ optional (hasAttr args.name patches) (getAttr args.name patches) ++ optional (hasAttr args.name patches) (getAttr args.name patches)
@ -81,24 +95,23 @@ let libs =
# ================ START automatically generated code ================ # ================ START automatically generated code ================
# WARNING: automatically generated CODE # WARNING: automatically generated CODE
# This section has been generated by gem nix sup rubygems-update # This section has been generated by
# the gem nix command has been added by a nix patch to ruby gems # $ gem nix sup chronic rubygems-update
# both rubygems (all-packages.nix) and rubygems_update are patched
# adding the nix command
rubygems_update_1_3_4 = rubyDerivation { rubygems_update_1_3_4 = rubyDerivation {
name = "ruby-rubygems-update-1.3.4"; # full_name name = "ruby-rubygems-update-1.3.4"; # full_name
nameNoVersion = "rubygems-update"; nameNoVersion = "rubygems_update";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/rubygems-update-1.3.4.gem"; url = "http://gems.rubyforge.org/gems/rubygems-update-1.3.4.gem";
sha256 = "1y7svhxpr1bfzdpwlaqymm71sbvbhyf3yyifnxadkwd0zqp3chqp"; sha256 = "1y7svhxpr1bfzdpwlaqymm71sbvbhyf3yyifnxadkwd0zqp3chqp";
}; };
meta = { meta = {
homepage = "http://rubygems.rubyforge.org"; homepage = "http://rubygems.rubyforge.org";
license = []; # one of ? license = []; # one of ?
description = "RubyGems is a package management framework for Ruby. description = "RubyGems is a package management framework for Ruby This gem is an update for the RubyGems software. You must have an i"; # cut to 120 chars
This gem is an update for the RubyGems software. You must have an
"; # cut to 120 chars
longDescription = "RubyGems is a package management framework for Ruby. longDescription = "RubyGems is a package management framework for Ruby.
This gem is an update for the RubyGems software. You must have an This gem is an update for the RubyGems software. You must have an
@ -107,18 +120,36 @@ let libs =
}; };
}; };
rexical_1_0_4 = rubyDerivation {
name = "ruby-rexical-1.0.4"; # full_name
nameNoVersion = "rexical";
propagatedBuildInputs = [ hoe_2_3_2 ];
src = fetchurl {
url = "http://gems.rubyforge.org/gems/rexical-1.0.4.gem";
sha256 = "1jfhrlnilb422jvhlbc6dqs25ba45hb2wz5yxdpk27yb0dn9ihid";
};
meta = {
homepage = "http://github.com/tenderlove/rexical/tree/master";
license = []; # one of ?
description = "Rexical is a lexical scanner generator It is written in Ruby itself, and generates Ruby program. It is designed for use w"; # cut to 120 chars
longDescription = "Rexical is a lexical scanner generator.
It is written in Ruby itself, and generates Ruby program.
It is designed for use with Racc.";
};
};
ferret_0_11_6 = rubyDerivation { ferret_0_11_6 = rubyDerivation {
name = "ruby-ferret-0.11.6"; # full_name name = "ruby-ferret-0.11.6"; # full_name
nameNoVersion = "ferret"; nameNoVersion = "ferret";
propagatedBuildInputs = [ rake_0_8_7 ]; propagatedBuildInputs = [ rake_0_8_7 ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/ferret-0.11.6.gem"; url = "http://gems.rubyforge.org/gems/ferret-0.11.6.gem";
sha256 = "0q0zdrmfm41ijf1n19s85vg34b1a558x5cnwmbb8fc8kzxklzbih"; sha256 = "0q0zdrmfm41ijf1n19s85vg34b1a558x5cnwmbb8fc8kzxklzbih";
}; };
meta = { meta = {
homepage = "http://ferret.davebalmain.com/trac"; homepage = "http://ferret.davebalmain.com/trac";
license = []; # one of ? license = []; # one of ?
description = "Ferret is a port of the Java Lucene project. It is a powerful indexing and search library."; # cut to 120 chars description = "Ferret is a port of the Java Lucene project[...]";
longDescription = "Ferret is a port of the Java Lucene project. It is a powerful indexing and search library."; longDescription = "Ferret is a port of the Java Lucene project. It is a powerful indexing and search library.";
}; };
}; };
@ -128,13 +159,13 @@ let libs =
nameNoVersion = "rake"; nameNoVersion = "rake";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://rubyforge-gems.ruby-forum.com/gems/rake-0.8.7.gem"; url = "http://gems.rubyforge.org/gems/rake-0.8.7.gem";
sha256 = "03z1zm7xwl2r9v945ambwbd9sn2smbi34xldmac7qjcmsvd7pcqh"; sha256 = "03z1zm7xwl2r9v945ambwbd9sn2smbi34xldmac7qjcmsvd7pcqh";
}; };
meta = { meta = {
homepage = "http://rake.rubyforge.org"; homepage = "http://rake.rubyforge.org";
license = []; # one of ? license = []; # one of ?
description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax."; # cut to 120 chars description = "Rake is a Make-like program implemented in Ruby[...]";
longDescription = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax."; longDescription = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.";
}; };
}; };
@ -144,30 +175,45 @@ let libs =
nameNoVersion = "racc"; nameNoVersion = "racc";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/racc-1.4.6.gem"; url = "http://gems.rubyforge.org/gems/racc-1.4.6.gem";
sha256 = "0y43s36bbn96pksf7dbpgjyyd9qsyyn77cl7hnfjwldhfvbfcxsq"; sha256 = "0y43s36bbn96pksf7dbpgjyyd9qsyyn77cl7hnfjwldhfvbfcxsq";
}; };
meta = { meta = {
homepage = "http://racc.rubyforge.org/"; homepage = "http://racc.rubyforge.org/";
license = []; # one of ? license = []; # one of ?
description = "Racc is a LALR(1) parser generator. It is written in Ruby itself, and generates Ruby program."; # cut to 120 chars description = "Racc is a LALR(1) parser generator[...]";
longDescription = "Racc is a LALR(1) parser generator. It is written in Ruby itself, and generates Ruby program."; longDescription = "Racc is a LALR(1) parser generator. It is written in Ruby itself, and generates Ruby program.";
}; };
}; };
chronic_0_2_3 = rubyDerivation {
name = "ruby-chronic-0.2.3"; # full_name
nameNoVersion = "chronic";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://gems.rubyforge.org/gems/chronic-0.2.3.gem";
sha256 = "0gm4i9iwpvsk07nzvy8fmyad4y7i284vvdrxrlbgb23lr17qpl17";
};
meta = {
homepage = " http://chronic.rubyforge.org/";
license = []; # one of ?
description = "Chronic is a natural language date/time parser written in pure Ruby[...]";
longDescription = "Chronic is a natural language date/time parser written in pure Ruby. See below for the wide variety of formats Chronic will parse.";
};
};
nokogiri_1_3_2 = rubyDerivation { nokogiri_1_3_2 = rubyDerivation {
name = "ruby-nokogiri-1.3.2"; # full_name name = "ruby-nokogiri-1.3.2"; # full_name
nameNoVersion = "nokogiri"; nameNoVersion = "nokogiri";
propagatedBuildInputs = [ racc_1_4_6 rexical_1_0_3 rake_compiler_0_5_0 ]; propagatedBuildInputs = [ racc_1_4_6 rexical_1_0_4 rake_compiler_0_5_0 ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/nokogiri-1.3.2.gem"; url = "http://gems.rubyforge.org/gems/nokogiri-1.3.2.gem";
sha256 = "1j5w39nriyw8ly1pzn7giw6wd9r5wclj4r1933z5ximss7l7ih15"; sha256 = "1j5w39nriyw8ly1pzn7giw6wd9r5wclj4r1933z5ximss7l7ih15";
}; };
meta = { meta = {
homepage = "http://nokogiri.org/"; homepage = "http://nokogiri.org/";
license = []; # one of ? license = []; # one of ?
description = "Nokogiri (&#37624;) is an HTML, XML, SAX, and Reader parser. Among Nokogiri's description = "Nokogiri (&#37624;) is an HTML, XML, SAX, and Reader parser many features is the ability to search documents via XPath or"; # cut to 120 chars
many features is the ability to search doc"; # cut to 120 chars
longDescription = "Nokogiri (&#37624;) is an HTML, XML, SAX, and Reader parser. Among Nokogiri's longDescription = "Nokogiri (&#37624;) is an HTML, XML, SAX, and Reader parser. Among Nokogiri's
many features is the ability to search documents via XPath or CSS3 selectors. many features is the ability to search documents via XPath or CSS3 selectors.
@ -176,19 +222,82 @@ let libs =
}; };
}; };
hoe_2_3_1 = rubyDerivation { archive_tar_minitar_0_5_2 = rubyDerivation {
name = "ruby-hoe-2.3.1"; # full_name name = "ruby-archive-tar-minitar-0.5.2"; # full_name
nameNoVersion = "archive_tar_minitar";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://gems.rubyforge.org/gems/archive-tar-minitar-0.5.2.gem";
sha256 = "1j666713r3cc3wb0042x0wcmq2v11vwwy5pcaayy5f0lnd26iqig";
};
meta = {
homepage = "http://rubyforge.org/projects/ruwiki/";
license = []; # one of ?
description = "Archive::Tar::Minitar is a pure-Ruby library and command-line utility that provides the ability to deal with POSIX tar(1)"; # cut to 120 chars
longDescription = "Archive::Tar::Minitar is a pure-Ruby library and command-line utility that provides the ability to deal with POSIX tar(1) archive files. The implementation is based heavily on Mauricio Ferna'ndez's implementation in rpa-base, but has been reorganised to promote reuse in other projects.";
};
};
rubyforge_1_0_3 = rubyDerivation {
name = "ruby-rubyforge-1.0.3"; # full_name
nameNoVersion = "rubyforge";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://gems.rubyforge.org/gems/rubyforge-1.0.3.gem";
sha256 = "0pwhb8mrnmcr5yybh13csfn658s1r1y978wj5m3mn85cbvwrrkyz";
};
meta = {
homepage = "http://codeforpeople.rubyforge.org/rubyforge/";
license = []; # one of ?
description = "A script which automates a limited set of rubyforge operations[...]";
longDescription = "A script which automates a limited set of rubyforge operations. * Run 'rubyforge help' for complete usage. * Setup: For first time users AND upgrades to 0.4.0: * rubyforge setup (deletes your username and password, so run sparingly!) * edit ~/.rubyforge/user-config.yml * rubyforge config * For all rubyforge upgrades, run 'rubyforge config' to ensure you have latest. * Don't forget to login! logging in will store a cookie in your .rubyforge directory which expires after a time. always run the login command before any operation that requires authentication, such as uploading a package.";
};
};
ncurses_0_9_1 = rubyDerivation {
name = "ruby-ncurses-0.9.1"; # full_name
nameNoVersion = "ncurses";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://gems.rubyforge.org/gems/ncurses-0.9.1.gem";
sha256 = "18qxp33imgrp337p7zrk0c008ydw08g73x1gxiqclhgvyqxa42v3";
};
meta = {
homepage = "http://ncurses-ruby.berlios.de/";
license = []; # one of ?
description = "[...]";
longDescription = "";
};
};
fastthread_1_0_7 = rubyDerivation {
name = "ruby-fastthread-1.0.7"; # full_name
nameNoVersion = "fastthread";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://gems.rubyforge.org/gems/fastthread-1.0.7.gem";
sha256 = "003ngap8rmwsl4bvf44hz8q4ajm9d0sbn38pm28dajng3pm8q6mx";
};
meta = {
homepage = "";
license = []; # one of ?
description = "Optimized replacement for thread[...]";
longDescription = "Optimized replacement for thread.rb primitives";
};
};
hoe_2_3_2 = rubyDerivation {
name = "ruby-hoe-2.3.2"; # full_name
nameNoVersion = "hoe"; nameNoVersion = "hoe";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://rubyforge-gems.ruby-forum.com/gems/hoe-2.3.1.gem"; url = "http://gems.rubyforge.org/gems/hoe-2.3.2.gem";
sha256 = "13mx2fzc9y6as54mlzpavp4ggpil0y001cfw2w3dbpi2g796x9vv"; sha256 = "1asip0l73cp6xxn5dx4vxzsq3qlw5asdnj6jr0cs00nf8a5k341s";
}; };
meta = { meta = {
homepage = "http://rubyforge.org/projects/seattlerb/"; homepage = "http://rubyforge.org/projects/seattlerb/";
license = []; # one of ? license = []; # one of ?
description = "Hoe is a rake/rubygems helper for project Rakefiles. It helps generate description = "Hoe is a rake/rubygems helper for project Rakefiles rubygems and includes a dynamic plug-in system allowing for easy exte"; # cut to 120 chars
rubygems and includes a dynamic plug-in system all"; # cut to 120 chars
longDescription = "Hoe is a rake/rubygems helper for project Rakefiles. It helps generate longDescription = "Hoe is a rake/rubygems helper for project Rakefiles. It helps generate
rubygems and includes a dynamic plug-in system allowing for easy rubygems and includes a dynamic plug-in system allowing for easy
extensibility. Hoe ships with plug-ins for all your usual project extensibility. Hoe ships with plug-ins for all your usual project
@ -212,83 +321,18 @@ let libs =
}; };
}; };
archive_tar_minitar_0_5_2 = rubyDerivation {
name = "ruby-archive-tar-minitar-0.5.2"; # full_name
nameNoVersion = "archive-tar-minitar";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/archive-tar-minitar-0.5.2.gem";
sha256 = "1j666713r3cc3wb0042x0wcmq2v11vwwy5pcaayy5f0lnd26iqig";
};
meta = {
homepage = "http://rubyforge.org/projects/ruwiki/";
license = []; # one of ?
description = "Archive::Tar::Minitar is a pure-Ruby library and command-line utility that provides the ability to deal with POSIX tar(1)"; # cut to 120 chars
longDescription = "Archive::Tar::Minitar is a pure-Ruby library and command-line utility that provides the ability to deal with POSIX tar(1) archive files. The implementation is based heavily on Mauricio Ferna'ndez's implementation in rpa-base, but has been reorganised to promote reuse in other projects.";
};
};
rubyforge_1_0_3 = rubyDerivation {
name = "ruby-rubyforge-1.0.3"; # full_name
nameNoVersion = "rubyforge";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/rubyforge-1.0.3.gem";
sha256 = "0pwhb8mrnmcr5yybh13csfn658s1r1y978wj5m3mn85cbvwrrkyz";
};
meta = {
homepage = "http://codeforpeople.rubyforge.org/rubyforge/";
license = []; # one of ?
description = "A script which automates a limited set of rubyforge operations. * Run 'rubyforge help' for complete usage. * Setup: For "; # cut to 120 chars
longDescription = "A script which automates a limited set of rubyforge operations. * Run 'rubyforge help' for complete usage. * Setup: For first time users AND upgrades to 0.4.0: * rubyforge setup (deletes your username and password, so run sparingly!) * edit ~/.rubyforge/user-config.yml * rubyforge config * For all rubyforge upgrades, run 'rubyforge config' to ensure you have latest. * Don't forget to login! logging in will store a cookie in your .rubyforge directory which expires after a time. always run the login command before any operation that requires authentication, such as uploading a package.";
};
};
ncurses_0_9_1 = rubyDerivation {
name = "ruby-ncurses-0.9.1"; # full_name
nameNoVersion = "ncurses";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://rubyforge-gems.ruby-forum.com/gems/ncurses-0.9.1.gem";
sha256 = "18qxp33imgrp337p7zrk0c008ydw08g73x1gxiqclhgvyqxa42v3";
};
meta = {
homepage = "http://ncurses-ruby.berlios.de/";
license = []; # one of ?
description = ""; # cut to 120 chars
longDescription = "";
};
};
fastthread_1_0_7 = rubyDerivation {
name = "ruby-fastthread-1.0.7"; # full_name
nameNoVersion = "fastthread";
propagatedBuildInputs = [ ];
src = fetchurl {
url = "http://rubyforge-gems.ruby-forum.com/gems/fastthread-1.0.7.gem";
sha256 = "003ngap8rmwsl4bvf44hz8q4ajm9d0sbn38pm28dajng3pm8q6mx";
};
meta = {
homepage = "";
license = []; # one of ?
description = "Optimized replacement for thread.rb primitives"; # cut to 120 chars
longDescription = "Optimized replacement for thread.rb primitives";
};
};
rake_compiler_0_5_0 = rubyDerivation { rake_compiler_0_5_0 = rubyDerivation {
name = "ruby-rake-compiler-0.5.0"; # full_name name = "ruby-rake-compiler-0.5.0"; # full_name
nameNoVersion = "rake-compiler"; nameNoVersion = "rake_compiler";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/rake-compiler-0.5.0.gem"; url = "http://gems.rubyforge.org/gems/rake-compiler-0.5.0.gem";
sha256 = "03l6hgyv9z2bc1p16c2mai5n1ylhzcnw053x0x0nc94p4297m2jv"; sha256 = "03l6hgyv9z2bc1p16c2mai5n1ylhzcnw053x0x0nc94p4297m2jv";
}; };
meta = { meta = {
homepage = "http://github.com/luislavena/rake-compiler"; homepage = "http://github.com/luislavena/rake-compiler";
license = []; # one of ? license = []; # one of ?
description = "Provide a standard and simplified way to build and package description = "Provide a standard and simplified way to build and package Ruby C extensions using Rake as glue[...]";
Ruby C extensions using Rake as glue."; # cut to 120 chars
longDescription = "Provide a standard and simplified way to build and package longDescription = "Provide a standard and simplified way to build and package
Ruby C extensions using Rake as glue."; Ruby C extensions using Rake as glue.";
}; };
@ -299,13 +343,13 @@ let libs =
nameNoVersion = "lockfile"; nameNoVersion = "lockfile";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/lockfile-1.4.3.gem"; url = "http://gems.rubyforge.org/gems/lockfile-1.4.3.gem";
sha256 = "0cxbyvxr3s5xsx85yghcs69d4lwwj0pg5la5cz2fp12hkk2szab3"; sha256 = "0cxbyvxr3s5xsx85yghcs69d4lwwj0pg5la5cz2fp12hkk2szab3";
}; };
meta = { meta = {
homepage = "http://codeforpeople.com/lib/ruby/lockfile/"; homepage = "http://codeforpeople.com/lib/ruby/lockfile/";
license = []; # one of ? license = []; # one of ?
description = ""; # cut to 120 chars description = "[...]";
longDescription = ""; longDescription = "";
}; };
}; };
@ -315,13 +359,13 @@ let libs =
nameNoVersion = "locale"; nameNoVersion = "locale";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/locale-2.0.4.gem"; url = "http://gems.rubyforge.org/gems/locale-2.0.4.gem";
sha256 = "1fy0bsrxmskmsw3wrl2dis57rgs1jr1dmlp3xm9z8w1phaqh3c8v"; sha256 = "1fy0bsrxmskmsw3wrl2dis57rgs1jr1dmlp3xm9z8w1phaqh3c8v";
}; };
meta = { meta = {
homepage = "http://locale.rubyforge.org/"; homepage = "http://locale.rubyforge.org/";
license = []; # one of ? license = []; # one of ?
description = "Ruby-Locale is the pure ruby library which provides basic APIs for localization."; # cut to 120 chars description = "Ruby-Locale is the pure ruby library which provides basic APIs for localization[...]";
longDescription = "Ruby-Locale is the pure ruby library which provides basic APIs for localization."; longDescription = "Ruby-Locale is the pure ruby library which provides basic APIs for localization.";
}; };
}; };
@ -331,13 +375,13 @@ let libs =
nameNoVersion = "rcov"; nameNoVersion = "rcov";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/rcov-0.8.1.2.0.gem"; url = "http://gems.rubyforge.org/gems/rcov-0.8.1.2.0.gem";
sha256 = "0mbm0n48yvgiibyvdc3gn4h70c82pn7z3hns9jinak7hyfmb5q5p"; sha256 = "0mbm0n48yvgiibyvdc3gn4h70c82pn7z3hns9jinak7hyfmb5q5p";
}; };
meta = { meta = {
homepage = "http://eigenclass.org/hiki.rb?rcov"; homepage = "http://eigenclass.org/hiki.rb?rcov";
license = []; # one of ? license = []; # one of ?
description = "rcov is a code coverage tool for Ruby. It is commonly used for viewing overall test unit coverage of target code. It fea"; # cut to 120 chars description = "rcov is a code coverage tool for Ruby[...]";
longDescription = "rcov is a code coverage tool for Ruby. It is commonly used for viewing overall test unit coverage of target code. It features fast execution (20-300 times faster than previous tools), multiple analysis modes, XHTML and several kinds of text reports, easy automation with Rake via a RcovTask, fairly accurate coverage information through code linkage inference using simple heuristics, colorblind-friendliness..."; longDescription = "rcov is a code coverage tool for Ruby. It is commonly used for viewing overall test unit coverage of target code. It features fast execution (20-300 times faster than previous tools), multiple analysis modes, XHTML and several kinds of text reports, easy automation with Rake via a RcovTask, fairly accurate coverage information through code linkage inference using simple heuristics, colorblind-friendliness...";
}; };
}; };
@ -347,23 +391,23 @@ let libs =
nameNoVersion = "echoe"; nameNoVersion = "echoe";
propagatedBuildInputs = [ rubyforge_1_0_3 ]; propagatedBuildInputs = [ rubyforge_1_0_3 ];
src = fetchurl { src = fetchurl {
url = "http://rubyforge-gems.ruby-forum.com/gems/echoe-3.1.1.gem"; url = "http://gems.rubyforge.org/gems/echoe-3.1.1.gem";
sha256 = "1vy4jc8j8fq89r7fg2x37ybagghpw82qbqivc9pjk5fwyrxcvqha"; sha256 = "1vy4jc8j8fq89r7fg2x37ybagghpw82qbqivc9pjk5fwyrxcvqha";
}; };
meta = { meta = {
homepage = "http://blog.evanweaver.com/files/doc/fauna/echoe/"; homepage = "http://blog.evanweaver.com/files/doc/fauna/echoe/";
license = []; # one of ? license = []; # one of ?
description = "A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment."; # cut to 120 chars description = "A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment[...]";
longDescription = "A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment."; longDescription = "A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.";
}; };
}; };
mime_types_1_16 = rubyDerivation { mime_types_1_16 = rubyDerivation {
name = "ruby-mime-types-1.16"; # full_name name = "ruby-mime-types-1.16"; # full_name
nameNoVersion = "mime-types"; nameNoVersion = "mime_types";
propagatedBuildInputs = [ archive_tar_minitar_0_5_2 nokogiri_1_3_2 rcov_0_8_1_2_0 ]; propagatedBuildInputs = [ archive_tar_minitar_0_5_2 nokogiri_1_3_2 rcov_0_8_1_2_0 ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/mime-types-1.16.gem"; url = "http://gems.rubyforge.org/gems/mime-types-1.16.gem";
sha256 = "1slp7g2xv9ygcapqv13qgh3g6ipx5k5c3imb5sdyh0b9ip5s34y3"; sha256 = "1slp7g2xv9ygcapqv13qgh3g6ipx5k5c3imb5sdyh0b9ip5s34y3";
}; };
meta = { meta = {
@ -376,16 +420,16 @@ let libs =
net_ssh_2_0_11 = rubyDerivation { net_ssh_2_0_11 = rubyDerivation {
name = "ruby-net-ssh-2.0.11"; # full_name name = "ruby-net-ssh-2.0.11"; # full_name
nameNoVersion = "net-ssh"; nameNoVersion = "net_ssh";
propagatedBuildInputs = [ echoe_3_1_1 ]; propagatedBuildInputs = [ echoe_3_1_1 ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/net-ssh-2.0.11.gem"; url = "http://gems.rubyforge.org/gems/net-ssh-2.0.11.gem";
sha256 = "1j1mpnhpnb0d9l3jfk7g02syqjanc51lm076llzmjydy30x2n2f7"; sha256 = "1j1mpnhpnb0d9l3jfk7g02syqjanc51lm076llzmjydy30x2n2f7";
}; };
meta = { meta = {
homepage = "http://net-ssh.rubyforge.org/ssh"; homepage = "http://net-ssh.rubyforge.org/ssh";
license = []; # one of ? license = []; # one of ?
description = "a pure-Ruby implementation of the SSH2 client protocol"; # cut to 120 chars description = "a pure-Ruby implementation of the SSH2 client protocol[...]";
longDescription = "a pure-Ruby implementation of the SSH2 client protocol"; longDescription = "a pure-Ruby implementation of the SSH2 client protocol";
}; };
}; };
@ -395,29 +439,29 @@ let libs =
nameNoVersion = "highline"; nameNoVersion = "highline";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/highline-1.5.1.gem"; url = "http://gems.rubyforge.org/gems/highline-1.5.1.gem";
sha256 = "0sawb011sc1i5glr80a4iflr0vvn3s5c97a4jmrhj3palv4df19i"; sha256 = "0sawb011sc1i5glr80a4iflr0vvn3s5c97a4jmrhj3palv4df19i";
}; };
meta = { meta = {
homepage = "http://highline.rubyforge.org"; homepage = "http://highline.rubyforge.org";
license = []; # one of ? license = []; # one of ?
description = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also in"; # cut to 120 chars description = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces[...]";
longDescription = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also includes a complete menu system that can crank out anything from simple list selection to complete shells with just minutes of work."; longDescription = "A high-level IO library that provides validation, type conversion, and more for command-line interfaces. HighLine also includes a complete menu system that can crank out anything from simple list selection to complete shells with just minutes of work.";
}; };
}; };
gettext_2_0_4 = rubyDerivation { gettext_2_0_4 = rubyDerivation {
name = "ruby-gettext-2.0.4"; # full_name name = "ruby-gettext-2.0.4"; # full_name
nameNoVersion = "ruby-gettext"; nameNoVersion = "gettext";
propagatedBuildInputs = [ locale_2_0_4 ]; propagatedBuildInputs = [ locale_2_0_4 ];
src = fetchurl { src = fetchurl {
url = "http://rubyforge-gems.ruby-forum.com/gems/gettext-2.0.4.gem"; url = "http://gems.rubyforge.org/gems/gettext-2.0.4.gem";
sha256 = "1hdj91qg5858ss3wsdjbi4yxmwixqin5vv550fkvf4514yyc9gk0"; sha256 = "1hdj91qg5858ss3wsdjbi4yxmwixqin5vv550fkvf4514yyc9gk0";
}; };
meta = { meta = {
homepage = "http://gettext.rubyforge.org/"; homepage = "http://gettext.rubyforge.org/";
license = []; # one of ? license = []; # one of ?
description = "Ruby-GetText-Package is a GNU GetText-like program for Ruby. The catalog file(po-file) is same format with GNU GetText. S"; # cut to 120 chars description = "Ruby-GetText-Package is a GNU GetText-like program for Ruby[...]";
longDescription = "Ruby-GetText-Package is a GNU GetText-like program for Ruby. The catalog file(po-file) is same format with GNU GetText. So you can use GNU GetText tools for maintaining."; longDescription = "Ruby-GetText-Package is a GNU GetText-like program for Ruby. The catalog file(po-file) is same format with GNU GetText. So you can use GNU GetText tools for maintaining.";
}; };
}; };
@ -427,13 +471,13 @@ let libs =
nameNoVersion = "sup"; nameNoVersion = "sup";
propagatedBuildInputs = [ ferret_0_11_6 ncurses_0_9_1 rmail_1_0_0 highline_1_5_1 net_ssh_2_0_11 trollop_1_14 lockfile_1_4_3 mime_types_1_16 gettext_2_0_4 fastthread_1_0_7 ]; propagatedBuildInputs = [ ferret_0_11_6 ncurses_0_9_1 rmail_1_0_0 highline_1_5_1 net_ssh_2_0_11 trollop_1_14 lockfile_1_4_3 mime_types_1_16 gettext_2_0_4 fastthread_1_0_7 ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/sup-0.8.1.gem"; url = "http://gems.rubyforge.org/gems/sup-0.8.1.gem";
sha256 = "0q7s63s43mf35j0372g3qpfhsnsys4fbsb8xkshpwrjsd4lb90l2"; sha256 = "0q7s63s43mf35j0372g3qpfhsnsys4fbsb8xkshpwrjsd4lb90l2";
}; };
meta = { meta = {
homepage = "http://sup.rubyforge.org/"; homepage = "http://sup.rubyforge.org/";
license = []; # one of ? license = []; # one of ?
description = "Sup is a console-based email client for people with a lot of email. It supports tagging, very fast full-text search, auto"; # cut to 120 chars description = "Sup is a console-based email client for people with a lot of email[...]";
longDescription = "Sup is a console-based email client for people with a lot of email. It supports tagging, very fast full-text search, automatic contact-list management, and more. If you're the type of person who treats email as an extension of your long-term memory, Sup is for you. Sup makes it easy to: - Handle massive amounts of email. - Mix email from different sources: mbox files (even across different machines), Maildir directories, IMAP folders, POP accounts, and GMail accounts. - Instantaneously search over your entire email collection. Search over body text, or use a query language to combine search predicates in any way. - Handle multiple accounts. Replying to email sent to a particular account will use the correct SMTP server, signature, and from address. - Add custom code to handle certain types of messages or to handle certain types of text within messages. - Organize email with user-defined labels, automatically track recent contacts, and much more! The goal of Sup is to become the email client of choice for nerds everywhere."; longDescription = "Sup is a console-based email client for people with a lot of email. It supports tagging, very fast full-text search, automatic contact-list management, and more. If you're the type of person who treats email as an extension of your long-term memory, Sup is for you. Sup makes it easy to: - Handle massive amounts of email. - Mix email from different sources: mbox files (even across different machines), Maildir directories, IMAP folders, POP accounts, and GMail accounts. - Instantaneously search over your entire email collection. Search over body text, or use a query language to combine search predicates in any way. - Handle multiple accounts. Replying to email sent to a particular account will use the correct SMTP server, signature, and from address. - Add custom code to handle certain types of messages or to handle certain types of text within messages. - Organize email with user-defined labels, automatically track recent contacts, and much more! The goal of Sup is to become the email client of choice for nerds everywhere.";
}; };
}; };
@ -443,7 +487,7 @@ let libs =
nameNoVersion = "trollop"; nameNoVersion = "trollop";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/trollop-1.14.gem"; url = "http://gems.rubyforge.org/gems/trollop-1.14.gem";
sha256 = "15jsdlnq6fj3q3g47qswi73gx91rw1yvssi8zkwf6svkd55ri3f7"; sha256 = "15jsdlnq6fj3q3g47qswi73gx91rw1yvssi8zkwf6svkd55ri3f7";
}; };
meta = { meta = {
@ -454,32 +498,12 @@ let libs =
}; };
}; };
rexical_1_0_3 = rubyDerivation {
name = "ruby-rexical-1.0.3"; # full_name
nameNoVersion = "rexical";
propagatedBuildInputs = [ hoe_2_3_1 ];
src = fetchurl {
url = "http://gems.rubyforge.mmmultiworks.com/gems/rexical-1.0.3.gem";
sha256 = "0dp5jgjjqv5f050xfa9wr89rd89v85kb02fabvx88wn5dwgb08lk";
};
meta = {
homepage = "http://github.com/tenderlove/rexical/tree/master";
license = []; # one of ?
description = "Rexical is a lexical scanner generator.
It is written in Ruby itself, and generates Ruby program.
It is designed for use "; # cut to 120 chars
longDescription = "Rexical is a lexical scanner generator.
It is written in Ruby itself, and generates Ruby program.
It is designed for use with Racc.";
};
};
rmail_1_0_0 = rubyDerivation { rmail_1_0_0 = rubyDerivation {
name = "ruby-rmail-1.0.0"; # full_name name = "ruby-rmail-1.0.0"; # full_name
nameNoVersion = "rmail"; nameNoVersion = "rmail";
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];
src = fetchurl { src = fetchurl {
url = "http://gems.rubyforge.vm.bytemark.co.uk/gems/rmail-1.0.0.gem"; url = "http://gems.rubyforge.org/gems/rmail-1.0.0.gem";
sha256 = "0nsg7yda1gdwa96j4hlrp2s0m06vrhcc4zy5mbq7gxmlmwf9yixp"; sha256 = "0nsg7yda1gdwa96j4hlrp2s0m06vrhcc4zy5mbq7gxmlmwf9yixp";
}; };
meta = { meta = {
@ -509,11 +533,12 @@ let libs =
gettext=gettext_2_0_4; gettext=gettext_2_0_4;
archive_tar_minitar=archive_tar_minitar_0_5_2; archive_tar_minitar=archive_tar_minitar_0_5_2;
locale=locale_2_0_4; locale=locale_2_0_4;
hoe=hoe_2_3_1; hoe=hoe_2_3_2;
chronic=chronic_0_2_3;
racc=racc_1_4_6; racc=racc_1_4_6;
lockfile=lockfile_1_4_3; lockfile=lockfile_1_4_3;
rexical=rexical_1_0_3;
nokogiri=nokogiri_1_3_2; nokogiri=nokogiri_1_3_2;
rexical=rexical_1_0_4;
# ================ END automatically generated code ================ # ================ END automatically generated code ================
}; in libs }; in libs