* [gentoo-commits] repo/gentoo:master commit in: dev-ruby/rubygems/files/, dev-ruby/rubygems/
@ 2019-06-02 7:41 Hans de Graaff
0 siblings, 0 replies; 2+ messages in thread
From: Hans de Graaff @ 2019-06-02 7:41 UTC (permalink / raw
To: gentoo-commits
commit: 61fb360f9ed69f19ee2d8143070602523e05bc97
Author: Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 2 07:40:38 2019 +0000
Commit: Hans de Graaff <graaff <AT> gentoo <DOT> 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 <graaff <AT> 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
+}
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-ruby/rubygems/files/, dev-ruby/rubygems/
@ 2021-11-26 10:06 Hans de Graaff
0 siblings, 0 replies; 2+ messages in thread
From: Hans de Graaff @ 2021-11-26 10:06 UTC (permalink / raw
To: gentoo-commits
commit: a6a37f10bb8b1cc9c00b6ab7228ee8ffa2f01bff
Author: Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 26 10:06:24 2021 +0000
Commit: Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Fri Nov 26 10:06:37 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a6a37f10
dev-ruby/rubygems: add 3.2.31 with new gentoo profile
This version also updates the gentoo-defaults.rb profile to address
issues with installing gems directly with rubygems or bundler, either as
root or as a normal user.
Bug: https://bugs.gentoo.org/789957
Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Hans de Graaff <graaff <AT> gentoo.org>
dev-ruby/rubygems/Manifest | 1 +
dev-ruby/rubygems/files/gentoo-defaults-5.rb | 65 ++++++++++++++++
dev-ruby/rubygems/rubygems-3.2.31.ebuild | 110 +++++++++++++++++++++++++++
3 files changed, 176 insertions(+)
diff --git a/dev-ruby/rubygems/Manifest b/dev-ruby/rubygems/Manifest
index 78ae49602230..e538c8bead67 100644
--- a/dev-ruby/rubygems/Manifest
+++ b/dev-ruby/rubygems/Manifest
@@ -3,3 +3,4 @@ DIST rubygems-3.0.9.tgz 886153 BLAKE2B 942f641c7dec30d3dd2f0756d04b1b6b071f5d3b5
DIST rubygems-3.1.6.tgz 996339 BLAKE2B 8dc242a64c6f934b876de841cb6ea86455d7754cbe3902620a10ac40bb97264c03c1002b45a5734d1882617d95e8b390873ed390d00fe7e54b6d8f11a301c2b3 SHA512 730381cf683cd57f7ea7889f63cf21abb699bf28d2a25fa63f510756ece285cb63e4208130c20fa7c0232d6093d869e5d99d5b5fdad9bc68be5e8ead21863d97
DIST rubygems-3.2.14.tgz 987419 BLAKE2B cfd1545f022194f8b7a99b1698a38d4cfae08b8fe25c45fc7b7c935953ec7a66b0b00f21f77eefe757226d80f19a2093f2b85767e5caabfe13f445fbf6dc5508 SHA512 de28bdfdc239cd49bb5a1f78f0a9e3ec432fb70c8326c7899f7ef0a088f60becd99ba81285b20388296f96afb46ca3ca359208621d88a6be68b7388d155a2383
DIST rubygems-3.2.22.tgz 1236895 BLAKE2B c4782e064d2d9748519f915264411e11151edf9273e6a0473e70c39d9fc484b0c2d45e5fe4f00c6b83d9f27393a487c9e0b87a6f9d02449b370ae64a32f891a6 SHA512 6872e08b22ed3903e9d6e67ed03bb79f1ab6819eac0837b9f1003c0ef88ee751a380f9f55e548988baf2658470fcad204eca289acbd2043e04a9d12ed23eac16
+DIST rubygems-3.2.31.tar.gz 11219985 BLAKE2B befb5910365e109e130ca63fb71cc9b94ad92ab0eac41808a2d1955bb062a0c548e9faf283e0bc4b65409041ba4ffdc665335c920417e176bea7d2b08b7c2418 SHA512 34f934b4091a883c9e583563e37f7238c817c1dc9634506239ecd177b7c3cffee49eaaa33c6e9f52dfd7ee195609f2b6d7096254e2fb995396b835c9526f0a3f
diff --git a/dev-ruby/rubygems/files/gentoo-defaults-5.rb b/dev-ruby/rubygems/files/gentoo-defaults-5.rb
new file mode 100644
index 000000000000..602ad0e4055e
--- /dev/null
+++ b/dev-ruby/rubygems/files/gentoo-defaults-5.rb
@@ -0,0 +1,65 @@
+# 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" as root
+# 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 bindir
+ Process.euid.zero? ? '@GENTOO_PORTAGE_EPREFIX@/usr/local/bin' : File.join(user_home, 'bin')
+ 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
diff --git a/dev-ruby/rubygems/rubygems-3.2.31.ebuild b/dev-ruby/rubygems/rubygems-3.2.31.ebuild
new file mode 100644
index 000000000000..b0596c49d95d
--- /dev/null
+++ b/dev-ruby/rubygems/rubygems-3.2.31.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby26 ruby27 ruby30"
+
+inherit ruby-ng prefix
+
+DESCRIPTION="Centralized Ruby extension management system"
+HOMEPAGE="https://rubygems.org/"
+LICENSE="GPL-2 || ( Ruby MIT )"
+
+SRC_URI="https://github.com/rubygems/rubygems/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-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_depend "virtual/ruby-ssl"
+
+ruby_add_bdepend "
+ test? (
+ dev-ruby/json
+ dev-ruby/minitest:5
+ dev-ruby/rake
+ dev-ruby/rdoc
+ dev-ruby/webrick
+ )"
+
+all_ruby_prepare() {
+ # Remove unpackaged automatiek from Rakefile which stops it from working
+ sed -i -e '/automatiek/ s:^:#:' -e '/Automatiek/,/^end/ s:^:#:' Rakefile || die
+
+ mkdir -p lib/rubygems/defaults || die
+ cp "${FILESDIR}/gentoo-defaults-5.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 '/test_initialize_\(path_with_defaults\|regexp_path_separator\)/aomit "gentoo"' test/rubygems/test_gem_path_support.rb || die
+ # Avoid test that won't work as json is also installed as plain ruby code
+ sed -i -e '/test_realworld_\(\|upgraded_\)default_gem/aomit "gentoo"' test/rubygems/test_require.rb || die
+
+ # Avoid test that requires additional utility scripts
+ rm -f test/test_changelog_generator.rb || die
+
+ # Update manifest after changing files to avoid a test failure
+ if use test; then
+ rake update_manifest || die
+ fi
+}
+
+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 CHANGELOG.md 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
+}
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-11-26 10:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-02 7:41 [gentoo-commits] repo/gentoo:master commit in: dev-ruby/rubygems/files/, dev-ruby/rubygems/ Hans de Graaff
-- strict thread matches above, loose matches on Subject: below --
2021-11-26 10:06 Hans de Graaff
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox