From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 371BF138334 for ; Sun, 2 Jun 2019 07:41:10 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3CA61E07D9; Sun, 2 Jun 2019 07:41:09 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id F19E5E07D9 for ; Sun, 2 Jun 2019 07:41:08 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 7F5E6345521 for ; Sun, 2 Jun 2019 07:41:06 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 225555FF for ; Sun, 2 Jun 2019 07:41:04 +0000 (UTC) From: "Hans de Graaff" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Hans de Graaff" Message-ID: <1559461253.61fb360f9ed69f19ee2d8143070602523e05bc97.graaff@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-ruby/rubygems/files/, dev-ruby/rubygems/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-ruby/rubygems/files/gentoo-defaults-3.rb dev-ruby/rubygems/rubygems-3.0.3-r1.ebuild X-VCS-Directories: dev-ruby/rubygems/files/ dev-ruby/rubygems/ X-VCS-Committer: graaff X-VCS-Committer-Name: Hans de Graaff X-VCS-Revision: 61fb360f9ed69f19ee2d8143070602523e05bc97 X-VCS-Branch: master Date: Sun, 2 Jun 2019 07:41:04 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 15dd0dfc-9dff-4ebf-910d-30a8de2514af X-Archives-Hash: 98db4eaea4ac47d1604d64ec85db6ba9 commit: 61fb360f9ed69f19ee2d8143070602523e05bc97 Author: Hans de Graaff gentoo org> AuthorDate: Sun Jun 2 07:40:38 2019 +0000 Commit: Hans de Graaff gentoo org> CommitDate: Sun Jun 2 07:40:53 2019 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=61fb360f dev-ruby/rubygems: new Gentoo defaults This revision has pretty much completely rewritten Gentoo defaults for ruby. The old defaults were broken with the introduction of default gems in rubygems 3.0.0. The new defaults should be backward compatible with the old defaults, but they use defined hooks for the most part to do the work. Bug: https://bugs.gentoo.org/676946 Signed-off-by: Hans de Graaff gentoo.org> Package-Manager: Portage-2.3.66, Repoman-2.3.11 dev-ruby/rubygems/files/gentoo-defaults-3.rb | 57 +++++++++++++ dev-ruby/rubygems/rubygems-3.0.3-r1.ebuild | 120 +++++++++++++++++++++++++++ 2 files changed, 177 insertions(+) diff --git a/dev-ruby/rubygems/files/gentoo-defaults-3.rb b/dev-ruby/rubygems/files/gentoo-defaults-3.rb new file mode 100644 index 00000000000..b8ad8f1227c --- /dev/null +++ b/dev-ruby/rubygems/files/gentoo-defaults-3.rb @@ -0,0 +1,57 @@ +# 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 + ConfigMap[: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 + undef :operating_system_defaults + def operating_system_defaults + { + 'install' => "--install-dir #{install_dir}", + 'uninstall' => "--install-dir #{install_dir}", + 'update' => "--install-dir #{install_dir}" + } + end + + end +end diff --git a/dev-ruby/rubygems/rubygems-3.0.3-r1.ebuild b/dev-ruby/rubygems/rubygems-3.0.3-r1.ebuild new file mode 100644 index 00000000000..8c6d1f49acf --- /dev/null +++ b/dev-ruby/rubygems/rubygems-3.0.3-r1.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +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-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +SLOT="0" +IUSE="server test" + +PDEPEND="server? ( =dev-ruby/builder-3* )" + +ruby_add_bdepend " + test? ( + dev-ruby/json + dev-ruby/minitest:5 + dev-ruby/rdoc + )" + +all_ruby_prepare() { + + mkdir -p lib/rubygems/defaults || die + cp "${FILESDIR}/gentoo-defaults-3.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 + sed -i -e '/assert_self_install_permissions/,/^ end/ s/^.*RUBY_INSTALL_NAME.*//' test/rubygems/test_gem.rb || die + + # Skip tests for default gems that all fail +# sed -i -e '/test_default_gems_use_full_paths/,/^ end/ s:^:#:' test/rubygems/test_gem.rb || die +# sed -i -e '/test_execute_ignore_default_gem_verbose/,/^ end/ s:^:#:' test/rubygems/test_gem_commands_cleanup_command.rb || die +# sed -i -e '/test_execute_default_gem/,/^ end/ s:^:#:' test/rubygems/test_gem_commands_contents_command.rb test/rubygems/test_gem_commands_pristine_command.rb || die +# sed -i -e '/test_execute_\(default_details\|show_default_gems\)/,/^ end/ s:^:#:' test/rubygems/test_gem_commands_query_command.rb || die +# sed -i -e '/test_execute_all/,/^ end/ s:^:#:' test/rubygems/test_gem_commands_uninstall_command.rb || die +# sed -i -e '/\(test_default_gem\|test_check_executable_overwrite\|test_require_works_after_cleanup\)/,/^ end/ s:^:#:' \ +# test/rubygems/test_{gem_installer,require}.rb || die +# sed -i -e '/test_\(load_default_gem\|default_spec_stub\|self_stubs\)/,/^ end/ s:^:#:' test/rubygems/test_gem_specification.rb || die +# sed -i -e '/test_uninstall_default_gem/,/^ end/ s:^:#:' test/rubygems/test_gem_uninstaller.rb || die +# rm -f test/rubygems/test_gem_indexer.rb || die +# sed -i -e '/test_\(require_when_gem_defined\|realworld_default_gem\)/,/^ end/ s:^:#:' test/rubygems/test_require.rb || die +# rm -f test/rubygems/test_gem_commands_setup_command.rb || die + + # Avoid tests playing tricks with ruby engine that don't seem to + # work for us. + rm test/rubygems/test_gem_request_set_gem_dependency_api.rb || die + + # Avoid test requiring network access + sed -i -e '/test_download_to_cache/askip "requires network access"' test/rubygems/test_gem_remote_fetcher.rb || die + + # Avoid test requiring file system permission changes + sed -i -e '/test_traverse_parents_does_not_crash_on_permissions_error/,/^ end/ s:^:#:' test/rubygems/test_gem_util.rb || die + + # Avoid uninvestigated test failure in favor of security release + sed -i -e '/test_self_install_permissions_with_format_executable/askip "uninvestigated failure"' test/rubygems/test_gem.rb || 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 || die + + newbin bin/gem $(basename ${RUBY} | sed -e 's:ruby:gem:') || die +} + +all_ruby_install() { + dodoc History.txt README.md + + if use server; then + newinitd "${FILESDIR}/init.d-gem_server2" gem_server || die "newinitd failed" + newconfd "${FILESDIR}/conf.d-gem_server" gem_server || die "newconfd failed" + 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(23|24|...)" + ewarn +}