build_style: Add gem build_style
This commit is contained in:
parent
e7dc19bbea
commit
49e11e1ca5
3 changed files with 74 additions and 0 deletions
|
@ -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
|
location will automatically be set as well as the package made to depend
|
||||||
on `R`.
|
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`.
|
- `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`.
|
Additional install arguments can be specified via `make_install_args`.
|
||||||
|
|
||||||
|
|
60
common/build-style/gem.sh
Normal file
60
common/build-style/gem.sh
Normal 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
|
||||||
|
}
|
9
common/environment/build-style/gem.sh
Normal file
9
common/environment/build-style/gem.sh
Normal 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
|
Loading…
Reference in a new issue