Gentoo Archives: gentoo-dev

From: Hans de Graaff <graaff@g.o>
To: gentoo-dev@l.g.o
Cc: Hans de Graaff <graaff@g.o>
Subject: [gentoo-dev] [PATCH 1/2] eclass/ruby-fakegem.eclass: add method to indicate extensions are installed
Date: Sun, 21 Nov 2021 09:07:18
Message-Id: 20211121090655.5361-1-graaff@gentoo.org
1 Add a public method ruby_fakegem_extensions_installed to add the
2 marker that rubygems uses to determine if extensions have been
3 installed. We were already adding this as part of the extensions code,
4 but rubygems also expects this to be present for extensions that we
5 either ignore or handle differently. Without this marker rubygems
6 3.2.22 and newer will ignore this gem.
7
8 Signed-off-by: Hans de Graaff <graaff@g.o>
9 ---
10 eclass/ruby-fakegem.eclass | 24 ++++++++++++++++++++----
11 1 file changed, 20 insertions(+), 4 deletions(-)
12
13 diff --git a/eclass/ruby-fakegem.eclass b/eclass/ruby-fakegem.eclass
14 index 1ef40aa2fad9..3832165761c9 100644
15 --- a/eclass/ruby-fakegem.eclass
16 +++ b/eclass/ruby-fakegem.eclass
17 @@ -546,6 +546,24 @@ if [[ ${RUBY_FAKEGEM_RECIPE_TEST} != none ]]; then
18 }
19 fi
20
21 +# @FUNCTION: ruby_fakegem_extensions_installed
22 +# @DESCRIPTION:
23 +# Install the marker indicating that extensions have been
24 +# installed. This is normally done as part of the extension
25 +# installation, but may be useful when we handle extensions manually.
26 +ruby_fakegem_extensions_installed() {
27 + mkdir -p "${ED}$(ruby_fakegem_extensionsdir)" || die
28 + touch "${ED}$(ruby_fakegem_extensionsdir)/gem.build_complete" || die
29 +}
30 +
31 +# @FUNCTION: ruby_fakegem_extensionsdir
32 +# @DESCRIPTION:
33 +# The directory where rubygems expects extensions for this package
34 +# version.
35 +ruby_fakegem_extensionsdir() {
36 + echo "$(ruby_fakegem_gemsdir)/extensions/$(ruby_rbconfig_value 'arch')/$(ruby_rbconfig_value 'ruby_version')/${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}"
37 +}
38 +
39 # @FUNCTION: each_fakegem_install
40 # @DESCRIPTION:
41 # Install the package for each ruby target.
42 @@ -562,14 +580,12 @@ each_fakegem_install() {
43
44 if [[ -n ${RUBY_FAKEGEM_EXTENSIONS} ]] && [ ${#RUBY_FAKEGEM_EXTENSIONS[@]} -ge 0 ]; then
45 einfo "installing extensions"
46 - local _extensionsdir="$(ruby_fakegem_gemsdir)/extensions/$(ruby_rbconfig_value 'arch')/$(ruby_rbconfig_value 'ruby_version')/${RUBY_FAKEGEM_NAME}-${RUBY_FAKEGEM_VERSION}"
47
48 for extension in ${RUBY_FAKEGEM_EXTENSIONS[@]} ; do
49 - emake V=1 sitearchdir="${ED}${_extensionsdir}" sitelibdir="${ED}$(ruby_rbconfig_value 'sitelibdir')" -C ${extension%/*} install
50 + emake V=1 sitearchdir="${ED}$(ruby_fakegem_extensionsdir)" sitelibdir="${ED}$(ruby_rbconfig_value 'sitelibdir')" -C ${extension%/*} install
51 done
52
53 - # Add the marker to indicate that the extensions are installed
54 - touch "${ED}${_extensionsdir}/gem.build_complete" || die
55 + ruby_fakegem_extensions_installed
56 fi
57 }
58
59 --
60 2.32.0

Replies