# Copyright 2008 Richard Brown
# Distributed under the terms of the GNU General Public License v2
# Based in part upon 'ruby-1.8.7_pre2.ebuild' from Gentoo, which is:
# Copyright 1999-2007 Gentoo Foundation
WANT_AUTOCONF="latest"
WANT_AUTOMAKE="latest"
#PATCHES APPLY, DOESN'T COMPILE THOUGH
#ONIGURUMA="onigd2_5_9"
inherit autotools eutils flag-o-matic multilib versionator
MY_PV="$(replace_version_separator 3 '-')"
MY_PV="${MY_PV/pre/preview}"
MY_P="${PN}-${MY_PV}"
S=${WORKDIR}/${MY_P}
SLOT=$(get_version_component_range 1-2)
MY_SUFFIX=$(delete_version_separator 1 ${SLOT})
DESCRIPTION="An object-oriented scripting language"
HOMEPAGE="http://www.ruby-lang.org/"
SRC_URI="mirror://ruby/${SLOT}/${MY_P}.tar.bz2"
# cjk? ( http://www.geocities.jp/kosako3/oniguruma/archive/${ONIGURUMA}.tar.gz )"
LICENSE="|| ( GPL-2 Ruby )"
KEYWORDS="~amd64 ~x86"
IUSE="berkdb debug doc emacs examples gdbm ipv6 rubytests socks5 ssl threads tk xemacs" #cjk
RDEPEND="
berkdb? ( sys-libs/db )
gdbm? ( sys-libs/gdbm )
ssl? ( dev-libs/openssl )
socks5? ( >=net-proxy/dante-1.1.13 )
tk? ( dev-lang/tk )
>=dev-ruby/ruby-config-0.3.1
!=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"
src_unpack() {
unpack ${A}
cd "${S}"
epatch "${FILESDIR}/ruby-1.8.7-to-p4-r16794.patch"
# if use cjk ; then
# einfo "Applying ${ONIGURUMA}"
# pushd "${WORKDIR}/oniguruma"
# econf --with-rubydir="${S}" || die "oniguruma econf failed"
# emake $MY_SUFFIX || die "oniguruma emake failed"
# popd
# fi
}
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
# Gentoo Bug #168939
local myconf="--enable-ipv6"
if ! use ipv6; then
myconf+=" --with-lookup-order-hack=INET"
fi
econf --program-suffix=$MY_SUFFIX --enable-shared \
$(use_enable socks5 socks) \
$(use_enable doc install-doc) \
$(use_enable threads pthread) \
$(use_enable debug) \
$(use_with berkdb dbm) \
$(use_with gdbm) \
$(use_with ssl openssl) \
$(use_with tk) \
${myconf} \
--with-vendordir=/usr/$(get_libdir)/ruby/vendor_ruby \
|| die "econf failed"
emake EXTLDFLAGS="${LDFLAGS}" || die "emake failed"
}
src_test() {
emake -j1 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}-${SLOT}/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 "ruby -C /location/of/tests runner.rb"
else
elog "Enable the rubytests USE flag to install the make check tests"
fi
}
src_install() {
LD_LIBRARY_PATH="${D}/usr/$(get_libdir)"
RUBYLIB="${S}:${LD_LIBRARY_PATH}/ruby/${SLOT}"
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"
unset RUBYOPT
MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby)
keepdir $(${MINIRUBY} -rrbconfig -e "print Config::CONFIG['sitearchdir']")
keepdir $(${MINIRUBY} -rrbconfig -e "print Config::CONFIG['vendorarchdir']")
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 README* ToDo
if use rubytests; then
dodir /usr/share/${PN}-${SLOT}
cp -pPR test "${D}/usr/share/${PN}-${SLOT}"
fi
}
pkg_postinst() {
if [[ ! -n $(readlink "${ROOT}"usr/bin/ruby) ]] ; then
"${ROOT}usr/sbin/ruby-config" ruby$MY_SUFFIX
fi
elog
elog "You can change the default ruby interpreter by ${ROOT}usr/sbin/ruby-config"
elog
}
pkg_postrm() {
if [[ ! -n $(readlink "${ROOT}"usr/bin/ruby) ]] ; then
"${ROOT}usr/sbin/ruby-config" ruby$MY_SUFFIX
fi
}