summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Legler <a3li@gentoo.org>2009-03-21 10:12:08 +0000
committerAlex Legler <a3li@gentoo.org>2009-03-21 10:12:08 +0000
commitb42fb569e7872db86b8d079e7eca5b709857c87b (patch)
tree473173d0b1a553652b17ac34638af272ab86ae67 /dev-lang
parentAdding special version for Ruby 1.9.1 testing (diff)
downloadgentoo-2-b42fb569e7872db86b8d079e7eca5b709857c87b.tar.gz
gentoo-2-b42fb569e7872db86b8d079e7eca5b709857c87b.tar.bz2
gentoo-2-b42fb569e7872db86b8d079e7eca5b709857c87b.zip
Adding Ruby 1.9.1 for preliminary testing
(Portage version: 2.2_rc26/cvs/Linux x86_64)
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/ruby/ChangeLog9
-rw-r--r--dev-lang/ruby/files/ruby19-rubygems-gentoo.patch41
-rw-r--r--dev-lang/ruby/files/ruby19-rubygems-proxy.patch11
-rw-r--r--dev-lang/ruby/ruby-1.9.1.ebuild195
4 files changed, 255 insertions, 1 deletions
diff --git a/dev-lang/ruby/ChangeLog b/dev-lang/ruby/ChangeLog
index 8554ee0c1292..ae32b4785e42 100644
--- a/dev-lang/ruby/ChangeLog
+++ b/dev-lang/ruby/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for dev-lang/ruby
# Copyright 2002-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/ruby/ChangeLog,v 1.389 2009/03/20 07:47:40 tove Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/ruby/ChangeLog,v 1.390 2009/03/21 10:12:08 a3li Exp $
+
+*ruby-1.9.1 (21 Mar 2009)
+
+ 21 Mar 2009; Alex Legler <a3li@gentoo.org>
+ +files/ruby19-rubygems-gentoo.patch, +files/ruby19-rubygems-proxy.patch,
+ +ruby-1.9.1.ebuild:
+ Adding Ruby 1.9.1 for preliminary testing
20 Mar 2009; Joseph Jezak <josejx@gentoo.org> ruby-1.8.7_p72-r10.ebuild,
ruby-1.8.6_p287-r12.ebuild:
diff --git a/dev-lang/ruby/files/ruby19-rubygems-gentoo.patch b/dev-lang/ruby/files/ruby19-rubygems-gentoo.patch
new file mode 100644
index 000000000000..754d663c8009
--- /dev/null
+++ b/dev-lang/ruby/files/ruby19-rubygems-gentoo.patch
@@ -0,0 +1,41 @@
+diff -ru a/lib/rubygems/commands/install_command.rb b/lib/rubygems/commands/install_command.rb
+--- a/lib/rubygems/commands/install_command.rb 2008-09-11 01:54:41.000000000 +0200
++++ b/lib/rubygems/commands/install_command.rb 2008-09-28 10:24:27.000000000 +0200
+@@ -76,6 +76,7 @@
+ :wrappers => options[:wrappers],
+ :bin_dir => options[:bin_dir],
+ :development => options[:development],
++ :sandbox_fix => options[:sandbox_fix],
+ }
+
+ exit_code = 0
+diff -ru a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb
+--- a/lib/rubygems/dependency_installer.rb 2008-08-12 23:50:22.000000000 +0200
++++ b/lib/rubygems/dependency_installer.rb 2008-09-28 10:22:21.000000000 +0200
+@@ -40,9 +40,10 @@
+ # :security_policy:: See Gem::Installer::new and Gem::Security.
+ # :user_install:: See Gem::Installer.new
+ # :wrappers:: See Gem::Installer::new
++ # :sandbox_fix:: Gentoo patch to repair compatibility
+
+ def initialize(options = {})
+- if options[:install_dir] then
++ if options[:install_dir] and not options[:sandbox_fix] then
+ spec_dir = options[:install_dir], 'specifications'
+ @source_index = Gem::SourceIndex.from_gems_in spec_dir
+ else
+diff -ru a/lib/rubygems/install_update_options.rb b/lib/rubygems/install_update_options.rb
+--- a/lib/rubygems/install_update_options.rb 2008-06-24 20:56:30.000000000 +0200
++++ b/lib/rubygems/install_update_options.rb 2008-09-28 10:24:09.000000000 +0200
+@@ -83,6 +83,11 @@
+ options[:include_dependencies] = value
+ end
+
++ add_option(:"Install/Update", '--sandbox-fix',
++ 'Fix specifications lookup path [Gentoo patch]') do |value, options|
++ options[:sandbox_fix] = true
++ end
++
+ add_option(:"Install/Update", '--[no-]format-executable',
+ 'Make installed executable names match ruby.',
+ 'If ruby is ruby18, foo_exec will be',
diff --git a/dev-lang/ruby/files/ruby19-rubygems-proxy.patch b/dev-lang/ruby/files/ruby19-rubygems-proxy.patch
new file mode 100644
index 000000000000..c1719ccdef14
--- /dev/null
+++ b/dev-lang/ruby/files/ruby19-rubygems-proxy.patch
@@ -0,0 +1,11 @@
+--- lib/rubygems/remote_fetcher.rb.1 2008-06-21 23:21:17.000000000 +0200
++++ lib/rubygems/remote_fetcher.rb 2008-09-23 20:37:24.000000000 +0200
+@@ -195,7 +195,7 @@
+
+ return nil if env_proxy.nil? or env_proxy.empty?
+
+- uri = URI.parse env_proxy
++ uri = URI.parse normalize_uri env_proxy
+
+ if uri and uri.user.nil? and uri.password.nil? then
+ # Probably we have http_proxy_* variables?
diff --git a/dev-lang/ruby/ruby-1.9.1.ebuild b/dev-lang/ruby/ruby-1.9.1.ebuild
new file mode 100644
index 000000000000..43dc77cc6e6f
--- /dev/null
+++ b/dev-lang/ruby/ruby-1.9.1.ebuild
@@ -0,0 +1,195 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/ruby/ruby-1.9.1.ebuild,v 1.1 2009/03/21 10:12:08 a3li Exp $
+
+inherit autotools eutils flag-o-matic multilib versionator
+
+# Add p0 patchlevel
+MY_P="${P}-p0"
+
+# 1.9.1.0 -> 1.9
+SLOT=$(get_version_component_range 1-2)
+
+# 1.9.1.0 -> 1.9.1 (used in libdirs)
+RUBYVERSION=$(get_version_component_range 1-3)
+
+# 1.9 -> 19
+MY_SUFFIX=$(delete_version_separator 1 ${SLOT})
+
+DESCRIPTION="An object-oriented scripting language"
+HOMEPAGE="http://www.ruby-lang.org/"
+SRC_URI="mirror://ruby/${MY_P}.tar.bz2"
+
+LICENSE="|| ( Ruby GPL-2 )"
+KEYWORDS="~amd64 ~x86"
+IUSE="berkdb debug doc emacs examples gdbm ipv6 rubytests socks5 ssl tk xemacs"
+
+RDEPEND="
+ berkdb? ( sys-libs/db )
+ gdbm? ( sys-libs/gdbm )
+ ssl? ( dev-libs/openssl )
+ socks5? ( >=net-proxy/dante-1.1.13 )
+ tk? ( dev-lang/tk )
+ >=app-admin/eselect-ruby-20080921
+ !=dev-lang/ruby-cvs-${SLOT}*
+ !dev-ruby/rdoc
+ !dev-ruby/rexml"
+DEPEND="${RDEPEND}"
+PDEPEND="
+ emacs? ( app-emacs/ruby-mode )
+ xemacs? ( app-xemacs/ruby-modes )"
+
+PROVIDE="virtual/ruby"
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+ ewarn
+ ewarn "It is highly recommended to install dev-ruby/rubygems-1.3.1-r30"
+ ewarn "if you have Ruby 1.8 on this system installed, too."
+ ewarn
+ epause 5
+}
+
+src_unpack() {
+ unpack ${A}
+
+ cd "${S}"
+
+ # Patch wrt bug #238061
+ epatch "${FILESDIR}/ruby19-rubygems-proxy.patch"
+ # Patch for rubygems to find installed gems outside of the sandbox
+ epatch "${FILESDIR}/ruby19-rubygems-gentoo.patch"
+
+ epatch "${FILESDIR}/${PN}-ossl_ocsp-verification.patch"
+
+ # Strip rake
+ rm "bin/rake"
+ rm "lib/rake.rb"
+ rm -rf "lib/rake"
+
+ # Fix a hardcoded lib path in configure script
+ sed -i -e "s:\(RUBY_LIB_PREFIX=\"\${prefix}/\)lib:\1$(get_libdir):" \
+ configure.in || die "sed failed"
+
+ eautoreconf
+}
+
+src_compile() {
+ # -fomit-frame-pointer makes ruby segfault, see bug #150413.
+ filter-flags -fomit-frame-pointer
+ # In many places aliasing rules are broken; play it safe
+ # as it's risky with newer compilers to leave it as it is.
+ append-flags -fno-strict-aliasing
+
+ # Socks support via dante
+ if use socks5 ; then
+ # Socks support can't be disabled as long as SOCKS_SERVER is
+ # set and socks library is present, so need to unset
+ # SOCKS_SERVER in that case.
+ unset SOCKS_SERVER
+ fi
+
+ # Increase GC_MALLOC_LIMIT if set (default is 8000000)
+ if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then
+ append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}"
+ fi
+
+ econf --program-suffix=${MY_SUFFIX} --enable-shared --enable-pthread \
+ $(use_enable socks5 socks) \
+ $(use_enable doc install-doc) \
+ $(use_enable ipv6) \
+ $(use_enable debug) \
+ $(use_with berkdb dbm) \
+ $(use_with gdbm) \
+ $(use_with ssl openssl) \
+ $(use_with tk) \
+ ${myconf} \
+ --enable-option-checking=no \
+ || die "econf failed"
+
+ emake EXTLDFLAGS="${LDFLAGS}" || die "emake failed"
+}
+
+src_test() {
+ emake test || die "make test failed"
+
+ elog "Ruby's make test has been run. Ruby also ships with a make check"
+ elog "that cannot be run until after ruby has been installed."
+ elog
+ if use rubytests; then
+ elog "You have enabled rubytests, so they will be installed to"
+ elog "/usr/share/${PN}-${RUBYVERSION}/test. To run them you must be a user other"
+ elog "than root, and you must place them into a writeable directory."
+ elog "Then call: "
+ elog
+ elog "ruby19 -C /location/of/tests runner.rb"
+ else
+ elog "Enable the rubytests USE flag to install the make check tests"
+ fi
+}
+
+src_install() {
+ # Ruby is involved in the install process, we don't want interference here.
+ unset RUBYOPT
+
+ # Creating the rubygems directories, bug #230163 once more.
+ local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby)
+ keepdir /usr/$(get_libdir)/ruby${MY_SUFFIX}/gems/${RUBYVERSION}/{doc,gems,cache,specifications}
+
+ export GEM_HOME="${D}/usr/$(get_libdir)/ruby${MY_SUFFIX}/gems/${RUBYVERSION}"
+ export GEM_PATH="${GEM_HOME}/"
+
+ LD_LIBRARY_PATH="${D}/usr/$(get_libdir)"
+ RUBYLIB="${S}:${D}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
+ for d in $(find "${S}/ext" -type d) ; do
+ RUBYLIB="${RUBYLIB}:$d"
+ done
+ export LD_LIBRARY_PATH RUBYLIB
+
+ emake DESTDIR="${D}" install || die "make install failed"
+
+ keepdir $(${MINIRUBY} -rrbconfig -e "print Config::CONFIG['sitelibdir']")
+ keepdir $(${MINIRUBY} -rrbconfig -e "print Config::CONFIG['sitearchdir']")
+
+ if use doc; then
+ make DESTDIR="${D}" install-doc || die "make install-doc failed"
+ fi
+
+ if use examples; then
+ dodir /usr/share/doc/${PF}
+ cp -pPR sample "${D}/usr/share/doc/${PF}"
+ fi
+
+ dosym "libruby${MY_SUFFIX}$(get_libname ${PV%_*})" \
+ "/usr/$(get_libdir)/libruby$(get_libname ${PV%.*})"
+ dosym "libruby${MY_SUFFIX}$(get_libname ${PV%_*})" \
+ "/usr/$(get_libdir)/libruby$(get_libname ${PV%_*})"
+
+ dodoc ChangeLog NEWS doc/NEWS-1.8.7 README* ToDo
+
+ if use rubytests; then
+ dodir /usr/share/${PN}-${RUBYVERSION}
+ cp -pPR test "${D}/usr/share/${PN}-${RUBYVERSION}"
+ fi
+
+ insinto /usr/$(get_libdir)/ruby${MY_SUFFIX}/site_ruby/
+ newins "${FILESDIR}/auto_gem.rb" auto_gem.rb
+}
+
+pkg_postinst() {
+ if [[ ! -n $(readlink "${ROOT}"usr/bin/ruby) ]] ; then
+ eselect ruby set ruby${MY_SUFFIX}
+ fi
+
+ elog
+ elog "To switch between available Ruby profiles, execute as root:"
+ elog "\teselect ruby set ruby(18|19|...)"
+ elog
+}
+
+pkg_postrm() {
+ if [[ ! -n $(readlink "${ROOT}"usr/bin/ruby) ]] ; then
+ eselect ruby set ruby${MY_SUFFIX}
+ fi
+}