build_style: Add gem build_style

This commit is contained in:
maxice8 2018-10-30 19:52:59 -03:00 committed by maxice8
parent e7dc19bbea
commit 49e11e1ca5
3 changed files with 74 additions and 0 deletions

View File

@ -781,6 +781,11 @@ with the character `r` in the `version` variable. The `distfiles`
location will automatically be set as well as the package made to depend
on `R`.
- `gem` For packages that are installed using gems from [RubyGems](https://rubygems.org/).
The gem command can be overridden by `gem_cmd`. `noarch` is set unconditionally and `distfiles`
is set by the build style if the template does not do so. If your gem provides extensions which
must be compiled consider using the `gemspec` build style instead.
- `ruby-module` For packages that are ruby modules and are installable via `ruby install.rb`.
Additional install arguments can be specified via `make_install_args`.

60
common/build-style/gem.sh Normal file
View File

@ -0,0 +1,60 @@
#
# This helper is for templates using gem files from RubyGems.
#
do_install() {
: ${gem_cmd:=gem}
local _GEMDIR _INSTDIR
_GEMDIR=$($gem_cmd env gemdir)
_INSTDIR=${DESTDIR}/${_GEMDIR}/gems/${pkgname#ruby-}-${version}
$gem_cmd install \
--local \
--install-dir ${DESTDIR}/${_GEMDIR} \
--bindir ${DESTDIR}/usr/bin \
--ignore-dependencies \
--no-document \
--verbose \
${XBPS_SRCDISTDIR}/${pkgname}-${version}/${pkgname#ruby-}-${version}.gem
# Remove cache
rm -rf ${DESTDIR}/${_GEMDIR}/cache
# Remove ext directory. they are only source code and configuration
# The actual extensions are guarded in an arch path
rm -rf ${_INSTDIR}/ext
# Remove installed tests and benchmarks
rm -rf ${_INSTDIR}/{test,tests,autotest,benchmark,benchmarks,script,examples,demo}
# Remove files shipped on the root of the gem, most of the time they are useless
find ${_INSTDIR} -maxdepth 1 -type f -delete
# Remove unnecessary files
find ${DESTDIR}/${_GEMDIR}/extensions \( -name mkmf.log -o -name gem_make.out \) -delete
# Place manpages in usr/share/man/man[0-9]
find ${_INSTDIR}/man -type f -name '*.[0-8n]' | while read -r m; do
vman ${m}
done
rm -rf "${_INSTDIR}/man"
# Place executables in /usr/bin
if [ -d "${_INSTDIR}/bin" ]; then
for f in "${_INSTDIR}"/bin/*; do
vbin "${f}"
done
fi
rm -rf ${_INSTDIR}/bin
# Place conf files in their places
find ${_INSTDIR}/etc -type f | while read -r c; do
vmkdir $(dirname ${c##*${_INSTDIR}})
mv ${c} "${DESTDIR}/${c##*${_INSTDIR}}"
done
rm -rf ${_INSTDIR}/etc
}

View File

@ -0,0 +1,9 @@
lib32disabled=yes
hostmakedepends+=" ruby"
depends+=" ruby"
noarch=yes
# default to rubygems
if [ -z "$distfiles" ]; then
distfiles="https://rubygems.org/downloads/${pkgname#ruby-}-${version}.gem"
fi