# Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/ruby.eclass,v 1.55 2006/12/04 22:05:53 flameeyes Exp $ # # Author: Mamoru KOMACHI # # The ruby eclass is designed to allow easier installation of ruby # softwares, and their incorporation into the Gentoo Linux system. # src_unpack, src_compile and src_install call a set of functions to emerge # ruby with SLOT support; econf, emake and einstall is a wrapper for ruby # to automate configuration, make and install process (they override default # econf, emake and einstall defined by ebuild.sh respectively). # Functions: # src_unpack Unpacks source archive(s) and apply patches if any. # src_compile Invokes econf and emake. # src_install Runs einstall and erubydoc. # econf Detects setup.rb, install.rb, extconf.rb and configure, # and then runs the configure script. # emake Runs make if any Makefile exists. # einstall Calls install script or Makefile. If both not present, # installs programs under sitedir. # erubydoc Finds any documents and puts them in the right place. # erubydoc needs more sophistication to handle all types of # appropriate documents. # Variables: # USE_RUBY Space delimited list of supported ruby. # Set it to "any" if it installs only version independent files. # If your ebuild supports both ruby 1.6 and 1.8 but has version # depenedent files such as libraries, set it to something like # "ruby16 ruby18". Possible values are "any ruby16 ruby18 ruby19" # RUBY_ECONF You can pass extra arguments to econf by defining this # variable. Note that you cannot specify them by command line # if you are using /dev/null || true if [ -d doc -o -d docs ] ; then dohtml -x html -r {doc,docs}/* dohtml -r {doc,docs}/html/* else dohtml -r * fi if ( use examples ); then for dir in sample example examples; do if [ -d ${dir} ] ; then dodir /usr/share/doc/${PF} cp -pPR ${dir} ${D}/usr/share/doc/${PF} || die "cp failed" fi done fi # Pattern matching will mismatch for locales without case based # character sorting (from bug #129526) export LC_COLLATE=C unset LC_ALL for i in ChangeLog* [A-Z][A-Z]* ; do [ -e $i ] && dodoc $i done } ruby_src_install() { ruby_einstall "$@" || die erubydoc } # erubyconf, erubymake and erubyinstall are kept for compatibility erubyconf() { ruby_econf "$@" } erubymake() { ruby_emake "$@" } erubyinstall() { ruby_einstall "$@" } # prepall adds SLOT support for ruby.eclass prepall() { [[ ! -x /usr/bin/ruby16 ]] && export USE_RUBY=${USE_RUBY/ruby16/} [[ ! -x /usr/bin/ruby18 ]] && export USE_RUBY=${USE_RUBY/ruby18/} [[ ! -x /usr/bin/ruby19 ]] && export USE_RUBY=${USE_RUBY/ruby19/} local ruby_slots=$(echo "${USE_RUBY}" | wc -w) if [ "$ruby_slots" -ge 2 ] || (use ppc-macos && [ "$ruby_slots" -ge 1 ]) then einfo "Now we are building the package for ${USE_RUBY}" for rb in ${USE_RUBY} ruby ; do einfo "Using $rb" export RUBY=/usr/bin/$rb ruby() { /usr/bin/$rb "$@" ; } mkdir -p ${S} cd ${WORKDIR} einfo "Unpacking for $rb" src_unpack || die "src_unpack failed" cd ${S} find . -name '*.[ao]' -exec rm {} \; einfo "Building for $rb" src_compile || die "src_compile failed" cd ${S} einfo "Installing for $rb" src_install || die "src_install failed" done elif [ "${USE_RUBY}" == "any" ] ; then siteruby=$(${RUBY} -r rbconfig -e 'print Config::CONFIG["sitelibdir"]') # in case no directories found in siteruby shopt -sq nullglob for x in ${D}/${siteruby}/* ; do mv $x ${D}/${siteruby}/.. done if [ -d ${D}${siteruby} ] ; then rmdir --ignore-fail-on-non-empty ${D}/${siteruby} fi fi prepallman prepallinfo prepallstrip }