void-packages/srcpkgs/ruby/template

130 lines
3.2 KiB
Bash

# Template file for 'ruby'
_ruby_abiver=3.3.0
pkgname=ruby
version=3.3.3
revision=1
build_style=gnu-configure
configure_args="--enable-shared --disable-rpath
PKG_CONFIG=/usr/bin/pkg-config"
make_build_args="all capi"
hostmakedepends="pkg-config bison groff"
makedepends="zlib-devel readline-devel libffi-devel openssl-devel
gdbm-devel libyaml-devel pango-devel"
short_desc="Ruby programming language"
homepage="http://www.ruby-lang.org/en/"
maintainer="Leah Neukirchen <leah@vuxu.org>"
license="Ruby, BSD-2-Clause"
distfiles="https://cache.ruby-lang.org/pub/ruby/${version%.*}/${pkgname}-${version}.tar.xz"
checksum=83c0995388399c9555bad87e70af069755b5a9d84bbaa74aa22d1e37ff70fc1e
if [ "$XBPS_TARGET_LIBC" = "glibc" ]; then
makedepends+=" libxcrypt-devel"
fi
case "$XBPS_TARGET_MACHINE" in
*-musl) # Broken on the builders but successfully built locally
# As a workaround disable all docs
configure_args+=" --disable-install-doc"
;;
*)
hostmakedepends+=" doxygen graphviz"
configure_args+=" DOXYGEN=/usr/bin/doxygen DOT=/usr/bin/dot"
;;
esac
case "$XBPS_TARGET_MACHINE" in
arm*-musl) # Default is ucontext
configure_args+=" --with-coroutine=arm32"
;;
ppc64*) # Default is ucontext on BE, but ppc64le really just means ELFv2
configure_args+=" --with-coroutine=ppc64le"
;;
mips*-musl|ppc*-musl)
_need_libucontext=yes
makedepends+=" libucontext-devel"
configure_args+=" LIBS=-lucontext"
;;
esac
if [ "$CROSS_BUILD" ]; then
hostmakedepends+=" ruby"
fi
post_patch() {
[ "$XBPS_TARGET_LIBC" = "glibc" ] && return 0
echo "Patching out using binary gems for non-glibc..."
patch -sNp1 -i ${FILESDIR}/rubygems-avoid-platform-specific-gems.patch
}
pre_configure() {
case "$XBPS_TARGET_MACHINE" in
ppc64le*) ;;
ppc*)
# Random segfaults otherwise
export CFLAGS+=" -Os"
;;
esac
}
pre_build() {
# Set -fno-stack-protector for i686* or otherwise linking fails with
# ...: undefined reference to '__stack_chk_fail_local'
case "$XBPS_TARGET_MACHINE" in
i686*) sed -i Makefile \
-e "s;-fstack-protector-strong;;" \
-e "s;-fstack-protector;-fno-stack-protector;"
;;
esac
}
post_install() {
# Remove references to the cross compiler
if [ "$CROSS_BUILD" ]; then
vsed -e "s,${XBPS_CROSS_TRIPLET}-,,g" -i ${DESTDIR}/usr/lib/ruby/${_ruby_abiver}/*/rbconfig.rb
fi
# Replace reference to the install(1) wrapper
vsed -e "s,${XBPS_WRAPPERDIR},/usr/bin,g" -i \
${DESTDIR}/usr/lib/ruby/${_ruby_abiver}/*/rbconfig.rb
vlicense COPYING
}
ruby-devel-doc_package() {
short_desc+=" - HTML C API documentation files"
pkg_install() {
if [ -d "${DESTDIR}/usr/share/doc" ]; then
vmove usr/share/doc
else
vmkdir usr/share/doc/ruby
echo "Currently not available." > \
${PKGDESTDIR}/usr/share/doc/ruby/README
fi
}
}
ruby-devel_package() {
depends="ruby-${version}_${revision} gmp-devel"
if [ "$_need_libucontext" ]; then
depends+=" libucontext-devel"
fi
short_desc+=" - development files"
pkg_install() {
vmove usr/include
vmove usr/lib/ruby/${_ruby_abiver}/mkmf.rb
vmove usr/lib/pkgconfig
}
}
ruby-ri_package() {
depends="ruby-${version}_${revision}"
short_desc="Ruby Interactive reference"
pkg_install() {
vmove usr/bin/ri
if [ -d "${DESTDIR}/usr/share/ri" ]; then
vmove usr/share/ri
fi
vmove "usr/share/man/man1/ri*"
}
}