forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Package-Manager: Portage-2.3.79, Repoman-2.3.16 Signed-off-by: Hans de Graaff <[email protected]>
- Loading branch information
Showing
3 changed files
with
163 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# frozen_string_literal: true | ||
|
||
# Gentoo defaults for rubygems 3.x | ||
# | ||
# Gentoo policy is to install all manually installed code into | ||
# /usr/local and to keep /usr managed by Gentoo. This policy file | ||
# ensures that all manually installed gems using "gem install" are | ||
# installed in /usr/local. Gentoo gems are installed in /usr. | ||
|
||
# TODO: We used to manipulate the default_dir, but this no longer | ||
# works since this is now the base for the new "default" gems that | ||
# ruby 2.6 uses with irb. So default_dir should refer to the system | ||
# default now. rubygems also provides various hooks so we may be able | ||
# to use those to install gems in /usr/local by default in a less | ||
# intrusive way. | ||
module Gem | ||
|
||
class << self | ||
def portage_gems_dir | ||
RbConfig::CONFIG['sitelibdir'].gsub('site_ruby', 'gems') | ||
end | ||
|
||
def local_dir | ||
portage_gems_dir.gsub('@GENTOO_PORTAGE_EPREFIX@/usr', | ||
'@GENTOO_PORTAGE_EPREFIX@/usr/local') | ||
end | ||
|
||
def install_dir | ||
Process.euid.zero? ? local_dir : user_dir | ||
end | ||
|
||
undef :default_path | ||
def default_path | ||
path = [] | ||
path << user_dir if user_home && File.exist?(user_home) | ||
path << default_dir | ||
path << vendor_dir if vendor_dir && File.directory?(vendor_dir) | ||
path << local_dir | ||
path << portage_gems_dir | ||
end | ||
|
||
def system_config_path | ||
'@GENTOO_PORTAGE_EPREFIX@/etc' | ||
end | ||
|
||
# Set Gentoo defaults for gem commands | ||
begin | ||
undef :operating_system_defaults | ||
rescue NameError | ||
# Avoid either runtime errors or redefinition warnings since | ||
# this method is not present in all rubygem versions distributed | ||
# with dev-lang/ruby. | ||
end | ||
def operating_system_defaults | ||
{ | ||
'install' => "--install-dir #{install_dir}", | ||
'uninstall' => "--install-dir #{install_dir}", | ||
'update' => "--install-dir #{install_dir}" | ||
} | ||
end | ||
|
||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# Copyright 1999-2019 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=7 | ||
|
||
USE_RUBY="ruby24 ruby25 ruby26" | ||
|
||
inherit ruby-ng prefix | ||
|
||
DESCRIPTION="Centralized Ruby extension management system" | ||
HOMEPAGE="https://rubygems.org/" | ||
LICENSE="GPL-2 || ( Ruby MIT )" | ||
|
||
SRC_URI="https://rubygems.org/rubygems/${P}.tgz" | ||
|
||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" | ||
SLOT="0" | ||
IUSE="server test" | ||
RESTRICT="!test? ( test )" | ||
|
||
PDEPEND="server? ( =dev-ruby/builder-3* )" | ||
|
||
ruby_add_bdepend " | ||
test? ( | ||
dev-ruby/json | ||
dev-ruby/minitest:5 | ||
dev-ruby/rake | ||
dev-ruby/rdoc | ||
)" | ||
|
||
all_ruby_prepare() { | ||
|
||
mkdir -p lib/rubygems/defaults || die | ||
cp "${FILESDIR}/gentoo-defaults-4.rb" lib/rubygems/defaults/operating_system.rb || die | ||
|
||
eprefixify lib/rubygems/defaults/operating_system.rb | ||
|
||
# Disable broken tests when changing default values: | ||
sed -i -e '/test_default_path/,/^ end/ s:^:#:' test/rubygems/test_gem.rb || die | ||
# Avoid test that won't work as json is also installed as plain ruby code | ||
sed -i -e '/test_realworld_default_gem/askip "gentoo"' test/rubygems/test_require.rb || die | ||
|
||
# Update manifest after changing files to avoid a test failure | ||
rake update_manifest || die | ||
} | ||
|
||
each_ruby_compile() { | ||
# Not really a build but... | ||
sed -i -e 's:#!.*:#!'"${RUBY}"':' bin/gem | ||
} | ||
|
||
each_ruby_test() { | ||
# Unset RUBYOPT to avoid interferences, bug #158455 et. al. | ||
#unset RUBYOPT | ||
|
||
if [[ "${EUID}" -ne "0" ]]; then | ||
RUBYLIB="$(pwd)/lib${RUBYLIB+:${RUBYLIB}}" ${RUBY} --disable-gems -I.:lib:test:bundler/lib \ | ||
-e 'require "rubygems"; gem "minitest", "~>5.0"; Dir["test/**/test_*.rb"].each { |tu| require tu }' || die "tests failed" | ||
else | ||
ewarn "The userpriv feature must be enabled to run tests, bug 408951." | ||
eerror "Testsuite will not be run." | ||
fi | ||
} | ||
|
||
each_ruby_install() { | ||
# Unset RUBYOPT to avoid interferences, bug #158455 et. al. | ||
unset RUBYOPT | ||
export RUBYLIB="$(pwd)/lib${RUBYLIB+:${RUBYLIB}}" | ||
|
||
pushd lib &>/dev/null | ||
doruby -r * | ||
popd &>/dev/null | ||
|
||
local sld=$(ruby_rbconfig_value 'sitelibdir') | ||
insinto "${sld#${EPREFIX}}" # bug #320813 | ||
newins "${FILESDIR}/auto_gem.rb.ruby19" auto_gem.rb | ||
|
||
newbin bin/gem $(basename ${RUBY} | sed -e 's:ruby:gem:') | ||
} | ||
|
||
all_ruby_install() { | ||
dodoc History.txt README.md | ||
|
||
if use server; then | ||
newinitd "${FILESDIR}/init.d-gem_server2" gem_server | ||
newconfd "${FILESDIR}/conf.d-gem_server" gem_server | ||
fi | ||
} | ||
|
||
pkg_postinst() { | ||
if [[ ! -n $(readlink "${ROOT}"/usr/bin/gem) ]] ; then | ||
eselect ruby set $(eselect --brief --colour=no ruby show | head -n1) | ||
fi | ||
|
||
ewarn | ||
ewarn "To switch between available Ruby profiles, execute as root:" | ||
ewarn "\teselect ruby set ruby(25|26|...)" | ||
ewarn | ||
} |