commit: 6c259e9849df4d5176c05341fc5624273cae312f
Author: Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 21 09:00:50 2021 +0000
Commit: Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Thu Nov 25 12:27:25 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6c259e98
eclass/ruby-fakegem.eclass: add method to indicate extensions are installed
Add a public method ruby_fakegem_extensions_installed to add the
marker that rubygems uses to determine if extensions have been
installed. We were already adding this as part of the extensions code,
but rubygems also expects this to be present for extensions that we
either ignore or handle differently. Without this marker rubygems
3.2.22 and newer will ignore this gem.
Signed-off-by: Hans de Graaff <graaff <AT> gentoo.org>
eclass/ruby-fakegem.eclass | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/eclass/ruby-fakegem.eclass b/eclass/ruby-fakegem.eclass
index 1ef40aa2fad9..3832165761c9 100644
--- a/eclass/ruby-fakegem.eclass
+++ b/eclass/ruby-fakegem.eclass
@@ -546,6 +546,24 @@ if [[ ${RUBY_FAKEGEM_RECIPE_TEST} != none ]]; then
}
fi
+# @FUNCTION: ruby_fakegem_extensions_installed
+# @DESCRIPTION:
+# Install the marker indicating that extensions have been
+# installed. This is normally done as part of the extension
+# installation, but may be useful when we handle extensions manually.
+ruby_fakegem_extensions_installed() {
+ mkdir -p "${ED}$(ruby_fakegem_extensionsdir)" || die
+ touch "${ED}$(ruby_fakegem_extensionsdir)/gem.build_complete" || die
+}
+
+# @FUNCTION: ruby_fakegem_extensionsdir
+# @DESCRIPTION:
+# The directory where rubygems expects extensions for this package
+# version.
+ruby_fakegem_extensionsdir() {
+ echo "$(ruby_fakegem_gemsdir)/extensions/$(ruby_rbconfig_value
'arch')/$(ruby_rbconfig_value
'ruby_version')/${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}"
+}
+
# @FUNCTION: each_fakegem_install
# @DESCRIPTION:
# Install the package for each ruby target.
@@ -562,14 +580,12 @@ each_fakegem_install() {
if [[ -n ${RUBY_FAKEGEM_EXTENSIONS} ]] && [
${#RUBY_FAKEGEM_EXTENSIONS[@]} -ge 0 ]; then
einfo "installing extensions"
- local
_extensionsdir="$(ruby_fakegem_gemsdir)/extensions/$(ruby_rbconfig_value
'arch')/$(ruby_rbconfig_value
'ruby_version')/${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}"
for extension in ${RUBY_FAKEGEM_EXTENSIONS[@]} ; do
- emake V=1 sitearchdir="${ED}${_extensionsdir}"
sitelibdir="${ED}$(ruby_rbconfig_value 'sitelibdir')" -C ${extension%/*} install
+ emake V=1
sitearchdir="${ED}$(ruby_fakegem_extensionsdir)"
sitelibdir="${ED}$(ruby_rbconfig_value 'sitelibdir')" -C ${extension%/*} install
done
- # Add the marker to indicate that the extensions are installed
- touch "${ED}${_extensionsdir}/gem.build_complete" || die
+ ruby_fakegem_extensions_installed
fi
}