Репозитории ALT
S: | 3.1.2-alt2.1 |
5.1: | 1.9.1-alt1.r26040.1 |
4.1: | 1.8.7-alt0.M41.5 |
4.0: | 1.8.6-alt2.M40.2 |
3.0: | 1.8.2-alt7 |
Группа :: Разработка/Ruby
Пакет: ruby
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: use_system_dirs.patch
Скачать
Скачать
commit 98b2cea9e41adf4af71e171e0572979aaabefa2f
Author: Pavel Skrylev <majioa@altlinux.org>
Date: Mon Aug 15 20:57:56 2022 +0300
feat: configure path to use system folders
diff --git a/configure.ac b/configure.ac
index 5a6b074f8a..2ab04193e7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3367,10 +3367,35 @@ AS_IF([test ${multiarch+set}], [
MJIT_HEADER_INSTALL_DIR=include/'${RUBY_VERSION_NAME}/${arch}'
])
-archlibdir='${libdir}/${arch}'
-sitearchlibdir='${libdir}/${sitearch}'
-archincludedir='${includedir}/${arch}'
-sitearchincludedir='${includedir}/${sitearch}'
+AC_ARG_WITH(sitearchlibdir,
+ AS_HELP_STRING([--with-sitearchlibdir=DIR],
+ [architecture dependent site libraries in DIR [[SITEDIR/SITEARCH]]]),
+ [sitearchlibdir=$withval],
+ [sitearchlibdir=${multiarch+'${rubysitearchprefix}/site_ruby'}${multiarch-'${libdir}/${sitearch}'}])
+
+AC_ARG_WITH(archlibdir,
+ AS_HELP_STRING([--with-archlibdir=DIR],
+ [architecture dependent libraries in DIR [[LIBDIR/ARCH]]]),
+ [archlibdir=$withval],
+ [archlibdir='${libdir}/${arch}'])
+
+AC_ARG_WITH(archincludedir,
+ AS_HELP_STRING([--with-archincludedir=DIR],
+ [architecture dependent includes in DIR [[INCLUDEDIR/ARCH]]]),
+ [archincludedir=$withval],
+ [archincludedir='${includedir}/${arch}'])
+
+AC_ARG_WITH(sitearchincludedir,
+ AS_HELP_STRING([--with-sitearchincludedir=DIR],
+ [site architecture dependent includes in DIR [[INCLUDEDIR/SITEARCH]]]),
+ [sitearchincludedir=$withval],
+ [sitearchincludedir='${includedir}/${sitearch}'])
+
+use_system_dirs=no
+AC_ARG_ENABLE(use-system-dirs,
+ AS_HELP_STRING([--enable-use-system-dirs], [use system folders for doc, ri, cache and vendor data]),
+ [use_system_dirs=$enableval], [use_system_dirs=no])
+AC_SUBST(use_system_dirs)dnl
AC_ARG_WITH(soname,
AS_HELP_STRING([--with-soname=SONAME], [base name of shared library]),
@@ -3978,14 +4001,18 @@ AS_CASE(["$target_os"],
])
rubylibdir='${rubylibprefix}/${ruby_version}'
-rubyarchdir=${multiarch+'${rubyarchprefix}/${ruby_version}'}${multiarch-'${rubylibdir}/${arch}'}
-rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
+AC_ARG_WITH(rubyarchdir,
+ AS_HELP_STRING([--with-rubyarchdir=DIR],
+ [folder for architecture dependent ruby libraries [[RUBYLIBDIR/ARCH]]]),
+ [rubyarchdir="$withval"],
+ [rubyarchdir=${multiarch+'${rubyarchprefix}'}${multiarch-'${rubylibdir}/${arch}'}])
+
AC_ARG_WITH(rubyarchprefix,
AS_HELP_STRING([--with-rubyarchprefix=DIR],
[prefix for architecture dependent ruby libraries [[RUBYLIBPREFIX/ARCH]]]),
- [rubyarchprefix="$withval"])
-AC_SUBST(rubyarchprefix)
+ [rubyarchprefix="$withval"],
+ [rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}])
rubysitearchprefix=${multiarch+'${sitearchlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${sitearch}'}
AC_ARG_WITH(rubysitearchprefix,
@@ -4151,6 +4178,11 @@ AC_ARG_WITH(vendorarchhdrdir,
[vendorarchhdrdir=$withval],
[vendorarchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/vendor_ruby'}${multiarch-'${vendorhdrdir}/${sitearch}'}])
+AC_ARG_WITH(cachedir,
+ AS_HELP_STRING([--with-cachedir=DIR], [specify ruby cache dir]),
+ [cachedir=$withval])
+AC_SUBST(cachedir)dnl
+
AC_SUBST(rubyhdrdir)dnl
AC_SUBST(sitehdrdir)dnl
AC_SUBST(vendorhdrdir)dnl
@@ -4334,6 +4365,8 @@ config_summary "Installation prefix" "$prefix"
config_summary "exec prefix" "$exec_prefix"
config_summary "arch" "$arch"
config_summary "site arch" "$sitearch"
+config_summary "arch lib dir" "$archlibdir"
+config_summary "ruby arch prefix" "$rubyarchprefix"
config_summary "RUBY_BASE_NAME" "$RUBY_BASE_NAME"
config_summary "enable shared" "$enable_shared"
config_summary "ruby lib prefix" "$rubylibprefix"
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
index 39b69ddb1c..d9f7fab1e8 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -20,13 +20,17 @@ def self.default_sources
# specified in the environment
def self.default_spec_cache_dir
- default_spec_cache_dir = File.join Gem.user_home, '.gem', 'specs'
+ if Gem.configuration.use_system_dirs? && RbConfig::CONFIG['cachedir']
+ File.join(RbConfig::CONFIG['cachedir'], 'gemie')
+ else
+ default_spec_cache_dir = File.join Gem.user_home, '.gem', 'specs'
- unless File.exist?(default_spec_cache_dir)
- default_spec_cache_dir = File.join Gem.data_home, 'gem', 'specs'
- end
+ unless File.exist?(default_spec_cache_dir)
+ default_spec_cache_dir = File.join Gem.data_home, 'gem', 'specs'
+ end
- default_spec_cache_dir
+ default_spec_cache_dir
+ end
end
##
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 0d72cee51d..cb8ee063b4 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -1524,7 +1524,12 @@ def authors
# a full path.
def bin_dir
- @bin_dir ||= File.join gem_dir, bindir
+ @bin_dir ||=
+ if default_gem?
+ Gem.default_bindir
+ else
+ File.join(gem_dir, bindir)
+ end
end
##
@@ -1786,10 +1786,19 @@ def development_dependencies
# spec.doc_dir 'ri' # => "/path/to/gem_repo/doc/a-1/ri"
def doc_dir(type = nil)
- @doc_dir ||= File.join base_dir, 'doc', full_name
+ @doc_dir ||=
+ if Gem.configuration.use_system_dirs? && RbConfig::CONFIG['docdir']
+ File.join RbConfig::CONFIG['docdir'], full_name
+ else
+ File.join base_dir, 'doc', full_name
+ end
if type
- File.join @doc_dir, type
+ if Gem.configuration.use_system_dirs? && type == 'ri'
+ ri_dir
+ else
+ File.join @doc_dir, type
+ end
else
@doc_dir
end
@@ -2273,7 +2282,12 @@ def respond_to_missing?(m, include_private = false) # :nodoc:
# Returns the full path to this spec's ri directory.
def ri_dir
- @ri_dir ||= File.join base_dir, 'ri', full_name
+ @ri_dir ||=
+ if Gem.configuration.use_system_dirs? && RbConfig::CONFIG['ridir']
+ File.join RbConfig::CONFIG['ridir'], full_name
+ else
+ File.join base_dir, 'ri', full_name
+ end
end
##
--- a/lib/rubygems/config_file.rb 2022-08-15 20:14:46.821000000 +0000
+++ b/lib/rubygems/config_file.rb 2022-08-15 22:07:04.724000000 +0000
@@ -231,6 +231,13 @@ class Gem::ConfigFile
end
##
+ # Has the ruby build single instantiated, defaulting to false/nil
+
+ def use_system_dirs?
+ @use_system_dirs ||= RbConfig::CONFIG["use_system_dirs"] == 'yes'
+ end
+
+ ##
# Hash of RubyGems.org and alternate API keys
def api_keys
--- a/template/ruby.pc.in 2022-08-15 22:32:35.948000000 +0000
+++ b/template/ruby.pc.in 2022-08-16 10:29:49.008000000 +0000
@@ -23,6 +23,7 @@ sitearchincludedir=@sitearchincludedir@
ruby=${bindir}/${RUBY_INSTALL_NAME}@EXEEXT@
rubylibprefix=@rubylibprefix@
rubyarchprefix=@rubyarchprefix@
+use_system_dirs=@use_system_dirs@
rubysitearchprefix=@rubysitearchprefix@
rubylibdir=@rubylibdir@
vendordir=@vendordir@
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -396,7 +396,6 @@ install?(:local, :arch, :lib, :'lib-arch
end
prepare "arch files", archlibdir
- install "rbconfig.rb", archlibdir, :mode => $data_mode
if CONFIG["ARCHFILE"]
for file in CONFIG["ARCHFILE"].split
install file, archlibdir, :mode => $data_mode
@@ -436,6 +435,7 @@ install?(:ext, :arch, :hdr, :'arch-hdr',
end
install?(:ext, :comm, :'ext-comm') do
prepare "extension scripts", rubylibdir
+ install "rbconfig.rb", rubylibdir, :mode => $data_mode
install_recursive("#{$extout}/common", rubylibdir, :mode => $data_mode)
prepare "extension scripts", sitelibdir
prepare "extension scripts", vendorlibdir
--- a/lib/rdoc/ri/paths.rb 2022-08-22 18:34:31.811000000 +0000
+++ b/lib/rdoc/ri/paths.rb 2022-08-22 18:35:05.594000000 +0000
@@ -59,7 +59,7 @@ module RDoc::RI::Paths
spec = Gem::Specification.find_by_name name, req
- File.join spec.doc_dir, 'ri'
+ spec.doc_dir('ri')
end
##
@@ -73,7 +73,7 @@ module RDoc::RI::Paths
ri_paths = {}
all = Gem::Specification.map do |spec|
- [File.join(spec.doc_dir, 'ri'), spec.name, spec.version]
+ [spec.doc_dir('ri'), spec.name, spec.version]
end
if filter == :all then
--- a/lib/rubygems/installer.rb 2022-04-12 11:11:15.000000000 +0000
+++ b/lib/rubygems/installer.rb 2022-09-22 20:42:18.985000000 +0000
@@ -780,11 +780,18 @@ if str
end
end
-if Gem.respond_to?(:activate_bin_path)
-load Gem.activate_bin_path('#{spec.name}', '#{bin_file_name}', version)
+path =
+ if Gem.respond_to?(:activate_bin_path)
+ Gem.activate_bin_path('#{spec.name}', '#{bin_file_name}', version)
+ else
+ gem #{spec.name.dump}, version
+ Gem.bin_path(#{spec.name.dump}, #{bin_file_name.dump}, version)
+ end
+
+if __FILE__ == path
+#{IO.read('libexec/' + bin_file_name)}
else
-gem #{spec.name.dump}, version
-load Gem.bin_path(#{spec.name.dump}, #{bin_file_name.dump}, version)
+ load(path)
end
TEXT
end