From 2dced67490ec87af86dc492fce67166908c7ef77 Mon Sep 17 00:00:00 2001 From: Release Configuration Management Date: Wed, 17 Feb 2016 02:36:58 -0500 Subject: [PATCH 01/34] New branch setup --- .gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 From 9ce30b769c3f9a9f51131077580f73bfbca770c8 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Wed, 17 Feb 2016 16:57:29 +0100 Subject: [PATCH 02/34] Initial package --- .gitignore | 7 + abrt_prelude.rb | 8 + config.h | 59 + libruby.stp | 303 +++ load.inc | 30 + macros.ruby | 22 + macros.rubygems | 36 + operating_system.rb | 146 ++ ruby-1.9.3-mkmf-verbose.patch | 25 + ...-additional-preludes-by-configuratio.patch | 58 + ...0-Enable-configuration-of-archlibdir.patch | 28 + ...ed-paths-when-empty-version-string-i.patch | 81 + ruby-2.1.0-always-use-i386.patch | 25 + ruby-2.1.0-custom-rubygems-location.patch | 96 + ...2.3-Generate-preludes-using-miniruby.patch | 28 + ruby-2.3.0-ruby_version.patch | 300 +++ ...undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch | 31 + ruby-exercise.stp | 39 + ruby.spec | 2159 +++++++++++++++++ sources | 1 + test_abrt.rb | 7 + test_dependent_scls.rb | 65 + test_systemtap.rb | 64 + 23 files changed, 3618 insertions(+) create mode 100644 abrt_prelude.rb create mode 100644 config.h create mode 100644 libruby.stp create mode 100644 load.inc create mode 100644 macros.ruby create mode 100644 macros.rubygems create mode 100644 operating_system.rb create mode 100644 ruby-1.9.3-mkmf-verbose.patch create mode 100644 ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch create mode 100644 ruby-2.1.0-Enable-configuration-of-archlibdir.patch create mode 100644 ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch create mode 100644 ruby-2.1.0-always-use-i386.patch create mode 100644 ruby-2.1.0-custom-rubygems-location.patch create mode 100644 ruby-2.2.3-Generate-preludes-using-miniruby.patch create mode 100644 ruby-2.3.0-ruby_version.patch create mode 100644 ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch create mode 100644 ruby-exercise.stp create mode 100644 ruby.spec create mode 100644 sources create mode 100644 test_abrt.rb create mode 100644 test_dependent_scls.rb create mode 100644 test_systemtap.rb diff --git a/.gitignore b/.gitignore index e69de29..4681722 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,7 @@ +*~ +*.swp +*.rpm +*.xz +*.tgz +*.gem +/*/ diff --git a/abrt_prelude.rb b/abrt_prelude.rb new file mode 100644 index 0000000..587c6a6 --- /dev/null +++ b/abrt_prelude.rb @@ -0,0 +1,8 @@ +if defined?(Gem) + require 'rubygems.rb' + + begin + require 'abrt' + rescue LoadError + end +end diff --git a/config.h b/config.h new file mode 100644 index 0000000..39e4a5c --- /dev/null +++ b/config.h @@ -0,0 +1,59 @@ +/* + * This config.h is a wrapper include file for the original ruby/config.h, + * which has been renamed to ruby/config-.h. There are conflicts for the + * original ruby/config.h on multilib systems, which result from arch-specific + * configuration options. Please do not use the arch-specific file directly. + */ + +/* + * This wrapped is addpated from SDL's one: + * http://pkgs.fedoraproject.org/cgit/SDL.git/tree/SDL_config.h + */ + +#ifdef ruby_config_wrapper_h +#error "ruby_config_wrapper_h should not be defined!" +#endif +#define ruby_config_wrapper_h + +#if defined(__i386__) +#include "ruby/config-i386.h" +#elif defined(__ia64__) +#include "ruby/config-ia64.h" +#elif defined(__powerpc64__) +#include +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#include "ruby/config-ppc64.h" +#else +#include "ruby/config-ppc64le.h" +#endif +#elif defined(__powerpc__) +#include "ruby/config-ppc.h" +#elif defined(__s390x__) +#include "ruby/config-s390x.h" +#elif defined(__s390__) +#include "ruby/config-s390.h" +#elif defined(__x86_64__) +#include "ruby/config-x86_64.h" +#elif defined(__arm__) +#include "ruby/config-arm.h" +#elif defined(__alpha__) +#include "ruby/config-alpha.h" +#elif defined(__sparc__) && defined (__arch64__) +#include "ruby/config-sparc64.h" +#elif defined(__sparc__) +#include "ruby/config-sparc.h" +#elif defined(__aarch64__) +#include "ruby/config-aarch64.h" +#elif defined(__mips64) && defined(__MIPSEL__) +#include "ruby/config-mips64el.h" +#elif defined(__mips64) +#include "ruby/config-mips64.h" +#elif defined(__mips) && defined(__MIPSEL__) +#include "ruby/config-mipsel.h" +#elif defined(__mips) +#include "ruby/config-mips.h" +#else +#error "The ruby-devel package is not usable with the architecture." +#endif + +#undef ruby_config_wrapper_h diff --git a/libruby.stp b/libruby.stp new file mode 100644 index 0000000..098b39d --- /dev/null +++ b/libruby.stp @@ -0,0 +1,303 @@ +/* SystemTap tapset to make it easier to trace Ruby 2.0 + * + * All probes provided by Ruby can be listed using following command + * (the path to the library must be adjuste appropriately): + * + * stap -L 'process("@LIBRARY_PATH@").mark("*")' + */ + +/** + * probe ruby.array.create - Allocation of new array. + * + * @size: Number of elements (an int) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.array.create = + process("@LIBRARY_PATH@").mark("array__create") +{ + size = $arg1 + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.cmethod.entry - Fired just before a method implemented in C is entered. + * + * @classname: Name of the class (string) + * @methodname: The method about bo be executed (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.cmethod.entry = + process("@LIBRARY_PATH@").mark("cmethod__entry") +{ + classname = user_string($arg1) + methodname = user_string($arg2) + file = user_string($arg3) + line = $arg4 +} + +/** + * probe ruby.cmethod.return - Fired just after a method implemented in C has returned. + * + * @classname: Name of the class (string) + * @methodname: The executed method (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.cmethod.return = + process("@LIBRARY_PATH@").mark("cmethod__return") +{ + classname = user_string($arg1) + methodname = user_string($arg2) + file = user_string($arg3) + line = $arg4 +} + +/** + * probe ruby.find.require.entry - Fired when require starts to search load + * path for suitable file to require. + * + * @requiredfile: The name of the file to be required (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.find.require.entry = + process("@LIBRARY_PATH@").mark("find__require__entry") +{ + requiredfile = user_string($arg1) + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.find.require.return - Fired just after require has finished + * search of load path for suitable file to require. + * + * @requiredfile: The name of the file to be required (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.find.require.return = + process("@LIBRARY_PATH@").mark("find__require__return") +{ + requiredfile = user_string($arg1) + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.gc.mark.begin - Fired when a GC mark phase is about to start. + * + * It takes no arguments. + */ +probe ruby.gc.mark.begin = + process("@LIBRARY_PATH@").mark("gc__mark__begin") +{ +} + +/** + * probe ruby.gc.mark.end - Fired when a GC mark phase has ended. + * + * It takes no arguments. + */ +probe ruby.gc.mark.end = + process("@LIBRARY_PATH@").mark("gc__mark__end") +{ +} + +/** + * probe ruby.gc.sweep.begin - Fired when a GC sweep phase is about to start. + * + * It takes no arguments. + */ +probe ruby.gc.sweep.begin = + process("@LIBRARY_PATH@").mark("gc__sweep__begin") +{ +} + +/** + * probe ruby.gc.sweep.end - Fired when a GC sweep phase has ended. + * + * It takes no arguments. + */ +probe ruby.gc.sweep.end = + process("@LIBRARY_PATH@").mark("gc__sweep__end") +{ +} + +/** + * probe ruby.hash.create - Allocation of new hash. + * + * @size: Number of elements (int) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.hash.create = + process("@LIBRARY_PATH@").mark("hash__create") +{ + size = $arg1 + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.load.entry - Fired when calls to "load" are made. + * + * @loadedfile: The name of the file to be loaded (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.load.entry = + process("@LIBRARY_PATH@").mark("load__entry") +{ + loadedfile = user_string($arg1) + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.load.return - Fired just after require has finished + * search of load path for suitable file to require. + * + * @loadedfile: The name of the file that was loaded (string) + */ +probe ruby.load.return = + process("@LIBRARY_PATH@").mark("load__return") +{ + loadedfile = user_string($arg1) +} + +/** + * probe ruby.method.entry - Fired just before a method implemented in Ruby is entered. + * + * @classname: Name of the class (string) + * @methodname: The method about bo be executed (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.method.entry = + process("@LIBRARY_PATH@").mark("method__entry") +{ + classname = user_string($arg1) + methodname = user_string($arg2) + file = user_string($arg3) + line = $arg4 +} + +/** + * probe ruby.method.return - Fired just after a method implemented in Ruby has returned. + * + * @classname: Name of the class (string) + * @methodname: The executed method (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.method.return = + process("@LIBRARY_PATH@").mark("method__return") +{ + classname = user_string($arg1) + methodname = user_string($arg2) + file = user_string($arg3) + line = $arg4 +} + +/** + * probe ruby.object.create - Allocation of new object. + * + * @classname: Name of the class (string) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.object.create = + process("@LIBRARY_PATH@").mark("object__create") +{ + classname = user_string($arg1) + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.parse.begin - Fired just before a Ruby source file is parsed. + * + * @parsedfile: The name of the file to be parsed (string) + * @parsedline: The line number of beginning of parsing (int) + */ +probe ruby.parse.begin = + process("@LIBRARY_PATH@").mark("parse__begin") +{ + parsedfile = user_string($arg1) + parsedline = $arg2 +} + +/** + * probe ruby.parse.end - Fired just after a Ruby source file was parsed. + * + * @parsedfile: The name of parsed the file (string) + * @parsedline: The line number of beginning of parsing (int) + */ +probe ruby.parse.end = + process("@LIBRARY_PATH@").mark("parse__end") +{ + parsedfile = user_string($arg1) + parsedline = $arg2 +} + +/** + * probe ruby.raise - Fired when an exception is raised. + * + * @classname: The class name of the raised exception (string) + * @file: The name of the file where the exception was raised (string) + * @line: The line number in the file where the exception was raised (int) + */ +probe ruby.raise = + process("@LIBRARY_PATH@").mark("raise") +{ + classname = user_string($arg1) + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.require.entry - Fired on calls to rb_require_safe (when a file + * is required). + * + * @requiredfile: The name of the file to be required (string) + * @file: The file that called "require" (string) + * @line: The line number where the call to require was made(int) + */ +probe ruby.require.entry = + process("@LIBRARY_PATH@").mark("require__entry") +{ + requiredfile = user_string($arg1) + file = user_string($arg2) + line = $arg3 +} + +/** + * probe ruby.require.return - Fired just after require has finished + * search of load path for suitable file to require. + * + * @requiredfile: The file that was required (string) + */ +probe ruby.require.return = + process("@LIBRARY_PATH@").mark("require__return") +{ + requiredfile = user_string($arg1) +} + +/** + * probe ruby.string.create - Allocation of new string. + * + * @size: Number of elements (an int) + * @file: The file name where the method is being called (string) + * @line: The line number where the method is being called (int) + */ +probe ruby.string.create = + process("@LIBRARY_PATH@").mark("string__create") +{ + size = $arg1 + file = user_string($arg2) + line = $arg3 +} diff --git a/load.inc b/load.inc new file mode 100644 index 0000000..bf9c07e --- /dev/null +++ b/load.inc @@ -0,0 +1,30 @@ +%{lua: + +function source_macros(file) + local macro = nil + + for line in io.lines(file) do + if not macro and line:match("^%%") then + macro = line:match("^%%(.*)$") + line = nil + end + + if macro then + if line and macro:match("^.-%s*\\%s*$") then + macro = macro .. '\n' .. line + end + + if not macro:match("^.-%s*\\%s*$") then + rpm.define(macro) + macro = nil + end + end + end +end + +} + +# Include the constants defined in macros files. Could be dropped as soon as +# RPM supports the %%load macro (RPM 4.12+ probably). +# http://lists.rpm.org/pipermail/rpm-maint/2014-February/003659.html +%define load() %{lua:source_macros(rpm.expand("%1"))} diff --git a/macros.ruby b/macros.ruby new file mode 100644 index 0000000..36f4077 --- /dev/null +++ b/macros.ruby @@ -0,0 +1,22 @@ +%ruby_libdir %{_datadir}/%{name} +%ruby_libarchdir %{_libdir}/%{name} + +# This is the local lib/arch and should not be used for packaging. +%ruby_sitedir site_ruby +%ruby_sitelibdir %{_prefix}/local/share/%{name}/%{ruby_sitedir} +%ruby_sitearchdir %{_prefix}/local/%{_lib}/%{name}/%{ruby_sitedir} + +# This is the general location for libs/archs compatible with all +# or most of the Ruby versions available in the Fedora repositories. +%ruby_vendordir vendor_ruby +%ruby_vendorlibdir %{ruby_libdir}/%{ruby_vendordir} +%ruby_vendorarchdir %{ruby_libarchdir}/%{ruby_vendordir} + +# For ruby packages we want to filter out any provides caused by private +# libs in %%{ruby_vendorarchdir}/%%{ruby_sitearchdir}. +# +# Note that this must be invoked in the spec file, preferably as +# "%{?ruby_default_filter}", before any %description block. +%ruby_default_filter %{expand: \ +%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^(%{ruby_vendorarchdir}|%{ruby_sitearchdir})/.*\\\\.so$ \ +} diff --git a/macros.rubygems b/macros.rubygems new file mode 100644 index 0000000..6d99ac3 --- /dev/null +++ b/macros.rubygems @@ -0,0 +1,36 @@ +# The RubyGems root folder. +%gem_dir %{_datadir}/gems +%gem_archdir %{_libdir}/gems + +# Common gem locations and files. +%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version} +%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version} +%gem_libdir %{gem_instdir}/lib +%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}.gem +%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec +%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version} + +# Install gem into appropriate directory. +# -n Overrides gem file name for installation. +# -d Set installation directory. +%gem_install(d:n:) \ +mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \ +\ +CONFIGURE_ARGS="--with-cflags='%{optflags}' $CONFIGURE_ARGS" \\\ +gem install \\\ + -V \\\ + --local \\\ + --build-root %{-d*}%{!?-d:.} \\\ + --force \\\ + --document=ri,rdoc \\\ + %{-n*}%{!?-n:%{gem_name}-%{version}.gem} \ +%{nil} + +# For rubygems packages we want to filter out any provides caused by private +# libs in %%{gem_archdir}. +# +# Note that this must be invoked in the spec file, preferably as +# "%{?rubygems_default_filter}", before any %description block. +%rubygems_default_filter %{expand: \ +%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \ +} diff --git a/operating_system.rb b/operating_system.rb new file mode 100644 index 0000000..4b2903d --- /dev/null +++ b/operating_system.rb @@ -0,0 +1,146 @@ +module Gem + class << self + + ## + # Returns full path of previous but one directory of dir in path + # E.g. for '/usr/share/ruby', 'ruby', it returns '/usr' + + def previous_but_one_dir_to(path, dir) + return unless path + + split_path = path.split(File::SEPARATOR) + File.join(split_path.take_while { |one_dir| one_dir !~ /^#{dir}$/ }[0..-2]) + end + private :previous_but_one_dir_to + + ## + # Detects --install-dir option specified on command line. + + def opt_install_dir? + @opt_install_dir ||= ARGV.include?('--install-dir') || ARGV.include?('-i') + end + private :opt_install_dir? + + ## + # Detects --build-root option specified on command line. + + def opt_build_root? + @opt_build_root ||= ARGV.include?('--build-root') + end + private :opt_build_root? + + ## + # Tries to detect, if arguments and environment variables suggest that + # 'gem install' is executed from rpmbuild. + + def rpmbuild? + @rpmbuild ||= ENV['RPM_PACKAGE_NAME'] && (opt_install_dir? || opt_build_root?) + end + private :rpmbuild? + + ## + # Default gems locations allowed on FHS system (/usr, /usr/share). + # The locations are derived from directories specified during build + # configuration. + + def default_locations + @default_locations ||= { + :system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']), + :local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']) + } + end + + ## + # For each location provides set of directories for binaries (:bin_dir) + # platform independent (:gem_dir) and dependent (:ext_dir) files. + + def default_dirs + @libdir ||= case RUBY_PLATFORM + when 'java' + RbConfig::CONFIG['datadir'] + else + RbConfig::CONFIG['libdir'] + end + + @default_dirs ||= default_locations.inject(Hash.new) do |hash, location| + destination, path = location + + hash[destination] = if path + { + :bin_dir => File.join(path, RbConfig::CONFIG['bindir'].split(File::SEPARATOR).last), + :gem_dir => File.join(path, RbConfig::CONFIG['datadir'].split(File::SEPARATOR).last, 'gems'), + :ext_dir => File.join(path, @libdir.split(File::SEPARATOR).last, 'gems') + } + else + { + :bin_dir => '', + :gem_dir => '', + :ext_dir => '' + } + end + + hash + end + end + + ## + # Remove methods we are going to override. This avoids "method redefined;" + # warnings otherwise issued by Ruby. + + remove_method :default_dir if method_defined? :default_dir + remove_method :default_path if method_defined? :default_path + remove_method :default_bindir if method_defined? :default_bindir + remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for + + ## + # RubyGems default overrides. + + def default_dir + if opt_build_root? + Gem.default_dirs[:system][:gem_dir] + elsif Process.uid == 0 + Gem.default_dirs[:local][:gem_dir] + else + Gem.user_dir + end + end + + def default_path + path = default_dirs.collect {|location, paths| paths[:gem_dir]} + path.unshift Gem.user_dir if File.exist? Gem.user_home + end + + def default_bindir + if opt_build_root? + Gem.default_dirs[:system][:bin_dir] + elsif Process.uid == 0 + Gem.default_dirs[:local][:bin_dir] + else + File.join [Dir.home, 'bin'] + end + end + + def default_ext_dir_for base_dir + dir = if rpmbuild? + build_dir = base_dir.chomp Gem.default_dirs[:system][:gem_dir] + if build_dir != base_dir + File.join build_dir, Gem.default_dirs[:system][:ext_dir] + end + else + dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir} + dirs && dirs.last[:ext_dir] + end + dir && File.join(dir, RbConfig::CONFIG['RUBY_INSTALL_NAME']) + end + + # This method should be available since RubyGems 2.2 until RubyGems 3.0. + # https://github.com/rubygems/rubygems/issues/749 + if method_defined? :install_extension_in_lib + remove_method :install_extension_in_lib + + def install_extension_in_lib + false + end + end + end +end diff --git a/ruby-1.9.3-mkmf-verbose.patch b/ruby-1.9.3-mkmf-verbose.patch new file mode 100644 index 0000000..ccbd972 --- /dev/null +++ b/ruby-1.9.3-mkmf-verbose.patch @@ -0,0 +1,25 @@ +From 28cc0749d6729aa2444661ee7b411e183fe220b0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Mon, 19 Nov 2012 15:14:51 +0100 +Subject: [PATCH] Verbose mkmf. + +--- + lib/mkmf.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/mkmf.rb b/lib/mkmf.rb +index 682eb46..e6b1445 100644 +--- a/lib/mkmf.rb ++++ b/lib/mkmf.rb +@@ -1892,7 +1892,7 @@ def configuration(srcdir) + SHELL = /bin/sh + + # V=0 quiet, V=1 verbose. other values don't work. +-V = 0 ++V = 1 + Q1 = $(V:1=) + Q = $(Q1:0=@) + ECHO1 = $(V:1=@#{CONFIG['NULLCMD']}) +-- +1.8.3.1 + diff --git a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch new file mode 100644 index 0000000..6f16bae --- /dev/null +++ b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch @@ -0,0 +1,58 @@ +From 996012f6abe0ce4d68a2de9f249935c6d5b467bc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 4 Oct 2013 22:13:11 +0200 +Subject: [PATCH] Allow to specify addition preludes by configuration option. + +--- + Makefile.in | 2 ++ + common.mk | 2 +- + configure.in | 7 +++++++ + 3 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 7e8ed82..7916993 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -116,6 +116,8 @@ XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@ + XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@ + BOOTSTRAPRUBY = @BOOTSTRAPRUBY@ + ++OPTIONAL_PRELUDES = @OPTIONAL_PRELUDES@ ++ + #### End of system configuration section. #### + + MAJOR= @MAJOR@ +diff --git a/common.mk b/common.mk +index 5cfbc3d..3f0a82e 100644 +--- a/common.mk ++++ b/common.mk +@@ -127,7 +127,7 @@ ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS) + GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT) + + DEFAULT_PRELUDES = $(GEM_PRELUDE) +-PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(srcdir)/enc/prelude.rb $(DEFAULT_PRELUDES) ++PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(srcdir)/enc/prelude.rb $(DEFAULT_PRELUDES) $(OPTIONAL_PRELUDES) + GEM_PRELUDE = $(srcdir)/gem_prelude.rb + PRELUDES = {$(srcdir)}prelude.c {$(srcdir)}miniprelude.c + GOLFPRELUDES = {$(srcdir)}golf_prelude.c +diff --git a/configure.in b/configure.in +index 0e371e2..d4f1dcb 100644 +--- a/configure.in ++++ b/configure.in +@@ -4334,6 +4334,13 @@ AC_SUBST(rubyarchhdrdir)dnl + AC_SUBST(sitearchhdrdir)dnl + AC_SUBST(vendorarchhdrdir)dnl + ++AC_ARG_WITH(prelude, ++ AS_HELP_STRING([--with-prelude=FILE-LIST], [specify additional preludes separated by space]), ++ [prelude=$withval]) ++if test "$prelude" != ""; then ++ AC_SUBST(OPTIONAL_PRELUDES, $prelude) ++fi ++ + AC_ARG_WITH(mantype, + AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]), + [ +-- +1.8.3.1 + diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch new file mode 100644 index 0000000..33bd565 --- /dev/null +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -0,0 +1,28 @@ +From 07c666ba5c3360dd6f43605a8ac7c85c99c1721f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 1 Oct 2013 12:22:40 +0200 +Subject: [PATCH] Allow to configure libruby.so placement. + +--- + configure.in | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/configure.in b/configure.in +index 37d9a62..553d4d0 100644 +--- a/configure.in ++++ b/configure.in +@@ -3592,6 +3592,11 @@ if test ${multiarch+set}; then + fi + + archlibdir='${libdir}/${arch}' ++AC_ARG_WITH(archlibdir, ++ AS_HELP_STRING([--with-archlibdir=DIR], ++ [prefix for libruby [[LIBDIR/ARCH]]]), ++ [archlibdir="$withval"]) ++ + sitearchlibdir='${libdir}/${sitearch}' + archincludedir='${includedir}/${arch}' + sitearchincludedir='${includedir}/${sitearch}' +-- +1.8.3.1 + diff --git a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch new file mode 100644 index 0000000..6661f9b --- /dev/null +++ b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch @@ -0,0 +1,81 @@ +From e24d97c938c481450ed80ec83e5399595946c1ae Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 8 Feb 2013 22:48:41 +0100 +Subject: [PATCH] Prevent duplicated paths when empty version string is + configured. + +--- + configure.in | 3 ++- + loadpath.c | 12 ++++++++++++ + tool/mkconfig.rb | 2 +- + 3 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index db37cd6..ce8d149 100644 +--- a/configure.in ++++ b/configure.in +@@ -4188,7 +4188,8 @@ AS_CASE(["$ruby_version_dir_name"], + ruby_version_dir=/'${ruby_version_dir_name}' + + if test -z "${ruby_version_dir_name}"; then +- AC_MSG_ERROR([No ruby version, No place for bundled libraries]) ++ unset ruby_version_dir ++ AC_DEFINE(RUBY_LIB_VERSION_BLANK, 1) + fi + + rubylibdir='${rubylibprefix}'${ruby_version_dir} +diff --git a/loadpath.c b/loadpath.c +index 9160031..0d4d953 100644 +--- a/loadpath.c ++++ b/loadpath.c +@@ -65,22 +65,34 @@ const char ruby_initial_load_paths[] = + RUBY_SEARCH_PATH "\0" + #endif + #ifndef NO_RUBY_SITE_LIB ++#ifdef RUBY_LIB_VERSION_BLANK ++ RUBY_SITE_LIB "\0" ++#else + RUBY_SITE_LIB2 "\0" ++#endif + #ifdef RUBY_THINARCH + RUBY_SITE_ARCH_LIB_FOR(RUBY_THINARCH) "\0" + #endif + RUBY_SITE_ARCH_LIB_FOR(RUBY_SITEARCH) "\0" ++#ifndef RUBY_LIB_VERSION_BLANK + RUBY_SITE_LIB "\0" + #endif ++#endif + + #ifndef NO_RUBY_VENDOR_LIB ++#ifdef RUBY_LIB_VERSION_BLANK ++ RUBY_VENDOR_LIB "\0" ++#else + RUBY_VENDOR_LIB2 "\0" ++#endif + #ifdef RUBY_THINARCH + RUBY_VENDOR_ARCH_LIB_FOR(RUBY_THINARCH) "\0" + #endif + RUBY_VENDOR_ARCH_LIB_FOR(RUBY_SITEARCH) "\0" ++#ifndef RUBY_LIB_VERSION_BLANK + RUBY_VENDOR_LIB "\0" + #endif ++#endif + + RUBY_LIB "\0" + #ifdef RUBY_THINARCH +diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb +index 07076d4..35e6c3c 100755 +--- a/tool/mkconfig.rb ++++ b/tool/mkconfig.rb +@@ -122,7 +122,7 @@ def config.write(arg) + val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump + case name + when /^prefix$/ +- val = "(TOPDIR || DESTDIR + #{val})" ++ val = "(((TOPDIR && TOPDIR.empty?) ? nil : TOPDIR) || DESTDIR + #{val})" + when /^ARCH_FLAG$/ + val = "arch_flag || #{val}" if universal + when /^UNIVERSAL_ARCHNAMES$/ +-- +1.9.0 + diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch new file mode 100644 index 0000000..3c3fcd4 --- /dev/null +++ b/ruby-2.1.0-always-use-i386.patch @@ -0,0 +1,25 @@ +From 2089cab72b38d6d5e7ba2b596e41014209acad30 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Mon, 19 Nov 2012 14:37:28 +0100 +Subject: [PATCH] Always use i386. + +--- + configure.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.in b/configure.in +index 553d4d0..03a4152 100644 +--- a/configure.in ++++ b/configure.in +@@ -4252,6 +4252,8 @@ AC_SUBST(vendorarchdir)dnl + AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl + AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl + ++target_cpu=`echo $target_cpu | sed s/i.86/i386/` ++ + if test "${universal_binary-no}" = yes ; then + arch="universal-${target_os}" + if test "${rb_cv_architecture_available}" = yes; then +-- +1.8.3.1 + diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch new file mode 100644 index 0000000..36a7711 --- /dev/null +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -0,0 +1,96 @@ +From 94da59aafacc6a9efe829529eb51385588d6f149 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 11 Nov 2011 13:14:45 +0100 +Subject: [PATCH] Allow to install RubyGems into custom location, outside of + Ruby tree. + +--- + configure.in | 5 +++++ + loadpath.c | 4 ++++ + template/verconf.h.tmpl | 3 +++ + tool/rbinstall.rb | 9 +++++++++ + 4 files changed, 21 insertions(+) + +diff --git a/configure.in b/configure.in +index 03a4152..0e371e2 100644 +--- a/configure.in ++++ b/configure.in +@@ -4224,6 +4224,10 @@ AC_ARG_WITH(vendorarchdir, + [vendorarchdir=$withval], + [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) + ++AC_ARG_WITH(rubygemsdir, ++ AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]), ++ [rubygemsdir=$withval]) ++ + if test "${LOAD_RELATIVE+set}"; then + AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) + RUBY_EXEC_PREFIX='' +@@ -4248,6 +4252,7 @@ AC_SUBST(sitearchdir)dnl + AC_SUBST(vendordir)dnl + AC_SUBST(vendorlibdir)dnl + AC_SUBST(vendorarchdir)dnl ++AC_SUBST(rubygemsdir)dnl + + AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl + AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl +diff --git a/loadpath.c b/loadpath.c +index 623dc9d..74c5d9e 100644 +--- a/loadpath.c ++++ b/loadpath.c +@@ -94,6 +94,10 @@ const char ruby_initial_load_paths[] = + #endif + #endif + ++#ifdef RUBYGEMS_DIR ++ RUBYGEMS_DIR "\0" ++#endif ++ + RUBY_LIB "\0" + #ifdef RUBY_THINARCH + RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0" +diff --git a/template/verconf.h.tmpl b/template/verconf.h.tmpl +index 79c003e..34f2382 100644 +--- a/template/verconf.h.tmpl ++++ b/template/verconf.h.tmpl +@@ -36,6 +36,9 @@ + % if C["RUBY_SEARCH_PATH"] + #define RUBY_SEARCH_PATH "${RUBY_SEARCH_PATH}" + % end ++% if C["rubygemsdir"] ++#define RUBYGEMS_DIR "${rubygemsdir}" ++% end + % + % R = {} + % R["ruby_version"] = '"RUBY_LIB_VERSION"' +diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb +index b47b6e1..0b99408 100755 +--- a/tool/rbinstall.rb ++++ b/tool/rbinstall.rb +@@ -328,6 +328,7 @@ def CONFIG.[](name, mandatory = false) + sitearchlibdir = CONFIG["sitearchdir"] + vendorlibdir = CONFIG["vendorlibdir"] + vendorarchlibdir = CONFIG["vendorarchdir"] ++rubygemsdir = CONFIG["rubygemsdir"] + mandir = CONFIG["mandir", true] + docdir = CONFIG["docdir", true] + configure_args = Shellwords.shellwords(CONFIG["configure_args"]) +@@ -506,7 +507,15 @@ def CONFIG.[](name, mandatory = false) + install?(:local, :comm, :lib) do + prepare "library scripts", rubylibdir + noinst = %w[README* *.txt *.rdoc *.gemspec] ++ noinst += %w[*ubygems.rb rubygems/ datadir.rb] if rubygemsdir + install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode) ++ if rubygemsdir ++ noinst = %w[obsolete.rb] ++ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode) ++ install_recursive(File.join(srcdir, "lib", "rbconfig"), File.join(rubygemsdir, "rbconfig"), :no_install => noinst, :mode => $data_mode) ++ install(File.join(srcdir, "lib", "ubygems.rb"), File.join(rubygemsdir, "ubygems.rb"), :mode => $data_mode) ++ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode) ++ end + end + + install?(:local, :comm, :hdr, :'comm-hdr') do +-- +1.8.3.1 + diff --git a/ruby-2.2.3-Generate-preludes-using-miniruby.patch b/ruby-2.2.3-Generate-preludes-using-miniruby.patch new file mode 100644 index 0000000..aa17411 --- /dev/null +++ b/ruby-2.2.3-Generate-preludes-using-miniruby.patch @@ -0,0 +1,28 @@ +From 07eb5f5e775dec01a92a8b13910eaced9e8ee0cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 2 Dec 2014 10:56:58 +0100 +Subject: [PATCH] Generate preludes using miniruby. + +--- + common.mk | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/common.mk b/common.mk +index 168dc52..20c218a 100644 +--- a/common.mk ++++ b/common.mk +@@ -839,9 +839,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) + $(PRELUDE_C): $(COMPILE_PRELUDE) \ + {$(srcdir)}lib/rubygems/defaults.rb \ + {$(srcdir)}lib/rubygems/core_ext/kernel_gem.rb \ +- $(PRELUDE_SCRIPTS) $(LIB_SRCS) ++ $(PRELUDE_SCRIPTS) $(PREP) $(LIB_SRCS) + $(ECHO) generating $@ +- $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \ ++ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \ + $(srcdir)/template/prelude.c.tmpl $(PRELUDE_SCRIPTS) + + {$(VPATH)}golf_prelude.c: $(COMPILE_PRELUDE) {$(srcdir)}golf_prelude.rb +-- +2.6.3 + diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch new file mode 100644 index 0000000..6a13e3a --- /dev/null +++ b/ruby-2.3.0-ruby_version.patch @@ -0,0 +1,300 @@ +From 4fc1be3af3f58621bb751c9e63c208b15c0e8d16 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 31 Mar 2015 16:21:04 +0200 +Subject: [PATCH 1/4] Use ruby_version_dir_name for versioned directories. + +This disallows changing the ruby_version constant by --with-ruby-version +configuration options. The two places version numbers are disallowed as +well, since there are a lot of places which cannot handle this format +properly. + +ruby_version_dir_name now specifies custom version string for versioned +directories, e.g. instead of default X.Y.Z, you can specify whatever +string. +--- + configure.in | 68 ++++++++++++++++++++++++++++------------------------- + template/ruby.pc.in | 1 + + 2 files changed, 37 insertions(+), 32 deletions(-) + +diff --git a/configure.in b/configure.in +index db37cd6..6e73fae 100644 +--- a/configure.in ++++ b/configure.in +@@ -4137,9 +4137,6 @@ AS_CASE(["$target_os"], + rubyw_install_name='$(RUBYW_INSTALL_NAME)' + ]) + +-rubylibdir='${rubylibprefix}/${ruby_version}' +-rubyarchdir=${multiarch+'${rubyarchprefix}/${ruby_version}'}${multiarch-'${rubylibdir}/${arch}'} +- + rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} + AC_ARG_WITH(rubyarchprefix, + AS_HELP_STRING([--with-rubyarchprefix=DIR], +@@ -4162,58 +4159,64 @@ AC_ARG_WITH(ridir, + AC_SUBST(ridir) + AC_SUBST(RI_BASE_NAME) + +-AC_ARG_WITH(ruby-version, +- AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|minor|STR)]), +- [ruby_version=$withval], +- [ruby_version=full]) + unset RUBY_LIB_VERSION +-unset RUBY_LIB_VERSION_STYLE +-AS_CASE(["$ruby_version"], +- [full], [RUBY_LIB_VERSION_STYLE='3 /* full */'], +- [minor], [RUBY_LIB_VERSION_STYLE='2 /* minor */']) +-if test ${RUBY_LIB_VERSION_STYLE+set}; then +- { +- echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" +- echo '#define STRINGIZE(x) x' +- test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' +- echo '#include "verconf.h"' +- echo '#include "version.h"' +- echo 'ruby_version=RUBY_LIB_VERSION' +- } > conftest.c +- test -f verconf.h || > verconf.h +- ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`" +- eval $ruby_version +-elif test -z "${ruby_version}"; then +- AC_MSG_ERROR([No ruby version, No place for bundled libraries]) +-else +- RUBY_LIB_VERSION="${ruby_version}" +-fi ++RUBY_LIB_VERSION_STYLE='3 /* full */' ++{ ++echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" ++echo '#define STRINGIZE(x) x' ++test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' ++echo '#include "verconf.h"' ++echo '#include "version.h"' ++echo 'ruby_version=RUBY_LIB_VERSION' ++} > conftest.c ++test -f verconf.h || > verconf.h ++ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`" ++eval $ruby_version ++ ++RUBY_LIB_VERSION="${ruby_version}" ++ + AC_SUBST(RUBY_LIB_VERSION_STYLE) + AC_SUBST(RUBY_LIB_VERSION) + ++AC_ARG_WITH(ruby-version, ++ AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|STR)]), ++ [ruby_version_dir_name=$withval], ++ [ruby_version_dir_name=full]) ++AS_CASE(["$ruby_version_dir_name"], ++ [full], [ruby_version_dir_name='${ruby_version}']) ++ ++ruby_version_dir=/'${ruby_version_dir_name}' ++ ++if test -z "${ruby_version_dir_name}"; then ++ AC_MSG_ERROR([No ruby version, No place for bundled libraries]) ++fi ++ ++rubylibdir='${rubylibprefix}'${ruby_version_dir} ++rubyarchdir=${multiarch+'${rubyarchprefix}'${ruby_version_dir}}${multiarch-'${rubylibdir}/${arch}'} ++ + AC_ARG_WITH(sitedir, + AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]], "no" to disable site directory]), + [sitedir=$withval], + [sitedir='${rubylibprefix}/site_ruby']) +-sitelibdir='${sitedir}/${ruby_version}' ++sitelibdir='${sitedir}'${ruby_version_dir} + + AC_ARG_WITH(sitearchdir, + AS_HELP_STRING([--with-sitearchdir=DIR], + [architecture dependent site libraries in DIR [[SITEDIR/SITEARCH]], "no" to disable site directory]), + [sitearchdir=$withval], +- [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby/${ruby_version}'}${multiarch-'${sitelibdir}/${sitearch}'}]) ++ [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby'${ruby_version_dir}}${multiarch-'${sitelibdir}/${sitearch}'}]) + + AC_ARG_WITH(vendordir, + AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]], "no" to disable vendor directory]), + [vendordir=$withval], + [vendordir='${rubylibprefix}/vendor_ruby']) +-vendorlibdir='${vendordir}/${ruby_version}' ++vendorlibdir='${vendordir}'${ruby_version_dir} + + AC_ARG_WITH(vendorarchdir, + AS_HELP_STRING([--with-vendorarchdir=DIR], + [architecture dependent vendor libraries in DIR [[VENDORDIR/SITEARCH]], "no" to disable vendor directory]), + [vendorarchdir=$withval], +- [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}]) ++ [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) + + if test "${LOAD_RELATIVE+set}"; then + AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) +@@ -4230,6 +4233,7 @@ AC_SUBST(sitearchincludedir)dnl + AC_SUBST(arch)dnl + AC_SUBST(sitearch)dnl + AC_SUBST(ruby_version)dnl ++AC_SUBST(ruby_version_dir_name)dnl + AC_SUBST(rubylibdir)dnl + AC_SUBST(rubyarchdir)dnl + AC_SUBST(sitedir)dnl +diff --git a/template/ruby.pc.in b/template/ruby.pc.in +index 8a2c066..c81b211 100644 +--- a/template/ruby.pc.in ++++ b/template/ruby.pc.in +@@ -9,6 +9,7 @@ MAJOR=@MAJOR@ + MINOR=@MINOR@ + TEENY=@TEENY@ + ruby_version=@ruby_version@ ++ruby_version_dir_name=@ruby_version_dir_name@ + RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@ + RUBY_BASE_NAME=@RUBY_BASE_NAME@ + RUBY_VERSION_NAME=@RUBY_VERSION_NAME@ +-- +2.1.0 + + +From 518850aba6eee76de7715aae8d37330e34b01983 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 31 Mar 2015 16:37:26 +0200 +Subject: [PATCH 2/4] Add ruby_version_dir_name support for RDoc. + +--- + lib/rdoc/ri/paths.rb | 2 +- + tool/rbinstall.rb | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb +index 970cb91..5bf8230 100644 +--- a/lib/rdoc/ri/paths.rb ++++ b/lib/rdoc/ri/paths.rb +@@ -10,7 +10,7 @@ module RDoc::RI::Paths + #:stopdoc: + require 'rbconfig' + +- version = RbConfig::CONFIG['ruby_version'] ++ version = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + + BASE = if RbConfig::CONFIG.key? 'ridir' then + File.join RbConfig::CONFIG['ridir'], version +diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb +index d4c110e..d39c9a6 100755 +--- a/tool/rbinstall.rb ++++ b/tool/rbinstall.rb +@@ -406,7 +406,7 @@ def CONFIG.[](name, mandatory = false) + + install?(:doc, :rdoc) do + if $rdocdir +- ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system") ++ ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version_dir_name'] || CONFIG['ruby_version'], "system") + prepare "rdoc", ridatadir + install_recursive($rdocdir, ridatadir, :mode => $data_mode) + end +-- +2.1.0 + + +From f8d136f9a46d1fe87eba622ab9665935d05e981b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 31 Mar 2015 16:37:44 +0200 +Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems. + +--- + lib/rubygems/defaults.rb | 11 ++++++----- + test/rubygems/test_gem.rb | 5 +++-- + 2 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb +index 55ca080..75eea2b 100644 +--- a/lib/rubygems/defaults.rb ++++ b/lib/rubygems/defaults.rb +@@ -32,20 +32,20 @@ def self.default_dir + [ + File.dirname(RbConfig::CONFIG['sitedir']), + 'Gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + elsif RbConfig::CONFIG['rubylibprefix'] then + [ + RbConfig::CONFIG['rubylibprefix'], + 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + else + [ + RbConfig::CONFIG['libdir'], + ruby_engine, + 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + end + +@@ -75,7 +75,8 @@ def self.default_rubygems_dirs + + def self.user_dir + parts = [Gem.user_home, '.gem', ruby_engine] +- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? ++ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ++ parts << ruby_version_dir_name unless ruby_version_dir_name.empty? + File.join parts + end + +@@ -172,7 +173,7 @@ def self.vendor_dir # :nodoc: + return nil unless RbConfig::CONFIG.key? 'vendordir' + + File.join RbConfig::CONFIG['vendordir'], 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + end + + end +diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb +index 0428bea..b6e090e 100644 +--- a/test/rubygems/test_gem.rb ++++ b/test/rubygems/test_gem.rb +@@ -963,7 +963,8 @@ def test_self_use_paths + + def test_self_user_dir + parts = [@userhome, '.gem', Gem.ruby_engine] +- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? ++ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ++ parts << ruby_version_dir_name unless ruby_version_dir_name.empty? + + assert_equal File.join(parts), Gem.user_dir + end +@@ -1090,7 +1091,7 @@ def test_self_user_home_user_drive_and_path + def test_self_vendor_dir + expected = + File.join RbConfig::CONFIG['vendordir'], 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + + assert_equal expected, Gem.vendor_dir + end +-- +2.1.0 + + +From 88c38a030c22dbf9422ece847bdfbf87d6659313 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Wed, 1 Apr 2015 14:55:37 +0200 +Subject: [PATCH 4/4] Let headers directories follow the configured version + name. + +--- + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index 6e73fae..c842725 100644 +--- a/configure.in ++++ b/configure.in +@@ -274,7 +274,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` + RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"` + AC_SUBST(RUBY_BASE_NAME) + AC_SUBST(RUBYW_BASE_NAME) +-AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}') ++AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version_dir_name}') + + AC_CANONICAL_TARGET + test x"$target_alias" = x && +-- +2.1.0 + diff --git a/ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch b/ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch new file mode 100644 index 0000000..da7e980 --- /dev/null +++ b/ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch @@ -0,0 +1,31 @@ +From 98e565ec78cb4a07ffde8589ac4581fca31e9c17 Mon Sep 17 00:00:00 2001 +From: mrkn +Date: Thu, 7 Jan 2016 13:35:32 +0000 +Subject: [PATCH] * ruby.h: undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P + and HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P on C++. [ruby-core:72736] + [Bug #11962] + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + ChangeLog | 6 ++++++ + include/ruby/ruby.h | 7 +++++++ + 2 files changed, 13 insertions(+) + +diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h +index 7aabf5b..82dca14 100644 +--- a/include/ruby/ruby.h ++++ b/include/ruby/ruby.h +@@ -26,6 +26,13 @@ extern "C" { + #include RUBY_EXTCONF_H + #endif + ++#if defined(__cplusplus) ++/* __builtin_choose_expr and __builtin_types_compatible aren't available ++ * on C++. See https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html */ ++# undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P ++# undef HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P ++#endif ++ + #include "defines.h" + + #define NORETURN_STYLE_NEW 1 diff --git a/ruby-exercise.stp b/ruby-exercise.stp new file mode 100644 index 0000000..df9df41 --- /dev/null +++ b/ruby-exercise.stp @@ -0,0 +1,39 @@ +/* Example tapset file. + * + * You can execute the tapset using following command (please adjust the path + * prior running the command, if needed): + * + * stap /usr/share/doc/ruby-2.0.0.0/ruby-exercise.stp -c "ruby -e \"puts 'test'\"" + */ + +probe ruby.cmethod.entry { + printf("%d -> %s::%s %s:%d\n", tid(), classname, methodname, file, line); +} + +probe ruby.cmethod.return { + printf("%d <- %s::%s %s:%d\n", tid(), classname, methodname, file, line); +} + +probe ruby.method.entry { + printf("%d -> %s::%s %s:%d\n", tid(), classname, methodname, file, line); +} + +probe ruby.method.return { + printf("%d <- %s::%s %s:%d\n", tid(), classname, methodname, file, line); +} + +probe ruby.gc.mark.begin { printf("%d gc.mark.begin\n", tid()); } + +probe ruby.gc.mark.end { printf("%d gc.mark.end\n", tid()); } + +probe ruby.gc.sweep.begin { printf("%d gc.sweep.begin\n", tid()); } + +probe ruby.gc.sweep.end { printf("%d gc.sweep.end\n", tid()); } + +probe ruby.object.create{ + printf("%d obj.create %s %s:%d\n", tid(), classname, file, line); +} + +probe ruby.raise { + printf("%d raise %s %s:%d\n", tid(), classname, file, line); +} diff --git a/ruby.spec b/ruby.spec new file mode 100644 index 0000000..826811b --- /dev/null +++ b/ruby.spec @@ -0,0 +1,2159 @@ +%{!?scl:%global pkg_name %{name}} +%{?scl:%scl_package ruby} + +%global major_version 2 +%global minor_version 3 +%global teeny_version 0 +%global major_minor_version %{major_version}.%{minor_version} + +%global ruby_version %{major_minor_version}.%{teeny_version} +%global ruby_release %{ruby_version} + +# Specify the named version. It has precedense to revision. +#%%global milestone preview2 + +# Keep the revision enabled for pre-releases from SVN. +#%%global revision 53264 + +%global ruby_archive %{pkg_name}-%{ruby_version} + +# If revision and milestone are removed/commented out, the official release build is expected. +%if 0%{?milestone:1}%{?revision:1} != 0 +%global development_release %{?milestone}%{?!milestone:%{?revision:r%{revision}}} +%global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} +%endif + +%global release 55 +%{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} + +# The RubyGems library has to stay out of Ruby directory three, since the +# RubyGems should be share by all Ruby implementations. +%global rubygems_dir %{_datadir}/rubygems + +# Bundled libraries versions +%global rubygems_version 2.5.1 +%global molinillo_version 0.4.0 + +# TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM. +# http://redmine.ruby-lang.org/issues/5313 +%global irb_version %{ruby_version} + +%global bigdecimal_version 1.2.8 +%global did_you_mean_version 1.0.0 +%global io_console_version 0.4.5 +%global json_version 1.8.3 +%global minitest_version 5.8.3 +%global power_assert_version 0.2.6 +%global psych_version 2.0.17 +%global rake_version 10.4.2 +%global rdoc_version 4.2.1 +%global net_telnet_version 0.1.1 +%global test_unit_version 3.1.5 + +# Might not be needed in the future, if we are lucky enough. +# https://bugzilla.redhat.com/show_bug.cgi?id=888262 +%global tapset_root %{_datadir}/systemtap +%global tapset_dir %{tapset_root}/tapset +%global tapset_libdir %(echo %{_libdir} | sed 's/64//')* + +%global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/') + +%if 0%{?fedora} >= 19 +%global with_rubypick 1 +%endif + +Summary: An interpreter of object-oriented scripting language +Name: %{?scl_prefix}ruby +Version: %{ruby_version} +Release: %{release_string} +Group: Development/Languages +# Public Domain for example for: include/ruby/st.h, strftime.c, missing/*, ... +# MIT and CCO: ccan/* +# zlib: ext/digest/md5/md5.*, ext/nkf/nkf-utf8/nkf.c +# UCD: some of enc/trans/**/*.src +License: (Ruby or BSD) and Public Domain and MIT and CC0 and zlib and UCD +URL: http://ruby-lang.org/ +Source0: ftp://ftp.ruby-lang.org/pub/%{pkg_name}/%{major_minor_version}/%{ruby_archive}.tar.xz +Source1: operating_system.rb +# TODO: Try to push SystemTap support upstream. +Source2: libruby.stp +Source3: ruby-exercise.stp +Source4: macros.ruby +Source5: macros.rubygems +Source6: abrt_prelude.rb +# This wrapper fixes https://bugzilla.redhat.com/show_bug.cgi?id=977941 +# Hopefully, it will get removed soon: +# https://fedorahosted.org/fpc/ticket/312 +# https://bugzilla.redhat.com/show_bug.cgi?id=977941 +Source7: config.h +# ABRT hoook test case. +Source12: test_abrt.rb +# SystemTap tests. +Source13: test_systemtap.rb +# To test Ruby software collection +Source14: test_dependent_scls.rb + +# %%load function should be supported in RPM 4.12+. +# http://lists.rpm.org/pipermail/rpm-maint/2014-February/003659.html +Source100: load.inc +%include %{SOURCE100} + +%{load %{SOURCE4}} +%{load %{SOURCE5}} + +# Fix ruby_version abuse. +# https://bugs.ruby-lang.org/issues/11002 +Patch0: ruby-2.3.0-ruby_version.patch +# http://bugs.ruby-lang.org/issues/7807 +Patch1: ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +# Allows to override libruby.so placement. Hopefully we will be able to return +# to plain --with-rubyarchprefix. +# http://bugs.ruby-lang.org/issues/8973 +Patch2: ruby-2.1.0-Enable-configuration-of-archlibdir.patch +# Force multiarch directories for i.86 to be always named i386. This solves +# some differencies in build between Fedora and RHEL. +Patch3: ruby-2.1.0-always-use-i386.patch +# Allows to install RubyGems into custom directory, outside of Ruby's tree. +# http://bugs.ruby-lang.org/issues/5617 +Patch4: ruby-2.1.0-custom-rubygems-location.patch +# Make mkmf verbose by default +Patch5: ruby-1.9.3-mkmf-verbose.patch +# Adds support for '--with-prelude' configuration option. This allows to built +# in support for ABRT. +# http://bugs.ruby-lang.org/issues/8566 +Patch6: ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch +# Use miniruby to regenerate prelude.c. +# https://bugs.ruby-lang.org/issues/10554 +Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch +# 98e565ec78cb4a07ffde8589ac4581fca31e9c17 +# https://bugs.ruby-lang.org/issues/11962 +# https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/53455 +Patch8: ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch + +Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +# Make the bigdecimal gem a runtime dependency of Ruby to avoid problems +# with user-installed gems, that don't require it in gemspec/Gemfile +# See https://bugzilla.redhat.com/show_bug.cgi?id=829209 +# and http://bugs.ruby-lang.org/issues/6123 +Requires: %{?scl_prefix}rubygem(bigdecimal) >= %{bigdecimal_version} +%{?scl:BuildRequires: %{scl}-runtime} +BuildRequires: autoconf +BuildRequires: gdbm-devel +BuildRequires: libffi-devel +BuildRequires: openssl-devel +BuildRequires: libyaml-devel +BuildRequires: readline-devel +BuildRequires: tk-devel +# Needed to pass test_set_program_name(TestRubyOptions) +BuildRequires: procps +BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/dtrace +# RubyGems test suite optional dependencies. +BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/git +BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/cmake + +# This package provides %%{_bindir}/ruby-mri therefore it is marked by this +# virtual provide. It can be installed as dependency of rubypick. +Provides: ruby(runtime_executable) = %{ruby_release} + +%description +Ruby is the interpreted scripting language for quick and easy +object-oriented programming. It has many features to process text +files and to do system management tasks (as in Perl). It is simple, +straight-forward, and extensible. + +%package devel +Summary: A Ruby development environment +Group: Development/Languages +Requires: %{?scl_prefix}%{pkg_name}%{?_isa} = %{version}-%{release} + +%description devel +Header files and libraries for building an extension library for the +Ruby or an application embedding Ruby. + +%package libs +Summary: Libraries necessary to run Ruby +Group: Development/Libraries +License: Ruby or BSD +Provides: %{?scl_prefix}ruby(release) = %{ruby_release} + +# Virtual provides for CCAN copylibs. +# https://fedorahosted.org/fpc/ticket/364 +Provides: %{?scl_prefix}bundled(ccan-build_assert) +Provides: %{?scl_prefix}bundled(ccan-check_type) +Provides: %{?scl_prefix}bundled(ccan-container_of) +Provides: %{?scl_prefix}bundled(ccan-list) + +%description libs +This package includes the libruby, necessary to run Ruby. + + +# TODO: Rename or not rename to ruby-rubygems? + +%package -n %{?scl_prefix}rubygems +Summary: The Ruby standard for packaging ruby libraries +Version: %{rubygems_version} +Group: Development/Libraries +License: Ruby or MIT +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}rubygem(rdoc) >= %{rdoc_version} +# TODO: This seems to be optional now. +# https://github.com/rubygems/rubygems/commit/68da16dd7508c5c4010bfe32f99422568d3d582f +Requires: %{?scl_prefix}rubygem(io-console) >= %{io_console_version} +Requires: %{?scl_prefix}rubygem(psych) >= %{psych_version} +Provides: %{?scl_prefix}gem = %{version}-%{release} +Provides: %{?scl_prefix}ruby(rubygems) = %{version}-%{release} +# https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 +Provides: %{?scl_prefix}bundled(rubygem(molinillo)) = %{molinillo_version} +Provides: %{?scl_prefix}bundled(rubygem-molinillo) = %{molinillo_version} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygems +RubyGems is the Ruby standard for publishing and managing third party +libraries. + +%package -n %{?scl_prefix}rubygems-devel +Summary: Macros and development tools for packaging RubyGems +Version: %{rubygems_version} +Group: Development/Libraries +License: Ruby or MIT +Requires: %{?scl_prefix}ruby(rubygems) = %{version}-%{release} +# Needed for RDoc documentation format generation. +Requires: %{?scl_prefix}rubygem(json) >= %{json_version} +Requires: %{?scl_prefix}rubygem(rdoc) >= %{rdoc_version} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygems-devel +Macros and development tools for packaging RubyGems. + +%package -n %{?scl_prefix}rubygem-rake +Summary: Ruby based make-like utility +Version: %{rake_version} +Group: Development/Libraries +License: MIT +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rake = %{version}-%{release} +Provides: %{?scl_prefix}rubygem(rake) = %{version}-%{release} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygem-rake +Rake is a Make-like program implemented in Ruby. Tasks and dependencies are +specified in standard Ruby syntax. + +%package irb +Summary: The Interactive Ruby +Version: %{irb_version} +Group: Development/Libraries +Requires: %{?scl_prefix}%{pkg_name}-libs = %{ruby_version} +Provides: %{?scl_prefix}irb = %{version}-%{release} +Provides: %{?scl_prefix}ruby(irb) = %{version}-%{release} +BuildArch: noarch + +%description irb +The irb is acronym for Interactive Ruby. It evaluates ruby expression +from the terminal. + +%package -n %{?scl_prefix}rubygem-rdoc +Summary: A tool to generate HTML and command-line documentation for Ruby projects +Version: %{rdoc_version} +Group: Development/Libraries +# SIL: lib/rdoc/generator/template/darkfish/css/fonts.css +License: GPLv2 and Ruby and MIT and SIL +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Requires: %{?scl_prefix}ruby(irb) = %{irb_version} +Requires: %{?scl_prefix}rubygem(json) >= %{json_version} +Provides: %{?scl_prefix}rdoc = %{version}-%{release} +Provides: %{?scl_prefix}ri = %{version}-%{release} +Provides: %{?scl_prefix}rubygem(rdoc) = %{version}-%{release} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygem-rdoc +RDoc produces HTML and command-line documentation for Ruby projects. RDoc +includes the 'rdoc' and 'ri' tools for generating and displaying online +documentation. + +%package doc +Summary: Documentation for %{pkg_name} +Group: Documentation +Requires: %{_bindir}/ri +BuildArch: noarch + +%description doc +This package contains documentation for %{pkg_name}. + +%package -n %{?scl_prefix}rubygem-bigdecimal +Summary: BigDecimal provides arbitrary-precision floating point decimal arithmetic +Version: %{bigdecimal_version} +Group: Development/Libraries +License: GPL+ or Artistic +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(bigdecimal) = %{version}-%{release} + +%description -n %{?scl_prefix}rubygem-bigdecimal +Ruby provides built-in support for arbitrary precision integer arithmetic. +For example: + +42**13 -> 1265437718438866624512 + +BigDecimal provides similar support for very large or very accurate floating +point numbers. Decimal arithmetic is also useful for general calculation, +because it provides the correct answers people expect–whereas normal binary +floating point arithmetic often introduces subtle errors because of the +conversion between base 10 and base 2. + +%package -n %{?scl_prefix}rubygem-did_you_mean +Summary: "Did you mean?" experience in Ruby +Version: %{did_you_mean_version} +Group: Development/Libraries +License: MIT +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(did_you_mean) = %{version}-%{release} + +%description -n %{?scl_prefix}rubygem-did_you_mean +"did you mean?" experience in Ruby: the error message will tell you the right +one when you misspelled something. + +%package -n %{?scl_prefix}rubygem-io-console +Summary: IO/Console is a simple console utilizing library +Version: %{io_console_version} +Group: Development/Libraries +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(io-console) = %{version}-%{release} + +%description -n %{?scl_prefix}rubygem-io-console +IO/Console provides very simple and portable access to console. It doesn't +provide higher layer features, such like curses and readline. + +%package -n %{?scl_prefix}rubygem-json +Summary: This is a JSON implementation as a Ruby extension in C +Version: %{json_version} +Group: Development/Libraries +# UCD: ext/json/generator/generator.c +License: (Ruby or GPLv2) and UCD +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(json) = %{version}-%{release} + +%description -n %{?scl_prefix}rubygem-json +This is a implementation of the JSON specification according to RFC 4627. +You can think of it as a low fat alternative to XML, if you want to store +data to disk or transmit it over a network rather than use a verbose +markup language. + +%package -n %{?scl_prefix}rubygem-minitest +Summary: Minitest provides a complete suite of testing facilities +Version: %{minitest_version} +Group: Development/Libraries +License: MIT +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(minitest) = %{version}-%{release} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygem-minitest +minitest/unit is a small and incredibly fast unit testing framework. + +minitest/spec is a functionally complete spec engine. + +minitest/benchmark is an awesome way to assert the performance of your +algorithms in a repeatable manner. + +minitest/mock by Steven Baker, is a beautifully tiny mock object +framework. + +minitest/pride shows pride in testing and adds coloring to your test +output. + +%package -n %{?scl_prefix}rubygem-power_assert +Summary: Power Assert for Ruby +Version: %{power_assert_version} +Group: Development/Libraries +License: Ruby or BSD +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(power_assert) = %{version}-%{release} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygem-power_assert +Power Assert shows each value of variables and method calls in the expression. +It is useful for testing, providing which value wasn't correct when the +condition is not satisfied. + +%package -n %{?scl_prefix}rubygem-psych +Summary: A libyaml wrapper for Ruby +Version: %{psych_version} +Group: Development/Libraries +License: MIT +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(psych) = %{version}-%{release} + +%description -n %{?scl_prefix}rubygem-psych +Psych is a YAML parser and emitter. Psych leverages +libyaml[http://pyyaml.org/wiki/LibYAML] for its YAML parsing and emitting +capabilities. In addition to wrapping libyaml, Psych also knows how to +serialize and de-serialize most Ruby objects to and from the YAML format. + +%package -n %{?scl_prefix}rubygem-net-telnet +Summary: Provides telnet client functionality +Version: %{net_telnet_version} +Group: Development/Libraries +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(net-telnet) = %{version}-%{release} + +%description -n %{?scl_prefix}rubygem-net-telnet +Provides telnet client functionality. + +This class also has, through delegation, all the methods of a socket object +(by default, a TCPSocket, but can be set by the Proxy option to new()). This +provides methods such as close() to end the session and sysread() to read data +directly from the host, instead of via the waitfor() mechanism. Note that if +you do use sysread() directly when in telnet mode, you should probably pass +the output through preprocess() to extract telnet command sequences. + + +# The Summary/Description fields are rather poor. +# https://github.com/test-unit/test-unit/issues/73 + +%package -n %{?scl_prefix}rubygem-test-unit +Summary: Improved version of Test::Unit bundled in Ruby 1.8.x +Version: %{test_unit_version} +Group: Development/Libraries +# lib/test/unit/diff.rb is a double license of the Ruby license and PSF license. +# lib/test-unit.rb is a dual license of the Ruby license and LGPLv2.1 or later. +License: (Ruby or BSD) and (Ruby or BSD or Python) and (Ruby or BSD or LGPLv2+) +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Requires: %{?scl_prefix}rubygem(power_assert) +Provides: %{?scl_prefix}rubygem(test-unit) = %{version}-%{release} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygem-test-unit +Ruby 1.9.x bundles minitest not Test::Unit. Test::Unit +bundled in Ruby 1.8.x had not been improved but unbundled +Test::Unit (test-unit) is improved actively. + +%package tcltk +Summary: Tcl/Tk interface for scripting language Ruby +Group: Development/Languages +Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{ruby_version} +Provides: %{?scl_prefix}ruby(tcltk) = %{ruby_version}-%{release} + +%description tcltk +Tcl/Tk interface for the object-oriented scripting language Ruby. + +%prep +%setup -q -n %{ruby_archive} + +# Remove bundled libraries to be sure they are not used. +rm -rf ext/psych/yaml +rm -rf ext/fiddle/libffi* + +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 + +# Provide an example of usage of the tapset: +cp -a %{SOURCE3} . + +# Make abrt_prelude.rb available for compilation process. The prelude must be +# available together with Ruby's source due to +# https://github.com/ruby/ruby/blob/trunk/tool/compile_prelude.rb#L26 +cp -a %{SOURCE6} . + +%build +autoconf + +%{?scl:scl enable %{scl} - << \EOF} +%configure \ + --with-rubylibprefix='%{ruby_libdir}' \ + --with-archlibdir='%{_libdir}' \ + --with-rubyarchprefix='%{ruby_libarchdir}' \ + --with-sitedir='%{ruby_sitelibdir}' \ + --with-sitearchdir='%{ruby_sitearchdir}' \ + --with-vendordir='%{ruby_vendorlibdir}' \ + --with-vendorarchdir='%{ruby_vendorarchdir}' \ + --with-rubyhdrdir='%{_includedir}' \ + --with-rubyarchhdrdir='%{_includedir}' \ + --with-sitearchhdrdir='$(sitehdrdir)/$(arch)' \ + --with-vendorarchhdrdir='$(vendorhdrdir)/$(arch)' \ + --with-rubygemsdir='%{rubygems_dir}' \ + --with-ruby-pc='%{pkg_name}.pc' \ + --disable-rpath \ + --enable-shared \ + --with-ruby-version='' \ + --enable-multiarch \ + --with-prelude=./abrt_prelude.rb \ + +%{?scl:EOF} +# Q= makes the build output more verbose and allows to check Fedora +# compiler options. +%{?scl:scl enable %{scl} - << \EOF} +make %{?_smp_mflags} COPY="cp -p" Q= +%{?scl:EOF} + +%install +rm -rf %{buildroot} +%{?scl:scl enable %{scl} - << \EOF} +make install DESTDIR=%{buildroot} +%{?scl:EOF} + +# Rename ruby/config.h to ruby/config-.h to avoid file conflicts on +# multilib systems and install config.h wrapper +mv %{buildroot}%{_includedir}/%{pkg_name}/config.h %{buildroot}%{_includedir}/%{pkg_name}/config-%{_arch}.h +install -m644 %{SOURCE7} %{buildroot}%{_includedir}/%{pkg_name}/config.h + +# Rename the ruby executable. It is replaced by RubyPick. +%{?with_rubypick:mv %{buildroot}%{_bindir}/%{pkg_name}{,-mri}} + +# Version is empty if --with-ruby-version is specified. +# http://bugs.ruby-lang.org/issues/7807 +sed -i 's/Version: \${ruby_version}/Version: %{ruby_version}/' %{buildroot}%{_libdir}/pkgconfig/%{pkg_name}.pc + +# Kill bundled certificates, as they should be part of ca-certificates. +for cert in \ + Class3PublicPrimaryCertificationAuthority.pem \ + DigiCertHighAssuranceEVRootCA.pem \ + EntrustnetSecureServerCertificationAuthority.pem \ + GeoTrustGlobalCA.pem \ + AddTrustExternalCARoot.pem \ + AddTrustExternalCARoot-2048.pem +do + rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert +done + +# Move macros file into proper place and replace the %%{pkg_name} macro, since it +# would be wrongly evaluated during build of other packages. +mkdir -p %{buildroot}%{_root_sysconfdir}/rpm +install -m 644 %{SOURCE4} %{buildroot}%{_root_sysconfdir}/rpm/macros.ruby%{?scl:.%{scl}} +sed -i "s/%%{name}/%{name}/" %{buildroot}%{_root_sysconfdir}/rpm/macros.ruby%{?scl:.%{scl}} +install -m 644 %{SOURCE5} %{buildroot}%{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} +sed -i "s/%%{name}/%{name}/" %{buildroot}%{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} + +# Install custom operating_system.rb. +mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults +sed 's/@SCL@/%{scl}/' %{SOURCE1} > %{buildroot}%{rubygems_dir}/rubygems/defaults/%{basename:%{SOURCE1}} + +# Move gems root into common direcotry, out of Ruby directory structure. +mv %{buildroot}%{ruby_libdir}/gems %{buildroot}%{gem_dir} + +# Create folders for gem binary extensions. +# TODO: These folders should go into rubygem-filesystem but how to achieve it, +# since noarch package cannot provide arch dependent subpackages? +# http://rpm.org/ticket/78 +mkdir -p %{buildroot}%{_exec_prefix}/lib{,64}/gems/%{pkg_name} + +# Move bundled rubygems to %%gem_dir and %%gem_extdir_mri +# make symlinks in ruby_stdlib for unbundled Gems, so that everything works as expected +# bigdecimal and io-console are not enough for scl +mkdir -p %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib +mv %{buildroot}%{ruby_libdir}/rdoc* %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib +mv %{buildroot}%{gem_dir}/specifications/default/rdoc-%{rdoc_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/rdoc-%{rdoc_version}/lib/rdoc.rb %{buildroot}%{ruby_libdir}/rdoc.rb +ln -s %{gem_dir}/gems/rdoc-%{rdoc_version}/lib/rdoc %{buildroot}%{ruby_libdir}/rdoc + +mkdir -p %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version} +mv %{buildroot}%{ruby_libdir}/bigdecimal %{buildroot}%{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib +mv %{buildroot}%{ruby_libarchdir}/bigdecimal.so %{buildroot}%{_libdir}/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version} +mv %{buildroot}%{gem_dir}/specifications/default/bigdecimal-%{bigdecimal_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/bigdecimal-%{bigdecimal_version}/lib/bigdecimal %{buildroot}%{ruby_libdir}/bigdecimal +ln -s %{_libdir}/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version}/bigdecimal.so %{buildroot}%{ruby_libarchdir}/bigdecimal.so + +mkdir -p %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version}/io +mv %{buildroot}%{ruby_libdir}/io %{buildroot}%{gem_dir}/gems/io-console-%{io_console_version}/lib +mv %{buildroot}%{ruby_libarchdir}/io/console.so %{buildroot}%{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version}/io +mv %{buildroot}%{gem_dir}/specifications/default/io-console-%{io_console_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/io-console-%{io_console_version}/lib/io %{buildroot}%{ruby_libdir}/io +ln -s %{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version}/io/console.so %{buildroot}%{ruby_libarchdir}/io/console.so + +mkdir -p %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/json-%{json_version} +mv %{buildroot}%{ruby_libdir}/json* %{buildroot}%{gem_dir}/gems/json-%{json_version}/lib +mv %{buildroot}%{ruby_libarchdir}/json/ %{buildroot}%{_libdir}/gems/%{pkg_name}/json-%{json_version}/ +mv %{buildroot}%{gem_dir}/specifications/default/json-%{json_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/json-%{json_version}/lib/json.rb %{buildroot}%{ruby_libdir}/json.rb +ln -s %{gem_dir}/gems/json-%{json_version}/lib/json %{buildroot}%{ruby_libdir}/json +ln -s %{_libdir}/gems/%{pkg_name}/json-%{json_version}/json/ %{buildroot}%{ruby_libarchdir}/json + +mkdir -p %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/psych-%{psych_version} +mv %{buildroot}%{ruby_libdir}/psych* %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib +mv %{buildroot}%{ruby_libarchdir}/psych.so %{buildroot}%{_libdir}/gems/%{pkg_name}/psych-%{psych_version}/ +mv %{buildroot}%{gem_dir}/specifications/default/psych-%{psych_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych %{buildroot}%{ruby_libdir}/psych +ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych.rb %{buildroot}%{ruby_libdir}/psych.rb +ln -s %{_libdir}/gems/%{pkg_name}/psych-%{psych_version}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so + +# Adjust the gemspec files so that the gems will load properly +sed -i '/^end$/ i\ + s.extensions = ["json/ext/parser.so", "json/ext/generator.so"]' %{buildroot}%{gem_dir}/specifications/json-%{json_version}.gemspec + +# Move man pages into proper location +mv %{buildroot}%{gem_dir}/gems/rake-%{rake_version}/doc/rake.1 %{buildroot}%{_mandir}/man1 + +# Install a tapset and fix up the path to the library. +mkdir -p %{buildroot}%{tapset_dir} +sed -e "s|@LIBRARY_PATH@|%{tapset_libdir}/libruby.so.%{major_minor_version}|" \ + %{SOURCE2} > %{buildroot}%{tapset_dir}/libruby.so.%{major_minor_version}.stp +# Escape '*/' in comment. +sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{tapset_dir}/libruby.so.%{major_minor_version}.stp + +# Prepare -doc subpackage file lists. +find doc -maxdepth 1 -type f ! -name '.*' ! -name '*.ja*' > .ruby-doc.en +echo 'doc/images' >> .ruby-doc.en +echo 'doc/syntax' >> .ruby-doc.en + +find doc -maxdepth 1 -type f -name '*.ja*' > .ruby-doc.ja +echo 'doc/irb' >> .ruby-doc.ja +echo 'doc/pty' >> .ruby-doc.ja + +sed -i 's/^/%doc /' .ruby-doc.* +sed -i 's/^/%lang(ja) /' .ruby-doc.ja + +%check +# Ruby software collection tests +# - Failing +# - TODO: fix +%{?scl:scl enable %scl - << \EOF +mkdir -p ./lib/rubygems/defaults +cp %{SOURCE1} ./lib/rubygems/defaults +make test-all TESTS="%{SOURCE14}" | grep '2 failures, 0 errors' || exit 1 +rm -rf ./lib/rubygems/defaults +EOF} + +# Check RubyGems version correctness. +[ "`make runruby TESTRUN_SCRIPT='bin/gem -v' | tail -1`" == '%{rubygems_version}' ] +# Check Molinillo version correctness. +[ "`make runruby TESTRUN_SCRIPT=\"-e \\\"module Gem; module Resolver; end; end; require 'rubygems/resolver/molinillo/lib/molinillo/gem_metadata'; puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \ + == '%{molinillo_version}' ] + +# test_debug(TestRubyOptions) fails due to LoadError reported in debug mode, +# when abrt.rb cannot be required (seems to be easier way then customizing +# the test suite). +touch abrt.rb + +# Check if abrt hook is required (RubyGems are disabled by default when using +# runruby, so re-enable them). +make runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE12}" + +# Check if systemtap is supported. +make runruby TESTRUN_SCRIPT=%{SOURCE13} + +DISABLE_TESTS="" + +# https://bugs.ruby-lang.org/issues/11480 +# Once seen: http://koji.fedoraproject.org/koji/taskinfo?taskID=12556650 +DISABLE_TESTS="$DISABLE_TESTS -x test_fork.rb" + +make check TESTS="-v $DISABLE_TESTS" + +%post libs -p /sbin/ldconfig + +%postun libs -p /sbin/ldconfig + +%files +%doc BSDL +%doc COPYING +%lang(ja) %doc COPYING.ja +%doc GPL +%doc LEGAL +%{_bindir}/erb +%{_bindir}/%{pkg_name}%{?with_rubypick:-mri} +%{_mandir}/man1/erb* +%{_mandir}/man1/ruby* + +# http://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries +%exclude %{_libdir}/libruby-static.a + +%files devel +%doc BSDL +%doc COPYING +%lang(ja) %doc COPYING.ja +%doc GPL +%doc LEGAL + +%config(noreplace) %{_root_sysconfdir}/rpm/macros.ruby%{?scl:.%{scl}} + +%{_includedir}/* +%{_libdir}/libruby.so +%{_libdir}/pkgconfig/%{pkg_name}.pc + +%files libs +%doc COPYING +%lang(ja) %doc COPYING.ja +%doc GPL +%doc LEGAL +%doc README.md +%doc NEWS +# Exclude /usr/local directory since it is supposed to be managed by +# local system administrator. +%exclude %{ruby_sitelibdir} +%exclude %{ruby_sitearchdir} +%dir %{ruby_vendorlibdir} +%dir %{ruby_vendorarchdir} + +# List all these files explicitly to prevent surprises +# Platform independent libraries. +%dir %{ruby_libdir} +%{ruby_libdir}/*.rb +%exclude %{ruby_libdir}/*-tk.rb +%exclude %{ruby_libdir}/irb.rb +%exclude %{ruby_libdir}/tcltk.rb +%exclude %{ruby_libdir}/tk*.rb +%exclude %{ruby_libdir}/psych.rb +%{ruby_libdir}/cgi +%{ruby_libdir}/digest +%{ruby_libdir}/drb +%{ruby_libdir}/fiddle +%exclude %{ruby_libdir}/irb +%{ruby_libdir}/matrix +%{ruby_libdir}/net +%{ruby_libdir}/openssl +%{ruby_libdir}/optparse +%{ruby_libdir}/racc +%{ruby_libdir}/rbconfig +%{ruby_libdir}/rexml +%{ruby_libdir}/rinda +%{ruby_libdir}/ripper +%{ruby_libdir}/rss +%{ruby_libdir}/shell +%{ruby_libdir}/syslog +%exclude %{ruby_libdir}/tk +%exclude %{ruby_libdir}/tkextlib +%{ruby_libdir}/unicode_normalize +%{ruby_libdir}/uri +%{ruby_libdir}/webrick +%{ruby_libdir}/xmlrpc +%{ruby_libdir}/yaml + +# Platform specific libraries. +%{_libdir}/libruby.so.* +%dir %{ruby_libarchdir} +%dir %{ruby_libarchdir}/cgi +%{ruby_libarchdir}/cgi/escape.so +%{ruby_libarchdir}/continuation.so +%{ruby_libarchdir}/coverage.so +%{ruby_libarchdir}/date_core.so +%{ruby_libarchdir}/dbm.so +%dir %{ruby_libarchdir}/digest +%{ruby_libarchdir}/digest.so +%{ruby_libarchdir}/digest/bubblebabble.so +%{ruby_libarchdir}/digest/md5.so +%{ruby_libarchdir}/digest/rmd160.so +%{ruby_libarchdir}/digest/sha1.so +%{ruby_libarchdir}/digest/sha2.so +%dir %{ruby_libarchdir}/enc +%{ruby_libarchdir}/enc/big5.so +%{ruby_libarchdir}/enc/cp949.so +%{ruby_libarchdir}/enc/emacs_mule.so +%{ruby_libarchdir}/enc/encdb.so +%{ruby_libarchdir}/enc/euc_jp.so +%{ruby_libarchdir}/enc/euc_kr.so +%{ruby_libarchdir}/enc/euc_tw.so +%{ruby_libarchdir}/enc/gb18030.so +%{ruby_libarchdir}/enc/gb2312.so +%{ruby_libarchdir}/enc/gbk.so +%{ruby_libarchdir}/enc/iso_8859_1.so +%{ruby_libarchdir}/enc/iso_8859_10.so +%{ruby_libarchdir}/enc/iso_8859_11.so +%{ruby_libarchdir}/enc/iso_8859_13.so +%{ruby_libarchdir}/enc/iso_8859_14.so +%{ruby_libarchdir}/enc/iso_8859_15.so +%{ruby_libarchdir}/enc/iso_8859_16.so +%{ruby_libarchdir}/enc/iso_8859_2.so +%{ruby_libarchdir}/enc/iso_8859_3.so +%{ruby_libarchdir}/enc/iso_8859_4.so +%{ruby_libarchdir}/enc/iso_8859_5.so +%{ruby_libarchdir}/enc/iso_8859_6.so +%{ruby_libarchdir}/enc/iso_8859_7.so +%{ruby_libarchdir}/enc/iso_8859_8.so +%{ruby_libarchdir}/enc/iso_8859_9.so +%{ruby_libarchdir}/enc/koi8_r.so +%{ruby_libarchdir}/enc/koi8_u.so +%{ruby_libarchdir}/enc/shift_jis.so +%dir %{ruby_libarchdir}/enc/trans +%{ruby_libarchdir}/enc/trans/big5.so +%{ruby_libarchdir}/enc/trans/chinese.so +%{ruby_libarchdir}/enc/trans/ebcdic.so +%{ruby_libarchdir}/enc/trans/emoji.so +%{ruby_libarchdir}/enc/trans/emoji_iso2022_kddi.so +%{ruby_libarchdir}/enc/trans/emoji_sjis_docomo.so +%{ruby_libarchdir}/enc/trans/emoji_sjis_kddi.so +%{ruby_libarchdir}/enc/trans/emoji_sjis_softbank.so +%{ruby_libarchdir}/enc/trans/escape.so +%{ruby_libarchdir}/enc/trans/gb18030.so +%{ruby_libarchdir}/enc/trans/gbk.so +%{ruby_libarchdir}/enc/trans/iso2022.so +%{ruby_libarchdir}/enc/trans/japanese.so +%{ruby_libarchdir}/enc/trans/japanese_euc.so +%{ruby_libarchdir}/enc/trans/japanese_sjis.so +%{ruby_libarchdir}/enc/trans/korean.so +%{ruby_libarchdir}/enc/trans/single_byte.so +%{ruby_libarchdir}/enc/trans/transdb.so +%{ruby_libarchdir}/enc/trans/utf8_mac.so +%{ruby_libarchdir}/enc/trans/utf_16_32.so +%{ruby_libarchdir}/enc/utf_16be.so +%{ruby_libarchdir}/enc/utf_16le.so +%{ruby_libarchdir}/enc/utf_32be.so +%{ruby_libarchdir}/enc/utf_32le.so +%{ruby_libarchdir}/enc/windows_1250.so +%{ruby_libarchdir}/enc/windows_1251.so +%{ruby_libarchdir}/enc/windows_1252.so +%{ruby_libarchdir}/enc/windows_31j.so +%{ruby_libarchdir}/etc.so +%{ruby_libarchdir}/fcntl.so +%{ruby_libarchdir}/fiber.so +%{ruby_libarchdir}/fiddle.so +%{ruby_libarchdir}/gdbm.so +%dir %{ruby_libarchdir}/io +%{ruby_libarchdir}/io/nonblock.so +%{ruby_libarchdir}/io/wait.so +%dir %{ruby_libarchdir}/mathn +%{ruby_libarchdir}/mathn/complex.so +%{ruby_libarchdir}/mathn/rational.so +%{ruby_libarchdir}/nkf.so +%{ruby_libarchdir}/objspace.so +%{ruby_libarchdir}/openssl.so +%{ruby_libarchdir}/pathname.so +%{ruby_libarchdir}/pty.so +%dir %{ruby_libarchdir}/racc +%{ruby_libarchdir}/racc/cparse.so +%dir %{ruby_libarchdir}/rbconfig +%{ruby_libarchdir}/rbconfig.rb +%{ruby_libarchdir}/rbconfig/sizeof.so +%{ruby_libarchdir}/readline.so +%{ruby_libarchdir}/ripper.so +%{ruby_libarchdir}/sdbm.so +%{ruby_libarchdir}/socket.so +%{ruby_libarchdir}/stringio.so +%{ruby_libarchdir}/strscan.so +%{ruby_libarchdir}/syslog.so +%exclude %{ruby_libarchdir}/tcltklib.so +%{ruby_libarchdir}/thread.so +%exclude %{ruby_libarchdir}/tkutil.so +%{ruby_libarchdir}/zlib.so + +%{tapset_root} + +%files -n %{?scl_prefix}rubygems +%{_bindir}/gem +%{rubygems_dir} + +# Explicitly include only RubyGems directory strucure to avoid accidentally +# packaged content. +%dir %{gem_dir} +%dir %{gem_dir}/build_info +%dir %{gem_dir}/cache +%dir %{gem_dir}/doc +%dir %{gem_dir}/extensions +%dir %{gem_dir}/gems +%dir %{gem_dir}/specifications +%dir %{gem_dir}/specifications/default +%dir %{_exec_prefix}/lib*/gems +%dir %{_exec_prefix}/lib*/gems/ruby + +%exclude %{gem_dir}/cache/* + +%files -n %{?scl_prefix}rubygems-devel +%config(noreplace) %{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} + +%files -n %{?scl_prefix}rubygem-rake +# TODO: file is missing +#%{ruby_libdir}/rake* +%{_bindir}/rake +%{gem_dir}/gems/rake-%{rake_version} +%{gem_dir}/specifications/rake-%{rake_version}.gemspec +%{_mandir}/man1/rake.1* + +%files irb +%{_bindir}/irb +%{ruby_libdir}/irb.rb +%{ruby_libdir}/irb +%{_mandir}/man1/irb.1* + +%files -n %{?scl_prefix}rubygem-rdoc +%{ruby_libdir}/rdoc* +%{_bindir}/rdoc +%{_bindir}/ri +%{gem_dir}/gems/rdoc-%{rdoc_version} +%{gem_dir}/specifications/rdoc-%{rdoc_version}.gemspec +%{_mandir}/man1/ri* + +%files doc -f .ruby-doc.en -f .ruby-doc.ja +%doc README.md +%doc ChangeLog +%doc ruby-exercise.stp +%{_datadir}/ri + +%files -n %{?scl_prefix}rubygem-bigdecimal +%{ruby_libdir}/bigdecimal +%{ruby_libarchdir}/bigdecimal.so +%{_libdir}/gems/%{pkg_name}/bigdecimal-%{bigdecimal_version} +%{gem_dir}/gems/bigdecimal-%{bigdecimal_version} +%{gem_dir}/specifications/bigdecimal-%{bigdecimal_version}.gemspec + +%files -n %{?scl_prefix}rubygem-did_you_mean +%{gem_dir}/gems/did_you_mean-%{did_you_mean_version} +%exclude %{gem_dir}/gems/did_you_mean-%{did_you_mean_version}/.* +%{gem_dir}/specifications/did_you_mean-%{did_you_mean_version}.gemspec + +%files -n %{?scl_prefix}rubygem-io-console +%{ruby_libdir}/io +%{ruby_libarchdir}/io/console.so +%{_libdir}/gems/%{pkg_name}/io-console-%{io_console_version} +%{gem_dir}/gems/io-console-%{io_console_version} +%{gem_dir}/specifications/io-console-%{io_console_version}.gemspec + +%files -n %{?scl_prefix}rubygem-json +%{ruby_libdir}/json* +%{ruby_libarchdir}/json* +%{_libdir}/gems/%{pkg_name}/json-%{json_version} +%{gem_dir}/gems/json-%{json_version} +%{gem_dir}/specifications/json-%{json_version}.gemspec + +%files -n %{?scl_prefix}rubygem-minitest +%{gem_dir}/gems/minitest-%{minitest_version} +%exclude %{gem_dir}/gems/minitest-%{minitest_version}/.* +%{gem_dir}/specifications/minitest-%{minitest_version}.gemspec + +%files -n %{?scl_prefix}rubygem-power_assert +%{gem_dir}/gems/power_assert-%{power_assert_version} +%exclude %{gem_dir}/gems/power_assert-%{power_assert_version}/.* +%{gem_dir}/specifications/power_assert-%{power_assert_version}.gemspec + +%files -n %{?scl_prefix}rubygem-psych +%{ruby_libdir}/psych +%{ruby_libdir}/psych.rb +%{ruby_libarchdir}/psych.so +%{_libdir}/gems/%{pkg_name}/psych-%{psych_version} +%{gem_dir}/gems/psych-%{psych_version} +%{gem_dir}/specifications/psych-%{psych_version}.gemspec + +%files -n %{?scl_prefix}rubygem-net-telnet +%{gem_dir}/gems/net-telnet-%{net_telnet_version} +%exclude %{gem_dir}/gems/net-telnet-%{net_telnet_version}/.* +%{gem_dir}/specifications/net-telnet-%{net_telnet_version}.gemspec + +%files -n %{?scl_prefix}rubygem-test-unit +%{gem_dir}/gems/test-unit-%{test_unit_version} +%{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec + +%files tcltk +%{ruby_libdir}/*-tk.rb +%{ruby_libdir}/tcltk.rb +%{ruby_libdir}/tk*.rb +%{ruby_libarchdir}/tcltklib.so +%{ruby_libarchdir}/tkutil.so +%{ruby_libdir}/tk +%{ruby_libdir}/tkextlib + +%changelog +* Wed Feb 17 2016 Pavel Valena - 2.3.0-55 +- Add scl macros + +* Wed Feb 3 2016 Peter Robinson 2.3.0-54 +- Add rubypick and rubygems requires to ruby-devel to deal with BuildRequires + +* Fri Jan 15 2016 Mamoru TASAKA - 2.3.0-53 +- Backport trunk@53455 to make ruby-qt build + +* Wed Jan 06 2016 Vít Ondruch - 2.3.0-52 +- Explicitly require RDoc, since weak dependencies are ignored by default. + +* Wed Jan 06 2016 Vít Ondruch - 2.3.0-51 +- Load RubyGems prior ABRT hook to properly rescue RubyGems exceptions. + +* Mon Jan 04 2016 Vít Ondruch - 2.3.0-50 +- Upgrade to Ruby 2.3.0. +- Move gemified net-telnet into subpackage. +- Add did_you_mean subpackage. +- Add virtual provides for CCAN copylibs. +- Use weak dependencies. + +* Tue Dec 22 2015 Pavel Valena - 2.3.0-0.7.preview2 +- Add systemtap tests. + +* Mon Dec 21 2015 Vít Ondruch - 2.2.4-47 +- Update to Ruby 2.2.4. + +* Thu Dec 10 2015 Vít Ondruch - 2.2.3-46 +- Fix ABRT hook autoloading. + +* Fri Sep 04 2015 Michal Toman - 2.2.3-45 +- Add support for MIPS architecture to config.h + +* Tue Sep 01 2015 Vít Ondruch - 2.2.3-44 +- Update to Ruby 2.2.3. + +* Tue Jun 23 2015 Vít Ondruch - 2.2.2-43 +- Fix for "dh key too small" error of OpenSSL 1.0.2+. + +* Thu Jun 18 2015 Fedora Release Engineering - 2.2.2-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 10 2015 Vít Ondruch - 2.2.2-41 +- Fix the git BR following the git package split. + +* Mon May 04 2015 Vít Ondruch - 2.2.2-40 +- Fix upgrade path (rubygem-io-console's version was recently bumped in F21 + and makes the higher release to win). + +* Tue Apr 14 2015 Josef Stribny - 2.2.2-11 +- Bump release because of gems + +* Tue Apr 14 2015 Josef Stribny - 2.2.2-1 +- Update to Ruby 2.2.2 + +* Fri Mar 20 2015 Vít Ondruch - 2.2.1-10 +- Fix libruby.so versions in SystemTap scripts (rhbz#1202232). + +* Wed Mar 04 2015 Vít Ondruch - 2.2.1-9 +- Update to Ruby 2.2.1. + +* Sat Feb 21 2015 Till Maas - 2.2.0-8 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Thu Feb 05 2015 Vít Ondruch - 2.2.0-7 +- Fix directory ownership. + +* Wed Feb 04 2015 Vít Ondruch - 2.2.0-6 +- Initialize all load paths in operating_system.rb. + +* Tue Feb 03 2015 Vít Ondruch - 2.2.0-5 +- Make operating_system.rb more robust. +- Add RubyGems stub headers for bundled gems. + +* Thu Jan 29 2015 Vít Ondruch - 2.2.0-4 +- Add missing rubygem-test-unit dependency on rubygem-power_assert. + +* Thu Jan 15 2015 Mamoru TASAKA - 2.2.0-3 +- Bump release to avoid EVR issue on rubygem-test-unit + +* Fri Jan 02 2015 Vít Ondruch - 2.2.0-1 +- Upgrade to Ruby 2.2.0. +- Explicitly list RubyGems directories to avoid accidentaly packaged content. +- Split test-unit and power_assert gems into separate sub-packages. +- Drop libdb dependency in favor of gdbm. + +* Fri Dec 26 2014 Orion Poplwski - 2.1.5-26 +- Disbable sse2 on i668 (bug #1101811) + +* Thu Nov 20 2014 Vít Ondruch - 2.1.5-25 +- Update to Ruby 2.1.5. + +* Fri Oct 31 2014 Vít Ondruch - 2.1.4-24 +- Update to Ruby 2.1.4. +- Include only vendor directories, not their content (rhbz#1114071). +- Fix "invalid regex" warning for non-rubygem packages (rhbz#1154067). +- Use load macro introduced in RPM 4.12. + +* Mon Aug 18 2014 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Jun 24 2014 Peter Robinson 2.1.2-23 +- Fix FTBFS +- Specify tcl/tk 8.6 +- Add upstream patch to build with libffi 3.1 + +* Sun Jun 08 2014 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 21 2014 Jaroslav Škarvada +- Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 + +* Tue May 20 2014 Josef Stribny - 2.1.2-21 +- Update to Ruby 2.1.2 + +* Tue May 06 2014 Vít Ondruch - 2.1.1-20 +- Remove useless exclude (rhbz#1065897). +- Extract load macro into external file and include it. +- Kill bundled certificates. + +* Wed Apr 23 2014 Vít Ondruch - 2.1.1-19 +- Correctly expand $(prefix) in some Makefiles, e.g. eruby. + +* Tue Apr 08 2014 Vít Ondruch - 2.1.1-18 +- Update to Ruby 2.1.1. +- Revert regression of Hash#reject. + +* Mon Mar 03 2014 Vít Ondruch - 2.1.0-19 +- Add RPM dependency generators for RubyGems. + +* Mon Feb 10 2014 Josef Stribny - 2.1.0-19 +- Don't link cert.pem explicitely + +* Wed Jan 15 2014 Vít Ondruch - 2.1.0-18 +- Don't generate documentation on unexpected places. +- Detect if rubygems are running under rpmbuild and install gem binary + extensions into appropriate place. +- Add support for ppc64le arch (rhbz#1053263). +- Re-enable some test cases, which are passing now with Kernel 3.12.8+. +- Backport fix for floating point issues on i686. + +* Thu Jan 02 2014 Vít Ondruch - 2.1.0-17 +- Upgrade to Ruby 2.1.0. +- Move RPM macros into /usr/lib/rpm/macros.d directory. +- Allow MD5 in OpenSSL for tests. + +* Tue Jul 30 2013 Vít Ondruch - 2.0.0.247-15 +- Move Psych symlinks to vendor dir, to prevent F18 -> F19 upgrade issues + (rhbz#988490). + +* Mon Jul 15 2013 Vít Ondruch - 2.0.0.247-14 +- Add forgotten psych.rb link into rubygem-psych to fix "private method `load' + called for Psych:Moduler" error (rhbz#979133). + +* Thu Jul 11 2013 Vít Ondruch - 2.0.0.247-13 +- Fixes multilib conlicts of .gemspec files. +- Make symlinks for psych gem to ruby stdlib dirs (rhbz#979133). +- Use system-wide cert.pem. + +* Thu Jul 04 2013 Vít Ondruch - 2.0.0.247-12 +- Fix RubyGems search paths when building gems with native extension + (rhbz#979133). + +* Tue Jul 02 2013 Vít Ondruch - 2.0.0.247-11 +- Fix RubyGems version. + +* Tue Jul 02 2013 Vít Ondruch - 2.0.0.247-10 +- Better support for build without configuration (rhbz#977941). + +* Mon Jul 01 2013 Vít Ondruch - 2.0.0.247-9 +- Update to Ruby 2.0.0-p247 (rhbz#979605). +- Fix CVE-2013-4073. +- Fix for wrong makefiles created by mkmf (rhbz#921650). +- Add support for ABRT autoloading. + +* Fri May 17 2013 Vít Ondruch - 2.0.0.195-8 +- Update to Ruby 2.0.0-p195 (rhbz#917374). +- Fix object taint bypassing in DL and Fiddle (CVE-2013-2065). +- Fix build against OpenSSL with enabled ECC curves. +- Add aarch64 support (rhbz#926463). + +* Fri Apr 19 2013 Vít Ondruch - 2.0.0.0-7 +- Macro definition moved into macros.ruby and macros.rubygems files. +- Added filtering macros. +- Filter automatically generated provides of private libraries (rhbz#947408). + +* Fri Mar 22 2013 Vít Ondruch - 2.0.0.0-6 +- Fix RbConfig::CONFIG['exec_prefix'] returns empty string (rhbz#924851). + +* Thu Mar 21 2013 Vít Ondruch - 2.0.0.0-5 +- Make Ruby buildable without rubypick. +- Prevent random test failures. + +* Fri Mar 08 2013 Mamoru TASAKA - 2.0.0.0-4 +- Don't mark rpm config file as %%config (fpc#259) + +* Tue Mar 05 2013 Vít Ondruch - 2.0.0.0-3 +- Avoid "method redefined;" warnings due to modified operating_system.rb. +- Fix strange paths created during build of binary gems. + +* Mon Feb 25 2013 Vít Ondruch - 2.0.0.0-2 +- Prevent squash of %%gem_install with following line. + +* Mon Feb 25 2013 Vít Ondruch - 2.0.0.0-1 +- Update to Ruby 2.0.0-p0. +- Change %%{ruby_extdir} to %%{ruby_extdir_mri} in preparation for better + JRuby support. + +* Mon Feb 25 2013 Mamoru TASAKA - 2.0.0.0-0.3.r39387 +- Move test-unit.gemspec to -libs subpackage for now because rubygems + 2.0.0 does not create this + +* Fri Feb 22 2013 Vít Ondruch - 2.0.0.0-0.2.r39387 +- Fix issues with wrong value of Rubygem's shebang introduced in r39267. + +* Fri Feb 22 2013 Vít Ondruch - 2.0.0.0-0.1.r39387 +- Upgrade to Ruby 2.0.0 (r39387). +- Introduce %%gem_install macro. +- Build against libdb instead of libdb4 (rhbz#894022). +- Move native extensions from exts to ruby directory. +- Enable most of the PPC test suite. +- Change ruby(abi) -> ruby(release). +- Rename ruby executable to ruby-mri, to be prepared for RubyPick. +- Add ruby(runtime_executable) virtual provide, which is later used + by RubyPick. +- RDoc now depends on JSON. +- Try to make -doc subpackage noarch again, since the new RDoc should resolve + the arch dependent issues (https://github.com/rdoc/rdoc/issues/71). +- Enable SystemTap support. +- Add TapSet for Ruby. +- Split Psych into rubygem-psych subpackage. + +* Mon Feb 11 2013 Mamoru TASAKA - 1.9.3.385-28 +- Update to 1.9.3 p385 + +* Sat Jan 19 2013 Mamoru TASAKA - 1.9.3.374-27 +- Update to 1.9.3 p374 +- Fix provided variables in pkgconfig (bug 789532: + Vít Ondruch ) + +* Fri Jan 18 2013 Mamoru TASAKA - 1.9.3.362-26 +- Provide non-versioned pkgconfig file (bug 789532) +- Use db5 on F-19 (bug 894022) + +* Wed Jan 16 2013 Mamoru TASAKA - 1.9.3.362-25 +- Backport fix for the upstream PR7629, save the proc made from the given block + (bug 895173) + +* Wed Jan 2 2013 Mamoru TASAKA - 1.9.3.362-24 +- Update to 1.9.3.362 + +* Mon Dec 03 2012 Jaromir Capik - 1.9.3.327-23 +- Skipping test_parse.rb (fails on ARM at line 787) +- http://bugs.ruby-lang.org/issues/6899 + +* Sun Nov 11 2012 Mamoru TASAKA - 1.9.3.327-23 +- Skip test_str_crypt (on rawhide) for now (upstream bug 7312) + +* Sat Nov 10 2012 Mamoru TASAKA - 1.9.3.327-22 +- Ignore some network related tests + +* Sat Nov 10 2012 Mamoru TASAKA - 1.9.3.327-21 +- Update to 1.9.3.327 +- Fix Hash-flooding DoS vulnerability on MurmurHash function + (CVE-2012-5371) + +* Sat Oct 13 2012 Mamoru TASAKA - 1.9.3.286-19 +- Update to 1.9.3 p286 +- Don't create files when NUL-containing path name is passed + (bug 865940, CVE-2012-4522) + +* Thu Oct 04 2012 Mamoru Tasaka - 1.9.3.194-18 +- Patch from trunk for CVE-2012-4464, CVE-2012-4466 + +* Thu Sep 06 2012 Vít Ondruch - 1.9.3.194-17 +- Split documentation into -doc subpackage (rhbz#854418). + +* Tue Aug 14 2012 Vít Ondruch - 1.9.3.194-16 +- Revert the dependency of ruby-libs on rubygems (rhbz#845011, rhbz#847482). + +* Wed Aug 01 2012 Vít Ondruch - 1.9.3.194-15 +- ruby-libs must require rubygems (rhbz#845011). + +* Sat Jul 21 2012 Fedora Release Engineering - 1.9.3.194-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jun 11 2012 Bohuslav Kabrda - 1.9.3.194-13 +- Make the bigdecimal gem a runtime dependency of Ruby. + +* Mon Jun 11 2012 Bohuslav Kabrda - 1.9.3.194-12 +- Make symlinks for bigdecimal and io-console gems to ruby stdlib dirs (RHBZ 829209). + +* Tue May 29 2012 Bohuslav Kabrda - 1.9.3.194-11 +- Fix license to contain Public Domain. +- macros.ruby now contains unexpanded macros. + +* Sun Apr 22 2012 Mamoru Tasaka - 1.9.3.194-10.1 +- Bump release + +* Fri Apr 20 2012 Vít Ondruch - 1.9.3.194-1 +- Update to Ruby 1.9.3-p194. + +* Mon Apr 09 2012 Karsten Hopp 1.9.3.125-3 +- disable check on ppc(64), RH bugzilla 803698 + +* Wed Feb 29 2012 Peter Robinson - 1.9.3.125-2 +- Temporarily disable make check on ARM until it's fixed upstream. Tracked in RHBZ 789410 + +* Mon Feb 20 2012 Vít Ondruch - 1.9.3.125-1 +- Upgrade to Ruby 1.9.3-p125. + +* Sun Jan 29 2012 Mamoru Tasaka - 1.9.3.0-7 +- Make mkmf.rb verbose by default + +* Thu Jan 26 2012 Vít Ondruch - 1.9.3.0-6 +- Relax dependencies to allow external updates of bundled gems. + +* Wed Jan 18 2012 Vít Ondruch - 1.9.3.0-5 +- Initial release of Ruby 1.9.3. +- Add rubygems dependency on io-console for user interactions. +- Gems license clarification. + +* Tue Jan 17 2012 Vít Ondruch - 1.9.3.0-4 +- Bundled gems moved into dedicated directories and subpackages. +- Create and own RubyGems directories for binary extensions. +- Fix build with GCC 4.7. + +* Mon Jan 16 2012 Vít Ondruch - 1.9.3.0-3 +- Fix RHEL build. +- Fixed directory ownership. +- Verose build output. + +* Sun Jan 15 2012 Vít Ondruch - 1.9.3.0-2 +- Install RubyGems outside of Ruby directory structure. +- RubyGems has not its own -devel subpackage. +- Enhanced macros.ruby and macros.rubygems. +- All tests are green now (bkabrda). + +* Sat Jan 14 2012 Vít Ondruch - 1.9.3.0-1 +- Initial package + +* Sat Jan 14 2012 Fedora Release Engineering - 1.8.7.357-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Dec 29 2011 Mamoru Tasaka - 1.8.7.357-1 +- Update to 1.8.7p357 +- Randomize hash on process startup (CVE-2011-4815, bug 750564) + +* Fri Dec 23 2011 Dennis Gilmore - 1.8.7.352-2 +- dont normalise arm cpus to arm +- there is something weird about how ruby choses where to put bits + +* Thu Nov 17 2011 Mamoru Tasaka - 1.8.7.352-3 +- F-17: kill gdbm support for now due to licensing compatibility issue + +* Sat Oct 1 2011 Mamoru Tasaka - 1.8.7.352-2 +- F-17: rebuild against new gdbm + +* Sat Jul 16 2011 Mamoru Tasaka - 1.8.7.352-1 +- Update to 1.8.7 p352 +- CVE-2011-2686 is fixed in this version (bug 722415) +- Update ext/tk to the latest git +- Remove duplicate path entry (bug 718695) + +* Thu Jul 14 2011 Mamoru Tasaka - 1.8.7.334-4 +- Once fix FTBFS (bug 716021) + +* Mon Jul 11 2011 Dennis Gilmore - 1.8.7.334-3 +- normalise arm cpus to arm + +* Mon May 30 2011 Mamoru Tasaka - 1.8.7.334-2 +- Own %%{_normalized_cpu}-%%{_target_os} directory (bug 708816) + +* Sat Feb 19 2011 Mamoru Tasaka - 1.8.7.334-1 +- Update to 1.8.7 p334 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.8.7.330-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Jan 02 2011 Dennis Gilmore - 1.8.7.330-2 +- nomalise the 32 bit sparc archs to sparc + +* Sun Dec 26 2010 Mamoru Tasaka - 1.8.7.330-1 +- Update to 1.8.7 p330 +- ext/tk updated to the newest header + +* Thu Nov 4 2010 Mamoru Tasaka - 1.8.7.302-2 +- Avoid multilib conflict on -libs subpackage (bug 649174) + +* Mon Aug 23 2010 Mamoru Tasaka - 1.8.7.302-1 +- Update to 1.8.7.302 +- CVE-2010-0541 (bug 587731) is fixed in this version +- Update ext/tk to the latest head + +* Mon Aug 2 2010 Mamoru Tasaka - 1.8.7.299-5 +- More cleanup of spec file, expecially for rpmlint issue +- build ri files in %%build + +* Mon Jul 26 2010 Mamoru Tasaka - 1.8.7.299-4 +- Cleanup spec file +- Make -irb, -rdoc subpackage noarch +- Make dependencies between arch-dependent subpackages isa specific +- Improve sample documentation gathering + +* Mon Jul 12 2010 Mohammed Morsi - 1.8.7.299-3 +- updated packaged based on feedback (from mtasaka) +- added comments to all patches / sources +- obsoleted ruby-mode, as it's now provided by the emacs package itself +- readded missing documentation +- various small compatability/regression fixes + +* Tue Jul 06 2010 Mohammed Morsi - 1.8.7.299-2 +- readded bits to pull tk package from upstream source branch +- removed unecessary .tk.old dir +- renamed macros which may cause confusion, removed unused ones + +* Thu Jun 24 2010 Mohammed Morsi - 1.8.7.299-1 +- integrate more of jmeyering's and mtaska's feedback +- removed emacs bits that are now shipped with the emacs package +- various patch and spec cleanup +- rebased to ruby 1.8.7 patch 299, removed patches no longer needed: + ruby-1.8.7-openssl-1.0.patch, ruby-1.8.7-rb_gc_guard_ptr-optimization.patch + +* Wed Jun 23 2010 Mohammed Morsi - 1.8.7.249-5 +- Various fixes + +* Wed Jun 23 2010 Mohammed Morsi - 1.8.7.249-4 +- Fixed incorrect paths in 1.8.7 rpm + +* Tue Jun 22 2010 Mohammed Morsi - 1.8.7.249-3 +- Integrated Jim Meyering's feedback and changes in to: +- remove trailing blanks +- placate rpmlint +- ruby_* definitions: do not use trailing slashes in directory names +- _normalized_cpu: simplify definition + +* Mon Jun 21 2010 Mohammed Morsi - 1.8.7.249-2 +- Integrate mtasaka's feedback and changes +- patch101 ruby_1_8_7-rb_gc_guard_ptr-optimization.patch + +* Tue Jun 15 2010 Mohammed Morsi - 1.8.7.249-1 +- Initial Ruby 1.8.7 specfile + +* Wed May 19 2010 Mamoru Tasaka - 1.8.6.399-5 +- Retry for bug 559158, Simplify the OpenSSL::Digest class + pull more change commits from ruby_1_8 branch + +* Mon May 17 2010 Mamoru Tasaka - 1.8.6.399-4 +- Patch36 (ruby-1.8.x-RHASH_SIZE-rb_hash_lookup-def.patch) + also backport rb_hash_lookup definition (bug 592936) + +* Thu May 13 2010 Mamoru Tasaka - 1.8.6.399-3 +- ruby-1.8.x-null-class-must-be-Qnil.patch (bug 530407) +- Recreate some patches using upstream svn when available, and + add some comments for patches + +* Tue May 11 2010 Mamoru Tasaka - 1.8.6.399-2 +- tcltk: Give up using potentially unmaintained ruby_1_8_6 branch + and instead completely replace with ruby_1_8 branch head + (at this time, using rev 27738) + (seems to fix 560053, 590503) +- Fix Japanese encoding strings under ruby-tcltk/ext/tk/sample/ + +* Tue Apr 27 2010 Mamoru Tasaka - 1.8.6.399-1 +- Update to 1.8.6 p 399 (bug 579675) +- Patch to fix gc bug causing open4 crash (bug 580993) + +* Fri Mar 12 2010 Mamoru Tasaka - 1.8.6.388-9 +- F-14: rebuild against new gdbm + +* Thu Jan 28 2010 Mamoru Tasaka +- Once revert the previous change (patch34) + +* Wed Jan 27 2010 Jeroen van Meeuwen - 1.8.6.388-8 +- Backport openssl/digest functions providing digest and hexdigest functions + directly in OpenSSL::Digest.methods +- Make sure that Red Hat people version their changelog entries +- This is actually release #1, but now needs to be release #7 + +* Mon Jan 18 2010 Akira TAGOH - 1.8.6.388-1 +- Add conditional for RHEL. + +* Wed Jan 13 2010 Mamoru Tasaka - 1.8.6.383-6 +- CVE-2009-4492 ruby WEBrick log escape sequence (bug 554485) + +* Wed Dec 9 2009 Mamoru Tasaka - 1.8.6.383-5 +- Change mkmf.rb to use LIBRUBYARG_SHARED so that have_library() works + without libruby-static.a (bug 428384) +- And move libruby-static.a to -static subpackage + +* Thu Oct 29 2009 Mamoru Tasaka - 1.8.6.383-4 +- Use bison to regenerate parse.c to keep the original format of error + messages (bug 530275 comment 4) + +* Sun Oct 25 2009 Mamoru Tasaka - 1.8.6.383-3 +- Patch so that irb saves its history (bug 518584, ruby issue 1556) + +* Sat Oct 24 2009 Mamoru Tasaka - 1.8.6.383-2 +- Update to 1.8.6 patchlevel 383 (bug 520063) + +* Wed Oct 14 2009 Mamoru Tasaka - 1.8.6.369-5 +- Much better idea for Patch31 provided by Akira TAGOH + +* Wed Oct 14 2009 Mamoru Tasaka - 1.8.6.369-4 +- Fix the search path of ri command for ri manuals installed with gem + (bug 528787) + +* Wed Aug 26 2009 Tomas Mraz - 1.8.6.369-3 +- Rebuild against new openssl + +* Thu Jul 23 2009 Mamoru Tasaka - 1.8.6.369-2 +- Make sure that readline.so is linked against readline 5 because + Ruby is under GPLv2 + +* Sat Jun 20 2009 Jeroen van Meeuwen - 1.8.6.369-1 +- New patchlevel fixing CVE-2009-1904 +- Fix directory on ARM (#506233, Kedar Sovani) + +* Sun May 31 2009 Jeroen van Meeuwen - 1.8.6.368-1 +- New upstream release (p368) + +* Sat Apr 11 2009 Mamoru Tasaka - 1.8.6.287-8 +- Merge Review fix (#226381) + +* Wed Mar 18 2009 Jeroen van Meeuwen - 1.8.6.287-7 +- Fix regression in CVE-2008-3790 (#485383) + +* Mon Mar 16 2009 Mamoru Tasaka - 1.8.6.287-6 +- Again use -O2 optimization level +- i586 should search i386-linux directory (on <= F-11) + +* Thu Mar 05 2009 Jeroen van Meeuwen - 1.8.6.287-5 +- Rebuild for gcc4.4 + +* Fri Feb 27 2009 Jeroen van Meeuwen - 1.8.6.287-3 +- CVE-2008-5189: CGI header injection. + +* Wed Oct 8 2008 Akira TAGOH - 1.8.6.287-2 +- CVE-2008-3790: DoS vulnerability in the REXML module. + +* Sat Aug 23 2008 Akira TAGOH - 1.8.6.287-1 +- New upstream release. +- Security fixes. + - CVE-2008-3655: Ruby does not properly restrict access to critical + variables and methods at various safe levels. + - CVE-2008-3656: DoS vulnerability in WEBrick. + - CVE-2008-3657: Lack of taintness check in dl. + - CVE-2008-1447: DNS spoofing vulnerability in resolv.rb. + - CVE-2008-3443: Memory allocation failure in Ruby regex engine. +- Remove the unnecessary backported patches. + +* Thu Jul 10 2008 Tom "spot" Callaway - 1.8.6.230-5 +- rebuild against db4-4.7 + +* Tue Jul 1 2008 Akira TAGOH - 1.8.6.230-4 +- Backported from upstream SVN to fix a segfault issue with Array#fill. + +* Mon Jun 30 2008 Akira TAGOH - 1.8.6.230-3 +- Backported from upstream SVN to fix a segfault issue. (#452825) +- Backported from upstream SVN to fix an integer overflow in rb_ary_fill. + +* Wed Jun 25 2008 Akira TAGOH - 1.8.6.230-2 +- Fix a segfault issue. (#452810) + +* Tue Jun 24 2008 Akira TAGOH - 1.8.6.230-1 +- New upstream release. +- Security fixes. (#452295) + - CVE-2008-1891: WEBrick CGI source disclosure. + - CVE-2008-2662: Integer overflow in rb_str_buf_append(). + - CVE-2008-2663: Integer overflow in rb_ary_store(). + - CVE-2008-2664: Unsafe use of alloca in rb_str_format(). + - CVE-2008-2725: Integer overflow in rb_ary_splice(). + - CVE-2008-2726: Integer overflow in rb_ary_splice(). +- ruby-1.8.6.111-CVE-2007-5162.patch: removed. +- Build ruby-mode package for all archtectures. + +* Tue Mar 4 2008 Akira TAGOH - 1.8.6.114-1 +- Security fix for CVE-2008-1145. +- Improve a spec file. (#226381) + - Correct License tag. + - Fix a timestamp issue. + - Own a arch-specific directory. + +* Tue Feb 19 2008 Fedora Release Engineering - 1.8.6.111-9 +- Autorebuild for GCC 4.3 + +* Tue Feb 19 2008 Akira TAGOH - 1.8.6.111-8 +- Rebuild for gcc-4.3. + +* Tue Jan 15 2008 Akira TAGOH - 1.8.6.111-7 +- Revert the change of libruby-static.a. (#428384) + +* Fri Jan 11 2008 Akira TAGOH - 1.8.6.111-6 +- Fix an unnecessary replacement for shebang. (#426835) + +* Fri Jan 4 2008 Akira TAGOH - 1.8.6.111-5 +- Rebuild. + +* Fri Dec 28 2007 Akira TAGOH - 1.8.6.111-4 +- Clean up again. + +* Fri Dec 21 2007 Akira TAGOH - 1.8.6.111-3 +- Clean up the spec file. +- Remove ruby-man-1.4.6 stuff. this is entirely the out-dated document. + this could be replaced by ri. +- Disable the static library building. + +* Tue Dec 04 2007 Release Engineering - 1.8.6.111-2 + - Rebuild for openssl bump + +* Wed Oct 31 2007 Akira TAGOH +- Fix the dead link. + +* Mon Oct 29 2007 Akira TAGOH - 1.8.6.111-1 +- New upstream release. +- ruby-1.8.6.111-CVE-2007-5162.patch: Update a bit with backporting the changes + at trunk to enable the fix without any modifications on the users' scripts. + Note that Net::HTTP#enable_post_connection_check isn't available anymore. + If you want to disable this post-check, you should give OpenSSL::SSL::VERIFY_NONE + to Net::HTTP#verify_mode= instead of. + +* Mon Oct 15 2007 Akira TAGOH - 1.8.6.110-2 +- Enable pthread support for ppc too. (#201452) +- Fix unexpected dependencies appears in ruby-libs. (#253325) + +* Wed Oct 10 2007 Akira TAGOH - 1.8.6.110-1 +- New upstream release. + - ruby-r12567.patch: removed. +- ruby-1.8.6-CVE-2007-5162.patch: security fix for Net::HTTP that is + insufficient verification of SSL certificate. + +* Thu Aug 23 2007 Akira TAGOH - 1.8.6.36-4 +- Rebuild + +* Fri Aug 10 2007 Akira TAGOH +- Update License tag. + +* Mon Jun 25 2007 Akira TAGOH - 1.8.6.36-3 +- ruby-r12567.patch: backport patch from upstream svn to get rid of + the unnecessary declarations. (#245446) + +* Wed Jun 20 2007 Akira TAGOH - 1.8.6.36-2 +- New upstream release. + - Fix Etc::getgrgid to get the correct gid as requested. (#236647) + +* Wed Mar 28 2007 Akira TAGOH - 1.8.6-2 +- Fix search path breakage. (#234029) + +* Thu Mar 15 2007 Akira TAGOH - 1.8.6-1 +- New upstream release. +- clean up a spec file. + +* Tue Feb 13 2007 Akira TAGOH - 1.8.5.12-2 +- Rebuild + +* Mon Feb 5 2007 Akira TAGOH - 1.8.5.12-1 +- New upstream release. + +* Mon Dec 11 2006 Akira TAGOH - 1.8.5.2-1 +- security fix release. + +* Fri Oct 27 2006 Akira TAGOH - 1.8.5-4 +- security fix release. +- ruby-1.8.5-cgi-CVE-2006-5467.patch: fix a CGI multipart parsing bug that + causes the denial of service. (#212396) + +* Sun Oct 01 2006 Jesse Keating - 1.8.5-3 +- rebuilt for unwind info generation, broken in gcc-4.1.1-21 + +* Tue Sep 26 2006 Akira TAGOH - 1.8.5-2 +- fixed rbconfig.rb to refer to DESTDIR for sitearchdir. (#207311) + +* Mon Aug 28 2006 Akira TAGOH - 1.8.5-1 +- New upstream release. +- removed the unnecessary patches: + - ruby-1.8.4-no-eaccess.patch + - ruby-1.8.4-64bit-pack.patch + - ruby-1.8.4-fix-insecure-dir-operation.patch + - ruby-1.8.4-fix-insecure-regexp-modification.patch + - ruby-1.8.4-fix-alias-safe-level.patch +- build with --enable-pthread except on ppc. +- ruby-1.8.5-hash-memory-leak.patch: backported from CVS to fix a memory leak + on Hash. [ruby-talk:211233] + +* Mon Aug 7 2006 Akira TAGOH - 1.8.4-12 +- owns sitearchdir. (#201208) + +* Thu Jul 20 2006 Akira TAGOH - 1.8.4-11 +- security fixes [CVE-2006-3694] + - ruby-1.8.4-fix-insecure-dir-operation.patch: + - ruby-1.8.4-fix-insecure-regexp-modification.patch: fixed the insecure + operations in the certain safe-level restrictions. (#199538) + - ruby-1.8.4-fix-alias-safe-level.patch: fixed to not bypass the certain + safe-level restrictions. (#199543) + +* Wed Jul 12 2006 Jesse Keating - 1.8.4-10.fc6.1 +- rebuild + +* Mon Jun 19 2006 Akira TAGOH - 1.8.4-10 +- fixed the wrong file list again. moved tcltk library into ruby-tcltk. + (#195872) + +* Thu Jun 8 2006 Akira TAGOH - 1.8.4-8 +- ruby-deprecated-sitelib-search-path.patch: correct the order of search path. + +* Wed Jun 7 2006 Akira TAGOH - 1.8.4-7 +- exclude ppc64 to make ruby-mode package. right now emacs.ppc64 isn't provided + and buildsys became much stricter. +- ruby-deprecated-sitelib-search-path.patch: applied to add more search path + for backward compatiblity. +- added byacc to BuildReq. (#194161) + +* Wed May 17 2006 Akira TAGOH - 1.8.4-6 +- ruby-deprecated-search-path.patch: added the deprecated installation paths + to the search path for the backward compatibility. +- added a Provides: ruby(abi) to ruby-libs. +- ruby-1.8.4-64bit-pack.patch: backport patch from upstream to fix unpack("l") + not working on 64bit arch and integer overflow on template "w". (#189350) +- updated License tag to be more comfortable, and with a pointer to get more + details, like Python package does. (#179933) +- clean up. + +* Wed Apr 19 2006 Akira TAGOH +- ruby-rubyprefix.patch: moved all arch-independent modules under /usr/lib/ruby + and keep arch-dependent modules under /usr/lib64/ruby for 64bit archs. + so 'rubylibdir', 'sitelibdir' and 'sitedir' in Config::CONFIG points to + the kind of /usr/lib/ruby now. (#184199) + +* Mon Apr 17 2006 Akira TAGOH - 1.8.4-4 +- correct sitelibdir. (#184198) + +* Fri Feb 10 2006 Jesse Keating - 1.8.4-3.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1.8.4-3.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Feb 6 2006 Akira TAGOH - 1.8.4-3 +- ruby-1.8.4-no-eaccess.patch: backported from ruby CVS to avoid conflict + between newer glibc. (#179835) + +* Wed Jan 4 2006 Akira TAGOH - 1.8.4-2 +- ruby-tcltk-multilib.patch: fixed a typo. + +* Tue Dec 27 2005 Akira TAGOH - 1.8.4-1 +- New upstream release. + - fixed a missing return statement. (#140833) + - fixed an use of uninitialized variable. (#144890) + +* Fri Dec 16 2005 Akira TAGOH - 1.8.4-0.4.preview2 +- updates to 1.8.4-preview2. +- renamed the packages to ruby-* (#175765) + - irb -> ruby-irb + - rdoc -> ruby-rdoc + - ri -> ruby-ri +- added tcl-devel and tk-devel into BuildRequires. + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Nov 10 2005 Akira TAGOH - 1.8.4-0.3.preview1 +- rebuilt against the latest openssl. + +* Tue Nov 1 2005 Akira TAGOH - 1.8.4-0.2.preview1 +- build-deps libX11-devel instead of xorg-x11-devel. + +* Mon Oct 31 2005 Akira TAGOH - 1.8.4-0.1.preview1 +- New upstream release. +- ruby-1.8.2-strscan-memset.patch: removed because it's no longer needed. + +* Tue Oct 4 2005 Akira TAGOH - 1.8.3-4 +- moved the documents from ruby-libs to ruby-docs, which contains the arch + specific thing and to be multilib support. (#168826) + +* Mon Oct 3 2005 Akira TAGOH - 1.8.3-3 +- fixed the wrong file list. the external library for tcl/tk was included + in ruby-libs unexpectedly. + +* Mon Sep 26 2005 Akira TAGOH - 1.8.3-2 +- ruby-multilib.patch: added another chunk for multilib. (#169127) + +* Wed Sep 21 2005 Akira TAGOH - 1.8.3-1 +- New upstream release. +- Build-Requires xorg-x11-devel instead of XFree86-devel. +- ruby-multilib.patch: applied for only 64-bit archs. +- ruby-1.8.2-xmlrpc-CAN-2005-1992.patch: removed. it has already been in upstream. + +* Tue Jun 21 2005 Akira TAGOH - 1.8.2-9 +- ruby-1.8.2-xmlrpc-CAN-2005-1992.patch: fixed the arbitrary command execution + on XMLRPC server. (#161096) + +* Thu Jun 16 2005 Akira TAGOH - 1.8.2-8 +- ruby-1.8.2-tcltk-multilib.patch: applied to get tcltklib.so built. (#160194) + +* Thu Apr 7 2005 Akira TAGOH - 1.8.2-7 +- ruby-1.8.2-deadcode.patch: removed the dead code from the source. (#146108) +- make sure that all documentation files in ruby-docs are the world- + readable. (#147279) + +* Tue Mar 22 2005 Akira TAGOH - 1.8.2-6 +- ruby-1.8.2-strscan-memset.patch: fixed an wrong usage of memset(3). + +* Tue Mar 15 2005 Akira TAGOH - 1.8.2-5 +- rebuilt + +* Tue Jan 25 2005 Akira TAGOH - 1.8.2-4 +- fixed the wrong generation of file manifest. (#146055) +- spec file clean up. + +* Mon Jan 24 2005 Akira TAGOH - 1.8.2-3 +- separated out to rdoc package. +- make the dependency of irb for rdoc. (#144708) + +* Wed Jan 12 2005 Tim Waugh - 1.8.2-2 +- Rebuilt for new readline. + +* Wed Jan 5 2005 Akira TAGOH - 1.8.2-1 +- New upstream release. +- ruby-1.8.1-ia64-stack-limit.patch: removed - it's no longer needed. +- ruby-1.8.1-cgi_session_perms.patch: likewise. +- ruby-1.8.1-cgi-dos.patch: likewise. +- generated Ruby interactive documentation - senarated package. + it's now provided as ri package. (#141806) + +* Thu Nov 11 2004 Jeff Johnson 1.8.1-10 +- rebuild against db-4.3.21. + +* Wed Nov 10 2004 Akira TAGOH - 1.8.1-9 +- ruby-1.8.1-cgi-dos.patch: security fix [CAN-2004-0983] +- ruby-1.8.1-cgi_session_perms.patch: security fix [CAN-2004-0755] + +* Fri Oct 29 2004 Akira TAGOH - 1.8.1-8 +- added openssl-devel and db4-devel into BuildRequires (#137479) + +* Wed Oct 6 2004 Akira TAGOH - 1.8.1-7 +- require emacs-common instead of emacs. + +* Wed Jun 23 2004 Akira TAGOH 1.8.1-4 +- updated the documentation. + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Wed Feb 04 2004 Akira TAGOH 1.8.1-1 +- New upstream release. +- don't use any optimization for ia64 to avoid the build failure. +- ruby-1.8.1-ia64-stack-limit.patch: applied to fix SystemStackError when the optimization is disabled. + +* Sat Dec 13 2003 Jeff Johnson 1.8.0-3 +- rebuild against db-4.2.52. + +* Thu Sep 25 2003 Jeff Johnson 1.8.0-2 +- rebuild against db-4.2.42. + +* Tue Aug 5 2003 Akira TAGOH 1.8.0-1 +- New upstream release. + +* Thu Jul 24 2003 Akira TAGOH 1.6.8-9.1 +- rebuilt + +* Thu Jul 24 2003 Akira TAGOH 1.6.8-9 +- ruby-1.6.8-castnode.patch: handling the nodes with correct cast. + use this patch now instead of ruby-1.6.8-fix-x86_64.patch. + +* Fri Jul 04 2003 Akira TAGOH 1.6.8-8 +- rebuilt + +* Fri Jul 04 2003 Akira TAGOH 1.6.8-7 +- fix the gcc warnings. (#82192) +- ruby-1.6.8-fix-x86_64.patch: correct a patch. + NOTE: DON'T USE THIS PATCH FOR BIG ENDIAN ARCHITECTURE. +- ruby-1.6.7-long2int.patch: removed. + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Fri Feb 7 2003 Jens Petersen - 1.6.8-5 +- rebuild against ucs4 tcltk + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Wed Jan 22 2003 Akira TAGOH 1.6.8-3 +- ruby-1.6.8-multilib.patch: applied to fix the search path issue on x86_64 + +* Tue Jan 21 2003 Akira TAGOH 1.6.8-2 +- ruby-1.6.8-require.patch: applied to fix the search bug in require. +- don't apply long2int patch to s390 and s390x. it doesn't work. + +* Wed Jan 15 2003 Akira TAGOH 1.6.8-1 +- New upstream release. +- removed some patches. it's no longer needed. + - ruby-1.6.7-100.patch + - ruby-1.6.7-101.patch + - ruby-1.6.7-102.patch + - ruby-1.6.7-103.patch + - 801_extmk.rb-shellwords.patch + - 801_mkmf.rb-shellwords.patch + - 804_parse.y-new-bison.patch + - 805_uri-bugfix.patch + - ruby-1.6.6-900_XXX_strtod.patch + - ruby-1.6.7-sux0rs.patch + - ruby-1.6.7-libobj.patch + +* Wed Jan 15 2003 Jens Petersen 1.6.7-14 +- rebuild to update tcltk deps + +* Mon Dec 16 2002 Elliot Lee 1.6.7-13 +- Remove ExcludeArch: x86_64 +- Fix x86_64 ruby with long2int.patch (ruby was assuming that sizeof(long) + == sizeof(int). The patch does not fix the source of the problem, just + makes it a non-issue.) +- _smp_mflags + +* Tue Dec 10 2002 Tim Powers 1.6.7-12 +- rebuild to fix broken tcltk deps + +* Tue Oct 22 2002 Akira TAGOH 1.6.7-11 +- use %%configure macro instead of configure script. +- use the latest config.{sub,guess}. +- get archname from rbconfig.rb for %%dir +- applied some patches from Debian: + - 801_extmk.rb-shellwords.patch: use Shellwords + - 801_mkmf.rb-shellwords.patch: mkmf.rb creates bad Makefile. the Makefile + links libruby.a to the target. + - 803_sample-fix-shbang.patch: all sample codes should be + s|/usr/local/bin|/usr/bin|g + - 804_parse.y-new-bison.patch: fix syntax warning. + - 805_uri-bugfix.patch: uri.rb could not handle correctly broken mailto-uri. +- add ExcludeArch x86_64 temporarily to fix Bug#74581. Right now ruby can't be + built on x86_64. + +* Tue Aug 27 2002 Akira TAGOH 1.6.7-10 +- moved sitedir to /usr/lib/ruby/site_ruby again according as our perl and + python. +- ruby-1.6.7-resolv1.patch, ruby-1.6.7-resolv2.patch: applied to fix 'Too many + open files - "/etc/resolv.conf"' issue. (Bug#64830) + +* Thu Jul 18 2002 Akira TAGOH 1.6.7-9 +- add the owned directory. + +* Fri Jul 12 2002 Akira TAGOH 1.6.7-8 +- fix typo. + +* Thu Jul 04 2002 Akira TAGOH 1.6.7-7 +- removed the ruby-mode-xemacs because it's merged to the xemacs sumo. + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Wed Jun 19 2002 Akira TAGOH 1.6.7-5 +- fix the stripped binary. +- use the appropriate macros. + +* Sun May 26 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Akira TAGOH 1.6.7-3 +- ruby-1.6.7-libobj.patch: applied to fix autoconf2.53 error. + +* Mon Mar 18 2002 Akira TAGOH 1.6.7-2 +- ruby-man-1.4.6-jp.tar.bz2: removed. +- ruby-refm-rdp-1.4.7-ja-html.tar.bz2: uses it instead of. +- ruby-1.6.7-500-marshal-proc.patch, ruby-1.6.7-501-class-var.patch: + removed. +- ruby-1.6.7-100.patch: applied a bug fix patch. + (ruby-dev#16274: patch for 'wm state') + (PR#206ja: SEGV handle EXIT) +- ruby-1.6.7-101.patch: applied a bug fix patch. + (ruby-list#34313: singleton should not be Marshal.dump'ed) + (ruby-dev#16411: block local var) +- ruby-1.6.7-102.patch: applied a bug fix patch. + (handling multibyte chars is partially broken) +- ruby-1.6.7-103.patch: applied a bug fix patch. + (ruby-dev#16462: preserve reference for GC, but link should be cut) + +* Fri Mar 8 2002 Akira TAGOH 1.6.7-1 +- New upstream release. +- ruby-1.6.6-100.patch, ruby-1.6.6-501-ruby-mode.patch: + removed. these patches no longer should be needed. +- ruby-1.6.7-500-marshal-proc.patch: applied a fix patch. + (ruby-dev#16178: Marshal::dump should call Proc#call.) +- ruby-1.6.7-501-class-var.patch: applied a fix patch. + (ruby-talk#35157: class vars broken in 1.6.7) + +* Wed Feb 27 2002 Akira TAGOH 1.6.6-5 +- Disable alpha because nothing is xemacs for alpha now. + +* Tue Feb 5 2002 Akira TAGOH 1.6.6-3 +- Fixed the duplicate files. + +* Tue Feb 5 2002 Akira TAGOH 1.6.6-2 +- Fixed the missing %%defattr + +* Fri Feb 1 2002 Akira TAGOH 1.6.6-1 +- New upstream release. +- Applied bug fix patches: + - ruby-1.6.6-501-ruby-mode.patch: ruby-talk#30479: disables font-lock + coloring. + - ruby-1.6.6-100.patch: ruby-talk#30203: Ruby 1.6.6 bug and fix + ruby-list#33047: regex bug + PR#230: problem with -d in 1.6.6 +- Added ruby-mode and ruby-mode-xemacs packages. +- Ruby works fine for ia64. so re-enable to build with ia64. + (probably it should be worked for alpha) + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Thu Jul 19 2001 Bernhard Rosenkraenzer 1.6.4-2 +- Remove Japanese description and summaries; they belong in specspo and + break rpm +- Clean up specfile +- Mark language specific files (README.jp) as such +- bzip2 sources +- rename the libruby package to ruby-libs for consistency +- Exclude ia64 (doesn't build - the code doesn't seem to be 64-bit clean + [has been excluded on alpha forever]) + +* Tue Jul 17 2001 Akira TAGOH 1.6.4-1 +- rebuild for Red Hat 7.2 + +* Mon Jun 04 2001 akira yamada +- upgrade to nwe upstream version 1.6.4. + +* Mon Apr 02 2001 akira yamada +- applied patch: + - fixed method cache bug. etc. (Patch103, Patch104) + +* Tue Mar 27 2001 akira yamada +- applied patch: + - fixed marshal for bignum bug. + - fixed scope of constant variables bug. + +* Tue Mar 20 2001 akira yamada +- upgraded to new upstream version 1.6.3. + +* Fri Feb 09 2001 akira yamada +- fixed bad group for libruby. +- Applied patch: upgraded to cvs version (2001-02-08): + fixed minor bugs. + +* Thu Jan 18 2001 akira yamada +- Applied patch: upgraded to cvs version (2001-01-15): + fixed minor bugs(e.g. ruby makes extention librares too large...). + +* Wed Jan 10 2001 akira yamada +- Applied patch: upgraded to cvs version (2001-01-09): + fixed minor bugs. + +* Sat Dec 30 2000 akira yamada +- Applied bug fix patch. + +* Mon Dec 25 2000 akira yamada +- Updated to new upstream version 1.6.2. + +* Fri Dec 22 2000 akira yamada +- Removed ruby_cvs.2000122019.patch, added ruby_cvs.2000122215.patch + (upgraded ruby to latest cvs version, 1.6.2-preview4). + +* Wed Dec 20 2000 akira yamada +- Removed ruby_cvs.2000121413.patch, added ruby_cvs.2000122019.patch + (upgraded ruby to latest cvs version). +- new package: libruby + +* Thu Dec 14 2000 akira yamada +- Removed ruby_cvs.2000101901.patch, added ruby_cvs.2000121413.patch + (upgraded ruby to latest cvs version). +- Removed ruby-dev.11262.patch, ruby-dev.11265.patch, + and ruby-dev.11268.patch (included into above patch). + +* Sun Nov 12 2000 MACHINO, Satoshi 1.6.1-0vl9 +- build on gcc-2.95.3 + +* Thu Oct 19 2000 akira yamada +- Added ruby-dev.11268.patch. + +* Thu Oct 19 2000 akira yamada +- Removed ruby_cvs.2000101117.patch and added ruby_cvs.2000101901.patch + (upgraded ruby to latest cvs version). +- Added ruby-dev.11262.patch. +- Added ruby-dev.11265.patch. + +* Wed Oct 11 2000 akira yamada +- Removed ruby_cvs.2000100313.patch and added ruby_cvs.2000101117.patch + (upgraded ruby to latest cvs version). + +* Mon Oct 09 2000 akira yamada +- Removed ruby_cvs.2000100313.patch and added ruby_cvs.2000100313.patch + (upgraded ruby to latest cvs version). + +* Tue Oct 03 2000 akira yamada +- Removed ruby_cvs.2000100218.patch and added ruby_cvs.2000100313.patch + (upgraded ruby to latest cvs version). + +* Mon Oct 02 2000 akira yamada +- Removed ruby_cvs.2000092718.patch and added ruby_cvs.2000100218.patch + (upgraded ruby to latest cvs version). + +* Wed Sep 27 2000 akira yamada +- Updated to upstream version 1.6.1. +- Removed ruby_cvs.2000082901.patch and added ruby_cvs.2000092718.patch + (upgraded ruby to latest cvs version). + +* Tue Aug 29 2000 akira yamada +- Updated to version 1.4.6. +- removed ruby-dev.10123.patch(included into ruby-1.4.6). +- Added ruby_cvs.2000082901.patch(upgraded ruby to latest cvs version). + +* Tue Jun 27 2000 akira yamada +- Updated manuals to version 1.4.5. + +* Sun Jun 25 2000 akira yamada +- Added ruby-dev.10123.patch. + +* Sat Jun 24 2000 akira yamada +- Updated to version 1.4.5. +- Removed ruby_cvs.2000062401.patch(included into ruby-1.4.5). + +* Thu Jun 22 2000 akira yamada +- Updated to version 1.4.4(06/22/2000 CVS). +- Removed ruby-dev.10054.patch(included into ruby_cvs.patch). + +* Thu Jun 22 2000 akira yamada +- Renamed to ruby_cvs20000620.patch from ruby_cvs.patch. + +* Tue Jun 20 2000 akira yamada +- Updated to version 1.4.4(06/20/2000 CVS). +- Removed ruby-list.23190.patch(included into ruby_cvs.patch). +- Added ruby-dev.10054.patch. + +* Thu Jun 15 2000 akira yamada +- Updated to version 1.4.4(06/12/2000 CVS). +- Added manuals and FAQs. +- Split into ruby, ruby-devel, ruby-tcltk, ruby-docs, irb. + +* Tue Jun 13 2000 Mitsuo Hamada +- Updated to version 1.4.4 + +* Wed Dec 08 1999 Atsushi Yamagata +- Updated to version 1.4.3 + +* Mon Sep 20 1999 Atsushi Yamagata +- Updated to version 1.4.2 (Sep 18) + +* Fri Sep 17 1999 Atsushi Yamagata +- Updated to version 1.4.2 + +* Tue Aug 17 1999 Atsushi Yamagata +- Updated to version 1.4.0 + +* Fri Jul 23 1999 Atsushi Yamagata +- 2nd release +- Updated to version 1.2.6(15 Jul 1999) +- striped %%{prefix}/bin/ruby + +* Mon Jun 28 1999 Atsushi Yamagata +- Updated to version 1.2.6(21 Jun 1999) + +* Wed Apr 14 1999 Atsushi Yamagata +- Updated to version 1.2.5 + +* Fri Apr 09 1999 Atsushi Yamagata +- Updated to version 1.2.4 + +* Fri Dec 25 1998 Toru Hoshina +- Version up to 1.2 stable. + +* Fri Nov 27 1998 Toru Hoshina +- Version up to 1.1c9. + +* Thu Nov 19 1998 Toru Hoshina +- Version up to 1.1c8, however it appear short life :-P + +* Fri Nov 13 1998 Toru Hoshina +- Version up. + +* Tue Sep 22 1998 Toru Hoshina +- To make a libruby.so. + +* Mon Sep 21 1998 Toru Hoshina +- Modified SPEC in order to install libruby.a so that it should be used by + another ruby entention. +- 2nd release. + +* Mon Mar 9 1998 Shoichi OZAWA +- Added a powerPC arch part. Thanks, MURATA Nobuhiro diff --git a/sources b/sources new file mode 100644 index 0000000..f935fb7 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +92ef54e033fb95ec9bdf7023666e5f1f ruby-2.3.0.tar.xz diff --git a/test_abrt.rb b/test_abrt.rb new file mode 100644 index 0000000..6d110ba --- /dev/null +++ b/test_abrt.rb @@ -0,0 +1,7 @@ +if !!$LOADED_FEATURES.detect { |f| f =~ /abrt\.rb/ } + exit true +else + puts 'ERROR: ABRT hook was not loaded.' + + exit false +end diff --git a/test_dependent_scls.rb b/test_dependent_scls.rb new file mode 100644 index 0000000..1388f94 --- /dev/null +++ b/test_dependent_scls.rb @@ -0,0 +1,65 @@ +require 'test/unit' +require 'rbconfig' +require 'rubygems' +require 'rubygems/defaults/operating_system' + +class TestDependentSCLS < Test::Unit::TestCase + + def setup + # Avoid caching + Gem.class_eval("@default_locations, @default_dirs = nil, nil") + + # TODO: Different bin dir during build ("/builddir/build/BUILD/ruby-2.0.0-p247") + @bin_dir = Gem::ConfigMap[:bindir].split(File::SEPARATOR).last + @scl = ENV['X_SCLS'].strip + end + + def test_default_paths + default_locations = { :system => "/opt/rh/#{@scl}/root/usr", + :local => "/opt/rh/#{@scl}/root/usr/local" } + assert_equal default_locations, Gem.default_locations + + default_dirs = { :system => { :bin_dir => "/opt/rh/#{@scl}/root/usr/#{@bin_dir}", + :gem_dir => "/opt/rh/#{@scl}/root/usr/share/gems", + :ext_dir => "/opt/rh/#{@scl}/root/usr/lib64/gems" }, + :local => { :bin_dir => "/opt/rh/#{@scl}/root/usr/local/#{@bin_dir}", + :gem_dir => "/opt/rh/#{@scl}/root/usr/local/share/gems", + :ext_dir => "/opt/rh/#{@scl}/root/usr/local/lib64/gems" } } + assert_equal default_dirs, Gem.default_dirs + end + + # Gem.default_locations and Gem.default_dirs + # should contain paths to dependent scls binary extensions + # if the dependent scl adds itself on $GEM_PATH + # + # See rhbz#1034639 + def test_paths_with_dependent_scl + prefix = '/some/prefix' + scl_name = 'ruby_x' + + ENV['X_SCLS'] = "#{@scl} #{scl_name}" # enabled scls + ENV['GEM_PATH'] = "#{prefix}/#{scl_name}/root/usr/share/gems" + + default_locations = { :system => "/opt/rh/#{@scl}/root/usr", + :local => "/opt/rh/#{@scl}/root/usr/local", + :"#{scl_name}_system" => "#{prefix}/#{scl_name}/root/usr", + :"#{scl_name}_local" => "#{prefix}/#{scl_name}/root/usr/local" } + + assert_equal default_locations, Gem.default_locations + + default_dirs = { :system => { :bin_dir => "/opt/rh/#{@scl}/root/usr/#{@bin_dir}", + :gem_dir => "/opt/rh/#{@scl}/root/usr/share/gems", + :ext_dir => "/opt/rh/#{@scl}/root/usr/lib64/gems" }, + :local => { :bin_dir => "/opt/rh/#{@scl}/root/usr/local/#{@bin_dir}", + :gem_dir => "/opt/rh/#{@scl}/root/usr/local/share/gems", + :ext_dir => "/opt/rh/#{@scl}/root/usr/local/lib64/gems" }, + :"#{scl_name}_system" => { :bin_dir => "#{prefix}/#{scl_name}/root/usr/#{@bin_dir}", + :gem_dir => "#{prefix}/#{scl_name}/root/usr/share/gems", + :ext_dir => "#{prefix}/#{scl_name}/root/usr/lib64/gems" }, + :"#{scl_name}_local" => { :bin_dir => "#{prefix}/#{scl_name}/root/usr/local/#{@bin_dir}", + :gem_dir => "#{prefix}/#{scl_name}/root/usr/local/share/gems", + :ext_dir => "#{prefix}/#{scl_name}/root/usr/local/lib64/gems" } } + assert_equal default_dirs, Gem.default_dirs + end + +end diff --git a/test_systemtap.rb b/test_systemtap.rb new file mode 100644 index 0000000..eb518df --- /dev/null +++ b/test_systemtap.rb @@ -0,0 +1,64 @@ +require 'set' + +LIBRUBY_SO = 'libruby.so' +PROBES_D = 'probes.d' + +### +# Detect SystemTap section headers presence. + +stap_headers = [ + '\.stapsdt\.base', + '\.note\.stapsdt' +] + +header_regexp = %r{ (#{stap_headers.join('|')}) } + +section_headers = `readelf -S "#{LIBRUBY_SO}"` +detected_stap_headers = section_headers.scan(header_regexp).flatten + +# Assume there are both headers until this is proven wrong ;) +unless detected_stap_headers.size == 2 + puts 'ERROR: SystemTap (DTrace) headers were not detected in resulting library.' + exit false +end + +### +# Find if every declared probe is propagated to resulting library. + +# Colect probes specified in probes.d file. +probes = [] + +File.open(PROBES_D) do |file| + file.each_line do |line| + if probe = line[/probe (\S+)\(.*\);/, 1] + probes << probe + end + end +end + +probes = Set.new probes + +# These probes are excluded by VM_COLLECT_USAGE_DETAILS ifdef. +EXCLUDE_PROBES = Set.new %w(insn insn__operand) +unless EXCLUDE_PROBES.subset? probes + puts 'ERROR: Change in SystemTap (DTrace) probes definition file detected.' + exit false +end + +probes -= EXCLUDE_PROBES + +# Detect probes in resulting library. +probe_regexp = %r{ +^\s*stapsdt\s*0[xX][0-9a-fA-F]+\tNT_STAPSDT \(SystemTap probe descriptors\)$ +^\s*Provider: ruby$ +^\s*Name: (\S+)$ +} + +notes = `readelf -n "#{LIBRUBY_SO}"` +detected_probes = Set.new notes.scan(probe_regexp).flatten + +# Both sets must be equal, otherwise something is wrong. +unless probes == detected_probes + puts 'ERROR: SystemTap (DTrace) probes were not correctly propagated into resulting library.' + exit false +end From abf7eb20882c6b799000a97755c0a0d3a7b3a588 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Thu, 18 Feb 2016 16:59:56 +0100 Subject: [PATCH 03/34] Fix macros.ruby and macros.rubygems Fixes also failing tests --- macros.ruby | 8 ++++---- macros.rubygems | 2 +- ruby.spec | 7 +++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/macros.ruby b/macros.ruby index 36f4077..ce3b6e4 100644 --- a/macros.ruby +++ b/macros.ruby @@ -1,10 +1,10 @@ -%ruby_libdir %{_datadir}/%{name} -%ruby_libarchdir %{_libdir}/%{name} +%ruby_libdir %{_datadir}/%{pkg_name} +%ruby_libarchdir %{_libdir}/%{pkg_name} # This is the local lib/arch and should not be used for packaging. %ruby_sitedir site_ruby -%ruby_sitelibdir %{_prefix}/local/share/%{name}/%{ruby_sitedir} -%ruby_sitearchdir %{_prefix}/local/%{_lib}/%{name}/%{ruby_sitedir} +%ruby_sitelibdir %{_prefix}/local/share/%{pkg_name}/%{ruby_sitedir} +%ruby_sitearchdir %{_prefix}/local/%{_lib}/%{pkg_name}/%{ruby_sitedir} # This is the general location for libs/archs compatible with all # or most of the Ruby versions available in the Fedora repositories. diff --git a/macros.rubygems b/macros.rubygems index 6d99ac3..fa4284a 100644 --- a/macros.rubygems +++ b/macros.rubygems @@ -4,7 +4,7 @@ # Common gem locations and files. %gem_instdir %{gem_dir}/gems/%{gem_name}-%{version} -%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version} +%gem_extdir_mri %{gem_archdir}/ruby/%{gem_name}-%{version} %gem_libdir %{gem_instdir}/lib %gem_cache %{gem_dir}/cache/%{gem_name}-%{version}.gem %gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec diff --git a/ruby.spec b/ruby.spec index 826811b..1563b65 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 55 +%global release 56 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -631,7 +631,7 @@ sed -i 's/^/%lang(ja) /' .ruby-doc.ja %{?scl:scl enable %scl - << \EOF mkdir -p ./lib/rubygems/defaults cp %{SOURCE1} ./lib/rubygems/defaults -make test-all TESTS="%{SOURCE14}" | grep '2 failures, 0 errors' || exit 1 +make test-all TESTS="%{SOURCE14}" || exit 1 rm -rf ./lib/rubygems/defaults EOF} @@ -962,6 +962,9 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Thu Feb 18 2016 Pavel Valena - 2.3.0-56 +- Fix macros.ruby and macros.rubygems + * Wed Feb 17 2016 Pavel Valena - 2.3.0-55 - Add scl macros From ce0f3786d78c5b263014f7b77ee37d4eb6a6c8f5 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Thu, 18 Feb 2016 18:05:13 +0100 Subject: [PATCH 04/34] Accept one failing test --- ruby.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby.spec b/ruby.spec index 1563b65..afd468f 100644 --- a/ruby.spec +++ b/ruby.spec @@ -631,7 +631,7 @@ sed -i 's/^/%lang(ja) /' .ruby-doc.ja %{?scl:scl enable %scl - << \EOF mkdir -p ./lib/rubygems/defaults cp %{SOURCE1} ./lib/rubygems/defaults -make test-all TESTS="%{SOURCE14}" || exit 1 +make test-all TESTS="%{SOURCE14}" | grep ", 1 failures, 0 errors, " || exit 1 rm -rf ./lib/rubygems/defaults EOF} From 3e7fbf24fcb88404efc639691ba4b1b4b84e6ed3 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Fri, 19 Feb 2016 11:51:36 +0100 Subject: [PATCH 05/34] Fix dependent scls's paths Also fixes failing scl test --- operating_system.rb | 27 +++++++++++++++++++++++++-- ruby.spec | 9 +++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/operating_system.rb b/operating_system.rb index 4b2903d..f747494 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -48,6 +48,26 @@ module Gem :system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']), :local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']) } + + # Add additional default locations for enabled software collections + # Dependent scls needs to add themselves on $GEM_PATH + if ENV['GEM_PATH'] + gem_paths = ENV['GEM_PATH'].split(':') + + ENV['X_SCLS'].split(' ').each do |scl| + next if scl == '@SCL@' + + regexp = /#{scl}\/root\/usr\/share\/gems/ + scl_gem_path = gem_paths.grep(regexp)[0] + if scl_gem_path + prefix = scl_gem_path.gsub(/\A(.*)#{regexp}\z/, "\\1") + @default_locations["#{scl}_system".to_sym] = "#{prefix}#{scl}/root/usr" + @default_locations["#{scl}_local".to_sym] = "#{prefix}#{scl}/root/usr/local" + end + end if ENV['X_SCLS'] + end + + @default_locations end ## @@ -122,9 +142,12 @@ module Gem def default_ext_dir_for base_dir dir = if rpmbuild? - build_dir = base_dir.chomp Gem.default_dirs[:system][:gem_dir] + scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@' && base_dir =~ /\/#{c}\//} + scl_prefix = scl_prefix ? scl_prefix + '_': nil + + build_dir = base_dir.chomp Gem.default_dirs[:"#{scl_prefix}system"][:gem_dir] if build_dir != base_dir - File.join build_dir, Gem.default_dirs[:system][:ext_dir] + File.join build_dir, Gem.default_dirs[:"#{scl_prefix}system"][:ext_dir] end else dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir} diff --git a/ruby.spec b/ruby.spec index afd468f..1e7dec5 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 56 +%global release 57 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -626,12 +626,10 @@ sed -i 's/^/%lang(ja) /' .ruby-doc.ja %check # Ruby software collection tests -# - Failing -# - TODO: fix %{?scl:scl enable %scl - << \EOF mkdir -p ./lib/rubygems/defaults cp %{SOURCE1} ./lib/rubygems/defaults -make test-all TESTS="%{SOURCE14}" | grep ", 1 failures, 0 errors, " || exit 1 +make test-all TESTS="%{SOURCE14}" || exit 1 rm -rf ./lib/rubygems/defaults EOF} @@ -962,6 +960,9 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Fri Feb 19 2016 Pavel Valena - 2.3.0-57 +- Fix dependent scls's paths + * Thu Feb 18 2016 Pavel Valena - 2.3.0-56 - Fix macros.ruby and macros.rubygems From 42117fcd3d531d0717a672249d934f72549ccbfc Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Fri, 19 Feb 2016 21:22:02 +0100 Subject: [PATCH 06/34] Fix default_dir and default_bindir Now returns correct paths for dependent scls --- operating_system.rb | 10 ++++++++-- ruby.spec | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/operating_system.rb b/operating_system.rb index f747494..f1e8a43 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -116,8 +116,11 @@ module Gem # RubyGems default overrides. def default_dir + scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} + scl_prefix = scl_prefix ? scl_prefix + '_': nil + if opt_build_root? - Gem.default_dirs[:system][:gem_dir] + Gem.default_dirs[:"#{scl_prefix}system"][:gem_dir] elsif Process.uid == 0 Gem.default_dirs[:local][:gem_dir] else @@ -131,8 +134,11 @@ module Gem end def default_bindir + scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} + scl_prefix = scl_prefix ? scl_prefix + '_': nil + if opt_build_root? - Gem.default_dirs[:system][:bin_dir] + Gem.default_dirs[:"#{scl_prefix}system"][:bin_dir] elsif Process.uid == 0 Gem.default_dirs[:local][:bin_dir] else diff --git a/ruby.spec b/ruby.spec index 1e7dec5..29c7066 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 57 +%global release 58 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -960,6 +960,9 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Fri Feb 19 2016 Pavel Valena - 2.3.0-58 +- Fix default_dir and default_bindir + * Fri Feb 19 2016 Pavel Valena - 2.3.0-57 - Fix dependent scls's paths From 3f6e3a805d8f903a752a4e32e94bbe7eecde56f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 22 Feb 2016 14:36:20 +0100 Subject: [PATCH 07/34] Don't prefix bundling provides. --- ruby.spec | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/ruby.spec b/ruby.spec index 29c7066..ad94315 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 58 +%global release 59 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -179,10 +179,10 @@ Provides: %{?scl_prefix}ruby(release) = %{ruby_release} # Virtual provides for CCAN copylibs. # https://fedorahosted.org/fpc/ticket/364 -Provides: %{?scl_prefix}bundled(ccan-build_assert) -Provides: %{?scl_prefix}bundled(ccan-check_type) -Provides: %{?scl_prefix}bundled(ccan-container_of) -Provides: %{?scl_prefix}bundled(ccan-list) +Provides: bundled(ccan-build_assert) +Provides: bundled(ccan-check_type) +Provides: bundled(ccan-container_of) +Provides: bundled(ccan-list) %description libs This package includes the libruby, necessary to run Ruby. @@ -204,8 +204,8 @@ Requires: %{?scl_prefix}rubygem(psych) >= %{psych_version} Provides: %{?scl_prefix}gem = %{version}-%{release} Provides: %{?scl_prefix}ruby(rubygems) = %{version}-%{release} # https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 -Provides: %{?scl_prefix}bundled(rubygem(molinillo)) = %{molinillo_version} -Provides: %{?scl_prefix}bundled(rubygem-molinillo) = %{molinillo_version} +Provides: bundled(rubygem(molinillo)) = %{molinillo_version} +Provides: bundled(rubygem-molinillo) = %{molinillo_version} BuildArch: noarch %description -n %{?scl_prefix}rubygems @@ -960,6 +960,9 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Mon Feb 22 2016 Vít Ondruch - 2.3.0-59 +- Don't prefix bundling provides. + * Fri Feb 19 2016 Pavel Valena - 2.3.0-58 - Fix default_dir and default_bindir From c40aeb5071819f2c102941d24eae5a26c2a4501f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 22 Feb 2016 16:09:30 +0100 Subject: [PATCH 08/34] Don't enable collections for build. --- ruby.spec | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ruby.spec b/ruby.spec index ad94315..0a11f25 100644 --- a/ruby.spec +++ b/ruby.spec @@ -476,7 +476,6 @@ cp -a %{SOURCE6} . %build autoconf -%{?scl:scl enable %{scl} - << \EOF} %configure \ --with-rubylibprefix='%{ruby_libdir}' \ --with-archlibdir='%{_libdir}' \ @@ -497,18 +496,13 @@ autoconf --enable-multiarch \ --with-prelude=./abrt_prelude.rb \ -%{?scl:EOF} # Q= makes the build output more verbose and allows to check Fedora # compiler options. -%{?scl:scl enable %{scl} - << \EOF} make %{?_smp_mflags} COPY="cp -p" Q= -%{?scl:EOF} %install rm -rf %{buildroot} -%{?scl:scl enable %{scl} - << \EOF} make install DESTDIR=%{buildroot} -%{?scl:EOF} # Rename ruby/config.h to ruby/config-.h to avoid file conflicts on # multilib systems and install config.h wrapper @@ -962,6 +956,7 @@ make check TESTS="-v $DISABLE_TESTS" %changelog * Mon Feb 22 2016 Vít Ondruch - 2.3.0-59 - Don't prefix bundling provides. +- Don't enable collections for build. * Fri Feb 19 2016 Pavel Valena - 2.3.0-58 - Fix default_dir and default_bindir From 651be7da37708886845d4520827d34cdfc3e07e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 22 Feb 2016 17:01:02 +0100 Subject: [PATCH 09/34] Optimize operating_system.rb a bit. It would be better to stay with --{install-dir,bindir} pair, but this is currently broken and it does not currently generate documentation: https://github.com/rubygems/rubygems/issues/1470 --- operating_system.rb | 12 ++++++------ ruby.spec | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/operating_system.rb b/operating_system.rb index f1e8a43..d7d5702 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -116,10 +116,10 @@ module Gem # RubyGems default overrides. def default_dir - scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} - scl_prefix = scl_prefix ? scl_prefix + '_': nil - if opt_build_root? + scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} + scl_prefix = scl_prefix ? scl_prefix + '_': nil + Gem.default_dirs[:"#{scl_prefix}system"][:gem_dir] elsif Process.uid == 0 Gem.default_dirs[:local][:gem_dir] @@ -134,10 +134,10 @@ module Gem end def default_bindir - scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} - scl_prefix = scl_prefix ? scl_prefix + '_': nil - if opt_build_root? + scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} + scl_prefix = scl_prefix ? scl_prefix + '_': nil + Gem.default_dirs[:"#{scl_prefix}system"][:bin_dir] elsif Process.uid == 0 Gem.default_dirs[:local][:bin_dir] diff --git a/ruby.spec b/ruby.spec index 0a11f25..d6c217d 100644 --- a/ruby.spec +++ b/ruby.spec @@ -957,6 +957,7 @@ make check TESTS="-v $DISABLE_TESTS" * Mon Feb 22 2016 Vít Ondruch - 2.3.0-59 - Don't prefix bundling provides. - Don't enable collections for build. +- Optimize operating_system.rb a bit. * Fri Feb 19 2016 Pavel Valena - 2.3.0-58 - Fix default_dir and default_bindir From 91af49a07d79d29b29745448c3d5d13a1b952394 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Wed, 13 Apr 2016 11:25:09 -0400 Subject: [PATCH 10/34] Fix ruby lib path in macros.ruby.rh-ruby23 - Resolves: rhbz#1255753 --- ruby.spec | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ruby.spec b/ruby.spec index d6c217d..a396dba 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 59 +%global release 60 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -532,9 +532,9 @@ done # would be wrongly evaluated during build of other packages. mkdir -p %{buildroot}%{_root_sysconfdir}/rpm install -m 644 %{SOURCE4} %{buildroot}%{_root_sysconfdir}/rpm/macros.ruby%{?scl:.%{scl}} -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_root_sysconfdir}/rpm/macros.ruby%{?scl:.%{scl}} +sed -i "s/%%{pkg_name}/%{pkg_name}/" %{buildroot}%{_root_sysconfdir}/rpm/macros.ruby%{?scl:.%{scl}} install -m 644 %{SOURCE5} %{buildroot}%{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} +sed -i "s/%%{pkg_name}/%{pkg_name}/" %{buildroot}%{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} # Install custom operating_system.rb. mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults @@ -954,6 +954,10 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Wed Apr 13 2016 Pavel Valena +- Fix ruby lib path in macros.ruby.rh-ruby23 + - Resolves: rhbz#1255753 + * Mon Feb 22 2016 Vít Ondruch - 2.3.0-59 - Don't prefix bundling provides. - Don't enable collections for build. From a6981cf50c6bd6b867b918d9158fde74cbd004d6 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Thu, 14 Apr 2016 14:13:24 -0400 Subject: [PATCH 11/34] Manually set UTC timezone for tests --- ruby.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruby.spec b/ruby.spec index a396dba..57bc909 100644 --- a/ruby.spec +++ b/ruby.spec @@ -651,7 +651,7 @@ DISABLE_TESTS="" # Once seen: http://koji.fedoraproject.org/koji/taskinfo?taskID=12556650 DISABLE_TESTS="$DISABLE_TESTS -x test_fork.rb" -make check TESTS="-v $DISABLE_TESTS" +TZ=UTC make check TESTS="-v $DISABLE_TESTS" %post libs -p /sbin/ldconfig @@ -957,6 +957,7 @@ make check TESTS="-v $DISABLE_TESTS" * Wed Apr 13 2016 Pavel Valena - Fix ruby lib path in macros.ruby.rh-ruby23 - Resolves: rhbz#1255753 +- Manually set UTC timezone for tests * Mon Feb 22 2016 Vít Ondruch - 2.3.0-59 - Don't prefix bundling provides. From 7d291cb3c5c023864fd6974901f91aa86d7d3128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 4 Mar 2015 15:07:20 +0100 Subject: [PATCH 12/34] Relax AC requirements. --- ruby.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruby.spec b/ruby.spec index 57bc909..4edab7f 100644 --- a/ruby.spec +++ b/ruby.spec @@ -465,6 +465,9 @@ rm -rf ext/fiddle/libffi* %patch7 -p1 %patch8 -p1 +# Allow to use autoconf 2.63. +sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in + # Provide an example of usage of the tapset: cp -a %{SOURCE3} . From 9fd772dd0676811b637da0bc8d3cb3068fa2915e Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Thu, 14 Jul 2016 16:45:55 +0200 Subject: [PATCH 13/34] Disable colorized ./configure Due to missing macro AS_FUNCTION_DESCRIBE in Autoconf --- ruby-2.3.0-Disable-colorized-configure.patch | 26 ++++++++++++++++++++ ruby.spec | 9 ++++++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 ruby-2.3.0-Disable-colorized-configure.patch diff --git a/ruby-2.3.0-Disable-colorized-configure.patch b/ruby-2.3.0-Disable-colorized-configure.patch new file mode 100644 index 0000000..d29de65 --- /dev/null +++ b/ruby-2.3.0-Disable-colorized-configure.patch @@ -0,0 +1,26 @@ +From 9806021813c9dde4747b0bd6f0ed24bdeede0a4a Mon Sep 17 00:00:00 2001 +From: Pavel Valena +Date: Fri, 15 Jul 2016 13:52:31 +0200 +Subject: [PATCH] Disable colorized ./configure + +Missing macro AS_FUNCTION_DESCRIBE in Autoconf +--- + Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 76b61f5..2432884 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -307,7 +307,7 @@ reconfig config.status: $(srcdir)/$(CONFIGURE) $(srcdir)/enc/Makefile.in \ + @PWD= MINIRUBY="$(MINIRUBY)"; export MINIRUBY; \ + set $(SHELL) $($@-args); $(reconfig-exec-$(V)) + +-$(srcdir)/$(CONFIGURE): $(srcdir)/configure.in $(srcdir)/aclocal.m4 ++$(srcdir)/$(CONFIGURE): $(srcdir)/configure.in + $(CHDIR) $(srcdir) && exec $(AUTOCONF) -o $(@F) + + incs: id.h +-- +1.8.3.1 + diff --git a/ruby.spec b/ruby.spec index 4edab7f..bb1701d 100644 --- a/ruby.spec +++ b/ruby.spec @@ -129,6 +129,9 @@ Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch # https://bugs.ruby-lang.org/issues/11962 # https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/53455 Patch8: ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch +# Disable colorized ./configure due to missing macro AS_FUNCTION_DESCRIBE in Autoconf +# http://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/m4sugar/m4sh.m4?id=d99fef0e1e8e7a4c04b97fc4c6e0ffb01463622c +Patch9: ruby-2.3.0-Disable-colorized-configure.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -464,6 +467,7 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in @@ -476,6 +480,9 @@ cp -a %{SOURCE3} . # https://github.com/ruby/ruby/blob/trunk/tool/compile_prelude.rb#L26 cp -a %{SOURCE6} . +# Disable colorized ./configure +rm aclocal.m4 + %build autoconf @@ -957,7 +964,7 @@ TZ=UTC make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog -* Wed Apr 13 2016 Pavel Valena +* Wed Apr 13 2016 Pavel Valena - 2.3.0-60 - Fix ruby lib path in macros.ruby.rh-ruby23 - Resolves: rhbz#1255753 - Manually set UTC timezone for tests From 88c977056b79317b251f922b089c757737dc72e9 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Tue, 19 Jul 2016 14:59:06 +0200 Subject: [PATCH 14/34] Fix and enhance systemtap tests Previous tests did not work correctly with RHEL-6 --- ruby.spec | 3 +++ test_systemtap.rb | 37 +++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/ruby.spec b/ruby.spec index bb1701d..391a4b6 100644 --- a/ruby.spec +++ b/ruby.spec @@ -964,6 +964,9 @@ TZ=UTC make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Tue Jul 19 2016 Pavel Valena - 2.3.0-60 +- Fix and enhance systemtap tests + * Wed Apr 13 2016 Pavel Valena - 2.3.0-60 - Fix ruby lib path in macros.ruby.rh-ruby23 - Resolves: rhbz#1255753 diff --git a/test_systemtap.rb b/test_systemtap.rb index eb518df..5784e2d 100644 --- a/test_systemtap.rb +++ b/test_systemtap.rb @@ -3,8 +3,10 @@ require 'set' LIBRUBY_SO = 'libruby.so' PROBES_D = 'probes.d' -### -# Detect SystemTap section headers presence. +# These probes are excluded by VM_COLLECT_USAGE_DETAILS ifdef. +EXCLUDE_PROBES = Set.new %w(insn insn__operand) + +## Detect SystemTap section headers presence stap_headers = [ '\.stapsdt\.base', @@ -22,43 +24,42 @@ unless detected_stap_headers.size == 2 exit false end -### -# Find if every declared probe is propagated to resulting library. +## Find if every declared probe is propagated to resulting library # Colect probes specified in probes.d file. -probes = [] +probes_declared = [] File.open(PROBES_D) do |file| file.each_line do |line| if probe = line[/probe (\S+)\(.*\);/, 1] - probes << probe + probes_declared << probe end end end -probes = Set.new probes +probes_declared = Set.new probes_declared -# These probes are excluded by VM_COLLECT_USAGE_DETAILS ifdef. -EXCLUDE_PROBES = Set.new %w(insn insn__operand) -unless EXCLUDE_PROBES.subset? probes +unless EXCLUDE_PROBES.subset? probes_declared puts 'ERROR: Change in SystemTap (DTrace) probes definition file detected.' exit false end -probes -= EXCLUDE_PROBES +probes_declared -= EXCLUDE_PROBES # Detect probes in resulting library. -probe_regexp = %r{ -^\s*stapsdt\s*0[xX][0-9a-fA-F]+\tNT_STAPSDT \(SystemTap probe descriptors\)$ -^\s*Provider: ruby$ -^\s*Name: (\S+)$ +get_probes_detected = %r{ +^\s*Provider:\s+ruby,\s+Name:\s+(\S+),\s+.*$ } -notes = `readelf -n "#{LIBRUBY_SO}"` -detected_probes = Set.new notes.scan(probe_regexp).flatten +probes_detected = `eu-readelf -n "#{LIBRUBY_SO}"` + +probes_detected = Set.new probes_detected.scan(get_probes_detected).flatten # Both sets must be equal, otherwise something is wrong. -unless probes == detected_probes +unless probes_declared == probes_detected puts 'ERROR: SystemTap (DTrace) probes were not correctly propagated into resulting library.' + puts " Undetected probes: #{(probes_declared - probes_detected).sort.join(', ')}\n", + " Additional detected probes: #{(probes_detected - probes_declared).sort.join(', ')}" + exit false end From d0f16ceaaeb00b19d9d5dc3b756b0b6279b83f1a Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Tue, 19 Jul 2016 15:33:06 +0200 Subject: [PATCH 15/34] Remove tests depending on europe/moscow to avoid failures due to tzdata change https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95 --- ...ove-tests-depending-on-europe-moscow.patch | 60 +++++++++++++++++++ ruby.spec | 5 ++ 2 files changed, 65 insertions(+) create mode 100644 ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch diff --git a/ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch b/ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch new file mode 100644 index 0000000..ce01d07 --- /dev/null +++ b/ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch @@ -0,0 +1,60 @@ +From c5c60ded6dbb6256640b0308a45c42da8c7fe071 Mon Sep 17 00:00:00 2001 +From: akr +Date: Fri, 22 Apr 2016 12:20:06 +0000 +Subject: [PATCH] * test/ruby/test_time_tz.rb: Tests depends on Europe/Moscow + removed to avoid test failures due to the tzdata change. + https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95 + Found by naruse. + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + ChangeLog | 7 +++++++ + test/ruby/test_time_tz.rb | 13 ------------- + 2 files changed, 7 insertions(+), 13 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 3b96a9b..965f296 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++Fri Apr 22 21:00:44 2016 Tanaka Akira ++ ++ * test/ruby/test_time_tz.rb: Tests depends on Europe/Moscow removed ++ to avoid test failures due to the tzdata change. ++ https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95 ++ Found by naruse. ++ + Thu Dec 24 23:01:57 2015 SHIBATA Hiroshi + + * NEWS: added entry for CGI.escapeHTML optimization. +diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb +index f5d4690..b40b1ac 100644 +--- a/test/ruby/test_time_tz.rb ++++ b/test/ruby/test_time_tz.rb +@@ -170,13 +170,6 @@ def test_europe_lisbon + } + end if has_lisbon_tz + +- def test_europe_moscow +- with_tz(tz="Europe/Moscow") { +- assert_time_constructor(tz, "1992-03-29 00:00:00 +0400", :local, [1992,3,28,23,0,0]) +- assert_time_constructor(tz, "1992-03-29 00:59:59 +0400", :local, [1992,3,28,23,59,59]) +- } +- end +- + def test_pacific_kiritimati + with_tz(tz="Pacific/Kiritimati") { + assert_time_constructor(tz, "1994-12-31 23:59:59 -1000", :local, [1994,12,31,23,59,59]) +@@ -356,12 +349,6 @@ def self.gen_zdump_test(data) + Europe/London Sun Aug 10 01:00:00 1947 UTC = Sun Aug 10 02:00:00 1947 BST isdst=1 gmtoff=3600 + Europe/London Sun Nov 2 01:59:59 1947 UTC = Sun Nov 2 02:59:59 1947 BST isdst=1 gmtoff=3600 + Europe/London Sun Nov 2 02:00:00 1947 UTC = Sun Nov 2 02:00:00 1947 GMT isdst=0 gmtoff=0 +-Europe/Moscow Sat Jan 18 23:59:59 1992 UTC = Sun Jan 19 01:59:59 1992 MSK isdst=0 gmtoff=7200 +-Europe/Moscow Sun Jan 19 00:00:00 1992 UTC = Sun Jan 19 03:00:00 1992 MSK isdst=0 gmtoff=10800 +-Europe/Moscow Sat Mar 28 19:59:59 1992 UTC = Sat Mar 28 22:59:59 1992 MSK isdst=0 gmtoff=10800 +-Europe/Moscow Sat Mar 28 20:00:00 1992 UTC = Sun Mar 29 00:00:00 1992 MSD isdst=1 gmtoff=14400 +-Europe/Moscow Sat Sep 26 18:59:59 1992 UTC = Sat Sep 26 22:59:59 1992 MSD isdst=1 gmtoff=14400 +-Europe/Moscow Sat Sep 26 19:00:00 1992 UTC = Sat Sep 26 22:00:00 1992 MSK isdst=0 gmtoff=10800 + Pacific/Kiritimati Sun Jan 1 09:59:59 1995 UTC = Sat Dec 31 23:59:59 1994 LINT isdst=0 gmtoff=-36000 + Pacific/Kiritimati Sun Jan 1 10:00:00 1995 UTC = Mon Jan 2 00:00:00 1995 LINT isdst=0 gmtoff=50400 + End diff --git a/ruby.spec b/ruby.spec index 391a4b6..d2a15b1 100644 --- a/ruby.spec +++ b/ruby.spec @@ -132,6 +132,9 @@ Patch8: ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch # Disable colorized ./configure due to missing macro AS_FUNCTION_DESCRIBE in Autoconf # http://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/m4sugar/m4sh.m4?id=d99fef0e1e8e7a4c04b97fc4c6e0ffb01463622c Patch9: ruby-2.3.0-Disable-colorized-configure.patch +# Remove tests depending on europe/moscow to avoid failures due to tzdata change +# https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95 +Patch10: ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -468,6 +471,7 @@ rm -rf ext/fiddle/libffi* %patch7 -p1 %patch8 -p1 %patch9 -p1 +%patch10 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in @@ -966,6 +970,7 @@ TZ=UTC make check TESTS="-v $DISABLE_TESTS" %changelog * Tue Jul 19 2016 Pavel Valena - 2.3.0-60 - Fix and enhance systemtap tests +- Remove tests depending on Europe/Moscow to avoid failures due to tzdata change * Wed Apr 13 2016 Pavel Valena - 2.3.0-60 - Fix ruby lib path in macros.ruby.rh-ruby23 From be68dfb4601d3ab7814d6a2a8490a257f836c4e3 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Mon, 25 Jul 2016 12:55:50 +0200 Subject: [PATCH 16/34] Add %%{scl}-runtime to Requires in libs subpackage This Require is not auto-generated on RHEL-6. --- ruby.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ruby.spec b/ruby.spec index d2a15b1..a84a813 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 60 +%global release 61 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -162,6 +162,8 @@ BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/cmake # virtual provide. It can be installed as dependency of rubypick. Provides: ruby(runtime_executable) = %{ruby_release} +%global __provides_exclude_from ^(%{ruby_libarchdir}|%{gem_archdir})/.*\\.so$ + %description Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text @@ -181,6 +183,8 @@ Ruby or an application embedding Ruby. Summary: Libraries necessary to run Ruby Group: Development/Libraries License: Ruby or BSD +# This could be removed once rhbz#1054711 is resolved. +%{?scl:Requires: %{scl}-runtime} Provides: %{?scl_prefix}ruby(release) = %{ruby_release} # Virtual provides for CCAN copylibs. @@ -968,6 +972,9 @@ TZ=UTC make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Mon Jul 25 2016 Pavel Valena - 2.3.0-61 +- Add %%{scl}-runtime to Requires in libs subpackage + * Tue Jul 19 2016 Pavel Valena - 2.3.0-60 - Fix and enhance systemtap tests - Remove tests depending on Europe/Moscow to avoid failures due to tzdata change From ddcdf2b199fae3a0689b8bf4e75ea650a6433d19 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Fri, 12 Aug 2016 16:55:06 +0200 Subject: [PATCH 17/34] Fix support for dependent^2 SCLs --- operating_system.rb | 18 +++++++++++++----- ruby.spec | 5 ++++- test_dependent_scls.rb | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/operating_system.rb b/operating_system.rb index d7d5702..8e742fe 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -38,6 +38,14 @@ module Gem end private :rpmbuild? + ## + # Get enabled SCLs in order of (most) dependent SCL to base SCL + + def x_scls + @x_scls ||= ENV['X_SCLS'].split(' ').reverse! + end + private :x_scls + ## # Default gems locations allowed on FHS system (/usr, /usr/share). # The locations are derived from directories specified during build @@ -54,7 +62,7 @@ module Gem if ENV['GEM_PATH'] gem_paths = ENV['GEM_PATH'].split(':') - ENV['X_SCLS'].split(' ').each do |scl| + x_scls.each do |scl| next if scl == '@SCL@' regexp = /#{scl}\/root\/usr\/share\/gems/ @@ -64,7 +72,7 @@ module Gem @default_locations["#{scl}_system".to_sym] = "#{prefix}#{scl}/root/usr" @default_locations["#{scl}_local".to_sym] = "#{prefix}#{scl}/root/usr/local" end - end if ENV['X_SCLS'] + end end @default_locations @@ -117,7 +125,7 @@ module Gem def default_dir if opt_build_root? - scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} + scl_prefix = x_scls.detect {|c| c != '@SCL@'} scl_prefix = scl_prefix ? scl_prefix + '_': nil Gem.default_dirs[:"#{scl_prefix}system"][:gem_dir] @@ -135,7 +143,7 @@ module Gem def default_bindir if opt_build_root? - scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@'} + scl_prefix = x_scls.detect {|c| c != '@SCL@'} scl_prefix = scl_prefix ? scl_prefix + '_': nil Gem.default_dirs[:"#{scl_prefix}system"][:bin_dir] @@ -148,7 +156,7 @@ module Gem def default_ext_dir_for base_dir dir = if rpmbuild? - scl_prefix = ENV['X_SCLS'].split(' ').detect {|c| c != '@SCL@' && base_dir =~ /\/#{c}\//} + scl_prefix = x_scls.detect {|c| c != '@SCL@' && base_dir =~ /\/#{c}\//} scl_prefix = scl_prefix ? scl_prefix + '_': nil build_dir = base_dir.chomp Gem.default_dirs[:"#{scl_prefix}system"][:gem_dir] diff --git a/ruby.spec b/ruby.spec index a84a813..c030e04 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 61 +%global release 62 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -972,6 +972,9 @@ TZ=UTC make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Fri Aug 12 2016 Pavel Valena - 2.3.0-62 +- Fix support for dependent^2 SCLs + * Mon Jul 25 2016 Pavel Valena - 2.3.0-61 - Add %%{scl}-runtime to Requires in libs subpackage diff --git a/test_dependent_scls.rb b/test_dependent_scls.rb index 1388f94..30c49ee 100644 --- a/test_dependent_scls.rb +++ b/test_dependent_scls.rb @@ -7,7 +7,7 @@ class TestDependentSCLS < Test::Unit::TestCase def setup # Avoid caching - Gem.class_eval("@default_locations, @default_dirs = nil, nil") + Gem.class_eval("@x_scls, @default_locations, @default_dirs = nil, nil, nil") # TODO: Different bin dir during build ("/builddir/build/BUILD/ruby-2.0.0-p247") @bin_dir = Gem::ConfigMap[:bindir].split(File::SEPARATOR).last From be3f377da749595f12fa9e8f75a61146c4cbb795 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Tue, 30 Aug 2016 16:02:55 +0200 Subject: [PATCH 18/34] Fix: add rubygem(did_you_mean) to Requires --- ruby.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/ruby.spec b/ruby.spec index c030e04..c5bcc50 100644 --- a/ruby.spec +++ b/ruby.spec @@ -143,6 +143,7 @@ Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} # See https://bugzilla.redhat.com/show_bug.cgi?id=829209 # and http://bugs.ruby-lang.org/issues/6123 Requires: %{?scl_prefix}rubygem(bigdecimal) >= %{bigdecimal_version} +Requires: %{?scl_prefix}rubygem(did_you_mean) >= %{did_you_mean_version} %{?scl:BuildRequires: %{scl}-runtime} BuildRequires: autoconf BuildRequires: gdbm-devel From 026310447d2b17f0980e0113e0ccbd4f3388405d Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Tue, 30 Aug 2016 17:18:27 +0200 Subject: [PATCH 19/34] Update to Ruby 2.3.1 * Remove Patch8: ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch; subsumed * Remove Patch10: ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch; subsumed also removed "UTC=TZ " tests prefix --- ...-additional-preludes-by-configuratio.patch | 2 +- ...0-Enable-configuration-of-archlibdir.patch | 2 +- ...ed-paths-when-empty-version-string-i.patch | 2 +- ruby-2.1.0-always-use-i386.patch | 2 +- ruby-2.1.0-custom-rubygems-location.patch | 4 +- ruby-2.3.0-Disable-colorized-configure.patch | 2 +- ruby-2.3.0-ruby_version.patch | 8 +-- ...undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch | 31 ---------- ...ove-tests-depending-on-europe-moscow.patch | 60 ------------------- ruby.spec | 27 +++------ 10 files changed, 20 insertions(+), 120 deletions(-) delete mode 100644 ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch delete mode 100644 ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch diff --git a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch index 6f16bae..75eb363 100644 --- a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch +++ b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch @@ -39,7 +39,7 @@ diff --git a/configure.in b/configure.in index 0e371e2..d4f1dcb 100644 --- a/configure.in +++ b/configure.in -@@ -4334,6 +4334,13 @@ AC_SUBST(rubyarchhdrdir)dnl +@@ -4374,6 +4374,13 @@ AC_SUBST(rubyarchhdrdir)dnl AC_SUBST(sitearchhdrdir)dnl AC_SUBST(vendorarchhdrdir)dnl diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index 33bd565..43fa7f6 100644 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -11,7 +11,7 @@ diff --git a/configure.in b/configure.in index 37d9a62..553d4d0 100644 --- a/configure.in +++ b/configure.in -@@ -3592,6 +3592,11 @@ if test ${multiarch+set}; then +@@ -3632,6 +3632,11 @@ if test ${multiarch+set}; then fi archlibdir='${libdir}/${arch}' diff --git a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch index 6661f9b..eb34107 100644 --- a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +++ b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch @@ -14,7 +14,7 @@ diff --git a/configure.in b/configure.in index db37cd6..ce8d149 100644 --- a/configure.in +++ b/configure.in -@@ -4188,7 +4188,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -4228,7 +4228,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 3c3fcd4..9d78b05 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -11,7 +11,7 @@ diff --git a/configure.in b/configure.in index 553d4d0..03a4152 100644 --- a/configure.in +++ b/configure.in -@@ -4252,6 +4252,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -4292,6 +4292,8 @@ AC_SUBST(vendorarchdir)dnl AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index 36a7711..e82f172 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -15,7 +15,7 @@ diff --git a/configure.in b/configure.in index 03a4152..0e371e2 100644 --- a/configure.in +++ b/configure.in -@@ -4224,6 +4224,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -4264,6 +4264,10 @@ AC_ARG_WITH(vendorarchdir, [vendorarchdir=$withval], [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) @@ -26,7 +26,7 @@ index 03a4152..0e371e2 100644 if test "${LOAD_RELATIVE+set}"; then AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX='' -@@ -4248,6 +4252,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4288,6 +4292,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl diff --git a/ruby-2.3.0-Disable-colorized-configure.patch b/ruby-2.3.0-Disable-colorized-configure.patch index d29de65..12cfd8a 100644 --- a/ruby-2.3.0-Disable-colorized-configure.patch +++ b/ruby-2.3.0-Disable-colorized-configure.patch @@ -12,7 +12,7 @@ diff --git a/Makefile.in b/Makefile.in index 76b61f5..2432884 100644 --- a/Makefile.in +++ b/Makefile.in -@@ -307,7 +307,7 @@ reconfig config.status: $(srcdir)/$(CONFIGURE) $(srcdir)/enc/Makefile.in \ +@@ -309,7 +309,7 @@ reconfig config.status: $(srcdir)/$(CONFIGURE) $(srcdir)/enc/Makefile.in \ @PWD= MINIRUBY="$(MINIRUBY)"; export MINIRUBY; \ set $(SHELL) $($@-args); $(reconfig-exec-$(V)) diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index 6a13e3a..cdd016c 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -20,7 +20,7 @@ diff --git a/configure.in b/configure.in index db37cd6..6e73fae 100644 --- a/configure.in +++ b/configure.in -@@ -4137,9 +4137,6 @@ AS_CASE(["$target_os"], +@@ -4177,9 +4177,6 @@ AS_CASE(["$target_os"], rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) @@ -30,7 +30,7 @@ index db37cd6..6e73fae 100644 rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} AC_ARG_WITH(rubyarchprefix, AS_HELP_STRING([--with-rubyarchprefix=DIR], -@@ -4162,58 +4159,64 @@ AC_ARG_WITH(ridir, +@@ -4202,58 +4199,64 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -124,7 +124,7 @@ index db37cd6..6e73fae 100644 if test "${LOAD_RELATIVE+set}"; then AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4230,6 +4233,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4270,6 +4273,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -286,7 +286,7 @@ diff --git a/configure.in b/configure.in index 6e73fae..c842725 100644 --- a/configure.in +++ b/configure.in -@@ -274,7 +274,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` +@@ -275,7 +275,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"` AC_SUBST(RUBY_BASE_NAME) AC_SUBST(RUBYW_BASE_NAME) diff --git a/ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch b/ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch deleted file mode 100644 index da7e980..0000000 --- a/ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 98e565ec78cb4a07ffde8589ac4581fca31e9c17 Mon Sep 17 00:00:00 2001 -From: mrkn -Date: Thu, 7 Jan 2016 13:35:32 +0000 -Subject: [PATCH] * ruby.h: undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P - and HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P on C++. [ruby-core:72736] - [Bug #11962] - -git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ---- - ChangeLog | 6 ++++++ - include/ruby/ruby.h | 7 +++++++ - 2 files changed, 13 insertions(+) - -diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h -index 7aabf5b..82dca14 100644 ---- a/include/ruby/ruby.h -+++ b/include/ruby/ruby.h -@@ -26,6 +26,13 @@ extern "C" { - #include RUBY_EXTCONF_H - #endif - -+#if defined(__cplusplus) -+/* __builtin_choose_expr and __builtin_types_compatible aren't available -+ * on C++. See https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html */ -+# undef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P -+# undef HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P -+#endif -+ - #include "defines.h" - - #define NORETURN_STYLE_NEW 1 diff --git a/ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch b/ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch deleted file mode 100644 index ce01d07..0000000 --- a/ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch +++ /dev/null @@ -1,60 +0,0 @@ -From c5c60ded6dbb6256640b0308a45c42da8c7fe071 Mon Sep 17 00:00:00 2001 -From: akr -Date: Fri, 22 Apr 2016 12:20:06 +0000 -Subject: [PATCH] * test/ruby/test_time_tz.rb: Tests depends on Europe/Moscow - removed to avoid test failures due to the tzdata change. - https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95 - Found by naruse. - -git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ---- - ChangeLog | 7 +++++++ - test/ruby/test_time_tz.rb | 13 ------------- - 2 files changed, 7 insertions(+), 13 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index 3b96a9b..965f296 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,10 @@ -+Fri Apr 22 21:00:44 2016 Tanaka Akira -+ -+ * test/ruby/test_time_tz.rb: Tests depends on Europe/Moscow removed -+ to avoid test failures due to the tzdata change. -+ https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95 -+ Found by naruse. -+ - Thu Dec 24 23:01:57 2015 SHIBATA Hiroshi - - * NEWS: added entry for CGI.escapeHTML optimization. -diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb -index f5d4690..b40b1ac 100644 ---- a/test/ruby/test_time_tz.rb -+++ b/test/ruby/test_time_tz.rb -@@ -170,13 +170,6 @@ def test_europe_lisbon - } - end if has_lisbon_tz - -- def test_europe_moscow -- with_tz(tz="Europe/Moscow") { -- assert_time_constructor(tz, "1992-03-29 00:00:00 +0400", :local, [1992,3,28,23,0,0]) -- assert_time_constructor(tz, "1992-03-29 00:59:59 +0400", :local, [1992,3,28,23,59,59]) -- } -- end -- - def test_pacific_kiritimati - with_tz(tz="Pacific/Kiritimati") { - assert_time_constructor(tz, "1994-12-31 23:59:59 -1000", :local, [1994,12,31,23,59,59]) -@@ -356,12 +349,6 @@ def self.gen_zdump_test(data) - Europe/London Sun Aug 10 01:00:00 1947 UTC = Sun Aug 10 02:00:00 1947 BST isdst=1 gmtoff=3600 - Europe/London Sun Nov 2 01:59:59 1947 UTC = Sun Nov 2 02:59:59 1947 BST isdst=1 gmtoff=3600 - Europe/London Sun Nov 2 02:00:00 1947 UTC = Sun Nov 2 02:00:00 1947 GMT isdst=0 gmtoff=0 --Europe/Moscow Sat Jan 18 23:59:59 1992 UTC = Sun Jan 19 01:59:59 1992 MSK isdst=0 gmtoff=7200 --Europe/Moscow Sun Jan 19 00:00:00 1992 UTC = Sun Jan 19 03:00:00 1992 MSK isdst=0 gmtoff=10800 --Europe/Moscow Sat Mar 28 19:59:59 1992 UTC = Sat Mar 28 22:59:59 1992 MSK isdst=0 gmtoff=10800 --Europe/Moscow Sat Mar 28 20:00:00 1992 UTC = Sun Mar 29 00:00:00 1992 MSD isdst=1 gmtoff=14400 --Europe/Moscow Sat Sep 26 18:59:59 1992 UTC = Sat Sep 26 22:59:59 1992 MSD isdst=1 gmtoff=14400 --Europe/Moscow Sat Sep 26 19:00:00 1992 UTC = Sat Sep 26 22:00:00 1992 MSK isdst=0 gmtoff=10800 - Pacific/Kiritimati Sun Jan 1 09:59:59 1995 UTC = Sat Dec 31 23:59:59 1994 LINT isdst=0 gmtoff=-36000 - Pacific/Kiritimati Sun Jan 1 10:00:00 1995 UTC = Mon Jan 2 00:00:00 1995 LINT isdst=0 gmtoff=50400 - End diff --git a/ruby.spec b/ruby.spec index c5bcc50..7de6871 100644 --- a/ruby.spec +++ b/ruby.spec @@ -3,7 +3,7 @@ %global major_version 2 %global minor_version 3 -%global teeny_version 0 +%global teeny_version 1 %global major_minor_version %{major_version}.%{minor_version} %global ruby_version %{major_minor_version}.%{teeny_version} @@ -58,10 +58,6 @@ %global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/') -%if 0%{?fedora} >= 19 -%global with_rubypick 1 -%endif - Summary: An interpreter of object-oriented scripting language Name: %{?scl_prefix}ruby Version: %{ruby_version} @@ -125,16 +121,9 @@ Patch6: ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch # Use miniruby to regenerate prelude.c. # https://bugs.ruby-lang.org/issues/10554 Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch -# 98e565ec78cb4a07ffde8589ac4581fca31e9c17 -# https://bugs.ruby-lang.org/issues/11962 -# https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/53455 -Patch8: ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch # Disable colorized ./configure due to missing macro AS_FUNCTION_DESCRIBE in Autoconf # http://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/m4sugar/m4sh.m4?id=d99fef0e1e8e7a4c04b97fc4c6e0ffb01463622c Patch9: ruby-2.3.0-Disable-colorized-configure.patch -# Remove tests depending on europe/moscow to avoid failures due to tzdata change -# https://github.com/eggert/tz/commit/8ee11a301cf173afb0c76e0315b9f9ec8ebb9d95 -Patch10: ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -474,9 +463,7 @@ rm -rf ext/fiddle/libffi* %patch5 -p1 %patch6 -p1 %patch7 -p1 -%patch8 -p1 %patch9 -p1 -%patch10 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in @@ -670,7 +657,7 @@ DISABLE_TESTS="" # Once seen: http://koji.fedoraproject.org/koji/taskinfo?taskID=12556650 DISABLE_TESTS="$DISABLE_TESTS -x test_fork.rb" -TZ=UTC make check TESTS="-v $DISABLE_TESTS" +make check TESTS="-v $DISABLE_TESTS" %post libs -p /sbin/ldconfig @@ -883,8 +870,6 @@ TZ=UTC make check TESTS="-v $DISABLE_TESTS" %config(noreplace) %{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} %files -n %{?scl_prefix}rubygem-rake -# TODO: file is missing -#%{ruby_libdir}/rake* %{_bindir}/rake %{gem_dir}/gems/rake-%{rake_version} %{gem_dir}/specifications/rake-%{rake_version}.gemspec @@ -973,8 +958,14 @@ TZ=UTC make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog -* Fri Aug 12 2016 Pavel Valena - 2.3.0-62 +* Fri Aug 12 2016 Pavel Valena - 2.3.1-62 - Fix support for dependent^2 SCLs +- Update to Ruby 2.3.1 + * Remove Patch8: + ruby-2.3.0-undef-BUILTIN_CHOOSE_EXPR_CONSTANT_P.patch; subsumed + * Remove Patch10: + ruby-2.3.1-remove-tests-depending-on-europe-moscow.patch; subsumed + also removed "UTC=TZ " tests prefix * Mon Jul 25 2016 Pavel Valena - 2.3.0-61 - Add %%{scl}-runtime to Requires in libs subpackage From 98cb48f99eee64a2a9e91fa50b643d9b26300662 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Wed, 31 Aug 2016 17:48:42 +0200 Subject: [PATCH 20/34] Update sources file --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index f935fb7..6eb7405 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -92ef54e033fb95ec9bdf7023666e5f1f ruby-2.3.0.tar.xz +01e9d172a5c33b385e92fc0cc2899766 ruby-2.3.1.tar.xz From da60d77e08178b42637288b15d62ea3c20def90d Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Tue, 24 May 2016 13:08:58 -0400 Subject: [PATCH 21/34] Support in no_proxy for domain names with whitespaces and leading dots Resolves: rhbz#1384810 --- ...xy-with-whitespaces-and-leading-dots.patch | 71 +++++++++++++++++++ ruby.spec | 11 ++- 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch diff --git a/ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch b/ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch new file mode 100644 index 0000000..fb91f9a --- /dev/null +++ b/ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch @@ -0,0 +1,71 @@ +From 423d042371d0402071c309dc403ea2701600a98b Mon Sep 17 00:00:00 2001 +From: nobu +Date: Sat, 13 Feb 2016 08:12:21 +0000 +Subject: [PATCH] no_proxy with whitespaces and leading dots + +* lib/uri/generic.rb (find_proxy): exclude white-spaces and allow + for a leading dot in the domain name in no_proxy. + [ruby-core:54542] [Feature #8317] + +The previous implementation wouldn't allow for white-spaces nor a leading dot +in the domain name. The latter is described in the wget documentation as a valid case. + +By being more strict on the characters, which are counted to a domainname, +we allow for white-spaces. +Also, a possible leading dot will be handled gracefully. + +[Fix GH-285] + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + ChangeLog | 6 ++++++ + lib/uri/generic.rb | 2 +- + test/uri/test_generic.rb | 4 ++++ + 3 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 2945679..44116e0 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++Sat Feb 13 17:11:58 2016 Fabian Wiesel ++ ++ * lib/uri/generic.rb (find_proxy): exclude white-spaces and allow ++ for a leading dot in the domain name in no_proxy. ++ [ruby-core:54542] [Feature #8317] ++ + Tue Apr 26 02:58:51 2016 Marcus Stollsteimer + + * doc/extension.rdoc: Improvements to english grammers. +diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb +index aba54c1..f2a2d56 100644 +--- a/lib/uri/generic.rb ++++ b/lib/uri/generic.rb +@@ -1546,7 +1546,7 @@ def find_proxy + + name = 'no_proxy' + if no_proxy = ENV[name] || ENV[name.upcase] +- no_proxy.scan(/([^:,]*)(?::(\d+))?/) {|host, port| ++ no_proxy.scan(/(?!\.)([^:,\s]+)(?::(\d+))?/) {|host, port| + if /(\A|\.)#{Regexp.quote host}\z/i =~ self.host && + (!port || self.port == port.to_i) + return nil +diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb +index fcfe1f9..ad189fc 100644 +--- a/test/uri/test_generic.rb ++++ b/test/uri/test_generic.rb +@@ -819,6 +819,14 @@ def test_find_proxy + assert_equal(URI('http://127.0.0.1:8080'), URI("http://192.0.2.1/").find_proxy) + assert_nil(URI("http://192.0.2.2/").find_proxy) + } ++ with_env('http_proxy'=>'http://127.0.0.1:8080', 'no_proxy'=>'example.org') { ++ assert_nil(URI("http://example.org/").find_proxy) ++ assert_nil(URI("http://www.example.org/").find_proxy) ++ } ++ with_env('http_proxy'=>'http://127.0.0.1:8080', 'no_proxy'=>'.example.org') { ++ assert_nil(URI("http://example.org/").find_proxy) ++ assert_nil(URI("http://www.example.org/").find_proxy) ++ } + with_env('http_proxy'=>'') { + assert_nil(URI("http://192.0.2.1/").find_proxy) + assert_nil(URI("ftp://192.0.2.1/").find_proxy) diff --git a/ruby.spec b/ruby.spec index 7de6871..9dca15c 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 62 +%global release 63 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -124,6 +124,10 @@ Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch # Disable colorized ./configure due to missing macro AS_FUNCTION_DESCRIBE in Autoconf # http://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/m4sugar/m4sh.m4?id=d99fef0e1e8e7a4c04b97fc4c6e0ffb01463622c Patch9: ruby-2.3.0-Disable-colorized-configure.patch +# Support in no_proxy for domain names with whitespaces and leading dots +# https://bugzilla.redhat.com/show_bug.cgi?id=1384810 +# https://github.com/ruby/ruby/commit/423d042371d0402071c309dc403ea2701600a98b +Patch10: ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -464,6 +468,7 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch9 -p1 +%patch10 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in @@ -958,6 +963,10 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog +* Mon Oct 17 2016 Pavel Valena +- Support in no_proxy for domain names with whitespaces and leading dots + Resolves: rhbz#1384810 + * Fri Aug 12 2016 Pavel Valena - 2.3.1-62 - Fix support for dependent^2 SCLs - Update to Ruby 2.3.1 From f148354cb286722ce81d0fec918ffe4e03027a99 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Wed, 26 Oct 2016 20:04:45 +0200 Subject: [PATCH 22/34] Fix: do not fail in operating_system.rb when X_SCLS is empty Enhance test_dependent_scls.rb Resolves: rhbz#1387139 --- operating_system.rb | 6 ++- ruby.spec | 14 +++++-- test_dependent_scls.rb | 92 +++++++++++++++++++++++++++--------------- 3 files changed, 74 insertions(+), 38 deletions(-) diff --git a/operating_system.rb b/operating_system.rb index 8e742fe..cdbc112 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -42,7 +42,11 @@ module Gem # Get enabled SCLs in order of (most) dependent SCL to base SCL def x_scls - @x_scls ||= ENV['X_SCLS'].split(' ').reverse! + @x_scls ||= if ENV['X_SCLS'].kind_of?(String) + ENV['X_SCLS'].split(' ').reverse! + else + [] + end end private :x_scls diff --git a/ruby.spec b/ruby.spec index 9dca15c..41d011f 100644 --- a/ruby.spec +++ b/ruby.spec @@ -23,7 +23,7 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 63 +%global release 64 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -632,10 +632,12 @@ sed -i 's/^/%lang(ja) /' .ruby-doc.ja %check # Ruby software collection tests %{?scl:scl enable %scl - << \EOF +set -e mkdir -p ./lib/rubygems/defaults cp %{SOURCE1} ./lib/rubygems/defaults -make test-all TESTS="%{SOURCE14}" || exit 1 -rm -rf ./lib/rubygems/defaults +sed 's/@SCL@/%{scl}/' %{SOURCE14} > ./%{basename:%{SOURCE14}} +make test-all TESTS="%{basename:%{SOURCE14}}" +rm -rf ./lib/rubygems/defaults ./%{basename:%{SOURCE14}} EOF} # Check RubyGems version correctness. @@ -963,7 +965,11 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/tkextlib %changelog -* Mon Oct 17 2016 Pavel Valena +* Wed Oct 26 2016 Pavel Valena - 2.3.1-64 +- Fix: do not fail in operating_system.rb when X_SCLS is empty + Resolves: rhbz#1387139 + +* Mon Oct 17 2016 Pavel Valena - 2.3.1-63 - Support in no_proxy for domain names with whitespaces and leading dots Resolves: rhbz#1384810 diff --git a/test_dependent_scls.rb b/test_dependent_scls.rb index 30c49ee..bff74d0 100644 --- a/test_dependent_scls.rb +++ b/test_dependent_scls.rb @@ -6,25 +6,36 @@ require 'rubygems/defaults/operating_system' class TestDependentSCLS < Test::Unit::TestCase def setup - # Avoid caching - Gem.class_eval("@x_scls, @default_locations, @default_dirs = nil, nil, nil") - # TODO: Different bin dir during build ("/builddir/build/BUILD/ruby-2.0.0-p247") @bin_dir = Gem::ConfigMap[:bindir].split(File::SEPARATOR).last - @scl = ENV['X_SCLS'].strip + @scl_root = '/opt/rh/@SCL@/root' + + @env_orig = ['X_SCLS', 'GEM_PATH'].inject({}) do |env_orig, key| + env_orig[key] = ENV[key].dup + env_orig + end + end + + def teardown + # Avoid caching + Gem.class_eval("@x_scls, @default_locations, @default_dirs, @get_default_dirs = nil, nil, nil, nil") + + @env_orig.each { |key, val| ENV[key] = val } end def test_default_paths - default_locations = { :system => "/opt/rh/#{@scl}/root/usr", - :local => "/opt/rh/#{@scl}/root/usr/local" } + ENV['X_SCLS'] = '@SCL@' # enabled scls + + default_locations = { :system => "#{@scl_root}/usr", + :local => "#{@scl_root}/usr/local" } assert_equal default_locations, Gem.default_locations - default_dirs = { :system => { :bin_dir => "/opt/rh/#{@scl}/root/usr/#{@bin_dir}", - :gem_dir => "/opt/rh/#{@scl}/root/usr/share/gems", - :ext_dir => "/opt/rh/#{@scl}/root/usr/lib64/gems" }, - :local => { :bin_dir => "/opt/rh/#{@scl}/root/usr/local/#{@bin_dir}", - :gem_dir => "/opt/rh/#{@scl}/root/usr/local/share/gems", - :ext_dir => "/opt/rh/#{@scl}/root/usr/local/lib64/gems" } } + default_dirs = { :system => { :bin_dir => "#{@scl_root}/usr/#{@bin_dir}", + :gem_dir => "#{@scl_root}/usr/share/gems", + :ext_dir => "#{@scl_root}/usr/lib64/gems" }, + :local => { :bin_dir => "#{@scl_root}/usr/local/#{@bin_dir}", + :gem_dir => "#{@scl_root}/usr/local/share/gems", + :ext_dir => "#{@scl_root}/usr/local/lib64/gems" } } assert_equal default_dirs, Gem.default_dirs end @@ -34,31 +45,46 @@ class TestDependentSCLS < Test::Unit::TestCase # # See rhbz#1034639 def test_paths_with_dependent_scl - prefix = '/some/prefix' - scl_name = 'ruby_x' + test_scl = 'ruby_x' + test_root = "/some/prefix/#{test_scl}/root" - ENV['X_SCLS'] = "#{@scl} #{scl_name}" # enabled scls - ENV['GEM_PATH'] = "#{prefix}/#{scl_name}/root/usr/share/gems" - - default_locations = { :system => "/opt/rh/#{@scl}/root/usr", - :local => "/opt/rh/#{@scl}/root/usr/local", - :"#{scl_name}_system" => "#{prefix}/#{scl_name}/root/usr", - :"#{scl_name}_local" => "#{prefix}/#{scl_name}/root/usr/local" } + ENV['X_SCLS'] = "@SCL@ #{test_scl}" # enabled scls + ENV['GEM_PATH'] = "#{test_root}/usr/share/gems" + default_locations = { :system => "#{@scl_root}/usr", + :local => "#{@scl_root}/usr/local", + :"#{test_scl}_system" => "#{test_root}/usr", + :"#{test_scl}_local" => "#{test_root}/usr/local" } assert_equal default_locations, Gem.default_locations - default_dirs = { :system => { :bin_dir => "/opt/rh/#{@scl}/root/usr/#{@bin_dir}", - :gem_dir => "/opt/rh/#{@scl}/root/usr/share/gems", - :ext_dir => "/opt/rh/#{@scl}/root/usr/lib64/gems" }, - :local => { :bin_dir => "/opt/rh/#{@scl}/root/usr/local/#{@bin_dir}", - :gem_dir => "/opt/rh/#{@scl}/root/usr/local/share/gems", - :ext_dir => "/opt/rh/#{@scl}/root/usr/local/lib64/gems" }, - :"#{scl_name}_system" => { :bin_dir => "#{prefix}/#{scl_name}/root/usr/#{@bin_dir}", - :gem_dir => "#{prefix}/#{scl_name}/root/usr/share/gems", - :ext_dir => "#{prefix}/#{scl_name}/root/usr/lib64/gems" }, - :"#{scl_name}_local" => { :bin_dir => "#{prefix}/#{scl_name}/root/usr/local/#{@bin_dir}", - :gem_dir => "#{prefix}/#{scl_name}/root/usr/local/share/gems", - :ext_dir => "#{prefix}/#{scl_name}/root/usr/local/lib64/gems" } } + default_dirs = { :system => { :bin_dir => "#{@scl_root}/usr/#{@bin_dir}", + :gem_dir => "#{@scl_root}/usr/share/gems", + :ext_dir => "#{@scl_root}/usr/lib64/gems" }, + :local => { :bin_dir => "#{@scl_root}/usr/local/#{@bin_dir}", + :gem_dir => "#{@scl_root}/usr/local/share/gems", + :ext_dir => "#{@scl_root}/usr/local/lib64/gems" }, + :"#{test_scl}_system" => { :bin_dir => "#{test_root}/usr/#{@bin_dir}", + :gem_dir => "#{test_root}/usr/share/gems", + :ext_dir => "#{test_root}/usr/lib64/gems" }, + :"#{test_scl}_local" => { :bin_dir => "#{test_root}/usr/local/#{@bin_dir}", + :gem_dir => "#{test_root}/usr/local/share/gems", + :ext_dir => "#{test_root}/usr/local/lib64/gems" } } + assert_equal default_dirs, Gem.default_dirs + end + + def test_empty_x_scls + ENV['X_SCLS'] = nil # no enabled scls + + default_locations = { :system => "#{@scl_root}/usr", + :local => "#{@scl_root}/usr/local" } + assert_equal default_locations, Gem.default_locations + + default_dirs = { :system => { :bin_dir => "#{@scl_root}/usr/#{@bin_dir}", + :gem_dir => "#{@scl_root}/usr/share/gems", + :ext_dir => "#{@scl_root}/usr/lib64/gems" }, + :local => { :bin_dir => "#{@scl_root}/usr/local/#{@bin_dir}", + :gem_dir => "#{@scl_root}/usr/local/share/gems", + :ext_dir => "#{@scl_root}/usr/local/lib64/gems" } } assert_equal default_dirs, Gem.default_dirs end From 7bb9e86d8d5982d4d0ee9d47abb8c2aa1c507bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 2 Jan 2017 13:02:18 +0100 Subject: [PATCH 23/34] Upgrade to Ruby 2.4.0. --- config.h | 2 + macros.rubygems | 112 +++++++- ruby-1.9.3-mkmf-verbose.patch | 4 +- ...-additional-preludes-by-configuratio.patch | 4 +- ...0-Enable-configuration-of-archlibdir.patch | 2 +- ...ed-paths-when-empty-version-string-i.patch | 4 +- ruby-2.1.0-always-use-i386.patch | 2 +- ruby-2.1.0-custom-rubygems-location.patch | 8 +- ...2.3-Generate-preludes-using-miniruby.patch | 10 +- ruby-2.3.0-Disable-colorized-configure.patch | 26 -- ruby-2.3.0-ruby_version.patch | 24 +- ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch | 119 ++++++++ ...xy-with-whitespaces-and-leading-dots.patch | 71 ----- ruby.spec | 269 ++++++++++++------ sources | 2 +- 15 files changed, 429 insertions(+), 230 deletions(-) delete mode 100644 ruby-2.3.0-Disable-colorized-configure.patch create mode 100644 ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch delete mode 100644 ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch diff --git a/config.h b/config.h index 39e4a5c..b44f715 100644 --- a/config.h +++ b/config.h @@ -52,6 +52,8 @@ #include "ruby/config-mipsel.h" #elif defined(__mips) #include "ruby/config-mips.h" +#elif defined(__riscv64) +#include "ruby/config-riscv64.h" #else #error "The ruby-devel package is not usable with the architecture." #endif diff --git a/macros.rubygems b/macros.rubygems index fa4284a..1550c9c 100644 --- a/macros.rubygems +++ b/macros.rubygems @@ -3,16 +3,21 @@ %gem_archdir %{_libdir}/gems # Common gem locations and files. -%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version} -%gem_extdir_mri %{gem_archdir}/ruby/%{gem_name}-%{version} +%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease} +%gem_extdir_mri %{gem_archdir}/ruby/%{gem_name}-%{version}%{?prerelease} %gem_libdir %{gem_instdir}/lib -%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}.gem -%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec -%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version} +%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem +%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec +%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease} -# Install gem into appropriate directory. -# -n Overrides gem file name for installation. -# -d Set installation directory. + +# %gem_install - Install gem into appropriate directory. +# +# Usage: %gem_install [options] +# +# -n Overrides gem file name for installation. +# -d Set installation directory. +# %gem_install(d:n:) \ mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \ \ @@ -23,9 +28,10 @@ gem install \\\ --build-root %{-d*}%{!?-d:.} \\\ --force \\\ --document=ri,rdoc \\\ - %{-n*}%{!?-n:%{gem_name}-%{version}.gem} \ + %{-n*}%{!?-n:%{gem_name}-%{version}%{?prerelease}.gem} \ %{nil} + # For rubygems packages we want to filter out any provides caused by private # libs in %%{gem_archdir}. # @@ -34,3 +40,91 @@ gem install \\\ %rubygems_default_filter %{expand: \ %global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \ } + + +# The 'read' command in gemspec_add _depand gemspec_remove_dep macros is not +# essential, but it is usefull to make the sript appear in build log. + + +# %gemspec_add_dep - Add dependency into .gemspec. +# +# Usage: %gemspec_add_dep -g [options] [requirements] +# +# Add dependency named to .gemspec file. The macro adds runtime +# dependency by default. The [requirements] argument can be used to specify +# the dependency constraints more precisely. It is expected to be valid Ruby +# code. +# +# -s Overrides the default .gemspec location. +# -d Add development dependecy. +# +%gemspec_add_dep(g:s:d) \ +read -d '' gemspec_add_dep_script << 'EOR' || : \ + gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ + \ + name = '%{-g*}' \ + requirements = %{*}%{!?1:nil} \ + \ + type = :%{!?-d:runtime}%{?-d:development} \ + \ + spec = Gem::Specification.load(gemspec_file) \ + abort("#{gemspec_file} is not accessible.") unless spec \ + \ + dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ + if dep \ + dep.requirement.concat requirements \ + else \ + spec.public_send "add_#{type}_dependency", name, requirements \ + end \ + File.write gemspec_file, spec.to_ruby \ +EOR\ +echo "$gemspec_add_dep_script" | ruby \ +unset -v gemspec_add_dep_script \ +%{nil} + + +# %gemspec_remove_dep - Remove dependency from .gemspec. +# +# Usage: %gemspec_remove_dep -g [options] [requirements] +# +# Remove dependency named from .gemspec file. The macro removes runtime +# dependency by default. The [requirements] argument can be used to specify +# the dependency constraints more precisely. It is expected to be valid Ruby +# code. The macro fails if these specific requirements can't be removed. +# +# -s Overrides the default .gemspec location. +# -d Remove development dependecy. +# +%gemspec_remove_dep(g:s:d) \ +read -d '' gemspec_remove_dep_script << 'EOR' || : \ + gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ + \ + name = '%{-g*}' \ + requirements = %{*}%{!?1:nil} \ + \ + type = :%{!?-d:runtime}%{?-d:development} \ + \ + spec = Gem::Specification.load(gemspec_file) \ + abort("#{gemspec_file} is not accessible.") unless spec \ + \ + dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ + if dep \ + if requirements \ + requirements = Gem::Requirement.create(requirements).requirements \ + requirements.each do |r| \ + unless dep.requirement.requirements.reject! { |dependency_requirements| dependency_requirements == r } \ + abort("Requirement '#{r.first} #{r.last}' was not possible to remove for dependency '#{dep}'!") \ + end \ + end \ + spec.dependencies.delete dep if dep.requirement.requirements.empty? \ + else \ + spec.dependencies.delete dep \ + end \ + else \ + abort("Dependency '#{name}' was not found!") \ + end \ + File.write gemspec_file, spec.to_ruby \ +EOR\ +echo "$gemspec_remove_dep_script" | ruby \ +unset -v gemspec_remove_dep_script \ +%{nil} diff --git a/ruby-1.9.3-mkmf-verbose.patch b/ruby-1.9.3-mkmf-verbose.patch index ccbd972..d94ef7f 100644 --- a/ruby-1.9.3-mkmf-verbose.patch +++ b/ruby-1.9.3-mkmf-verbose.patch @@ -11,7 +11,7 @@ diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 682eb46..e6b1445 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb -@@ -1892,7 +1892,7 @@ def configuration(srcdir) +@@ -1897,7 +1897,7 @@ def configuration(srcdir) SHELL = /bin/sh # V=0 quiet, V=1 verbose. other values don't work. @@ -19,7 +19,7 @@ index 682eb46..e6b1445 100644 +V = 1 Q1 = $(V:1=) Q = $(Q1:0=@) - ECHO1 = $(V:1=@#{CONFIG['NULLCMD']}) + ECHO1 = $(V:1=@ #{CONFIG['NULLCMD']}) -- 1.8.3.1 diff --git a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch index 75eb363..af8b9a9 100644 --- a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch +++ b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch @@ -26,7 +26,7 @@ diff --git a/common.mk b/common.mk index 5cfbc3d..3f0a82e 100644 --- a/common.mk +++ b/common.mk -@@ -127,7 +127,7 @@ ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS) +@@ -144,7 +144,7 @@ ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS) GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT) DEFAULT_PRELUDES = $(GEM_PRELUDE) @@ -39,7 +39,7 @@ diff --git a/configure.in b/configure.in index 0e371e2..d4f1dcb 100644 --- a/configure.in +++ b/configure.in -@@ -4374,6 +4374,13 @@ AC_SUBST(rubyarchhdrdir)dnl +@@ -4536,6 +4536,13 @@ AC_SUBST(rubyarchhdrdir)dnl AC_SUBST(sitearchhdrdir)dnl AC_SUBST(vendorarchhdrdir)dnl diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index 43fa7f6..a4e6c28 100644 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -11,7 +11,7 @@ diff --git a/configure.in b/configure.in index 37d9a62..553d4d0 100644 --- a/configure.in +++ b/configure.in -@@ -3632,6 +3632,11 @@ if test ${multiarch+set}; then +@@ -3790,6 +3790,11 @@ if test ${multiarch+set}; then fi archlibdir='${libdir}/${arch}' diff --git a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch index eb34107..e841569 100644 --- a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +++ b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch @@ -14,7 +14,7 @@ diff --git a/configure.in b/configure.in index db37cd6..ce8d149 100644 --- a/configure.in +++ b/configure.in -@@ -4228,7 +4228,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -4390,7 +4390,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then @@ -67,7 +67,7 @@ diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb index 07076d4..35e6c3c 100755 --- a/tool/mkconfig.rb +++ b/tool/mkconfig.rb -@@ -122,7 +122,7 @@ def config.write(arg) +@@ -113,7 +113,7 @@ val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump case name when /^prefix$/ diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 9d78b05..ba358f3 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -11,7 +11,7 @@ diff --git a/configure.in b/configure.in index 553d4d0..03a4152 100644 --- a/configure.in +++ b/configure.in -@@ -4292,6 +4292,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -4454,6 +4454,8 @@ AC_SUBST(vendorarchdir)dnl AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index e82f172..44fe4a7 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -15,7 +15,7 @@ diff --git a/configure.in b/configure.in index 03a4152..0e371e2 100644 --- a/configure.in +++ b/configure.in -@@ -4264,6 +4264,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -4426,6 +4426,10 @@ AC_ARG_WITH(vendorarchdir, [vendorarchdir=$withval], [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) @@ -26,7 +26,7 @@ index 03a4152..0e371e2 100644 if test "${LOAD_RELATIVE+set}"; then AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX='' -@@ -4288,6 +4292,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4450,6 +4454,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl @@ -67,7 +67,7 @@ diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index b47b6e1..0b99408 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -328,6 +328,7 @@ def CONFIG.[](name, mandatory = false) +@@ -330,6 +330,7 @@ def CONFIG.[](name, mandatory = false) sitearchlibdir = CONFIG["sitearchdir"] vendorlibdir = CONFIG["vendorlibdir"] vendorarchlibdir = CONFIG["vendorarchdir"] @@ -75,7 +75,7 @@ index b47b6e1..0b99408 100755 mandir = CONFIG["mandir", true] docdir = CONFIG["docdir", true] configure_args = Shellwords.shellwords(CONFIG["configure_args"]) -@@ -506,7 +507,15 @@ def CONFIG.[](name, mandatory = false) +@@ -517,7 +518,15 @@ def CONFIG.[](name, mandatory = false) install?(:local, :comm, :lib) do prepare "library scripts", rubylibdir noinst = %w[README* *.txt *.rdoc *.gemspec] diff --git a/ruby-2.2.3-Generate-preludes-using-miniruby.patch b/ruby-2.2.3-Generate-preludes-using-miniruby.patch index aa17411..6e8adc4 100644 --- a/ruby-2.2.3-Generate-preludes-using-miniruby.patch +++ b/ruby-2.2.3-Generate-preludes-using-miniruby.patch @@ -11,12 +11,12 @@ diff --git a/common.mk b/common.mk index 168dc52..20c218a 100644 --- a/common.mk +++ b/common.mk -@@ -839,9 +839,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) +@@ -873,9 +873,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) + $(srcdir)/template/prelude.c.tmpl + $(PRELUDE_C): $(COMPILE_PRELUDE) \ - {$(srcdir)}lib/rubygems/defaults.rb \ - {$(srcdir)}lib/rubygems/core_ext/kernel_gem.rb \ -- $(PRELUDE_SCRIPTS) $(LIB_SRCS) -+ $(PRELUDE_SCRIPTS) $(PREP) $(LIB_SRCS) +- $(PRELUDE_SCRIPTS) ++ $(PRELUDE_SCRIPTS) $(PREP) $(ECHO) generating $@ - $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \ + $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \ diff --git a/ruby-2.3.0-Disable-colorized-configure.patch b/ruby-2.3.0-Disable-colorized-configure.patch deleted file mode 100644 index 12cfd8a..0000000 --- a/ruby-2.3.0-Disable-colorized-configure.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 9806021813c9dde4747b0bd6f0ed24bdeede0a4a Mon Sep 17 00:00:00 2001 -From: Pavel Valena -Date: Fri, 15 Jul 2016 13:52:31 +0200 -Subject: [PATCH] Disable colorized ./configure - -Missing macro AS_FUNCTION_DESCRIBE in Autoconf ---- - Makefile.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.in b/Makefile.in -index 76b61f5..2432884 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -309,7 +309,7 @@ reconfig config.status: $(srcdir)/$(CONFIGURE) $(srcdir)/enc/Makefile.in \ - @PWD= MINIRUBY="$(MINIRUBY)"; export MINIRUBY; \ - set $(SHELL) $($@-args); $(reconfig-exec-$(V)) - --$(srcdir)/$(CONFIGURE): $(srcdir)/configure.in $(srcdir)/aclocal.m4 -+$(srcdir)/$(CONFIGURE): $(srcdir)/configure.in - $(CHDIR) $(srcdir) && exec $(AUTOCONF) -o $(@F) - - incs: id.h --- -1.8.3.1 - diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index cdd016c..b4d6f76 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -12,15 +12,15 @@ ruby_version_dir_name now specifies custom version string for versioned directories, e.g. instead of default X.Y.Z, you can specify whatever string. --- - configure.in | 68 ++++++++++++++++++++++++++++------------------------- + configure.in | 64 ++++++++++++++++++++++++++++------------------------- template/ruby.pc.in | 1 + - 2 files changed, 37 insertions(+), 32 deletions(-) + 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/configure.in b/configure.in index db37cd6..6e73fae 100644 --- a/configure.in +++ b/configure.in -@@ -4177,9 +4177,6 @@ AS_CASE(["$target_os"], +@@ -4341,9 +4341,6 @@ AS_CASE(["$target_os"], rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) @@ -30,7 +30,7 @@ index db37cd6..6e73fae 100644 rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} AC_ARG_WITH(rubyarchprefix, AS_HELP_STRING([--with-rubyarchprefix=DIR], -@@ -4202,58 +4199,64 @@ AC_ARG_WITH(ridir, +@@ -4366,56 +4363,62 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -48,11 +48,9 @@ index db37cd6..6e73fae 100644 - echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" - echo '#define STRINGIZE(x) x' - test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' -- echo '#include "verconf.h"' - echo '#include "version.h"' - echo 'ruby_version=RUBY_LIB_VERSION' - } > conftest.c -- test -f verconf.h || > verconf.h - ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`" - eval $ruby_version -elif test -z "${ruby_version}"; then @@ -65,11 +63,9 @@ index db37cd6..6e73fae 100644 +echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" +echo '#define STRINGIZE(x) x' +test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' -+echo '#include "verconf.h"' +echo '#include "version.h"' +echo 'ruby_version=RUBY_LIB_VERSION' +} > conftest.c -+test -f verconf.h || > verconf.h +ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`" +eval $ruby_version + @@ -124,7 +120,7 @@ index db37cd6..6e73fae 100644 if test "${LOAD_RELATIVE+set}"; then AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4270,6 +4273,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4432,6 +4435,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -175,7 +171,7 @@ diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index d4c110e..d39c9a6 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -406,7 +406,7 @@ def CONFIG.[](name, mandatory = false) +@@ -417,7 +417,7 @@ def CONFIG.[](name, mandatory = false) install?(:doc, :rdoc) do if $rdocdir @@ -244,12 +240,12 @@ index 55ca080..75eea2b 100644 + RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] end - end + ## diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 0428bea..b6e090e 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -963,7 +963,8 @@ def test_self_use_paths +@@ -1101,7 +1101,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, '.gem', Gem.ruby_engine] @@ -259,7 +255,7 @@ index 0428bea..b6e090e 100644 assert_equal File.join(parts), Gem.user_dir end -@@ -1090,7 +1091,7 @@ def test_self_user_home_user_drive_and_path +@@ -1228,7 +1229,7 @@ def test_self_user_home_user_drive_and_path def test_self_vendor_dir expected = File.join RbConfig::CONFIG['vendordir'], 'gems', @@ -286,7 +282,7 @@ diff --git a/configure.in b/configure.in index 6e73fae..c842725 100644 --- a/configure.in +++ b/configure.in -@@ -275,7 +275,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` +@@ -271,7 +271,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"` AC_SUBST(RUBY_BASE_NAME) AC_SUBST(RUBYW_BASE_NAME) diff --git a/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch new file mode 100644 index 0000000..8765d2a --- /dev/null +++ b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch @@ -0,0 +1,119 @@ +From 346e147ba6480839b87046e9a9efab0bf6ed3660 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Wed, 10 Aug 2016 17:35:48 +0200 +Subject: [PATCH] Rely on ldd to detect glibc. + +This is just workaround, since we know we are quite sure this will be successful +on Red Hat platforms. + +This workaround rhbz#1361037 +--- + test/fiddle/helper.rb | 92 --------------------------------------------------- + 1 file changed, 92 deletions(-) + +diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb +index 1da3d93..65148a1 100644 +--- a/test/fiddle/helper.rb ++++ b/test/fiddle/helper.rb +@@ -6,98 +6,6 @@ + + libc_so = libm_so = nil + +-case RUBY_PLATFORM +-when /cygwin/ +- libc_so = "cygwin1.dll" +- libm_so = "cygwin1.dll" +-when /x86_64-linux/ +- libc_so = "/lib64/libc.so.6" +- libm_so = "/lib64/libm.so.6" +-when /linux/ +- libdir = '/lib' +- case [0].pack('L!').size +- when 4 +- # 32-bit ruby +- libdir = '/lib32' if File.directory? '/lib32' +- when 8 +- # 64-bit ruby +- libdir = '/lib64' if File.directory? '/lib64' +- end +- libc_so = File.join(libdir, "libc.so.6") +- libm_so = File.join(libdir, "libm.so.6") +-when /mingw/, /mswin/ +- require "rbconfig" +- crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase' +- libc_so = libm_so = "#{crtname}.dll" +-when /darwin/ +- libc_so = "/usr/lib/libc.dylib" +- libm_so = "/usr/lib/libm.dylib" +-when /kfreebsd/ +- libc_so = "/lib/libc.so.0.1" +- libm_so = "/lib/libm.so.1" +-when /gnu/ #GNU/Hurd +- libc_so = "/lib/libc.so.0.3" +- libm_so = "/lib/libm.so.6" +-when /mirbsd/ +- libc_so = "/usr/lib/libc.so.41.10" +- libm_so = "/usr/lib/libm.so.7.0" +-when /freebsd/ +- libc_so = "/lib/libc.so.7" +- libm_so = "/lib/libm.so.5" +-when /bsd|dragonfly/ +- libc_so = "/usr/lib/libc.so" +- libm_so = "/usr/lib/libm.so" +-when /solaris/ +- libdir = '/lib' +- case [0].pack('L!').size +- when 4 +- # 32-bit ruby +- libdir = '/lib' if File.directory? '/lib' +- when 8 +- # 64-bit ruby +- libdir = '/lib/64' if File.directory? '/lib/64' +- end +- libc_so = File.join(libdir, "libc.so") +- libm_so = File.join(libdir, "libm.so") +-when /aix/ +- pwd=Dir.pwd +- libc_so = libm_so = "#{pwd}/libaixdltest.so" +- unless File.exist? libc_so +- cobjs=%w!strcpy.o! +- mobjs=%w!floats.o sin.o! +- funcs=%w!sin sinf strcpy strncpy! +- expfile='dltest.exp' +- require 'tmpdir' +- Dir.mktmpdir do |dir| +- begin +- Dir.chdir dir +- %x!/usr/bin/ar x /usr/lib/libc.a #{cobjs.join(' ')}! +- %x!/usr/bin/ar x /usr/lib/libm.a #{mobjs.join(' ')}! +- %x!echo "#{funcs.join("\n")}\n" > #{expfile}! +- require 'rbconfig' +- if RbConfig::CONFIG["GCC"] = 'yes' +- lflag='-Wl,' +- else +- lflag='' +- end +- flags="#{lflag}-bE:#{expfile} #{lflag}-bnoentry -lm" +- %x!#{RbConfig::CONFIG["LDSHARED"]} -o #{libc_so} #{(cobjs+mobjs).join(' ')} #{flags}! +- ensure +- Dir.chdir pwd +- end +- end +- end +-else +- libc_so = ARGV[0] if ARGV[0] && ARGV[0][0] == ?/ +- libm_so = ARGV[1] if ARGV[1] && ARGV[1][0] == ?/ +- if( !(libc_so && libm_so) ) +- $stderr.puts("libc and libm not found: #{$0} ") +- end +-end +- +-libc_so = nil if !libc_so || (libc_so[0] == ?/ && !File.file?(libc_so)) +-libm_so = nil if !libm_so || (libm_so[0] == ?/ && !File.file?(libm_so)) +- + if !libc_so || !libm_so + ruby = EnvUtil.rubybin + ldd = `ldd #{ruby}` +-- +2.9.2 + diff --git a/ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch b/ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch deleted file mode 100644 index fb91f9a..0000000 --- a/ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 423d042371d0402071c309dc403ea2701600a98b Mon Sep 17 00:00:00 2001 -From: nobu -Date: Sat, 13 Feb 2016 08:12:21 +0000 -Subject: [PATCH] no_proxy with whitespaces and leading dots - -* lib/uri/generic.rb (find_proxy): exclude white-spaces and allow - for a leading dot in the domain name in no_proxy. - [ruby-core:54542] [Feature #8317] - -The previous implementation wouldn't allow for white-spaces nor a leading dot -in the domain name. The latter is described in the wget documentation as a valid case. - -By being more strict on the characters, which are counted to a domainname, -we allow for white-spaces. -Also, a possible leading dot will be handled gracefully. - -[Fix GH-285] - -git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ---- - ChangeLog | 6 ++++++ - lib/uri/generic.rb | 2 +- - test/uri/test_generic.rb | 4 ++++ - 3 files changed, 11 insertions(+), 1 deletion(-) - -diff --git a/ChangeLog b/ChangeLog -index 2945679..44116e0 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,9 @@ -+Sat Feb 13 17:11:58 2016 Fabian Wiesel -+ -+ * lib/uri/generic.rb (find_proxy): exclude white-spaces and allow -+ for a leading dot in the domain name in no_proxy. -+ [ruby-core:54542] [Feature #8317] -+ - Tue Apr 26 02:58:51 2016 Marcus Stollsteimer - - * doc/extension.rdoc: Improvements to english grammers. -diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb -index aba54c1..f2a2d56 100644 ---- a/lib/uri/generic.rb -+++ b/lib/uri/generic.rb -@@ -1546,7 +1546,7 @@ def find_proxy - - name = 'no_proxy' - if no_proxy = ENV[name] || ENV[name.upcase] -- no_proxy.scan(/([^:,]*)(?::(\d+))?/) {|host, port| -+ no_proxy.scan(/(?!\.)([^:,\s]+)(?::(\d+))?/) {|host, port| - if /(\A|\.)#{Regexp.quote host}\z/i =~ self.host && - (!port || self.port == port.to_i) - return nil -diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb -index fcfe1f9..ad189fc 100644 ---- a/test/uri/test_generic.rb -+++ b/test/uri/test_generic.rb -@@ -819,6 +819,14 @@ def test_find_proxy - assert_equal(URI('http://127.0.0.1:8080'), URI("http://192.0.2.1/").find_proxy) - assert_nil(URI("http://192.0.2.2/").find_proxy) - } -+ with_env('http_proxy'=>'http://127.0.0.1:8080', 'no_proxy'=>'example.org') { -+ assert_nil(URI("http://example.org/").find_proxy) -+ assert_nil(URI("http://www.example.org/").find_proxy) -+ } -+ with_env('http_proxy'=>'http://127.0.0.1:8080', 'no_proxy'=>'.example.org') { -+ assert_nil(URI("http://example.org/").find_proxy) -+ assert_nil(URI("http://www.example.org/").find_proxy) -+ } - with_env('http_proxy'=>'') { - assert_nil(URI("http://192.0.2.1/").find_proxy) - assert_nil(URI("ftp://192.0.2.1/").find_proxy) diff --git a/ruby.spec b/ruby.spec index 41d011f..f6d8b33 100644 --- a/ruby.spec +++ b/ruby.spec @@ -2,18 +2,18 @@ %{?scl:%scl_package ruby} %global major_version 2 -%global minor_version 3 -%global teeny_version 1 +%global minor_version 4 +%global teeny_version 0 %global major_minor_version %{major_version}.%{minor_version} %global ruby_version %{major_minor_version}.%{teeny_version} %global ruby_release %{ruby_version} # Specify the named version. It has precedense to revision. -#%%global milestone preview2 +#%%global milestone rc1 # Keep the revision enabled for pre-releases from SVN. -#%%global revision 53264 +#%%global revision 57159 %global ruby_archive %{pkg_name}-%{ruby_version} @@ -23,7 +23,8 @@ %global ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif -%global release 64 + +%global release 70 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -31,24 +32,26 @@ %global rubygems_dir %{_datadir}/rubygems # Bundled libraries versions -%global rubygems_version 2.5.1 -%global molinillo_version 0.4.0 +%global rubygems_version 2.6.8 +%global molinillo_version 0.5.3 # TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM. # http://redmine.ruby-lang.org/issues/5313 %global irb_version %{ruby_version} -%global bigdecimal_version 1.2.8 -%global did_you_mean_version 1.0.0 -%global io_console_version 0.4.5 -%global json_version 1.8.3 -%global minitest_version 5.8.3 -%global power_assert_version 0.2.6 -%global psych_version 2.0.17 -%global rake_version 10.4.2 -%global rdoc_version 4.2.1 +%global bigdecimal_version 1.3.0 +%global did_you_mean_version 1.1.0 +%global io_console_version 0.4.6 +%global json_version 2.0.2 +%global minitest_version 5.10.1 %global net_telnet_version 0.1.1 -%global test_unit_version 3.1.5 +%global openssl_version 2.0.2 +%global power_assert_version 0.4.1 +%global psych_version 2.2.2 +%global rake_version 12.0.0 +%global rdoc_version 5.0.0 +%global test_unit_version 3.2.3 +%global xmlrpc_version 0.2.1 # Might not be needed in the future, if we are lucky enough. # https://bugzilla.redhat.com/show_bug.cgi?id=888262 @@ -58,6 +61,14 @@ %global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/') +%if 0%{?fedora} >= 19 +%global with_rubypick 1 +%endif + +%if 0%{?fedora} +%global with_checksec 1 +%endif + Summary: An interpreter of object-oriented scripting language Name: %{?scl_prefix}ruby Version: %{ruby_version} @@ -121,13 +132,10 @@ Patch6: ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch # Use miniruby to regenerate prelude.c. # https://bugs.ruby-lang.org/issues/10554 Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch -# Disable colorized ./configure due to missing macro AS_FUNCTION_DESCRIBE in Autoconf -# http://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/m4sugar/m4sh.m4?id=d99fef0e1e8e7a4c04b97fc4c6e0ffb01463622c -Patch9: ruby-2.3.0-Disable-colorized-configure.patch -# Support in no_proxy for domain names with whitespaces and leading dots -# https://bugzilla.redhat.com/show_bug.cgi?id=1384810 -# https://github.com/ruby/ruby/commit/423d042371d0402071c309dc403ea2701600a98b -Patch10: ruby-2.4.0-no_proxy-with-whitespaces-and-leading-dots.patch +# Workaround "an invalid stdio handle" error on PPC, due to recently introduced +# hardening features of glibc (rhbz#1361037). +# https://bugs.ruby-lang.org/issues/12666 +Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -137,6 +145,7 @@ Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} # and http://bugs.ruby-lang.org/issues/6123 Requires: %{?scl_prefix}rubygem(bigdecimal) >= %{bigdecimal_version} Requires: %{?scl_prefix}rubygem(did_you_mean) >= %{did_you_mean_version} +Requires: %{?scl_prefix}rubygem(openssl) >= %{openssl_version} %{?scl:BuildRequires: %{scl}-runtime} BuildRequires: autoconf BuildRequires: gdbm-devel @@ -144,20 +153,19 @@ BuildRequires: libffi-devel BuildRequires: openssl-devel BuildRequires: libyaml-devel BuildRequires: readline-devel -BuildRequires: tk-devel # Needed to pass test_set_program_name(TestRubyOptions) BuildRequires: procps BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/dtrace # RubyGems test suite optional dependencies. BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/git BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/cmake +# Required to test hardening. +%{?with_checksec:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/checksec} # This package provides %%{_bindir}/ruby-mri therefore it is marked by this # virtual provide. It can be installed as dependency of rubypick. Provides: ruby(runtime_executable) = %{ruby_release} -%global __provides_exclude_from ^(%{ruby_libarchdir}|%{gem_archdir})/.*\\.so$ - %description Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text @@ -193,7 +201,6 @@ This package includes the libruby, necessary to run Ruby. # TODO: Rename or not rename to ruby-rubygems? - %package -n %{?scl_prefix}rubygems Summary: The Ruby standard for packaging ruby libraries Version: %{rubygems_version} @@ -201,9 +208,8 @@ Group: Development/Libraries License: Ruby or MIT Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}rubygem(rdoc) >= %{rdoc_version} -# TODO: This seems to be optional now. -# https://github.com/rubygems/rubygems/commit/68da16dd7508c5c4010bfe32f99422568d3d582f Requires: %{?scl_prefix}rubygem(io-console) >= %{io_console_version} +Requires: %{?scl_prefix}rubygem(openssl) >= %{openssl_version} Requires: %{?scl_prefix}rubygem(psych) >= %{psych_version} Provides: %{?scl_prefix}gem = %{version}-%{release} Provides: %{?scl_prefix}ruby(rubygems) = %{version}-%{release} @@ -216,6 +222,7 @@ BuildArch: noarch RubyGems is the Ruby standard for publishing and managing third party libraries. + %package -n %{?scl_prefix}rubygems-devel Summary: Macros and development tools for packaging RubyGems Version: %{rubygems_version} @@ -230,6 +237,7 @@ BuildArch: noarch %description -n %{?scl_prefix}rubygems-devel Macros and development tools for packaging RubyGems. + %package -n %{?scl_prefix}rubygem-rake Summary: Ruby based make-like utility Version: %{rake_version} @@ -245,6 +253,7 @@ BuildArch: noarch Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax. + %package irb Summary: The Interactive Ruby Version: %{irb_version} @@ -258,6 +267,7 @@ BuildArch: noarch The irb is acronym for Interactive Ruby. It evaluates ruby expression from the terminal. + %package -n %{?scl_prefix}rubygem-rdoc Summary: A tool to generate HTML and command-line documentation for Ruby projects Version: %{rdoc_version} @@ -267,6 +277,8 @@ License: GPLv2 and Ruby and MIT and SIL Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Requires: %{?scl_prefix}ruby(irb) = %{irb_version} +# Hardcode the dependency to keep it compatible with dependencies of the +# official rubygem-rdoc gem. Requires: %{?scl_prefix}rubygem(json) >= %{json_version} Provides: %{?scl_prefix}rdoc = %{version}-%{release} Provides: %{?scl_prefix}ri = %{version}-%{release} @@ -278,6 +290,7 @@ RDoc produces HTML and command-line documentation for Ruby projects. RDoc includes the 'rdoc' and 'ri' tools for generating and displaying online documentation. + %package doc Summary: Documentation for %{pkg_name} Group: Documentation @@ -287,6 +300,7 @@ BuildArch: noarch %description doc This package contains documentation for %{pkg_name}. + %package -n %{?scl_prefix}rubygem-bigdecimal Summary: BigDecimal provides arbitrary-precision floating point decimal arithmetic Version: %{bigdecimal_version} @@ -308,6 +322,7 @@ because it provides the correct answers people expect–whereas normal binary floating point arithmetic often introduces subtle errors because of the conversion between base 10 and base 2. + %package -n %{?scl_prefix}rubygem-did_you_mean Summary: "Did you mean?" experience in Ruby Version: %{did_you_mean_version} @@ -321,6 +336,7 @@ Provides: %{?scl_prefix}rubygem(did_you_mean) = %{version}-%{release} "did you mean?" experience in Ruby: the error message will tell you the right one when you misspelled something. + %package -n %{?scl_prefix}rubygem-io-console Summary: IO/Console is a simple console utilizing library Version: %{io_console_version} @@ -333,6 +349,7 @@ Provides: %{?scl_prefix}rubygem(io-console) = %{version}-%{release} IO/Console provides very simple and portable access to console. It doesn't provide higher layer features, such like curses and readline. + %package -n %{?scl_prefix}rubygem-json Summary: This is a JSON implementation as a Ruby extension in C Version: %{json_version} @@ -349,6 +366,7 @@ You can think of it as a low fat alternative to XML, if you want to store data to disk or transmit it over a network rather than use a verbose markup language. + %package -n %{?scl_prefix}rubygem-minitest Summary: Minitest provides a complete suite of testing facilities Version: %{minitest_version} @@ -373,6 +391,21 @@ framework. minitest/pride shows pride in testing and adds coloring to your test output. + +%package -n %{?scl_prefix}rubygem-openssl +Summary: OpenSSL provides SSL, TLS and general purpose cryptography +Version: %{openssl_version} +Group: Development/Libraries +License: Ruby or BSD +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(openssl) = %{version}-%{release} + +%description -n %{?scl_prefix}rubygem-openssl +OpenSSL provides SSL, TLS and general purpose cryptography. It wraps the +OpenSSL library. + + %package -n %{?scl_prefix}rubygem-power_assert Summary: Power Assert for Ruby Version: %{power_assert_version} @@ -388,6 +421,7 @@ Power Assert shows each value of variables and method calls in the expression. It is useful for testing, providing which value wasn't correct when the condition is not satisfied. + %package -n %{?scl_prefix}rubygem-psych Summary: A libyaml wrapper for Ruby Version: %{psych_version} @@ -403,6 +437,7 @@ libyaml[http://pyyaml.org/wiki/LibYAML] for its YAML parsing and emitting capabilities. In addition to wrapping libyaml, Psych also knows how to serialize and de-serialize most Ruby objects to and from the YAML format. + %package -n %{?scl_prefix}rubygem-net-telnet Summary: Provides telnet client functionality Version: %{net_telnet_version} @@ -422,11 +457,8 @@ you do use sysread() directly when in telnet mode, you should probably pass the output through preprocess() to extract telnet command sequences. -# The Summary/Description fields are rather poor. -# https://github.com/test-unit/test-unit/issues/73 - %package -n %{?scl_prefix}rubygem-test-unit -Summary: Improved version of Test::Unit bundled in Ruby 1.8.x +Summary: An xUnit family unit testing framework for Ruby Version: %{test_unit_version} Group: Development/Libraries # lib/test/unit/diff.rb is a double license of the Ruby license and PSF license. @@ -439,18 +471,26 @@ Provides: %{?scl_prefix}rubygem(test-unit) = %{version}-%{release} BuildArch: noarch %description -n %{?scl_prefix}rubygem-test-unit -Ruby 1.9.x bundles minitest not Test::Unit. Test::Unit -bundled in Ruby 1.8.x had not been improved but unbundled -Test::Unit (test-unit) is improved actively. +Test::Unit (test-unit) is unit testing framework for Ruby, based on xUnit +principles. These were originally designed by Kent Beck, creator of extreme +programming software development methodology, for Smalltalk's SUnit. It allows +writing tests, checking results and automated testing in Ruby. -%package tcltk -Summary: Tcl/Tk interface for scripting language Ruby -Group: Development/Languages -Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{ruby_version} -Provides: %{?scl_prefix}ruby(tcltk) = %{ruby_version}-%{release} -%description tcltk -Tcl/Tk interface for the object-oriented scripting language Ruby. +%package -n %{?scl_prefix}rubygem-xmlrpc +Summary: XMLRPC is a lightweight protocol that enables remote procedure calls over HTTP +Version: %{xmlrpc_version} +Group: Development/Libraries +License: Ruby or BSD +Requires: %{?scl_prefix}ruby(release) +Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +Provides: %{?scl_prefix}rubygem(xmlrpc) = %{version}-%{release} +BuildArch: noarch + +%description -n %{?scl_prefix}rubygem-xmlrpc +XMLRPC is a lightweight protocol that enables remote procedure calls over +HTTP. + %prep %setup -q -n %{ruby_archive} @@ -468,11 +508,30 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch9 -p1 -%patch10 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in +# AS_FOR is not supported on RHEL6, inject our own version. +cat >> acinclude.m4 <<\EOF +m4_ifndef([AS_FOR], [ + m4_define([AS_FOR], [ + m4_pushdef([$1], [$$2]) + for $2 in $3; do + $4 + done + m4_popdef([$1]) + ]) +]) +EOF + +# autoconf in RHEL6 does not support AS_FUNCTION_DESCRIBE, but it cannot be +# dropped on RHEL7, since the AS_REQUIRE_SHELL_FN changed signatures :/ +%if 0%{?rhel} == 6 +sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' configure.in +sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' acinclude.m4 +%endif + # Provide an example of usage of the tapset: cp -a %{SOURCE3} . @@ -481,9 +540,6 @@ cp -a %{SOURCE3} . # https://github.com/ruby/ruby/blob/trunk/tool/compile_prelude.rb#L26 cp -a %{SOURCE6} . -# Disable colorized ./configure -rm aclocal.m4 - %build autoconf @@ -501,6 +557,7 @@ autoconf --with-vendorarchhdrdir='$(vendorhdrdir)/$(arch)' \ --with-rubygemsdir='%{rubygems_dir}' \ --with-ruby-pc='%{pkg_name}.pc' \ + --with-compress-debug-sections=no \ --disable-rpath \ --enable-shared \ --with-ruby-version='' \ @@ -529,15 +586,15 @@ sed -i 's/Version: \${ruby_version}/Version: %{ruby_version}/' %{buildroot}%{_li # Kill bundled certificates, as they should be part of ca-certificates. for cert in \ - Class3PublicPrimaryCertificationAuthority.pem \ - DigiCertHighAssuranceEVRootCA.pem \ - EntrustnetSecureServerCertificationAuthority.pem \ - GeoTrustGlobalCA.pem \ - AddTrustExternalCARoot.pem \ - AddTrustExternalCARoot-2048.pem + rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem \ + rubygems.org/AddTrustExternalCARoot.pem \ + index.rubygems.org/GlobalSignRootCA.pem do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert + rm -r $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) done +# Ensure there is not forgotten any certificate. +test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" # Move macros file into proper place and replace the %%{pkg_name} macro, since it # would be wrongly evaluated during build of other packages. @@ -561,8 +618,7 @@ mv %{buildroot}%{ruby_libdir}/gems %{buildroot}%{gem_dir} mkdir -p %{buildroot}%{_exec_prefix}/lib{,64}/gems/%{pkg_name} # Move bundled rubygems to %%gem_dir and %%gem_extdir_mri -# make symlinks in ruby_stdlib for unbundled Gems, so that everything works as expected -# bigdecimal and io-console are not enough for scl +# make symlinks for io-console and bigdecimal, which are considered to be part of stdlib by other Gems mkdir -p %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib mv %{buildroot}%{ruby_libdir}/rdoc* %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib mv %{buildroot}%{gem_dir}/specifications/default/rdoc-%{rdoc_version}.gemspec %{buildroot}%{gem_dir}/specifications @@ -594,6 +650,15 @@ ln -s %{gem_dir}/gems/json-%{json_version}/lib/json.rb %{buildroot}%{ruby_libdir ln -s %{gem_dir}/gems/json-%{json_version}/lib/json %{buildroot}%{ruby_libdir}/json ln -s %{_libdir}/gems/%{pkg_name}/json-%{json_version}/json/ %{buildroot}%{ruby_libarchdir}/json +mkdir -p %{buildroot}%{gem_dir}/gems/openssl-%{openssl_version}/lib +mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/openssl-%{openssl_version} +mv %{buildroot}%{ruby_libdir}/openssl* %{buildroot}%{gem_dir}/gems/openssl-%{openssl_version}/lib +mv %{buildroot}%{ruby_libarchdir}/openssl.so %{buildroot}%{_libdir}/gems/%{pkg_name}/openssl-%{openssl_version}/ +mv %{buildroot}%{gem_dir}/specifications/default/openssl-%{openssl_version}.gemspec %{buildroot}%{gem_dir}/specifications +ln -s %{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl %{buildroot}%{ruby_libdir}/openssl +ln -s %{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl.rb %{buildroot}%{ruby_libdir}/openssl.rb +ln -s %{_libdir}/gems/%{pkg_name}/openssl-%{openssl_version}/openssl.so %{buildroot}%{ruby_libarchdir}/openssl.so + mkdir -p %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/psych-%{psych_version} mv %{buildroot}%{ruby_libdir}/psych* %{buildroot}%{gem_dir}/gems/psych-%{psych_version}/lib @@ -640,6 +705,12 @@ make test-all TESTS="%{basename:%{SOURCE14}}" rm -rf ./lib/rubygems/defaults ./%{basename:%{SOURCE14}} EOF} +%if 0%{?with_checksec} +# Check Ruby hardening. +checksec -f libruby.so.%{ruby_version} | \ + grep "Full RELRO.*Canary found.*NX enabled.*DSO.*No RPATH.*No RUNPATH.*Yes.*\d*.*\d*.*libruby.so.%{ruby_version}" +%endif + # Check RubyGems version correctness. [ "`make runruby TESTRUN_SCRIPT='bin/gem -v' | tail -1`" == '%{rubygems_version}' ] # Check Molinillo version correctness. @@ -670,26 +741,27 @@ make check TESTS="-v $DISABLE_TESTS" %postun libs -p /sbin/ldconfig +# There is no %license macro on RHEL6. +# https://bugzilla.redhat.com/show_bug.cgi?id=1386246 +%{!?_licensedir:%global license %%doc} + %files -%doc BSDL -%doc COPYING -%lang(ja) %doc COPYING.ja -%doc GPL -%doc LEGAL +%license BSDL +%license COPYING +%lang(ja) %license COPYING.ja +%license GPL +%license LEGAL %{_bindir}/erb %{_bindir}/%{pkg_name}%{?with_rubypick:-mri} %{_mandir}/man1/erb* %{_mandir}/man1/ruby* -# http://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries -%exclude %{_libdir}/libruby-static.a - %files devel -%doc BSDL -%doc COPYING -%lang(ja) %doc COPYING.ja -%doc GPL -%doc LEGAL +%license BSDL +%license COPYING +%lang(ja) %license COPYING.ja +%license GPL +%license LEGAL %config(noreplace) %{_root_sysconfdir}/rpm/macros.ruby%{?scl:.%{scl}} @@ -698,10 +770,10 @@ make check TESTS="-v $DISABLE_TESTS" %{_libdir}/pkgconfig/%{pkg_name}.pc %files libs -%doc COPYING -%lang(ja) %doc COPYING.ja -%doc GPL -%doc LEGAL +%license COPYING +%lang(ja) %license COPYING.ja +%license GPL +%license LEGAL %doc README.md %doc NEWS # Exclude /usr/local directory since it is supposed to be managed by @@ -715,19 +787,16 @@ make check TESTS="-v $DISABLE_TESTS" # Platform independent libraries. %dir %{ruby_libdir} %{ruby_libdir}/*.rb -%exclude %{ruby_libdir}/*-tk.rb %exclude %{ruby_libdir}/irb.rb -%exclude %{ruby_libdir}/tcltk.rb -%exclude %{ruby_libdir}/tk*.rb %exclude %{ruby_libdir}/psych.rb %{ruby_libdir}/cgi %{ruby_libdir}/digest %{ruby_libdir}/drb %{ruby_libdir}/fiddle +%{ruby_libdir}/forwardable %exclude %{ruby_libdir}/irb %{ruby_libdir}/matrix %{ruby_libdir}/net -%{ruby_libdir}/openssl %{ruby_libdir}/optparse %{ruby_libdir}/racc %{ruby_libdir}/rbconfig @@ -737,12 +806,9 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/rss %{ruby_libdir}/shell %{ruby_libdir}/syslog -%exclude %{ruby_libdir}/tk -%exclude %{ruby_libdir}/tkextlib %{ruby_libdir}/unicode_normalize %{ruby_libdir}/uri %{ruby_libdir}/webrick -%{ruby_libdir}/xmlrpc %{ruby_libdir}/yaml # Platform specific libraries. @@ -818,6 +884,9 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libarchdir}/enc/windows_1250.so %{ruby_libarchdir}/enc/windows_1251.so %{ruby_libarchdir}/enc/windows_1252.so +%{ruby_libarchdir}/enc/windows_1253.so +%{ruby_libarchdir}/enc/windows_1254.so +%{ruby_libarchdir}/enc/windows_1257.so %{ruby_libarchdir}/enc/windows_31j.so %{ruby_libarchdir}/etc.so %{ruby_libarchdir}/fcntl.so @@ -832,7 +901,6 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libarchdir}/mathn/rational.so %{ruby_libarchdir}/nkf.so %{ruby_libarchdir}/objspace.so -%{ruby_libarchdir}/openssl.so %{ruby_libarchdir}/pathname.so %{ruby_libarchdir}/pty.so %dir %{ruby_libarchdir}/racc @@ -847,9 +915,6 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libarchdir}/stringio.so %{ruby_libarchdir}/strscan.so %{ruby_libarchdir}/syslog.so -%exclude %{ruby_libarchdir}/tcltklib.so -%{ruby_libarchdir}/thread.so -%exclude %{ruby_libarchdir}/tkutil.so %{ruby_libarchdir}/zlib.so %{tapset_root} @@ -933,6 +998,14 @@ make check TESTS="-v $DISABLE_TESTS" %exclude %{gem_dir}/gems/minitest-%{minitest_version}/.* %{gem_dir}/specifications/minitest-%{minitest_version}.gemspec +%files -n %{?scl_prefix}rubygem-openssl +%{ruby_libdir}/openssl +%{ruby_libdir}/openssl.rb +%{ruby_libarchdir}/openssl.so +%{_libdir}/gems/%{pkg_name}/openssl-%{openssl_version} +%{gem_dir}/gems/openssl-%{openssl_version} +%{gem_dir}/specifications/openssl-%{openssl_version}.gemspec + %files -n %{?scl_prefix}rubygem-power_assert %{gem_dir}/gems/power_assert-%{power_assert_version} %exclude %{gem_dir}/gems/power_assert-%{power_assert_version}/.* @@ -955,16 +1028,28 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/gems/test-unit-%{test_unit_version} %{gem_dir}/specifications/test-unit-%{test_unit_version}.gemspec -%files tcltk -%{ruby_libdir}/*-tk.rb -%{ruby_libdir}/tcltk.rb -%{ruby_libdir}/tk*.rb -%{ruby_libarchdir}/tcltklib.so -%{ruby_libarchdir}/tkutil.so -%{ruby_libdir}/tk -%{ruby_libdir}/tkextlib +%files -n %{?scl_prefix}rubygem-xmlrpc +%license %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/LICENSE.txt +%dir %{gem_dir}/gems/xmlrpc-%{xmlrpc_version} +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Gemfile +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Rakefile +%doc %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/README.md +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/bin +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/lib +%{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Mon Jan 02 2017 Vít Ondruch - 2.4.0-70 +- Upgrade to Ruby 2.4.0. +- Workaround "an invalid stdio handle" error on PPC (rhbz#1361037). +- Add gemspec_add_dep and gemspec_remove_dep macros. +- Move gemified xmlrpc into subpackage. +- Move gemified openssl into subpackage. +- Make symlinks for json gem. +- Tk is removed from stdlib. +- Harden package. +- Extend 'gem_' macros for pre-release version support. + * Wed Oct 26 2016 Pavel Valena - 2.3.1-64 - Fix: do not fail in operating_system.rb when X_SCLS is empty Resolves: rhbz#1387139 diff --git a/sources b/sources index 6eb7405..1173079 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -01e9d172a5c33b385e92fc0cc2899766 ruby-2.3.1.tar.xz +6a2ab52f161bb9e10596ab4330c50564 ruby-2.4.0.tar.xz From e6d7b2f44a9f67347368cdf432278b8ba770e6ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 2 Jan 2017 18:24:19 +0100 Subject: [PATCH 24/34] Remove links to unbundled gems from ruby-libs. --- ruby.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ruby.spec b/ruby.spec index f6d8b33..9d81c90 100644 --- a/ruby.spec +++ b/ruby.spec @@ -24,7 +24,7 @@ %endif -%global release 70 +%global release 71 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -788,7 +788,10 @@ make check TESTS="-v $DISABLE_TESTS" %dir %{ruby_libdir} %{ruby_libdir}/*.rb %exclude %{ruby_libdir}/irb.rb +%exclude %{ruby_libdir}/json.rb +%exclude %{ruby_libdir}/openssl.rb %exclude %{ruby_libdir}/psych.rb +%exclude %{ruby_libdir}/rdoc.rb %{ruby_libdir}/cgi %{ruby_libdir}/digest %{ruby_libdir}/drb @@ -1039,6 +1042,9 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Mon Jan 02 2017 Vít Ondruch - 2.4.0-71 +- ruby-libs should not own links to unbundled gems. + * Mon Jan 02 2017 Vít Ondruch - 2.4.0-70 - Upgrade to Ruby 2.4.0. - Workaround "an invalid stdio handle" error on PPC (rhbz#1361037). From 88cbe3e329fa2cf01b9230ed3b732386d3ffa1d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 9 Jan 2017 11:00:30 +0100 Subject: [PATCH 25/34] Reshuffle the %%license macro to avoid %%postun scriptlet issues. Resolves: rhbz#1411233 --- ruby.spec | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ruby.spec b/ruby.spec index 9d81c90..d3b6b6a 100644 --- a/ruby.spec +++ b/ruby.spec @@ -24,7 +24,7 @@ %endif -%global release 71 +%global release 72 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -69,6 +69,10 @@ %global with_checksec 1 %endif +# There is no %%license macro on RHEL6. +# https://bugzilla.redhat.com/show_bug.cgi?id=1386246 +%{!?_licensedir:%global license %%doc} + Summary: An interpreter of object-oriented scripting language Name: %{?scl_prefix}ruby Version: %{ruby_version} @@ -741,10 +745,6 @@ make check TESTS="-v $DISABLE_TESTS" %postun libs -p /sbin/ldconfig -# There is no %license macro on RHEL6. -# https://bugzilla.redhat.com/show_bug.cgi?id=1386246 -%{!?_licensedir:%global license %%doc} - %files %license BSDL %license COPYING @@ -1042,6 +1042,10 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Mon Jan 09 2017 Vít Ondruch - 2.4.0-72 +- Reshuffle the %%license macro to avoid %%postun scriptlet issues. + Resolves: rhbz#1411233 + * Mon Jan 02 2017 Vít Ondruch - 2.4.0-71 - ruby-libs should not own links to unbundled gems. From 66d12e4545f5b74521441f3e52da87d4897c6f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 9 Jan 2017 12:15:30 +0100 Subject: [PATCH 26/34] Move the definition of %license macro into %files section. The definition on the top of the file does not work on RHEL6 for some reasons :/ But it works if defined in the first %file section :) --- ruby.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ruby.spec b/ruby.spec index d3b6b6a..53b3b80 100644 --- a/ruby.spec +++ b/ruby.spec @@ -24,7 +24,7 @@ %endif -%global release 72 +%global release 73 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -69,10 +69,6 @@ %global with_checksec 1 %endif -# There is no %%license macro on RHEL6. -# https://bugzilla.redhat.com/show_bug.cgi?id=1386246 -%{!?_licensedir:%global license %%doc} - Summary: An interpreter of object-oriented scripting language Name: %{?scl_prefix}ruby Version: %{ruby_version} @@ -746,6 +742,10 @@ make check TESTS="-v $DISABLE_TESTS" %postun libs -p /sbin/ldconfig %files +# There is no %%license macro on RHEL6. +# https://bugzilla.redhat.com/show_bug.cgi?id=1386246 +%{!?_licensedir:%global license %%doc} + %license BSDL %license COPYING %lang(ja) %license COPYING.ja @@ -1042,7 +1042,7 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog -* Mon Jan 09 2017 Vít Ondruch - 2.4.0-72 +* Mon Jan 09 2017 Vít Ondruch - 2.4.0-73 - Reshuffle the %%license macro to avoid %%postun scriptlet issues. Resolves: rhbz#1411233 From 522e4d1ab70ff96113f528468e9c93e809a563ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 9 Jan 2017 18:14:07 +0100 Subject: [PATCH 27/34] Add rubygem-io-console dependency for rubygem-rdoc. The io-console is now the hard requirement and RDoc does not work without it. --- ruby.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ruby.spec b/ruby.spec index 53b3b80..f97b4a4 100644 --- a/ruby.spec +++ b/ruby.spec @@ -277,6 +277,7 @@ License: GPLv2 and Ruby and MIT and SIL Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Requires: %{?scl_prefix}ruby(irb) = %{irb_version} +Requires: %{?scl_prefix}rubygem(io-console) >= %{io_console_version} # Hardcode the dependency to keep it compatible with dependencies of the # official rubygem-rdoc gem. Requires: %{?scl_prefix}rubygem(json) >= %{json_version} @@ -1046,6 +1047,9 @@ make check TESTS="-v $DISABLE_TESTS" - Reshuffle the %%license macro to avoid %%postun scriptlet issues. Resolves: rhbz#1411233 +* Mon Jan 09 2017 Vít Ondruch - 2.4.0-72 +- Add rubygem-io-console dependency for rubygem-rdoc. + * Mon Jan 02 2017 Vít Ondruch - 2.4.0-71 - ruby-libs should not own links to unbundled gems. From 4cb333ddd56150af1587af652dfbdf9b1538bd72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 17 Jan 2017 16:22:14 +0100 Subject: [PATCH 28/34] Apply patch fixing rubygem-mongo build failures. --- ...nhelper.c-block-argument-at-tailcall.patch | 36 +++++++++++++++++++ ruby.spec | 9 ++++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch diff --git a/ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch b/ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch new file mode 100644 index 0000000..cb8fe26 --- /dev/null +++ b/ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch @@ -0,0 +1,36 @@ +From ff3496b0116ed2ed589d000b7bfca3d8288b009c Mon Sep 17 00:00:00 2001 +From: nobu +Date: Mon, 9 Jan 2017 02:55:39 +0000 +Subject: [PATCH] vm_insnhelper.c: block argument at tailcall + +* vm_insnhelper.c (vm_call_iseq_setup_tailcall): check interrupts + after set up the new frame, not the passed block to be clobbered + by invoked finalizers and so on. [ruby-core:78981] [Bug #13107] + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57293 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + vm_insnhelper.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/vm_insnhelper.c b/vm_insnhelper.c +index b580412..662a2d6 100644 +--- a/vm_insnhelper.c ++++ b/vm_insnhelper.c +@@ -1538,8 +1538,6 @@ vm_call_iseq_setup_tailcall(rb_thread_t *th, rb_control_frame_t *cfp, struct rb_ + vm_pop_frame(th, cfp, cfp->ep); + cfp = th->cfp; + +- RUBY_VM_CHECK_INTS(th); +- + sp_orig = sp = cfp->sp; + + /* push self */ +@@ -1558,6 +1556,8 @@ vm_call_iseq_setup_tailcall(rb_thread_t *th, rb_control_frame_t *cfp, struct rb_ + iseq->body->stack_max); + + cfp->sp = sp_orig; ++ RUBY_VM_CHECK_INTS(th); ++ + return Qundef; + } + diff --git a/ruby.spec b/ruby.spec index f97b4a4..e36ac6a 100644 --- a/ruby.spec +++ b/ruby.spec @@ -24,7 +24,7 @@ %endif -%global release 73 +%global release 75 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -136,6 +136,9 @@ Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch # hardening features of glibc (rhbz#1361037). # https://bugs.ruby-lang.org/issues/12666 Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch +# This fixed rubygem-mongo build failures and may be something else as well. +# https://bugs.ruby-lang.org/issues/13107 +Patch10: ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -509,6 +512,7 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch9 -p1 +%patch10 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in @@ -1043,6 +1047,9 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Tue Jan 17 2017 Vít Ondruch - 2.4.0-75 +- Apply patch fixing rubygem-mongo build failures. + * Mon Jan 09 2017 Vít Ondruch - 2.4.0-73 - Reshuffle the %%license macro to avoid %%postun scriptlet issues. Resolves: rhbz#1411233 From 89f3ea9d4a930bbd82f7dc7373eb553b6020a63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 30 Oct 2017 17:30:48 +0100 Subject: [PATCH 29/34] Upgrade to Ruby 2.4.2. Resolves: rhbz#1506785 --- ...-additional-preludes-by-configuratio.patch | 2 +- ...0-Enable-configuration-of-archlibdir.patch | 2 +- ...ed-paths-when-empty-version-string-i.patch | 2 +- ruby-2.1.0-always-use-i386.patch | 2 +- ruby-2.1.0-custom-rubygems-location.patch | 4 +- ruby-2.3.0-ruby_version.patch | 10 ++--- ...nhelper.c-block-argument-at-tailcall.patch | 36 ---------------- ruby.spec | 43 ++++++++++++------- sources | 2 +- 9 files changed, 39 insertions(+), 64 deletions(-) delete mode 100644 ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch diff --git a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch index af8b9a9..3e29d1b 100644 --- a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch +++ b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch @@ -39,7 +39,7 @@ diff --git a/configure.in b/configure.in index 0e371e2..d4f1dcb 100644 --- a/configure.in +++ b/configure.in -@@ -4536,6 +4536,13 @@ AC_SUBST(rubyarchhdrdir)dnl +@@ -4563,6 +4563,13 @@ AC_SUBST(rubyarchhdrdir)dnl AC_SUBST(sitearchhdrdir)dnl AC_SUBST(vendorarchhdrdir)dnl diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index a4e6c28..bc75f5e 100644 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -11,7 +11,7 @@ diff --git a/configure.in b/configure.in index 37d9a62..553d4d0 100644 --- a/configure.in +++ b/configure.in -@@ -3790,6 +3790,11 @@ if test ${multiarch+set}; then +@@ -3823,6 +3823,11 @@ if test ${multiarch+set}; then fi archlibdir='${libdir}/${arch}' diff --git a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch index e841569..489a1b8 100644 --- a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +++ b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch @@ -14,7 +14,7 @@ diff --git a/configure.in b/configure.in index db37cd6..ce8d149 100644 --- a/configure.in +++ b/configure.in -@@ -4390,7 +4390,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -4417,7 +4417,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index ba358f3..238cd66 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -11,7 +11,7 @@ diff --git a/configure.in b/configure.in index 553d4d0..03a4152 100644 --- a/configure.in +++ b/configure.in -@@ -4454,6 +4454,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -4481,6 +4481,8 @@ AC_SUBST(vendorarchdir)dnl AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index 44fe4a7..1905381 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -15,7 +15,7 @@ diff --git a/configure.in b/configure.in index 03a4152..0e371e2 100644 --- a/configure.in +++ b/configure.in -@@ -4426,6 +4426,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -4453,6 +4453,10 @@ AC_ARG_WITH(vendorarchdir, [vendorarchdir=$withval], [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) @@ -26,7 +26,7 @@ index 03a4152..0e371e2 100644 if test "${LOAD_RELATIVE+set}"; then AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX='' -@@ -4450,6 +4454,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4477,6 +4481,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index b4d6f76..80be728 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -20,7 +20,7 @@ diff --git a/configure.in b/configure.in index db37cd6..6e73fae 100644 --- a/configure.in +++ b/configure.in -@@ -4341,9 +4341,6 @@ AS_CASE(["$target_os"], +@@ -4368,9 +4368,6 @@ AS_CASE(["$target_os"], rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) @@ -30,7 +30,7 @@ index db37cd6..6e73fae 100644 rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} AC_ARG_WITH(rubyarchprefix, AS_HELP_STRING([--with-rubyarchprefix=DIR], -@@ -4366,56 +4363,62 @@ AC_ARG_WITH(ridir, +@@ -4393,56 +4390,62 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -120,7 +120,7 @@ index db37cd6..6e73fae 100644 if test "${LOAD_RELATIVE+set}"; then AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4432,6 +4435,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4459,6 +4462,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -245,7 +245,7 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 0428bea..b6e090e 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1101,7 +1101,8 @@ def test_self_use_paths +@@ -1124,7 +1124,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, '.gem', Gem.ruby_engine] @@ -255,7 +255,7 @@ index 0428bea..b6e090e 100644 assert_equal File.join(parts), Gem.user_dir end -@@ -1228,7 +1229,7 @@ def test_self_user_home_user_drive_and_path +@@ -1251,7 +1252,7 @@ def test_self_user_home_user_drive_and_path def test_self_vendor_dir expected = File.join RbConfig::CONFIG['vendordir'], 'gems', diff --git a/ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch b/ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch deleted file mode 100644 index cb8fe26..0000000 --- a/ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch +++ /dev/null @@ -1,36 +0,0 @@ -From ff3496b0116ed2ed589d000b7bfca3d8288b009c Mon Sep 17 00:00:00 2001 -From: nobu -Date: Mon, 9 Jan 2017 02:55:39 +0000 -Subject: [PATCH] vm_insnhelper.c: block argument at tailcall - -* vm_insnhelper.c (vm_call_iseq_setup_tailcall): check interrupts - after set up the new frame, not the passed block to be clobbered - by invoked finalizers and so on. [ruby-core:78981] [Bug #13107] - -git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57293 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ---- - vm_insnhelper.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/vm_insnhelper.c b/vm_insnhelper.c -index b580412..662a2d6 100644 ---- a/vm_insnhelper.c -+++ b/vm_insnhelper.c -@@ -1538,8 +1538,6 @@ vm_call_iseq_setup_tailcall(rb_thread_t *th, rb_control_frame_t *cfp, struct rb_ - vm_pop_frame(th, cfp, cfp->ep); - cfp = th->cfp; - -- RUBY_VM_CHECK_INTS(th); -- - sp_orig = sp = cfp->sp; - - /* push self */ -@@ -1558,6 +1556,8 @@ vm_call_iseq_setup_tailcall(rb_thread_t *th, rb_control_frame_t *cfp, struct rb_ - iseq->body->stack_max); - - cfp->sp = sp_orig; -+ RUBY_VM_CHECK_INTS(th); -+ - return Qundef; - } - diff --git a/ruby.spec b/ruby.spec index e36ac6a..5a26104 100644 --- a/ruby.spec +++ b/ruby.spec @@ -3,7 +3,7 @@ %global major_version 2 %global minor_version 4 -%global teeny_version 0 +%global teeny_version 2 %global major_minor_version %{major_version}.%{minor_version} %global ruby_version %{major_minor_version}.%{teeny_version} @@ -24,7 +24,7 @@ %endif -%global release 75 +%global release 86 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -32,8 +32,8 @@ %global rubygems_dir %{_datadir}/rubygems # Bundled libraries versions -%global rubygems_version 2.6.8 -%global molinillo_version 0.5.3 +%global rubygems_version 2.6.13 +%global molinillo_version 0.5.7 # TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM. # http://redmine.ruby-lang.org/issues/5313 @@ -42,10 +42,10 @@ %global bigdecimal_version 1.3.0 %global did_you_mean_version 1.1.0 %global io_console_version 0.4.6 -%global json_version 2.0.2 +%global json_version 2.0.4 %global minitest_version 5.10.1 %global net_telnet_version 0.1.1 -%global openssl_version 2.0.2 +%global openssl_version 2.0.5 %global power_assert_version 0.4.1 %global psych_version 2.2.2 %global rake_version 12.0.0 @@ -62,9 +62,13 @@ %global _normalized_cpu %(echo %{_target_cpu} | sed 's/^ppc/powerpc/;s/i.86/i386/;s/sparcv./sparc/') %if 0%{?fedora} >= 19 -%global with_rubypick 1 +%bcond_without rubypick %endif +%bcond_without systemtap +%bcond_without git +%bcond_without cmake + %if 0%{?fedora} %global with_checksec 1 %endif @@ -136,9 +140,6 @@ Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch # hardening features of glibc (rhbz#1361037). # https://bugs.ruby-lang.org/issues/12666 Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch -# This fixed rubygem-mongo build failures and may be something else as well. -# https://bugs.ruby-lang.org/issues/13107 -Patch10: ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -158,10 +159,10 @@ BuildRequires: libyaml-devel BuildRequires: readline-devel # Needed to pass test_set_program_name(TestRubyOptions) BuildRequires: procps -BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/dtrace +%{?with_systemtap:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/dtrace} # RubyGems test suite optional dependencies. -BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/git -BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/cmake +%{?with_git:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/git} +%{?with_cmake:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/cmake} # Required to test hardening. %{?with_checksec:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/checksec} @@ -175,6 +176,7 @@ object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible. + %package devel Summary: A Ruby development environment Group: Development/Languages @@ -512,7 +514,6 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch9 -p1 -%patch10 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in @@ -732,7 +733,7 @@ touch abrt.rb make runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE12}" # Check if systemtap is supported. -make runruby TESTRUN_SCRIPT=%{SOURCE13} +%{?with_systemtap:make runruby TESTRUN_SCRIPT=%{SOURCE13}} DISABLE_TESTS="" @@ -929,7 +930,11 @@ make check TESTS="-v $DISABLE_TESTS" %files -n %{?scl_prefix}rubygems %{_bindir}/gem -%{rubygems_dir} +%dir %{rubygems_dir} +%{rubygems_dir}/rbconfig +%{rubygems_dir}/rubygems +%{rubygems_dir}/rubygems.rb +%{rubygems_dir}/ubygems.rb # Explicitly include only RubyGems directory strucure to avoid accidentally # packaged content. @@ -1047,6 +1052,12 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Mon Oct 30 2017 Vít Ondruch - 2.4.2-86 +- Upgrade to Ruby 2.4.2. + * Remove Patch10: ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch; + subsumed + Resolves: rhbz#1506785 + * Tue Jan 17 2017 Vít Ondruch - 2.4.0-75 - Apply patch fixing rubygem-mongo build failures. diff --git a/sources b/sources index 1173079..573c343 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -6a2ab52f161bb9e10596ab4330c50564 ruby-2.4.0.tar.xz +a991f06ea1a1d421f7888c75f80f12d6 ruby-2.4.2.tar.xz From 31265d7a884ca31e1bb888b31cb533f8f856528c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 31 Oct 2017 12:18:53 +0100 Subject: [PATCH 30/34] Fix unsafe object deserialization in RubyGems (CVE-2017-0903). * ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization -vulnerability.patch Resolves: CVE-2017-0903 --- ...object-deserialization-vulnerability.patch | 156 ++++++++++++++++++ ruby.spec | 11 +- 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch diff --git a/ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch b/ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch new file mode 100644 index 0000000..a7272f0 --- /dev/null +++ b/ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch @@ -0,0 +1,156 @@ +From 1281e56682692859e726e24fff30e44aac6f948b Mon Sep 17 00:00:00 2001 +From: nagachika +Date: Wed, 11 Oct 2017 13:48:14 +0000 +Subject: [PATCH] merge revision(s) 60149: [Backport #14003] + + Merge rubygems-2.6.14 changes. + + It fixed http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@60168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + lib/rubygems.rb | 5 +++-- + lib/rubygems/config_file.rb | 2 +- + lib/rubygems/package.rb | 2 +- + lib/rubygems/package/old.rb | 2 +- + lib/rubygems/safe_yaml.rb | 48 +++++++++++++++++++++++++++++++++++++++++++ + lib/rubygems/specification.rb | 2 +- + 6 files changed, 55 insertions(+), 6 deletions(-) + create mode 100644 lib/rubygems/safe_yaml.rb + +diff --git a/lib/rubygems.rb b/lib/rubygems.rb +index 55aa85b8b2bd..0685bcb3c629 100644 +--- a/lib/rubygems.rb ++++ b/lib/rubygems.rb +@@ -10,7 +10,7 @@ + require 'thread' + + module Gem +- VERSION = "2.6.13" ++ VERSION = "2.6.14" + end + + # Must be first since it unloads the prelude from 1.9.2 +@@ -675,7 +675,7 @@ def self.load_yaml + + unless test_syck + begin +- gem 'psych', '>= 1.2.1' ++ gem 'psych', '>= 2.0.0' + rescue Gem::LoadError + # It's OK if the user does not have the psych gem installed. We will + # attempt to require the stdlib version +@@ -699,6 +699,7 @@ def self.load_yaml + end + + require 'yaml' ++ require 'rubygems/safe_yaml' + + # If we're supposed to be using syck, then we may have to force + # activate it via the YAML::ENGINE API. +diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb +index c95d7dd1f14e..63583b361615 100644 +--- a/lib/rubygems/config_file.rb ++++ b/lib/rubygems/config_file.rb +@@ -345,7 +345,7 @@ def load_file(filename) + return {} unless filename and File.exist? filename + + begin +- content = YAML.load(File.read(filename)) ++ content = Gem::SafeYAML.load(File.read(filename)) + unless content.kind_of? Hash + warn "Failed to load #{filename} because it doesn't contain valid YAML hash" + return {} +diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb +index c36e71d800a2..77811ed5ecaa 100644 +--- a/lib/rubygems/package.rb ++++ b/lib/rubygems/package.rb +@@ -468,7 +468,7 @@ def read_checksums gem + + @checksums = gem.seek 'checksums.yaml.gz' do |entry| + Zlib::GzipReader.wrap entry do |gz_io| +- YAML.load gz_io.read ++ Gem::SafeYAML.safe_load gz_io.read + end + end + end +diff --git a/lib/rubygems/package/old.rb b/lib/rubygems/package/old.rb +index 5e722baa3540..071f7141ab78 100644 +--- a/lib/rubygems/package/old.rb ++++ b/lib/rubygems/package/old.rb +@@ -101,7 +101,7 @@ def file_list io # :nodoc: + header << line + end + +- YAML.load header ++ Gem::SafeYAML.safe_load header + end + + ## +diff --git a/lib/rubygems/safe_yaml.rb b/lib/rubygems/safe_yaml.rb +new file mode 100644 +index 000000000000..b98cfaa5e60d +--- /dev/null ++++ b/lib/rubygems/safe_yaml.rb +@@ -0,0 +1,48 @@ ++module Gem ++ ++ ### ++ # This module is used for safely loading YAML specs from a gem. The ++ # `safe_load` method defined on this module is specifically designed for ++ # loading Gem specifications. For loading other YAML safely, please see ++ # Psych.safe_load ++ ++ module SafeYAML ++ WHITELISTED_CLASSES = %w( ++ Symbol ++ Time ++ Date ++ Gem::Dependency ++ Gem::Platform ++ Gem::Requirement ++ Gem::Specification ++ Gem::Version ++ Gem::Version::Requirement ++ YAML::Syck::DefaultKey ++ Syck::DefaultKey ++ ) ++ ++ WHITELISTED_SYMBOLS = %w( ++ development ++ runtime ++ ) ++ ++ if ::YAML.respond_to? :safe_load ++ def self.safe_load input ++ ::YAML.safe_load(input, WHITELISTED_CLASSES, WHITELISTED_SYMBOLS, true) ++ end ++ ++ def self.load input ++ ::YAML.safe_load(input, [::Symbol]) ++ end ++ else ++ warn "YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0)." ++ def self.safe_load input, *args ++ ::YAML.load input ++ end ++ ++ def self.load input ++ ::YAML.load input ++ end ++ end ++ end ++end +diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb +index 88e320c05ac9..40e3a70d476c 100644 +--- a/lib/rubygems/specification.rb ++++ b/lib/rubygems/specification.rb +@@ -1101,7 +1101,7 @@ def self.from_yaml(input) + Gem.load_yaml + + input = normalize_yaml_input input +- spec = YAML.load input ++ spec = Gem::SafeYAML.safe_load input + + if spec && spec.class == FalseClass then + raise Gem::EndOfYAMLException diff --git a/ruby.spec b/ruby.spec index 5a26104..9c083d3 100644 --- a/ruby.spec +++ b/ruby.spec @@ -32,7 +32,7 @@ %global rubygems_dir %{_datadir}/rubygems # Bundled libraries versions -%global rubygems_version 2.6.13 +%global rubygems_version 2.6.14 %global molinillo_version 0.5.7 # TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM. @@ -140,6 +140,10 @@ Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch # hardening features of glibc (rhbz#1361037). # https://bugs.ruby-lang.org/issues/12666 Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch +# CVE-2017-0903: Fix unsafe object deserialization through YAML formatted gem +# specifications. +# https://bugs.ruby-lang.org/issues/14003 +Patch10: ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -514,6 +518,7 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch9 -p1 +%patch10 -p1 # Allow to use autoconf 2.63. sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in @@ -1057,6 +1062,10 @@ make check TESTS="-v $DISABLE_TESTS" * Remove Patch10: ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch; subsumed Resolves: rhbz#1506785 +- Fix unsafe object deserialization in RubyGems (CVE-2017-0903). + * ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization + -vulnerability.patch + Resolves: CVE-2017-0903 * Tue Jan 17 2017 Vít Ondruch - 2.4.0-75 - Apply patch fixing rubygem-mongo build failures. From 9474e3d4fe23400cef9edae75c36e5241054fd98 Mon Sep 17 00:00:00 2001 From: Jun Aruga Date: Thu, 14 Dec 2017 18:27:33 +0100 Subject: [PATCH 31/34] Upgrade to Ruby 2.5.0 (r61214). --- ruby-1.9.3-mkmf-verbose.patch | 2 +- ...-additional-preludes-by-configuratio.patch | 20 +-- ...0-Enable-configuration-of-archlibdir.patch | 14 +- ...ed-paths-when-empty-version-string-i.patch | 19 +- ruby-2.1.0-always-use-i386.patch | 16 +- ruby-2.1.0-custom-rubygems-location.patch | 30 ++-- ...2.3-Generate-preludes-using-miniruby.patch | 2 +- ruby-2.3.0-ruby_version.patch | 44 ++--- ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch | 5 +- ...object-deserialization-vulnerability.patch | 156 ---------------- ruby.spec | 166 +++++++++++------- sources | 2 +- 12 files changed, 176 insertions(+), 300 deletions(-) delete mode 100644 ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch diff --git a/ruby-1.9.3-mkmf-verbose.patch b/ruby-1.9.3-mkmf-verbose.patch index d94ef7f..f2a1408 100644 --- a/ruby-1.9.3-mkmf-verbose.patch +++ b/ruby-1.9.3-mkmf-verbose.patch @@ -11,7 +11,7 @@ diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 682eb46..e6b1445 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb -@@ -1897,7 +1897,7 @@ def configuration(srcdir) +@@ -1899,7 +1899,7 @@ def configuration(srcdir) SHELL = /bin/sh # V=0 quiet, V=1 verbose. other values don't work. diff --git a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch index 3e29d1b..da5eea6 100644 --- a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch +++ b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch @@ -6,14 +6,14 @@ Subject: [PATCH] Allow to specify addition preludes by configuration option. --- Makefile.in | 2 ++ common.mk | 2 +- - configure.in | 7 +++++++ + configure.ac | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index 7e8ed82..7916993 100644 --- a/Makefile.in +++ b/Makefile.in -@@ -116,6 +116,8 @@ XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@ +@@ -119,6 +119,8 @@ XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@ XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@ BOOTSTRAPRUBY = @BOOTSTRAPRUBY@ @@ -26,20 +26,20 @@ diff --git a/common.mk b/common.mk index 5cfbc3d..3f0a82e 100644 --- a/common.mk +++ b/common.mk -@@ -144,7 +144,7 @@ ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS) +@@ -147,7 +147,7 @@ ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS) GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT) DEFAULT_PRELUDES = $(GEM_PRELUDE) --PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(srcdir)/enc/prelude.rb $(DEFAULT_PRELUDES) -+PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(srcdir)/enc/prelude.rb $(DEFAULT_PRELUDES) $(OPTIONAL_PRELUDES) +-PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(DEFAULT_PRELUDES) ++PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(DEFAULT_PRELUDES) $(OPTIONAL_PRELUDES) GEM_PRELUDE = $(srcdir)/gem_prelude.rb PRELUDES = {$(srcdir)}prelude.c {$(srcdir)}miniprelude.c GOLFPRELUDES = {$(srcdir)}golf_prelude.c -diff --git a/configure.in b/configure.in -index 0e371e2..d4f1dcb 100644 ---- a/configure.in -+++ b/configure.in -@@ -4563,6 +4563,13 @@ AC_SUBST(rubyarchhdrdir)dnl +diff --git a/configure.ac b/configure.ac +index 028ef7ca3e..cdeff87871 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4387,6 +4387,13 @@ AC_SUBST(rubyarchhdrdir)dnl AC_SUBST(sitearchhdrdir)dnl AC_SUBST(vendorarchhdrdir)dnl diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index bc75f5e..09696d3 100644 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -4,15 +4,15 @@ Date: Tue, 1 Oct 2013 12:22:40 +0200 Subject: [PATCH] Allow to configure libruby.so placement. --- - configure.in | 5 +++++ + configure.ac | 5 +++++ 1 file changed, 5 insertions(+) -diff --git a/configure.in b/configure.in -index 37d9a62..553d4d0 100644 ---- a/configure.in -+++ b/configure.in -@@ -3823,6 +3823,11 @@ if test ${multiarch+set}; then - fi +diff --git a/configure.ac b/configure.ac +index 11fc237552..b77e88fc37 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3632,6 +3632,11 @@ AS_IF([test ${multiarch+set}], [ + ]) archlibdir='${libdir}/${arch}' +AC_ARG_WITH(archlibdir, diff --git a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch index 489a1b8..b306612 100644 --- a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +++ b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch @@ -5,16 +5,16 @@ Subject: [PATCH] Prevent duplicated paths when empty version string is configured. --- - configure.in | 3 ++- + configure.ac | 3 ++- loadpath.c | 12 ++++++++++++ tool/mkconfig.rb | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) -diff --git a/configure.in b/configure.in -index db37cd6..ce8d149 100644 ---- a/configure.in -+++ b/configure.in -@@ -4417,7 +4417,8 @@ AS_CASE(["$ruby_version_dir_name"], +diff --git a/configure.ac b/configure.ac +index 999e2d6d5d..11fc237552 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4242,7 +4242,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then @@ -28,7 +28,7 @@ diff --git a/loadpath.c b/loadpath.c index 9160031..0d4d953 100644 --- a/loadpath.c +++ b/loadpath.c -@@ -65,22 +65,34 @@ const char ruby_initial_load_paths[] = +@@ -65,21 +65,33 @@ const char ruby_initial_load_paths[] = RUBY_SEARCH_PATH "\0" #endif #ifndef NO_RUBY_SITE_LIB @@ -58,16 +58,15 @@ index 9160031..0d4d953 100644 RUBY_VENDOR_ARCH_LIB_FOR(RUBY_SITEARCH) "\0" +#ifndef RUBY_LIB_VERSION_BLANK RUBY_VENDOR_LIB "\0" - #endif +#endif + #endif RUBY_LIB "\0" - #ifdef RUBY_THINARCH diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb index 07076d4..35e6c3c 100755 --- a/tool/mkconfig.rb +++ b/tool/mkconfig.rb -@@ -113,7 +113,7 @@ +@@ -111,7 +111,7 @@ val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump case name when /^prefix$/ diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 238cd66..1e51168 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -4,22 +4,22 @@ Date: Mon, 19 Nov 2012 14:37:28 +0100 Subject: [PATCH] Always use i386. --- - configure.in | 2 ++ + configure.ac | 2 ++ 1 file changed, 2 insertions(+) -diff --git a/configure.in b/configure.in -index 553d4d0..03a4152 100644 ---- a/configure.in -+++ b/configure.in -@@ -4481,6 +4481,8 @@ AC_SUBST(vendorarchdir)dnl +diff --git a/configure.ac b/configure.ac +index b77e88fc37..6bba453e3c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4306,6 +4306,8 @@ AC_SUBST(vendorarchdir)dnl AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl +target_cpu=`echo $target_cpu | sed s/i.86/i386/` + - if test "${universal_binary-no}" = yes ; then + AS_IF([test "${universal_binary-no}" = yes ], [ arch="universal-${target_os}" - if test "${rb_cv_architecture_available}" = yes; then + AS_IF([test "${rb_cv_architecture_available}" = yes], [ -- 1.8.3.1 diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index 1905381..4ed79e6 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -5,17 +5,17 @@ Subject: [PATCH] Allow to install RubyGems into custom location, outside of Ruby tree. --- - configure.in | 5 +++++ + configure.ac | 5 +++++ loadpath.c | 4 ++++ template/verconf.h.tmpl | 3 +++ - tool/rbinstall.rb | 9 +++++++++ - 4 files changed, 21 insertions(+) + tool/rbinstall.rb | 7 +++++++ + 4 files changed, 19 insertions(+) -diff --git a/configure.in b/configure.in -index 03a4152..0e371e2 100644 ---- a/configure.in -+++ b/configure.in -@@ -4453,6 +4453,10 @@ AC_ARG_WITH(vendorarchdir, +diff --git a/configure.ac b/configure.ac +index 6bba453e3c..028ef7ca3e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4278,6 +4278,10 @@ AC_ARG_WITH(vendorarchdir, [vendorarchdir=$withval], [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) @@ -23,10 +23,10 @@ index 03a4152..0e371e2 100644 + AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]), + [rubygemsdir=$withval]) + - if test "${LOAD_RELATIVE+set}"; then + AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX='' -@@ -4477,6 +4481,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4302,6 +4306,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl @@ -67,7 +67,7 @@ diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index b47b6e1..0b99408 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb -@@ -330,6 +330,7 @@ def CONFIG.[](name, mandatory = false) +@@ -331,6 +331,7 @@ def CONFIG.[](name, mandatory = false) sitearchlibdir = CONFIG["sitearchdir"] vendorlibdir = CONFIG["vendorlibdir"] vendorarchlibdir = CONFIG["vendorarchdir"] @@ -75,17 +75,15 @@ index b47b6e1..0b99408 100755 mandir = CONFIG["mandir", true] docdir = CONFIG["docdir", true] configure_args = Shellwords.shellwords(CONFIG["configure_args"]) -@@ -517,7 +518,15 @@ def CONFIG.[](name, mandatory = false) +@@ -537,7 +538,13 @@ def install(src, cmd) install?(:local, :comm, :lib) do prepare "library scripts", rubylibdir - noinst = %w[README* *.txt *.rdoc *.gemspec] -+ noinst += %w[*ubygems.rb rubygems/ datadir.rb] if rubygemsdir + noinst = %w[*.txt *.rdoc *.gemspec] ++ noinst += %w[rubygems.rb rubygems/ datadir.rb] if rubygemsdir install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode) + if rubygemsdir + noinst = %w[obsolete.rb] + install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode) -+ install_recursive(File.join(srcdir, "lib", "rbconfig"), File.join(rubygemsdir, "rbconfig"), :no_install => noinst, :mode => $data_mode) -+ install(File.join(srcdir, "lib", "ubygems.rb"), File.join(rubygemsdir, "ubygems.rb"), :mode => $data_mode) + install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode) + end end diff --git a/ruby-2.2.3-Generate-preludes-using-miniruby.patch b/ruby-2.2.3-Generate-preludes-using-miniruby.patch index 6e8adc4..05fbaa6 100644 --- a/ruby-2.2.3-Generate-preludes-using-miniruby.patch +++ b/ruby-2.2.3-Generate-preludes-using-miniruby.patch @@ -11,7 +11,7 @@ diff --git a/common.mk b/common.mk index 168dc52..20c218a 100644 --- a/common.mk +++ b/common.mk -@@ -873,9 +873,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) +@@ -956,9 +956,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) $(srcdir)/template/prelude.c.tmpl $(PRELUDE_C): $(COMPILE_PRELUDE) \ diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index 80be728..ee00a35 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -12,15 +12,15 @@ ruby_version_dir_name now specifies custom version string for versioned directories, e.g. instead of default X.Y.Z, you can specify whatever string. --- - configure.in | 64 ++++++++++++++++++++++++++++------------------------- + configure.ac | 64 ++++++++++++++++++++++++++++------------------------- template/ruby.pc.in | 1 + 2 files changed, 35 insertions(+), 30 deletions(-) -diff --git a/configure.in b/configure.in -index db37cd6..6e73fae 100644 ---- a/configure.in -+++ b/configure.in -@@ -4368,9 +4368,6 @@ AS_CASE(["$target_os"], +diff --git a/configure.ac b/configure.ac +index 8ea969412f..a00f2b6776 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4193,9 +4193,6 @@ AS_CASE(["$target_os"], rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) @@ -30,7 +30,7 @@ index db37cd6..6e73fae 100644 rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} AC_ARG_WITH(rubyarchprefix, AS_HELP_STRING([--with-rubyarchprefix=DIR], -@@ -4393,56 +4390,62 @@ AC_ARG_WITH(ridir, +@@ -4218,56 +4215,62 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -43,7 +43,7 @@ index db37cd6..6e73fae 100644 -AS_CASE(["$ruby_version"], - [full], [RUBY_LIB_VERSION_STYLE='3 /* full */'], - [minor], [RUBY_LIB_VERSION_STYLE='2 /* minor */']) --if test ${RUBY_LIB_VERSION_STYLE+set}; then +-AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [ - { - echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" - echo '#define STRINGIZE(x) x' @@ -53,11 +53,11 @@ index db37cd6..6e73fae 100644 - } > conftest.c - ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`" - eval $ruby_version --elif test -z "${ruby_version}"; then +-], [test -z "${ruby_version}"], [ - AC_MSG_ERROR([No ruby version, No place for bundled libraries]) --else +-], [ - RUBY_LIB_VERSION="${ruby_version}" --fi +-]) +RUBY_LIB_VERSION_STYLE='3 /* full */' +{ +echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" @@ -118,9 +118,9 @@ index db37cd6..6e73fae 100644 - [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}]) + [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) - if test "${LOAD_RELATIVE+set}"; then + AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4459,6 +4462,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4284,6 +4287,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl @@ -137,9 +137,9 @@ index 8a2c066..c81b211 100644 TEENY=@TEENY@ ruby_version=@ruby_version@ +ruby_version_dir_name=@ruby_version_dir_name@ + RUBY_API_VERSION=@RUBY_API_VERSION@ RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@ RUBY_BASE_NAME=@RUBY_BASE_NAME@ - RUBY_VERSION_NAME=@RUBY_VERSION_NAME@ -- 2.1.0 @@ -245,7 +245,7 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index 0428bea..b6e090e 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1124,7 +1124,8 @@ def test_self_use_paths +@@ -1156,7 +1156,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, '.gem', Gem.ruby_engine] @@ -255,7 +255,7 @@ index 0428bea..b6e090e 100644 assert_equal File.join(parts), Gem.user_dir end -@@ -1251,7 +1252,7 @@ def test_self_user_home_user_drive_and_path +@@ -1283,7 +1284,7 @@ def test_self_user_home_user_drive_and_path def test_self_vendor_dir expected = File.join RbConfig::CONFIG['vendordir'], 'gems', @@ -275,14 +275,14 @@ Subject: [PATCH 4/4] Let headers directories follow the configured version name. --- - configure.in | 2 +- + configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/configure.in b/configure.in -index 6e73fae..c842725 100644 ---- a/configure.in -+++ b/configure.in -@@ -271,7 +271,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` +diff --git a/configure.ac b/configure.ac +index a00f2b6776..999e2d6d5d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -164,7 +164,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"` RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"` AC_SUBST(RUBY_BASE_NAME) AC_SUBST(RUBYW_BASE_NAME) diff --git a/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch index 8765d2a..2dc17e3 100644 --- a/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch +++ b/ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch @@ -15,7 +15,7 @@ diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb index 1da3d93..65148a1 100644 --- a/test/fiddle/helper.rb +++ b/test/fiddle/helper.rb -@@ -6,98 +6,6 @@ +@@ -6,95 +6,6 @@ libc_so = libm_so = nil @@ -23,9 +23,6 @@ index 1da3d93..65148a1 100644 -when /cygwin/ - libc_so = "cygwin1.dll" - libm_so = "cygwin1.dll" --when /x86_64-linux/ -- libc_so = "/lib64/libc.so.6" -- libm_so = "/lib64/libm.so.6" -when /linux/ - libdir = '/lib' - case [0].pack('L!').size diff --git a/ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch b/ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch deleted file mode 100644 index a7272f0..0000000 --- a/ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch +++ /dev/null @@ -1,156 +0,0 @@ -From 1281e56682692859e726e24fff30e44aac6f948b Mon Sep 17 00:00:00 2001 -From: nagachika -Date: Wed, 11 Oct 2017 13:48:14 +0000 -Subject: [PATCH] merge revision(s) 60149: [Backport #14003] - - Merge rubygems-2.6.14 changes. - - It fixed http://blog.rubygems.org/2017/10/09/unsafe-object-deserialization-vulnerability.html - -git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@60168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e ---- - lib/rubygems.rb | 5 +++-- - lib/rubygems/config_file.rb | 2 +- - lib/rubygems/package.rb | 2 +- - lib/rubygems/package/old.rb | 2 +- - lib/rubygems/safe_yaml.rb | 48 +++++++++++++++++++++++++++++++++++++++++++ - lib/rubygems/specification.rb | 2 +- - 6 files changed, 55 insertions(+), 6 deletions(-) - create mode 100644 lib/rubygems/safe_yaml.rb - -diff --git a/lib/rubygems.rb b/lib/rubygems.rb -index 55aa85b8b2bd..0685bcb3c629 100644 ---- a/lib/rubygems.rb -+++ b/lib/rubygems.rb -@@ -10,7 +10,7 @@ - require 'thread' - - module Gem -- VERSION = "2.6.13" -+ VERSION = "2.6.14" - end - - # Must be first since it unloads the prelude from 1.9.2 -@@ -675,7 +675,7 @@ def self.load_yaml - - unless test_syck - begin -- gem 'psych', '>= 1.2.1' -+ gem 'psych', '>= 2.0.0' - rescue Gem::LoadError - # It's OK if the user does not have the psych gem installed. We will - # attempt to require the stdlib version -@@ -699,6 +699,7 @@ def self.load_yaml - end - - require 'yaml' -+ require 'rubygems/safe_yaml' - - # If we're supposed to be using syck, then we may have to force - # activate it via the YAML::ENGINE API. -diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb -index c95d7dd1f14e..63583b361615 100644 ---- a/lib/rubygems/config_file.rb -+++ b/lib/rubygems/config_file.rb -@@ -345,7 +345,7 @@ def load_file(filename) - return {} unless filename and File.exist? filename - - begin -- content = YAML.load(File.read(filename)) -+ content = Gem::SafeYAML.load(File.read(filename)) - unless content.kind_of? Hash - warn "Failed to load #{filename} because it doesn't contain valid YAML hash" - return {} -diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb -index c36e71d800a2..77811ed5ecaa 100644 ---- a/lib/rubygems/package.rb -+++ b/lib/rubygems/package.rb -@@ -468,7 +468,7 @@ def read_checksums gem - - @checksums = gem.seek 'checksums.yaml.gz' do |entry| - Zlib::GzipReader.wrap entry do |gz_io| -- YAML.load gz_io.read -+ Gem::SafeYAML.safe_load gz_io.read - end - end - end -diff --git a/lib/rubygems/package/old.rb b/lib/rubygems/package/old.rb -index 5e722baa3540..071f7141ab78 100644 ---- a/lib/rubygems/package/old.rb -+++ b/lib/rubygems/package/old.rb -@@ -101,7 +101,7 @@ def file_list io # :nodoc: - header << line - end - -- YAML.load header -+ Gem::SafeYAML.safe_load header - end - - ## -diff --git a/lib/rubygems/safe_yaml.rb b/lib/rubygems/safe_yaml.rb -new file mode 100644 -index 000000000000..b98cfaa5e60d ---- /dev/null -+++ b/lib/rubygems/safe_yaml.rb -@@ -0,0 +1,48 @@ -+module Gem -+ -+ ### -+ # This module is used for safely loading YAML specs from a gem. The -+ # `safe_load` method defined on this module is specifically designed for -+ # loading Gem specifications. For loading other YAML safely, please see -+ # Psych.safe_load -+ -+ module SafeYAML -+ WHITELISTED_CLASSES = %w( -+ Symbol -+ Time -+ Date -+ Gem::Dependency -+ Gem::Platform -+ Gem::Requirement -+ Gem::Specification -+ Gem::Version -+ Gem::Version::Requirement -+ YAML::Syck::DefaultKey -+ Syck::DefaultKey -+ ) -+ -+ WHITELISTED_SYMBOLS = %w( -+ development -+ runtime -+ ) -+ -+ if ::YAML.respond_to? :safe_load -+ def self.safe_load input -+ ::YAML.safe_load(input, WHITELISTED_CLASSES, WHITELISTED_SYMBOLS, true) -+ end -+ -+ def self.load input -+ ::YAML.safe_load(input, [::Symbol]) -+ end -+ else -+ warn "YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0)." -+ def self.safe_load input, *args -+ ::YAML.load input -+ end -+ -+ def self.load input -+ ::YAML.load input -+ end -+ end -+ end -+end -diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb -index 88e320c05ac9..40e3a70d476c 100644 ---- a/lib/rubygems/specification.rb -+++ b/lib/rubygems/specification.rb -@@ -1101,7 +1101,7 @@ def self.from_yaml(input) - Gem.load_yaml - - input = normalize_yaml_input input -- spec = YAML.load input -+ spec = Gem::SafeYAML.safe_load input - - if spec && spec.class == FalseClass then - raise Gem::EndOfYAMLException diff --git a/ruby.spec b/ruby.spec index 9c083d3..c418be0 100644 --- a/ruby.spec +++ b/ruby.spec @@ -2,8 +2,8 @@ %{?scl:%scl_package ruby} %global major_version 2 -%global minor_version 4 -%global teeny_version 2 +%global minor_version 5 +%global teeny_version 0 %global major_minor_version %{major_version}.%{minor_version} %global ruby_version %{major_minor_version}.%{teeny_version} @@ -13,7 +13,7 @@ #%%global milestone rc1 # Keep the revision enabled for pre-releases from SVN. -#%%global revision 57159 +%global revision 61214 %global ruby_archive %{pkg_name}-%{ruby_version} @@ -24,7 +24,7 @@ %endif -%global release 86 +%global release 1 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -32,26 +32,27 @@ %global rubygems_dir %{_datadir}/rubygems # Bundled libraries versions -%global rubygems_version 2.6.14 +%global rubygems_version 2.7.3 %global molinillo_version 0.5.7 # TODO: The IRB has strange versioning. Keep the Ruby's versioning ATM. # http://redmine.ruby-lang.org/issues/5313 %global irb_version %{ruby_version} -%global bigdecimal_version 1.3.0 -%global did_you_mean_version 1.1.0 +%global bigdecimal_version 1.3.3 +%global bundler_version 1.16.1.pre1 +%global did_you_mean_version 1.1.2 %global io_console_version 0.4.6 -%global json_version 2.0.4 -%global minitest_version 5.10.1 +%global json_version 2.1.0 +%global minitest_version 5.10.3 %global net_telnet_version 0.1.1 -%global openssl_version 2.0.5 -%global power_assert_version 0.4.1 -%global psych_version 2.2.2 -%global rake_version 12.0.0 -%global rdoc_version 5.0.0 -%global test_unit_version 3.2.3 -%global xmlrpc_version 0.2.1 +%global openssl_version 2.1.0.beta2 +%global power_assert_version 1.1.1 +%global psych_version 3.0.0 +%global rake_version 12.3.0 +%global rdoc_version 6.0.0 +%global test_unit_version 3.2.7 +%global xmlrpc_version 0.3.0 # Might not be needed in the future, if we are lucky enough. # https://bugzilla.redhat.com/show_bug.cgi?id=888262 @@ -70,7 +71,7 @@ %bcond_without cmake %if 0%{?fedora} -%global with_checksec 1 +%bcond_without hardening_test %endif Summary: An interpreter of object-oriented scripting language @@ -93,10 +94,12 @@ Source4: macros.ruby Source5: macros.rubygems Source6: abrt_prelude.rb # This wrapper fixes https://bugzilla.redhat.com/show_bug.cgi?id=977941 -# Hopefully, it will get removed soon: +# It was fixed by multilib-rpm-config on Fedora. +# But multilib-rpm-config is not available on RHEL7. # https://fedorahosted.org/fpc/ticket/312 # https://bugzilla.redhat.com/show_bug.cgi?id=977941 Source7: config.h +# We do not provide RPM dependency generators on SCL that is on Fedora. # ABRT hoook test case. Source12: test_abrt.rb # SystemTap tests. @@ -140,21 +143,38 @@ Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch # hardening features of glibc (rhbz#1361037). # https://bugs.ruby-lang.org/issues/12666 Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch -# CVE-2017-0903: Fix unsafe object deserialization through YAML formatted gem -# specifications. -# https://bugs.ruby-lang.org/issues/14003 -Patch10: ruby-2.4.3-CVE-2017-0903-Fix-unsafe-object-deserialization-vulnerability.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} +# We keep default installed gems that is sub pacakge as Requires. # Make the bigdecimal gem a runtime dependency of Ruby to avoid problems # with user-installed gems, that don't require it in gemspec/Gemfile # See https://bugzilla.redhat.com/show_bug.cgi?id=829209 # and http://bugs.ruby-lang.org/issues/6123 +# TODO: other gems required? Requires: %{?scl_prefix}rubygem(bigdecimal) >= %{bigdecimal_version} -Requires: %{?scl_prefix}rubygem(did_you_mean) >= %{did_you_mean_version} +# Requires: %%{?scl_prefix}rubygem(bundler) >= %%{bundler_version} +# Requires: %%{?scl_prefix}rubygem(cmath) >= %%{cmath_version} +# Requires: %%{?scl_prefix}rubygem(csv) >= %%{csv_version} +# Requires: %%{?scl_prefix}rubygem(date) >= %%{date_version} +# Requires: %%{?scl_prefix}rubygem(dbm) >= %%{dbm_version} +# Requires: %%{?scl_prefix}rubygem(digest) >= %%{digest_version} +# Requires: %%{?scl_prefix}rubygem(etc) >= %%{etc_version} +# Requires: %%{?scl_prefix}rubygem(fcntl) >= %%{fcntl_version} +# Requires: %%{?scl_prefix}rubygem(fileutils) >= %%{fileutils_version} +# Requires: %%{?scl_prefix}rubygem(gdbm) >= %%{gdbm_version} +Requires: %{?scl_prefix}rubygem(io-console) >= %{io_console_version} +# Requires: %%{?scl_prefix}rubygem(ipaddr) >= %%{ipaddr_version} +Requires: %{?scl_prefix}rubygem(json) >= %{json_version} Requires: %{?scl_prefix}rubygem(openssl) >= %{openssl_version} -%{?scl:BuildRequires: %{scl}-runtime} +Requires: %{?scl_prefix}rubygem(psych) >= %{psych_version} +Requires: %{?scl_prefix}rubygem(rdoc) >= %{rdoc_version} +# Requires: %%{?scl_prefix}rubygem(scanf) >= %%{scanf_version} +# Requires: %%{?scl_prefix}rubygem(sdbm) >= %%{sdbm_version} +# Requires: %%{?scl_prefix}rubygem(stringio) >= %%{stringio_version} +# Requires: %%{?scl_prefix}rubygem(strscan) >= %%{strscan_version} +# Requires: %%{?scl_prefix}rubygem(webrick) >= %%{webrick_version} +# Requires: %%{?scl_prefix}rubygem(zlib) >= %%{zlib_version} BuildRequires: autoconf BuildRequires: gdbm-devel BuildRequires: libffi-devel @@ -168,7 +188,7 @@ BuildRequires: procps %{?with_git:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/git} %{?with_cmake:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/cmake} # Required to test hardening. -%{?with_checksec:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/checksec} +%{?with_hardening_test:BuildRequires: %{?_root_bindir}%{!?_root_bindir:%{_bindir}}/checksec} # This package provides %%{_bindir}/ruby-mri therefore it is marked by this # virtual provide. It can be installed as dependency of rubypick. @@ -185,6 +205,9 @@ straight-forward, and extensible. Summary: A Ruby development environment Group: Development/Languages Requires: %{?scl_prefix}%{pkg_name}%{?_isa} = %{version}-%{release} +# This would not be needed if ~50 packages depending on -devel used +# --disable-gems +Requires: %{?scl_prefix}rubygems %description devel Header files and libraries for building an extension library for the @@ -194,8 +217,6 @@ Ruby or an application embedding Ruby. Summary: Libraries necessary to run Ruby Group: Development/Libraries License: Ruby or BSD -# This could be removed once rhbz#1054711 is resolved. -%{?scl:Requires: %{scl}-runtime} Provides: %{?scl_prefix}ruby(release) = %{ruby_release} # Virtual provides for CCAN copylibs. @@ -518,30 +539,6 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch9 -p1 -%patch10 -p1 - -# Allow to use autoconf 2.63. -sed -i '/AC_PREREQ/ s/(.*)/(2.62)/' configure.in - -# AS_FOR is not supported on RHEL6, inject our own version. -cat >> acinclude.m4 <<\EOF -m4_ifndef([AS_FOR], [ - m4_define([AS_FOR], [ - m4_pushdef([$1], [$$2]) - for $2 in $3; do - $4 - done - m4_popdef([$1]) - ]) -]) -EOF - -# autoconf in RHEL6 does not support AS_FUNCTION_DESCRIBE, but it cannot be -# dropped on RHEL7, since the AS_REQUIRE_SHELL_FN changed signatures :/ -%if 0%{?rhel} == 6 -sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' configure.in -sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' acinclude.m4 -%endif # Provide an example of usage of the tapset: cp -a %{SOURCE3} . @@ -633,6 +630,9 @@ mkdir -p %{buildroot}%{_exec_prefix}/lib{,64}/gems/%{pkg_name} mkdir -p %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib mv %{buildroot}%{ruby_libdir}/rdoc* %{buildroot}%{gem_dir}/gems/rdoc-%{rdoc_version}/lib mv %{buildroot}%{gem_dir}/specifications/default/rdoc-%{rdoc_version}.gemspec %{buildroot}%{gem_dir}/specifications +# Below rdoc symbolic links' change is only on SCL. Not on Fedora. +# http://pkgs.devel.redhat.com/cgit/rpms/ruby/commit/?id=369e65c +# https://src.fedoraproject.org/rpms/ruby/pull-request/9 ln -s %{gem_dir}/gems/rdoc-%{rdoc_version}/lib/rdoc.rb %{buildroot}%{ruby_libdir}/rdoc.rb ln -s %{gem_dir}/gems/rdoc-%{rdoc_version}/lib/rdoc %{buildroot}%{ruby_libdir}/rdoc @@ -666,7 +666,12 @@ mkdir -p %{buildroot}%{_libdir}/gems/%{pkg_name}/openssl-%{openssl_version} mv %{buildroot}%{ruby_libdir}/openssl* %{buildroot}%{gem_dir}/gems/openssl-%{openssl_version}/lib mv %{buildroot}%{ruby_libarchdir}/openssl.so %{buildroot}%{_libdir}/gems/%{pkg_name}/openssl-%{openssl_version}/ mv %{buildroot}%{gem_dir}/specifications/default/openssl-%{openssl_version}.gemspec %{buildroot}%{gem_dir}/specifications -ln -s %{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl %{buildroot}%{ruby_libdir}/openssl +# This used to be directory when OpenSSL was integral part of StdLib => Keep +# it as directory and link everything in it to prevent directory => symlink +# conversion RPM issues. +mkdir -p %{buildroot}%{ruby_libdir}/openssl +find %{buildroot}%{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl -maxdepth 1 -type f -exec \ + sh -c 'ln -s %{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl/`basename {}` %{buildroot}%{ruby_libdir}/openssl' \; ln -s %{gem_dir}/gems/openssl-%{openssl_version}/lib/openssl.rb %{buildroot}%{ruby_libdir}/openssl.rb ln -s %{_libdir}/gems/%{pkg_name}/openssl-%{openssl_version}/openssl.so %{buildroot}%{ruby_libarchdir}/openssl.so @@ -679,6 +684,18 @@ ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych %{buildroot}%{ruby_libdir ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych.rb %{buildroot}%{ruby_libdir}/psych.rb ln -s %{_libdir}/gems/%{pkg_name}/psych-%{psych_version}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so +# Remove Bundler until it is really necessary. +rm -rf %{buildroot}%{ruby_libdir}/bundler +rm -rf %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version} +rm -rf %{buildroot}%{gem_dir}/specifications/default/bundler-%{bundler_version}.gemspec +rm %{buildroot}%{_bindir}/bundle* + +# Move the binary extensions into proper place (if no gem has binary extension, +# the extensions directory might be empty). +find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{ruby_version}/* -maxdepth 0 \ + -exec mv '{}' %{buildroot}%{_libdir}/gems/%{name}/ \; \ + || echo "No gem binary extensions to move." + # Adjust the gemspec files so that the gems will load properly sed -i '/^end$/ i\ s.extensions = ["json/ext/parser.so", "json/ext/generator.so"]' %{buildroot}%{gem_dir}/specifications/json-%{json_version}.gemspec @@ -708,7 +725,7 @@ sed -i 's/^/%lang(ja) /' .ruby-doc.ja %check # Ruby software collection tests %{?scl:scl enable %scl - << \EOF -set -e +set -ex mkdir -p ./lib/rubygems/defaults cp %{SOURCE1} ./lib/rubygems/defaults sed 's/@SCL@/%{scl}/' %{SOURCE14} > ./%{basename:%{SOURCE14}} @@ -716,7 +733,7 @@ make test-all TESTS="%{basename:%{SOURCE14}}" rm -rf ./lib/rubygems/defaults ./%{basename:%{SOURCE14}} EOF} -%if 0%{?with_checksec} +%if 0%{?with_hardening_test} # Check Ruby hardening. checksec -f libruby.so.%{ruby_version} | \ grep "Full RELRO.*Canary found.*NX enabled.*DSO.*No RPATH.*No RUNPATH.*Yes.*\d*.*\d*.*libruby.so.%{ruby_version}" @@ -746,6 +763,11 @@ DISABLE_TESTS="" # Once seen: http://koji.fedoraproject.org/koji/taskinfo?taskID=12556650 DISABLE_TESTS="$DISABLE_TESTS -x test_fork.rb" +# Disable failing TestResolvMDNS#test_mdns_each_address test, +# which fails on Koji. +# https://bugs.ruby-lang.org/issues/14175 +sed -i '/def test_mdns_each_address$/,/^ end$/ s/^/#/' test/resolv/test_mdns.rb + make check TESTS="-v $DISABLE_TESTS" %post libs -p /sbin/ldconfig @@ -753,10 +775,6 @@ make check TESTS="-v $DISABLE_TESTS" %postun libs -p /sbin/ldconfig %files -# There is no %%license macro on RHEL6. -# https://bugzilla.redhat.com/show_bug.cgi?id=1386246 -%{!?_licensedir:%global license %%doc} - %license BSDL %license COPYING %lang(ja) %license COPYING.ja @@ -813,7 +831,6 @@ make check TESTS="-v $DISABLE_TESTS" %{ruby_libdir}/net %{ruby_libdir}/optparse %{ruby_libdir}/racc -%{ruby_libdir}/rbconfig %{ruby_libdir}/rexml %{ruby_libdir}/rinda %{ruby_libdir}/ripper @@ -910,9 +927,6 @@ make check TESTS="-v $DISABLE_TESTS" %dir %{ruby_libarchdir}/io %{ruby_libarchdir}/io/nonblock.so %{ruby_libarchdir}/io/wait.so -%dir %{ruby_libarchdir}/mathn -%{ruby_libarchdir}/mathn/complex.so -%{ruby_libarchdir}/mathn/rational.so %{ruby_libarchdir}/nkf.so %{ruby_libarchdir}/objspace.so %{ruby_libarchdir}/pathname.so @@ -936,10 +950,8 @@ make check TESTS="-v $DISABLE_TESTS" %files -n %{?scl_prefix}rubygems %{_bindir}/gem %dir %{rubygems_dir} -%{rubygems_dir}/rbconfig %{rubygems_dir}/rubygems %{rubygems_dir}/rubygems.rb -%{rubygems_dir}/ubygems.rb # Explicitly include only RubyGems directory strucure to avoid accidentally # packaged content. @@ -956,6 +968,25 @@ make check TESTS="-v $DISABLE_TESTS" %exclude %{gem_dir}/cache/* +# TODO: Gemify these libraries +%{gem_dir}/specifications/default/cmath-1.0.0.gemspec +%{gem_dir}/specifications/default/csv-1.0.0.gemspec +%{gem_dir}/specifications/default/date-1.0.0.gemspec +%{gem_dir}/specifications/default/dbm-1.0.0.gemspec +%{gem_dir}/specifications/default/digest-0.1.0.gemspec +%{gem_dir}/specifications/default/etc-1.0.0.gemspec +%{gem_dir}/specifications/default/fcntl-1.0.0.gemspec +%{gem_dir}/specifications/default/fiddle-1.0.0.gemspec +%{gem_dir}/specifications/default/fileutils-1.0.1.gemspec +%{gem_dir}/specifications/default/gdbm-2.0.0.gemspec +%{gem_dir}/specifications/default/ipaddr-1.2.0.gemspec +%{gem_dir}/specifications/default/scanf-1.0.0.gemspec +%{gem_dir}/specifications/default/sdbm-1.0.0.gemspec +%{gem_dir}/specifications/default/stringio-0.0.1.gemspec +%{gem_dir}/specifications/default/strscan-0.0.1.gemspec +%{gem_dir}/specifications/default/webrick-1.4.0.beta1.gemspec +%{gem_dir}/specifications/default/zlib-1.0.0.gemspec + %files -n %{?scl_prefix}rubygems-devel %config(noreplace) %{_root_sysconfdir}/rpm/macros.rubygems%{?scl:.%{scl}} @@ -1049,14 +1080,21 @@ make check TESTS="-v $DISABLE_TESTS" %files -n %{?scl_prefix}rubygem-xmlrpc %license %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/LICENSE.txt %dir %{gem_dir}/gems/xmlrpc-%{xmlrpc_version} +%exclude %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/.* %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Gemfile %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/Rakefile %doc %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/README.md %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/bin %{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/lib +%{gem_dir}/gems/xmlrpc-%{xmlrpc_version}/xmlrpc.gemspec %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Thu Dec 14 2017 Jun Aruga - 2.5.0-1.r61214 +- Upgrade to Ruby 2.5.0 (r61214). +- Remove Patch10 for CVE-2017-0903. +- Remove SCL runtime generated automatically by scl-utils on RHEL7. + * Mon Oct 30 2017 Vít Ondruch - 2.4.2-86 - Upgrade to Ruby 2.4.2. * Remove Patch10: ruby-2.4.0-vm_insnhelper.c-block-argument-at-tailcall.patch; diff --git a/sources b/sources index 573c343..55b020e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a991f06ea1a1d421f7888c75f80f12d6 ruby-2.4.2.tar.xz +6aed578e66e0e4eeeecfb8f07eb7ed2a ruby-2.5.0-r61214.tar.xz From cc7a37ba186eacb83559536d8e3835aecbda3c38 Mon Sep 17 00:00:00 2001 From: Jun Aruga Date: Tue, 2 Jan 2018 18:46:57 +0100 Subject: [PATCH 32/34] Upgrade to Ruby 2.5.0. --- operating_system.rb | 91 +++++++++++-------- ...-additional-preludes-by-configuratio.patch | 2 +- ...0-Enable-configuration-of-archlibdir.patch | 2 +- ...ed-paths-when-empty-version-string-i.patch | 2 +- ruby-2.1.0-always-use-i386.patch | 2 +- ruby-2.1.0-custom-rubygems-location.patch | 4 +- ...2.3-Generate-preludes-using-miniruby.patch | 2 +- ruby-2.3.0-ruby_version.patch | 6 +- ....0-Add-Gem.operating_system_defaults.patch | 80 ++++++++++++++++ ruby.spec | 54 +++++------ sources | 2 +- 11 files changed, 172 insertions(+), 75 deletions(-) create mode 100644 ruby-2.5.0-Add-Gem.operating_system_defaults.patch diff --git a/operating_system.rb b/operating_system.rb index cdbc112..b1166de 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -51,18 +51,10 @@ module Gem private :x_scls ## - # Default gems locations allowed on FHS system (/usr, /usr/share). - # The locations are derived from directories specified during build - # configuration. + # Additional default locations for enabled software collections + # Dependent scls needs to add themselves on $GEM_PATH - def default_locations - @default_locations ||= { - :system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']), - :local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']) - } - - # Add additional default locations for enabled software collections - # Dependent scls needs to add themselves on $GEM_PATH + def default_locations_added_for_scls if ENV['GEM_PATH'] gem_paths = ENV['GEM_PATH'].split(':') @@ -81,6 +73,31 @@ module Gem @default_locations end + private :default_locations_added_for_scls + + ## + # SCL prefix genereatd from first detected SCL except own SCL. + + def scl_prefix + prefix = x_scls.detect {|c| c != '@SCL@'} + prefix = prefix ? prefix + '_': nil + prefix + end + private :scl_prefix + + ## + # Default gems locations allowed on FHS system (/usr, /usr/share). + # The locations are derived from directories specified during build + # configuration. + + def default_locations + @default_locations ||= { + :system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']), + :local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']) + } + + default_locations_added_for_scls + end ## # For each location provides set of directories for binaries (:bin_dir) @@ -119,24 +136,37 @@ module Gem # Remove methods we are going to override. This avoids "method redefined;" # warnings otherwise issued by Ruby. + remove_method :operating_system_defaults if method_defined? :operating_system_defaults remove_method :default_dir if method_defined? :default_dir remove_method :default_path if method_defined? :default_path - remove_method :default_bindir if method_defined? :default_bindir remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for + ## + # Regular user installs into user directory, root manages /usr/local. + + def operating_system_defaults + unless opt_build_root? + options = if Process.uid == 0 + "--install-dir=#{Gem.default_dirs[:local][:gem_dir]} --bindir #{Gem.default_dirs[:local][:bin_dir]}" + else + "--user-install --bindir #{File.join [Dir.home, 'bin']}" + end + + {"gem" => options} + else + {} + end + end + ## # RubyGems default overrides. def default_dir - if opt_build_root? - scl_prefix = x_scls.detect {|c| c != '@SCL@'} - scl_prefix = scl_prefix ? scl_prefix + '_': nil - - Gem.default_dirs[:"#{scl_prefix}system"][:gem_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:gem_dir] + prefix = scl_prefix + if Gem.default_dirs.key?(:"#{prefix}system") + Gem.default_dirs[:"#{prefix}system"][:gem_dir] else - Gem.user_dir + Gem.default_dirs[:"system"][:gem_dir] end end @@ -145,27 +175,12 @@ module Gem path.unshift Gem.user_dir if File.exist? Gem.user_home end - def default_bindir - if opt_build_root? - scl_prefix = x_scls.detect {|c| c != '@SCL@'} - scl_prefix = scl_prefix ? scl_prefix + '_': nil - - Gem.default_dirs[:"#{scl_prefix}system"][:bin_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:bin_dir] - else - File.join [Dir.home, 'bin'] - end - end - def default_ext_dir_for base_dir dir = if rpmbuild? - scl_prefix = x_scls.detect {|c| c != '@SCL@' && base_dir =~ /\/#{c}\//} - scl_prefix = scl_prefix ? scl_prefix + '_': nil - - build_dir = base_dir.chomp Gem.default_dirs[:"#{scl_prefix}system"][:gem_dir] + prefix = scl_prefix + build_dir = base_dir.chomp Gem.default_dirs[:"#{prefix}system"][:gem_dir] if build_dir != base_dir - File.join build_dir, Gem.default_dirs[:"#{scl_prefix}system"][:ext_dir] + File.join build_dir, Gem.default_dirs[:"#{prefix}system"][:ext_dir] end else dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir} diff --git a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch index da5eea6..66cb565 100644 --- a/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch +++ b/ruby-2.1.0-Allow-to-specify-additional-preludes-by-configuratio.patch @@ -39,7 +39,7 @@ diff --git a/configure.ac b/configure.ac index 028ef7ca3e..cdeff87871 100644 --- a/configure.ac +++ b/configure.ac -@@ -4387,6 +4387,13 @@ AC_SUBST(rubyarchhdrdir)dnl +@@ -4395,6 +4395,13 @@ AC_SUBST(rubyarchhdrdir)dnl AC_SUBST(sitearchhdrdir)dnl AC_SUBST(vendorarchhdrdir)dnl diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch index 09696d3..41444c5 100644 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch @@ -11,7 +11,7 @@ diff --git a/configure.ac b/configure.ac index 11fc237552..b77e88fc37 100644 --- a/configure.ac +++ b/configure.ac -@@ -3632,6 +3632,11 @@ AS_IF([test ${multiarch+set}], [ +@@ -3640,6 +3640,11 @@ AS_IF([test ${multiarch+set}], [ ]) archlibdir='${libdir}/${arch}' diff --git a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch index b306612..bdc074d 100644 --- a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +++ b/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch @@ -14,7 +14,7 @@ diff --git a/configure.ac b/configure.ac index 999e2d6d5d..11fc237552 100644 --- a/configure.ac +++ b/configure.ac -@@ -4242,7 +4242,8 @@ AS_CASE(["$ruby_version_dir_name"], +@@ -4250,7 +4250,8 @@ AS_CASE(["$ruby_version_dir_name"], ruby_version_dir=/'${ruby_version_dir_name}' if test -z "${ruby_version_dir_name}"; then diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch index 1e51168..4864741 100644 --- a/ruby-2.1.0-always-use-i386.patch +++ b/ruby-2.1.0-always-use-i386.patch @@ -11,7 +11,7 @@ diff --git a/configure.ac b/configure.ac index b77e88fc37..6bba453e3c 100644 --- a/configure.ac +++ b/configure.ac -@@ -4306,6 +4306,8 @@ AC_SUBST(vendorarchdir)dnl +@@ -4314,6 +4314,8 @@ AC_SUBST(vendorarchdir)dnl AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch index 4ed79e6..cc55c4a 100644 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ b/ruby-2.1.0-custom-rubygems-location.patch @@ -15,7 +15,7 @@ diff --git a/configure.ac b/configure.ac index 6bba453e3c..028ef7ca3e 100644 --- a/configure.ac +++ b/configure.ac -@@ -4278,6 +4278,10 @@ AC_ARG_WITH(vendorarchdir, +@@ -4286,6 +4286,10 @@ AC_ARG_WITH(vendorarchdir, [vendorarchdir=$withval], [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}]) @@ -26,7 +26,7 @@ index 6bba453e3c..028ef7ca3e 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) RUBY_EXEC_PREFIX='' -@@ -4302,6 +4306,7 @@ AC_SUBST(sitearchdir)dnl +@@ -4310,6 +4314,7 @@ AC_SUBST(sitearchdir)dnl AC_SUBST(vendordir)dnl AC_SUBST(vendorlibdir)dnl AC_SUBST(vendorarchdir)dnl diff --git a/ruby-2.2.3-Generate-preludes-using-miniruby.patch b/ruby-2.2.3-Generate-preludes-using-miniruby.patch index 05fbaa6..ca66d28 100644 --- a/ruby-2.2.3-Generate-preludes-using-miniruby.patch +++ b/ruby-2.2.3-Generate-preludes-using-miniruby.patch @@ -11,7 +11,7 @@ diff --git a/common.mk b/common.mk index 168dc52..20c218a 100644 --- a/common.mk +++ b/common.mk -@@ -956,9 +956,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) +@@ -962,9 +962,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE) $(srcdir)/template/prelude.c.tmpl $(PRELUDE_C): $(COMPILE_PRELUDE) \ diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index ee00a35..5e24003 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -20,7 +20,7 @@ diff --git a/configure.ac b/configure.ac index 8ea969412f..a00f2b6776 100644 --- a/configure.ac +++ b/configure.ac -@@ -4193,9 +4193,6 @@ AS_CASE(["$target_os"], +@@ -4201,9 +4201,6 @@ AS_CASE(["$target_os"], rubyw_install_name='$(RUBYW_INSTALL_NAME)' ]) @@ -30,7 +30,7 @@ index 8ea969412f..a00f2b6776 100644 rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'} AC_ARG_WITH(rubyarchprefix, AS_HELP_STRING([--with-rubyarchprefix=DIR], -@@ -4218,56 +4215,62 @@ AC_ARG_WITH(ridir, +@@ -4226,56 +4223,62 @@ AC_ARG_WITH(ridir, AC_SUBST(ridir) AC_SUBST(RI_BASE_NAME) @@ -120,7 +120,7 @@ index 8ea969412f..a00f2b6776 100644 AS_IF([test "${LOAD_RELATIVE+set}"], [ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4284,6 +4287,7 @@ AC_SUBST(sitearchincludedir)dnl +@@ -4292,6 +4295,7 @@ AC_SUBST(sitearchincludedir)dnl AC_SUBST(arch)dnl AC_SUBST(sitearch)dnl AC_SUBST(ruby_version)dnl diff --git a/ruby-2.5.0-Add-Gem.operating_system_defaults.patch b/ruby-2.5.0-Add-Gem.operating_system_defaults.patch new file mode 100644 index 0000000..6838701 --- /dev/null +++ b/ruby-2.5.0-Add-Gem.operating_system_defaults.patch @@ -0,0 +1,80 @@ +From 60eb961c25f801ee43ca1be9393ab2f0a0546677 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 19 Dec 2017 14:00:20 +0100 +Subject: [PATCH] Add Gem.operating_system_defaults to allow packagers to + override defaults. + +This change allows Ruby packagers to override defaults and lazily query +them. + +This is very much the same change as #1644 to treat the +operating_system defaults the same way as platform defaults. +--- + lib/rubygems/config_file.rb | 2 +- + lib/rubygems/defaults.rb | 21 ++++++++++++++++++++- + test/rubygems/test_gem.rb | 7 +++++++ + 3 files changed, 28 insertions(+), 2 deletions(-) + +diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb +index a4efed0f5a..deee38e6d9 100644 +--- a/lib/rubygems/config_file.rb ++++ b/lib/rubygems/config_file.rb +@@ -48,7 +48,7 @@ class Gem::ConfigFile + # For Ruby packagers to set configuration defaults. Set in + # rubygems/defaults/operating_system.rb + +- OPERATING_SYSTEM_DEFAULTS = {} ++ OPERATING_SYSTEM_DEFAULTS = Gem.operating_system_defaults + + ## + # For Ruby implementers to set configuration defaults. Set in +diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb +index 43d57fc808..b8222877ae 100644 +--- a/lib/rubygems/defaults.rb ++++ b/lib/rubygems/defaults.rb +@@ -177,7 +177,26 @@ def self.vendor_dir # :nodoc: + end + + ## +- # Default options for gem commands. ++ # Default options for gem commands for Ruby packagers. ++ # ++ # The options here should be structured as an array of string "gem" ++ # command names as keys and a string of the default options as values. ++ # ++ # Example: ++ # ++ # def self.operating_system_defaults ++ # { ++ # 'install' => '--no-rdoc --no-ri --env-shebang', ++ # 'update' => '--no-rdoc --no-ri --env-shebang' ++ # } ++ # end ++ ++ def self.operating_system_defaults ++ {} ++ end ++ ++ ## ++ # Default options for gem commands for Ruby implementers. + # + # The options here should be structured as an array of string "gem" + # command names as keys and a string of the default options as values. +diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb +index 3225a05c6b..62b80c4945 100644 +--- a/test/rubygems/test_gem.rb ++++ b/test/rubygems/test_gem.rb +@@ -1802,6 +1802,13 @@ def test_use_gemdeps_specific + ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps + end + ++ def test_operating_system_defaults ++ operating_system_defaults = Gem.operating_system_defaults ++ ++ assert operating_system_defaults != nil ++ assert operating_system_defaults.is_a? Hash ++ end ++ + def test_platform_defaults + platform_defaults = Gem.platform_defaults + diff --git a/ruby.spec b/ruby.spec index c418be0..5fa53d4 100644 --- a/ruby.spec +++ b/ruby.spec @@ -13,7 +13,7 @@ #%%global milestone rc1 # Keep the revision enabled for pre-releases from SVN. -%global revision 61214 +#%%global revision 61414 %global ruby_archive %{pkg_name}-%{ruby_version} @@ -24,7 +24,7 @@ %endif -%global release 1 +%global release 2 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -39,18 +39,17 @@ # http://redmine.ruby-lang.org/issues/5313 %global irb_version %{ruby_version} -%global bigdecimal_version 1.3.3 -%global bundler_version 1.16.1.pre1 -%global did_you_mean_version 1.1.2 +%global bigdecimal_version 1.3.4 +%global did_you_mean_version 1.2.0 %global io_console_version 0.4.6 %global json_version 2.1.0 %global minitest_version 5.10.3 %global net_telnet_version 0.1.1 -%global openssl_version 2.1.0.beta2 +%global openssl_version 2.1.0 %global power_assert_version 1.1.1 -%global psych_version 3.0.0 +%global psych_version 3.0.2 %global rake_version 12.3.0 -%global rdoc_version 6.0.0 +%global rdoc_version 6.0.1 %global test_unit_version 3.2.7 %global xmlrpc_version 0.3.0 @@ -143,6 +142,9 @@ Patch7: ruby-2.2.3-Generate-preludes-using-miniruby.patch # hardening features of glibc (rhbz#1361037). # https://bugs.ruby-lang.org/issues/12666 Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch +# Add Gem.operating_system_defaults to allow packagers to override defaults. +# https://github.com/rubygems/rubygems/pull/2116 +Patch10: ruby-2.5.0-Add-Gem.operating_system_defaults.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -244,7 +246,6 @@ Requires: %{?scl_prefix}rubygem(psych) >= %{psych_version} Provides: %{?scl_prefix}gem = %{version}-%{release} Provides: %{?scl_prefix}ruby(rubygems) = %{version}-%{release} # https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 -Provides: bundled(rubygem(molinillo)) = %{molinillo_version} Provides: bundled(rubygem-molinillo) = %{molinillo_version} BuildArch: noarch @@ -362,6 +363,7 @@ License: MIT Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rubygem(did_you_mean) = %{version}-%{release} +BuildArch: noarch %description -n %{?scl_prefix}rubygem-did_you_mean "did you mean?" experience in Ruby: the error message will tell you the right @@ -476,6 +478,7 @@ Group: Development/Libraries Requires: %{?scl_prefix}ruby(release) Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} Provides: %{?scl_prefix}rubygem(net-telnet) = %{version}-%{release} +BuildArch: noarch %description -n %{?scl_prefix}rubygem-net-telnet Provides telnet client functionality. @@ -539,6 +542,7 @@ rm -rf ext/fiddle/libffi* %patch6 -p1 %patch7 -p1 %patch9 -p1 +%patch10 -p1 # Provide an example of usage of the tapset: cp -a %{SOURCE3} . @@ -684,12 +688,6 @@ ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych %{buildroot}%{ruby_libdir ln -s %{gem_dir}/gems/psych-%{psych_version}/lib/psych.rb %{buildroot}%{ruby_libdir}/psych.rb ln -s %{_libdir}/gems/%{pkg_name}/psych-%{psych_version}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so -# Remove Bundler until it is really necessary. -rm -rf %{buildroot}%{ruby_libdir}/bundler -rm -rf %{buildroot}%{gem_dir}/gems/bundler-%{bundler_version} -rm -rf %{buildroot}%{gem_dir}/specifications/default/bundler-%{bundler_version}.gemspec -rm %{buildroot}%{_bindir}/bundle* - # Move the binary extensions into proper place (if no gem has binary extension, # the extensions directory might be empty). find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{ruby_version}/* -maxdepth 0 \ @@ -739,12 +737,19 @@ checksec -f libruby.so.%{ruby_version} | \ grep "Full RELRO.*Canary found.*NX enabled.*DSO.*No RPATH.*No RUNPATH.*Yes.*\d*.*\d*.*libruby.so.%{ruby_version}" %endif -# Check RubyGems version correctness. +# Check RubyGems version. [ "`make runruby TESTRUN_SCRIPT='bin/gem -v' | tail -1`" == '%{rubygems_version}' ] -# Check Molinillo version correctness. -[ "`make runruby TESTRUN_SCRIPT=\"-e \\\"module Gem; module Resolver; end; end; require 'rubygems/resolver/molinillo/lib/molinillo/gem_metadata'; puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \ + +# Check Rubygems bundled dependencies versions. + +# Molinillo. +[ "`make runruby TESTRUN_SCRIPT=\"-e \\\" \ + module Gem; module Resolver; end; end; \ + require 'rubygems/resolver/molinillo/lib/molinillo/gem_metadata'; \ + puts Gem::Resolver::Molinillo::VERSION\\\"\" | tail -1`" \ == '%{molinillo_version}' ] + # test_debug(TestRubyOptions) fails due to LoadError reported in debug mode, # when abrt.rb cannot be required (seems to be easier way then customizing # the test suite). @@ -973,18 +978,17 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/default/csv-1.0.0.gemspec %{gem_dir}/specifications/default/date-1.0.0.gemspec %{gem_dir}/specifications/default/dbm-1.0.0.gemspec -%{gem_dir}/specifications/default/digest-0.1.0.gemspec %{gem_dir}/specifications/default/etc-1.0.0.gemspec %{gem_dir}/specifications/default/fcntl-1.0.0.gemspec %{gem_dir}/specifications/default/fiddle-1.0.0.gemspec -%{gem_dir}/specifications/default/fileutils-1.0.1.gemspec +%{gem_dir}/specifications/default/fileutils-1.0.2.gemspec %{gem_dir}/specifications/default/gdbm-2.0.0.gemspec %{gem_dir}/specifications/default/ipaddr-1.2.0.gemspec %{gem_dir}/specifications/default/scanf-1.0.0.gemspec %{gem_dir}/specifications/default/sdbm-1.0.0.gemspec %{gem_dir}/specifications/default/stringio-0.0.1.gemspec -%{gem_dir}/specifications/default/strscan-0.0.1.gemspec -%{gem_dir}/specifications/default/webrick-1.4.0.beta1.gemspec +%{gem_dir}/specifications/default/strscan-1.0.0.gemspec +%{gem_dir}/specifications/default/webrick-1.4.2.gemspec %{gem_dir}/specifications/default/zlib-1.0.0.gemspec %files -n %{?scl_prefix}rubygems-devel @@ -1090,10 +1094,8 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog -* Thu Dec 14 2017 Jun Aruga - 2.5.0-1.r61214 -- Upgrade to Ruby 2.5.0 (r61214). -- Remove Patch10 for CVE-2017-0903. -- Remove SCL runtime generated automatically by scl-utils on RHEL7. +* Tue Jan 02 2018 Jun Aruga - 2.5.0-2 +- Upgrade to Ruby 2.5.0. * Mon Oct 30 2017 Vít Ondruch - 2.4.2-86 - Upgrade to Ruby 2.4.2. diff --git a/sources b/sources index 55b020e..ff68c96 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -6aed578e66e0e4eeeecfb8f07eb7ed2a ruby-2.5.0-r61214.tar.xz +e3a98c7b7de49ed5134398367ab3a3bc ruby-2.5.0.tar.xz From 239e6167fadacc45abb82b2893ff04f21b75168a Mon Sep 17 00:00:00 2001 From: Jun Aruga Date: Mon, 15 Jan 2018 20:36:28 +0100 Subject: [PATCH 33/34] Update for did_you_mean required by ruby. Resolves: rhbz#1533920 --- ruby.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ruby.spec b/ruby.spec index 5fa53d4..98103bf 100644 --- a/ruby.spec +++ b/ruby.spec @@ -24,7 +24,7 @@ %endif -%global release 2 +%global release 3 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -155,6 +155,7 @@ Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} # and http://bugs.ruby-lang.org/issues/6123 # TODO: other gems required? Requires: %{?scl_prefix}rubygem(bigdecimal) >= %{bigdecimal_version} +Requires: %{?scl_prefix}rubygem(did_you_mean) >= %{did_you_mean_version} # Requires: %%{?scl_prefix}rubygem(bundler) >= %%{bundler_version} # Requires: %%{?scl_prefix}rubygem(cmath) >= %%{cmath_version} # Requires: %%{?scl_prefix}rubygem(csv) >= %%{csv_version} @@ -1094,6 +1095,10 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Mon Jan 15 2018 Jun Aruga - 2.5.0-3 +- Update for did_you_mean required by ruby + Resolves: rhbz#1533920 + * Tue Jan 02 2018 Jun Aruga - 2.5.0-2 - Upgrade to Ruby 2.5.0. From d9ca6f9233923178e517bee839b18307fbdc7f65 Mon Sep 17 00:00:00 2001 From: Jun Aruga Date: Mon, 15 Jan 2018 20:45:05 +0100 Subject: [PATCH 34/34] Fix segfaults during generating of documentation. This caused issued during build of rubygem-{webmock,ffi} and was fixed as part of https://bugs.ruby-lang.org/issues/14261. Resolves: rhbz#1532585 --- ruby-2.5.0-parse.y-assignable_error.patch | 80 +++++++++++++++++++++++ ruby.spec | 10 ++- 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 ruby-2.5.0-parse.y-assignable_error.patch diff --git a/ruby-2.5.0-parse.y-assignable_error.patch b/ruby-2.5.0-parse.y-assignable_error.patch new file mode 100644 index 0000000..ea7dad9 --- /dev/null +++ b/ruby-2.5.0-parse.y-assignable_error.patch @@ -0,0 +1,80 @@ +From: nobu +Date: Sun, 31 Dec 2017 11:25:38 +0000 +Subject: [PATCH] parse.y: assignable_error + +* parse.y (assignable_gen): should return valid NODE always even + on errors. [ruby-core:84565] [Bug #14261] + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e +--- + parse.c | 14 ++++---------- + test/ruby/test_parse.rb | 6 ++++++ + 2 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/parse.c b/parse.c +index 08c3461f7096..c260a046dc33 100644 +--- a/parse.c ++++ b/parse.c +@@ -6593,10 +6593,6 @@ + #line 1984 "parse.y" /* yacc.c:1646 */ + { + (yyval.node) = assignable(var_field((yyvsp[0].id)), 0, &(yyloc)); +- /*%%%*/ +- if (!(yyval.node)) (yyval.node) = new_begin(0, &(yyloc)); +- /*% +- %*/ + } + #line 6598 "parse.c" /* yacc.c:1646 */ + break; +@@ -6605,10 +6601,6 @@ + #line 1992 "parse.y" /* yacc.c:1646 */ + { + (yyval.node) = assignable(var_field((yyvsp[0].id)), 0, &(yyloc)); +- /*%%%*/ +- if (!(yyval.node)) (yyval.node) = new_begin(0, &(yyloc)); +- /*% +- %*/ + } + #line 6610 "parse.c" /* yacc.c:1646 */ + break; +@@ -16034,11 +16026,13 @@ + #ifdef RIPPER + ID id = get_id(lhs); + # define assignable_result(x) (lhs) ++# define assignable_error() (lhs) + # define parser_yyerror(parser, x) (lhs = assign_error_gen(parser, lhs)) + #else + # define assignable_result(x) assignable_result0(x, location) ++# define assignable_error() new_begin(0, location) + #endif +- if (!id) return assignable_result(0); ++ if (!id) return assignable_error(); + switch (id) { + case keyword_self: + yyerror0("Can't change the value of self"); +@@ -16101,7 +16095,7 @@ + compile_error(PARSER_ARG "identifier %"PRIsVALUE" is not valid to set", rb_id2str(id)); + } + error: +- return assignable_result(0); ++ return assignable_error(); + #undef assignable_result + #undef parser_yyerror + } +diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb +index e26bcdc07e19..15c6245bac2e 100644 +--- a/test/ruby/test_parse.rb ++++ b/test/ruby/test_parse.rb +@@ -746,6 +746,12 @@ def foo + end + END + end ++ assert_raise(SyntaxError) do ++ eval "#{<<~"begin;"}\n#{<<~'end;'}", nil, __FILE__, __LINE__+1 ++ begin; ++ x, true ++ end; ++ end + end + + def test_block_dup diff --git a/ruby.spec b/ruby.spec index 98103bf..50157bc 100644 --- a/ruby.spec +++ b/ruby.spec @@ -24,7 +24,7 @@ %endif -%global release 3 +%global release 4 %{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}} # The RubyGems library has to stay out of Ruby directory three, since the @@ -145,6 +145,9 @@ Patch9: ruby-2.3.1-Rely-on-ldd-to-detect-glibc.patch # Add Gem.operating_system_defaults to allow packagers to override defaults. # https://github.com/rubygems/rubygems/pull/2116 Patch10: ruby-2.5.0-Add-Gem.operating_system_defaults.patch +# Fix segfault during generating documentation. +# https://bugs.ruby-lang.org/issues/14343 +Patch11: ruby-2.5.0-parse.y-assignable_error.patch Requires: %{?scl_prefix}%{pkg_name}-libs%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}ruby(rubygems) >= %{rubygems_version} @@ -544,6 +547,7 @@ rm -rf ext/fiddle/libffi* %patch7 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 # Provide an example of usage of the tapset: cp -a %{SOURCE3} . @@ -1095,6 +1099,10 @@ make check TESTS="-v $DISABLE_TESTS" %{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec %changelog +* Mon Jan 15 2018 Jun Aruga - 2.5.0-4 +- Fix segfaults during generating of documentation. + Resolves: rhbz#1532585 + * Mon Jan 15 2018 Jun Aruga - 2.5.0-3 - Update for did_you_mean required by ruby Resolves: rhbz#1533920