# Template file for 'ruby' _ruby_abiver=3.1.0 pkgname=ruby version=3.1.2 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 " license="Ruby, BSD-2-Clause" distfiles="https://cache.ruby-lang.org/pub/ruby/${version%.*}/${pkgname}-${version}.tar.xz" checksum=ca10d017f8a1b6d247556622c841fc56b90c03b1803f87198da1e4fd3ec3bf2a 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() { # https://bugs.ruby-lang.org/issues/18373#note-8 find .bundle -name extconf.rb -exec \ sed -i \ -e '/create_makefile/i \$arch_hdrdir = "$(hdrdir)/../.ext/include/$(arch)"' \ -e '/create_makefile/i \$DLDFLAGS << " -L#{$top_srcdir}"' {} \; [ "$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*" } }