/[gentoo-x86]/eclass/ruby-fakegem.eclass
Gentoo

Diff of /eclass/ruby-fakegem.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.5 Revision 1.11
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2009 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/ruby-fakegem.eclass,v 1.5 2009/12/16 09:51:30 flameeyes Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/ruby-fakegem.eclass,v 1.11 2010/01/18 22:01:46 flameeyes Exp $
4# 4#
5# @ECLASS: ruby-fakegem.eclass 5# @ECLASS: ruby-fakegem.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Ruby herd <ruby@gentoo.org> 7# Ruby herd <ruby@gentoo.org>
8# 8#
47# @ECLASS-VARIABLE: RUBY_FAKEGEM_EXTRADOC 47# @ECLASS-VARIABLE: RUBY_FAKEGEM_EXTRADOC
48# @DESCRIPTION: 48# @DESCRIPTION:
49# Extra documentation to install (readme, changelogs, …). 49# Extra documentation to install (readme, changelogs, …).
50# RUBY_FAKEGEM_EXTRADOC="" 50# RUBY_FAKEGEM_EXTRADOC=""
51 51
52# @ECLASS-VARIABLE: RUBY_FAKEGEM_BINWRAP
53# @DESCRIPTION:
54# Binaries to wrap around (relative to the bin/ directory)
55# RUBY_FAKEGEM_BINWRAP="*"
56
57# @ECLASS-VARIABLE: RUBY_FAKEGEM_REQUIRE_PATHS
58# @DESCRIPTION:
59# Extra require paths (beside lib) to add to the specification
60# RUBY_FAKEGEM_REQUIRE_PATHS=""
61
52RUBY_FAKEGEM_NAME="${RUBY_FAKEGEM_NAME:-${PN}}" 62RUBY_FAKEGEM_NAME="${RUBY_FAKEGEM_NAME:-${PN}}"
53RUBY_FAKEGEM_VERSION="${RUBY_FAKEGEM_VERSION:-${PV}}" 63RUBY_FAKEGEM_VERSION="${RUBY_FAKEGEM_VERSION:-${PV}}"
54 64
55RUBY_FAKEGEM_TASK_DOC="${RUBY_FAKEGEM_TASK_DOC-rdoc}" 65RUBY_FAKEGEM_TASK_DOC="${RUBY_FAKEGEM_TASK_DOC-rdoc}"
56RUBY_FAKEGEM_TASK_TEST="${RUBY_FAKEGEM_TASK_TEST-test}" 66RUBY_FAKEGEM_TASK_TEST="${RUBY_FAKEGEM_TASK_TEST-test}"
67
68RUBY_FAKEGEM_BINWRAP="${RUBY_FAKEGEM_BINWRAP-*}"
57 69
58if [[ ${RUBY_FAKEGEM_TASK_DOC} != "" ]]; then 70if [[ ${RUBY_FAKEGEM_TASK_DOC} != "" ]]; then
59 IUSE="$IUSE doc" 71 IUSE="$IUSE doc"
60 ruby_add_bdepend doc "dev-ruby/rake" 72 ruby_add_bdepend doc "dev-ruby/rake"
61fi 73fi
119# Generates a gemspec for the package and places it into the "specifications" 131# Generates a gemspec for the package and places it into the "specifications"
120# directory of RubyGems. 132# directory of RubyGems.
121# In the gemspec, the following values are set: name, version, summary, 133# In the gemspec, the following values are set: name, version, summary,
122# homepage, and require_paths=["lib"]. 134# homepage, and require_paths=["lib"].
123# See RUBY_FAKEGEM_NAME and RUBY_FAKEGEM_VERSION for setting name and version. 135# See RUBY_FAKEGEM_NAME and RUBY_FAKEGEM_VERSION for setting name and version.
136# See RUBY_FAKEGEM_REQUIRE_PATHS for setting extra require paths.
124ruby_fakegem_genspec() { 137ruby_fakegem_genspec() {
125 ( 138 (
139 local required_paths="'lib'"
140 for path in ${RUBY_FAKEGEM_REQUIRE_PATHS}; do
141 required_paths="${required_paths}, '${path}'"
142 done
143
126 # We use the _ruby_implementation variable to avoid having stray 144 # We use the _ruby_implementation variable to avoid having stray
127 # copies with different implementations; while for now we're using 145 # copies with different implementations; while for now we're using
128 # the same exact content, we might have differences in the future, 146 # the same exact content, we might have differences in the future,
129 # so better taking this into consideration. 147 # so better taking this into consideration.
130 cat - > "${T}"/${RUBY_FAKEGEM_NAME}-${_ruby_implementation} <<EOF 148 cat - > "${T}"/${RUBY_FAKEGEM_NAME}-${_ruby_implementation} <<EOF
131Gem::Specification.new do |s| 149Gem::Specification.new do |s|
132 s.name = "${RUBY_FAKEGEM_NAME}" 150 s.name = "${RUBY_FAKEGEM_NAME}"
133 s.version = "${RUBY_FAKEGEM_VERSION}" 151 s.version = "${RUBY_FAKEGEM_VERSION}"
134 s.summary = "${DESCRIPTION}" 152 s.summary = "${DESCRIPTION}"
135 s.homepage = "${HOMEPAGE}" 153 s.homepage = "${HOMEPAGE}"
136 s.require_paths = ["lib"] 154 s.require_paths = [${required_paths}]
137end 155end
138EOF 156EOF
139 157
140 insinto $(ruby_fakegem_gemsdir)/specifications 158 insinto $(ruby_fakegem_gemsdir)/specifications
141 newins "${T}"/${RUBY_FAKEGEM_NAME}-${_ruby_implementation} ${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}.gemspec 159 newins "${T}"/${RUBY_FAKEGEM_NAME}-${_ruby_implementation} ${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}.gemspec
195 ebegin "Unpacking .gem file..." 213 ebegin "Unpacking .gem file..."
196 tar -mxf ${DISTDIR}/${A} || die 214 tar -mxf ${DISTDIR}/${A} || die
197 eend $? 215 eend $?
198 216
199 mkdir "${S}" 217 mkdir "${S}"
200 pushd "${S}" 218 pushd "${S}" &>/dev/null
201 219
202 ebegin "Unpacking data.tar.gz" 220 ebegin "Unpacking data.tar.gz"
203 tar -mxf "${my_WORKDIR}"/data.tar.gz || die 221 tar -mxf "${my_WORKDIR}"/data.tar.gz || die
204 eend $? 222 eend $?
223 popd &>/dev/null
205 else 224 else
206 [[ -n ${A} ]] && unpack ${A} 225 [[ -n ${A} ]] && unpack ${A}
207 fi 226 fi
208} 227}
209 228
238# @DESCRIPTION: 257# @DESCRIPTION:
239# Install the package for each ruby target. 258# Install the package for each ruby target.
240each_fakegem_install() { 259each_fakegem_install() {
241 ruby_fakegem_genspec 260 ruby_fakegem_genspec
242 261
243 local _gemlibdirs= 262 local _gemlibdirs="${RUBY_FAKEGEM_EXTRAINSTALL}"
244 for directory in bin lib ${RUBY_FAKEGEM_EXTRAINSTALL}; do 263 for directory in bin lib; do
245 [[ -d ${directory} ]] && _gemlibdirs="${_gemlibdirs} ${directory}" 264 [[ -d ${directory} ]] && _gemlibdirs="${_gemlibdirs} ${directory}"
246 done 265 done
247 266
267 [[ -n ${_gemlibdirs} ]] && \
248 ruby_fakegem_doins -r ${_gemlibdirs} 268 ruby_fakegem_doins -r ${_gemlibdirs}
249} 269}
250 270
251# @FUNCTION: each_ruby_install 271# @FUNCTION: each_ruby_install
252# @DESCRIPTION: 272# @DESCRIPTION:
253# Install the package for each target. 273# Install the package for each target.
257 277
258# @FUNCTION: all_fakegem_install 278# @FUNCTION: all_fakegem_install
259# @DESCRIPTION: 279# @DESCRIPTION:
260# Install files common to all ruby targets. 280# Install files common to all ruby targets.
261all_fakegem_install() { 281all_fakegem_install() {
262 if [[ -n ${RUBY_FAKEGEM_DOCDIR} ]] && use doc; then 282 if [[ -n ${RUBY_FAKEGEM_DOCDIR} ]] && [[ ${RUBY_FAKEGEM_TASK_DOC} != "" ]] && use doc; then
263 pushd ${RUBY_FAKEGEM_DOCDIR} 283 for dir in ${RUBY_FAKEGEM_DOCDIR}; do
284 pushd ${dir} &>/dev/null
264 dohtml -r * || die "failed to install documentation" 285 dohtml -r * || die "failed to install documentation"
265 popd 286 popd &>/dev/null
287 done
266 fi 288 fi
267 289
268 if [[ -n ${RUBY_FAKEGEM_EXTRADOC} ]]; then 290 if [[ -n ${RUBY_FAKEGEM_EXTRADOC} ]]; then
269 dodoc ${RUBY_FAKEGEM_EXTRADOC} || die "failed to install further documentation" 291 dodoc ${RUBY_FAKEGEM_EXTRADOC} || die "failed to install further documentation"
292 fi
293
294 # binary wrappers; we assume that all the implementations get the
295 # same binaries, or something is wrong anyway, so...
296 if [[ -n ${RUBY_FAKEGEM_BINWRAP} ]]; then
297 local bindir=$(find "${D}" -type d -path "*/gems/${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}/bin" -print -quit)
298
299 if [[ -d "${bindir}" ]]; then
300 pushd "${bindir}" &>/dev/null
301 local binaries=$(eval ls ${RUBY_FAKEGEM_BINWRAP})
302 for binary in $binaries; do
303 ruby_fakegem_binwrapper $binary
304 done
305 popd &>/dev/null
306 fi
270 fi 307 fi
271} 308}
272 309
273# @FUNCTION: all_ruby_install 310# @FUNCTION: all_ruby_install
274# @DESCRIPTION: 311# @DESCRIPTION:

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.20