diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index d2399ca..bcd6a57 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ -/*/ -/ruby-*.tar.xz -/rexml-*.gem -/*.rpm - -!/plans/ +ruby-1.8.6-p388.tar.bz2 +ruby-refm-rdp-1.8.2-ja-html.tar.gz +rubyfaq-990927.tar.gz +rubyfaq-jp-990927.tar.gz +ruby-1.8.6-p399.tar.bz2 diff --git a/irb.1 b/irb.1 new file mode 100644 index 0000000..7fc9828 --- /dev/null +++ b/irb.1 @@ -0,0 +1,488 @@ +.\" DO NOT MODIFY THIS FILE! it was generated by rd2 +.TH irb-beta 1 "May 2001" +.SH What is irb? +.PP +irb stands for `interactive ruby'. irb is a tool to execute interactively +ruby expressions read from stdin. +.SH Invoking +.PP +.nf +\& % ruby \-r irb \-e0 +\& % irb +.fi +Either of the aboves. In the former style, options can be specified +as follows: +.nf +\& % ruby \-r irb \-e0 \-\- \-v +.fi +.SH Usage +.PP +Use of irb is easy if you know ruby. Executing irb, prompts are +displayed as follows. Then, enter expression of ruby. A input is +executed when it is syntacticaly completed. +.nf +\& dim% irb +\& irb(main):001:0> 1+2 +\& 3 +\& irb(main):002:0> class Foo +\& irb(main):003:1> def foo +\& irb(main):004:2> print 1 +\& irb(main):005:2> end +\& irb(main):006:1> end +\& nil +\& irb(main):007:0> +.fi +And, Readline extesion module can be used with irb. Using Readline +is the standard default action if Readline is installed. +.SH Command line option +.PP +.nf +\& irb.rb [options] file_name opts +\& options: +\& \-f suppress read ~/.irbrc +\& \-m bc mode (fraction or matrix are available) +\& \-d set $DEBUG to true (same as `ruby \-d') +\& \-r load\-module same as `ruby \-r' +\& \-\-inspect uses `inspect' for output (the default except bc mode) +\& \-\-noinspect doesn't uses inspect for output +\& \-\-readline uses Readline extension module +\& \-\-noreadline doesn't use Readline extension module +\& \-\-prompt prompt\-mode +\& \-\-prompt\-mode prompt\-mode +.fi +.nf +\& switches prompt mode. Pre\-defined prompt modes are +\& `defalut', `simple', `xmp' and `inf\-ruby' +.fi +.nf +\& \-\-inf\-ruby\-mode uses prompt appreciate for inf\-ruby\-mode on emacs. +.fi +.nf +\& Suppresses \-\-readline. +.fi +.nf +\& \-\-simple\-prompt simple prompt mode +\& \-\-noprompt no prompt +\& \-\-tracer display trace for each execution of commands. +\& \-\-back\-trace\-limit n +.fi +.nf +\& displayes backtrace top n and tail n. The default +\& value is 16. +.fi +.nf +\& \-\-irb_debug n sets internal debug level to n (It shouldn't be used) +\& \-v, \-\-version prints the version of irb +.fi +.SH Configurations +.PP +irb reads `~/.irbrc' when it is invoked. If `~/.irbrb' doesn't exist +irb try to read in the order `.irbrc', `irb.rc', `_irbrc' then `$irbrc'. +The following is altanative to the command line option. To use them +type as follows in an irb session. +.nf +\& IRB.conf[:IRB_NAME]="irb" +\& IRB.conf[:MATH_MODE]=false +\& IRB.conf[:USE_TRACER]=false +\& IRB.conf[:USE_LOADER]=false +\& IRB.conf[:IGNORE_SIGINT]=true +\& IRB.conf[:IGNORE_EOF]=false +\& IRB.conf[:INSPECT_MODE]=nil +\& IRB.conf[:IRB_RC] = nil +\& IRB.conf[:BACK_TRACE_LIMIT]=16 +\& IRB.conf[:USE_LOADER] = false +\& IRB.conf[:USE_READLINE] = nil +\& IRB.conf[:USE_TRACER] = false +\& IRB.conf[:IGNORE_SIGINT] = true +\& IRB.conf[:IGNORE_EOF] = false +\& IRB.conf[:PROMPT_MODE] = :DEFALUT +\& IRB.conf[:PROMPT] = {...} +\& IRB.conf[:DEBUG_LEVEL]=0 +\& IRB.conf[:VERBOSE]=true +.fi +.SH Customizing prompt +.PP +To costomize the prompt you set a variable +.nf +\& IRB.conf[:PROMPT] +.fi +For example, describe as follows in `.irbrc'. +.nf +\& IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode +\& :PROMPT_I => nil, # normal prompt +\& :PROMPT_S => nil, # prompt for continuated strings +\& :PROMPT_C => nil, # prompt for continuated statement +\& :RETURN => " ==>%s\\n" # format to return value +\& } +.fi +Then, invoke irb with the above prompt mode by +.nf +\& % irb \-\-prompt my\-prompt +.fi +Or add the following in `.irbrc'. +.nf +\& IRB.conf[:PROMPT_MODE] = :MY_PROMPT +.fi +Constants PROMPT_I, PROMPT_S and PROMPT_C specifies the format. +In the prompt specification, some special strings are available. +.nf +\& %N command name which is running +\& %m to_s of main object (self) +\& %M inspect of main object (self) +\& %l type of string(", ', /, ]), `]' is inner %w[...] +\& %NNi indent level. NN is degits and means as same as printf("%NNd"). +\& It can be ommited +\& %NNn line number. +\& %% % +.fi +For instance, the default prompt mode is defined as follows: +IRB.conf[:PROMPT_MODE][:DEFAULT] = { + +.TP +.fi +.B +PROMPT_I => "%N(%m):%03n:%i> ", + + +.TP +.fi +.B +PROMPT_S => "%N(%m):%03n:%i%l ", + + +.TP +.fi +.B +PROMPT_C => "%N(%m):%03n:%i* ", + + +.TP +.fi +.B +RETURN => "%s\\n" +} +RETURN is used to printf. +.SH Configurating subirb +.PP +The command line option or IRB.conf specify the default behavior of +(sub)irb. On the other hand, each conf of in the next sction `6. Command' +is used to individually configurate (sub)irb. +If proc is set to IRB.conf[:IRB_RC], its subirb will be invoked after +execution of that proc under giving the context of irb as its +aregument. By this mechanism each subirb can be configurated. +.SH Command +.PP +For irb commands, both simple name and `irb_'\-prefixed name are prepared. + +.TP +.fi +.B +exit, quit, irb_exit +Quits (sub)irb. +if you've done cb (see below), exit from the binding mode. + + +.TP +.fi +.B +conf, irb_context +Displays current configuration. Modifing the configuration is +achieved by sending message to `conf'. + + +.TP +.fi +.B +conf.back_trace_limit +Sets display lines of backtrace as top n and tail n. +The default value is 16. + + +.TP +.fi +.B +conf.debug_level = N +Sets debug level of irb. + + +.TP +.fi +.B +conf.ignore_eof = true/false +Whether ^D (control\-d) will be ignored or not. +If false is set, ^D means quit. + + +.TP +.fi +.B +conf.ignore_sigint= true/false +Whether ^C (control\-c) will be ignored or not. +If false is set, ^D means quit. If true, + +.nf +\& during input: cancel inputing then return to top level. +\& during execute: abondon current execution. +.fi + + +.TP +.fi +.B +conf.inf_ruby_mode = true/false +Whether inf\-ruby\-mode or not. The default value is false. + + +.TP +.fi +.B +conf.inspect_mode = true/false/nil +Specifies inspect mode. +true: display inspect +false: display to_s +nil: inspect mode in non math mode, + +.nf +\& non inspect mode in math mode. +.fi + + +.TP +.fi +.B +conf.irb_level +The level of cb. + + +.TP +.fi +.B +conf.math_mode +Whether bc mode or not. + + +.TP +.fi +.B +conf.use_loader = true/false +Whether irb's own file reader method is used when load/require or not. +This mode is globaly affected (irb wide). + + +.TP +.fi +.B +conf.prompt_c +prompt for a continuating statement (e.g, immediately after of `if') + + +.TP +.fi +.B +conf.prompt_i +standard prompt + + +.TP +.fi +.B +conf.prompt_s +prompt for a continuating string + + +.TP +.fi +.B +conf.rc +Whether ~/.irbrc is read or not. + + +.TP +.fi +.B +conf.use_prompt = true/false +Prompting or not. + + +.TP +.fi +.B +conf.use_readline = true/false/nil +Whether readline is used or not. +true: uses +false: doen't use +nil: intends to use readline except for inf\-reuby\-mode (default) + + +.TP +.fi +.B +conf.verbose=T/F +Whether verbose messages are display or not. + + +.TP +.fi +.B +cb, irb_change_binding [obj] +Enter new binding which has a distinct scope of local variables. +If obj is given, obj will be self. + + +.TP +.fi +.B +irb [obj] +Invoke subirb. If obj is given, obj will be self. + + +.TP +.fi +.B +jobs, irb_jobs +List of subirb + + +.TP +.fi +.B +fg n, irb_fg n +Switch into specified subirb. The following is candidates of n: + +.nf +\& irb number +\& thhread +\& irb object +\& self(obj which is specified of irb obj) +.fi + + +.TP +.fi +.B +kill n, irb_kill n +Kill subirb. The means of n is as same as the case of irb_fg. +.SH System variable +.PP +.nf +\& _ The latest value of evaluation (it is local) +.fi +.SH Session Example +.PP +.nf +\& dim% ruby irb.rb +\& irb(main):001:0> irb # invoke subirb +\& irb#1(main):001:0> jobs # list of subirbs +\& #0\->irb on main (# : stop) +\& #1\->irb#1 on main (# : running) +\& nil +\& irb#1(main):002:0> fg 0 # switch job +\& nil +\& irb(main):002:0> class Foo;end +\& nil +\& irb(main):003:0> irb Foo # invoke subirb which has the +.fi +.nf +\& # context of Foo +.fi +.nf +\& irb#2(Foo):001:0> def foo # define Foo#foo +\& irb#2(Foo):002:1> print 1 +\& irb#2(Foo):003:1> end +\& nil +\& irb#2(Foo):004:0> fg 0 # switch job +\& nil +\& irb(main):004:0> jobs # list of job +\& #0\->irb on main (# : running) +\& #1\->irb#1 on main (# : stop) +\& #2\->irb#2 on Foo (# : stop) +\& nil +\& irb(main):005:0> Foo.instance_methods # Foo#foo is defined asurely +\& ["foo"] +\& irb(main):006:0> fg 2 # switch job +\& nil +\& irb#2(Foo):005:0> def bar # define Foo#bar +\& irb#2(Foo):006:1> print "bar" +\& irb#2(Foo):007:1> end +\& nil +\& irb#2(Foo):010:0> Foo.instance_methods +\& ["bar", "foo"] +\& irb#2(Foo):011:0> fg 0 +\& nil +\& irb(main):007:0> f = Foo.new +\& # +\& irb(main):008:0> irb f # invoke subirb which has the +.fi +.nf +\& # context of f (instance of Foo) +.fi +.nf +\& irb#3(#):001:0> jobs +\& #0\->irb on main (# : stop) +\& #1\->irb#1 on main (# : stop) +\& #2\->irb#2 on Foo (# : stop) +\& #3\->irb#3 on # (# : running) +\& nil +\& irb#3(#):002:0> foo # evaluate f.foo +\& 1nil +\& irb#3(#):003:0> bar # evaluate f.bar +\& barnil +\& irb#3(#):004:0> kill 1, 2, 3# kill job +\& nil +\& irb(main):009:0> jobs +\& #0\->irb on main (# : running) +\& nil +\& irb(main):010:0> exit # exit +\& dim% +.fi +.SH Restrictions +.PP +Because irb evaluates the inputs immediately after the imput is +syntactically completed, irb gives slight different result than +directly use ruby. Known difference is pointed out here. +.SH Declaration of the local variable +.PP +The following causes an error in ruby: +.nf +\& eval "foo = 0" +\& foo +\& \-\- +\& \-:2: undefined local variable or method `foo' for # (NameError) +\& \-\-\- +\& NameError +.fi +Though, the above will successfully done by irb. +.nf +\& >> eval "foo = 0" +.fi +.nf +\& => 0 +\& >> foo +\& => 0 +.fi +Ruby evaluates a code after reading entire of code and determination +of the scope of local variables. On the other hand, irb do +immediately. More precisely, irb evaluate at first +.nf +\& evel "foo = 0" +.fi +then foo is defined on this timing. It is because of this +incompatibility. +If you'd like to detect those differences, begin...end can be used: +.nf +\& >> begin +\& ?> eval "foo = 0" +\& >> foo +\& >> end +\& NameError: undefined local variable or method `foo' for # +\& (irb):3 +\& (irb_local_binding):1:in `eval' +.fi +.SH Here\-document +.PP +Implementation of Here\-document is incomplete. +.SH Symbol +.PP +Irb can not always recognize a symbol as to be Symbol. Concretely, an +expression have completed, however Irb regard it as continuation line. + diff --git a/libruby.stp b/libruby.stp deleted file mode 100644 index 098b39d..0000000 --- a/libruby.stp +++ /dev/null @@ -1,303 +0,0 @@ -/* 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/macros.ruby b/macros.ruby deleted file mode 100644 index 36f4077..0000000 --- a/macros.ruby +++ /dev/null @@ -1,22 +0,0 @@ -%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 deleted file mode 100644 index 7146c77..0000000 --- a/macros.rubygems +++ /dev/null @@ -1,227 +0,0 @@ -# The RubyGems root folder. -%gem_dir %{_datadir}/gems -%gem_archdir %{_libdir}/gems - -# %gem_prerelease - Provides prerelease string if available. -# -# Usage: %gem_prerelease [custom_gem_name] -# -# If avilable, prints prerelease string, which is a %prerelease macro by -# default. When [custom_gem_name] is provided, the custom_gem_name is used to -# derive %custom_gem_name_prerelease macro, which can be predefined. -# -# Please note that for the prerelease macros are the dashes in -# [custom_gem_name] replaced by underscores. -# -%gem_prerelease() %{?1:%{expand:%%{?%{gsub %{1} - _}_prerelease}}}%{!?1:%{?prerelease}} - -# %gem_version - Provides version string (including prerelease if available). -# -# Usage: %gem_version [custom_gem_name] -# -# Prints version (including prerelease string), that is %version macro by -# default. When [custom_gem_name] is provided, the custom_gem_name is used to -# derive %custom_gem_name_version macro which needs to be predefined. -# -# Please note that for the version macros are the dashes in [custom_gem_name] -# replaced by underscores. -# -%gem_version() %{?1:%{expand:%{%{gsub %{1} - _}_version}}}%{!?1:%{version}}%{gem_prerelease %{?1}} - -# %gem_name_version - Provides gem_name-version string. -# -# Usage: %gem_name_version [custom_gem_name] -# -# Prints gem_name-version string, by default joining %gem_name, %version and -# %prerelease macros. When [custom_gem_name] is provided, the -# custom_gem_name is joined with version as provided by %gem_version macro. -# -%gem_name_version() %{?1}%{!?1:%{gem_name}}-%{gem_version %{?1}} - -# Common gem locations and files. -# -# These macros leverages %gem_name_version macro and accepts custom gem_name. -# -# -d Use default gem install location. -# -%gem_instdir() %{gem_dir}/gems/%{gem_name_version %{?1}} -%gem_extdir_mri() %{gem_archdir}/%{name}/%{gem_name_version %{?1}} -%gem_libdir() %{gem_instdir %{?1}}/lib -%gem_cache() %{gem_dir}/cache/%{gem_name_version %{?1}}.gem -%gem_spec(d) %{gem_dir}/specifications%{?-d:/default}/%{gem_name_version %{?1}}.gemspec -%gem_docdir() %{gem_dir}/doc/%{gem_name_version %{?1}} -%gem_plugin() %{gem_dir}/plugins/%{?1}%{!?1:%{gem_name}}_plugin.rb - - -# %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}} \ -\ -CONFIGURE_ARGS="--with-cflags='%{optflags}' --with-cxxflags='%{optflags}' --with-ldflags='%{build_ldflags}' $CONFIGURE_ARGS" \\\ -gem install \\\ - -V \\\ - --local \\\ - --build-root %{-d*}%{!?-d:.} \\\ - --force \\\ - --document=ri,rdoc \\\ - %{-n*}%{!?-n:%{gem_name}-%{version}%{?prerelease}.gem} \ -%{nil} - - -# The 'read' command in %%gemspec_* 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:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.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:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.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} - - -# %%gemspec_add_file - Add files to various files lists in .gemspec. -# -# Usage: %%gemspec_add_file [options] -# -# Add files to .gemspec file. is expected to be valid Ruby code. -# Path to file is expected. Does not check real files in any way. -# By default, `files` list is edited. -# -# -s Overrides the default .gemspec location. -# -t Edit test_files only. -# -r Edit extra_rdoc_files only. -# -%gemspec_add_file(s:tr) \ -read -d '' gemspec_add_file_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \ - \ - abort("gemspec_add_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \ - \ - filenames = %{*}%{!?1:nil} \ - filenames = Array(filenames) \ - \ - spec = Gem::Specification.load(gemspec_file) \ - abort("#{gemspec_file} is not accessible.") unless spec \ - \ - spec.%{?-t:test_}%{?-r:extra_rdoc_}files += filenames \ - File.write gemspec_file, spec.to_ruby \ -EOR\ -echo "$gemspec_add_file_script" | ruby \ -unset -v gemspec_add_file_script \ -%{nil} - - -# %%gemspec_remove_file - Remove files from various files lists in .gemspec. -# -# Usage: %%gemspec_remove_file [options] -# -# Remove files from .gemspec file. is expected to be valid Ruby code. -# Path to file is expected. Does not check/remove real files in any way. -# By default, `files` list is edited. File has to be removed from `test_files` -# first in order to be removable from `files`. -# -# -s Overrides the default .gemspec location. -# -t Edit test_files only. -# -r Edit extra_rdoc_files only. -# -%gemspec_remove_file(s:tr) \ -read -d '' gemspec_remove_file_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \ - \ - abort("gemspec_remove_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \ - \ - filenames = %{*}%{!?1:nil} \ - filenames = Array(filenames) \ - \ - spec = Gem::Specification.load(gemspec_file) \ - abort("#{gemspec_file} is not accessible.") unless spec \ - \ - spec.%{?-t:test_}%{?-r:extra_rdoc_}files -= filenames \ - File.write gemspec_file, spec.to_ruby \ -EOR\ -echo "$gemspec_remove_file_script" | ruby \ -unset -v gemspec_remove_file_script \ -%{nil} diff --git a/operating_system.rb b/operating_system.rb deleted file mode 100644 index fd56386..0000000 --- a/operating_system.rb +++ /dev/null @@ -1,158 +0,0 @@ -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_specifications_dir if method_defined? :default_specifications_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 - - ## - # Path to specification files of default gems. - - def default_specifications_dir - @default_specifications_dir ||= File.join(Gem.default_dirs[:system][:gem_dir], "specifications", "default") - end - - ## - # Default gem load path - - def default_path - path = default_dirs.collect {|location, paths| paths[:gem_dir]} - path.unshift Gem.user_dir if File.exist? Gem.user_home - path - 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/plans/all.fmf b/plans/all.fmf deleted file mode 100644 index 7b06cfb..0000000 --- a/plans/all.fmf +++ /dev/null @@ -1,6 +0,0 @@ -summary: Test plan with all Fedora tests -discover: - how: fmf - url: https://src.fedoraproject.org/tests/ruby.git -execute: - how: tmt diff --git a/rdoc-pr1531-fix-mutilple-document-installation.patch b/rdoc-pr1531-fix-mutilple-document-installation.patch deleted file mode 100644 index 192863f..0000000 --- a/rdoc-pr1531-fix-mutilple-document-installation.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 994ee4c17fb8c217ab0335df55620c6bdb5d5cbe Mon Sep 17 00:00:00 2001 -From: tompng -Date: Fri, 26 Dec 2025 04:57:12 +0900 -Subject: [PATCH] Fix comment_location for merged ClassModule - ---- - lib/rdoc/code_object/class_module.rb | 7 ++++++- - test/rdoc/code_object/class_module_test.rb | 6 ++++++ - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/lib/rdoc/code_object/class_module.rb b/lib/rdoc/code_object/class_module.rb -index b6bed352a2..d7ee36f950 100644 ---- a/lib/rdoc/code_object/class_module.rb -+++ b/lib/rdoc/code_object/class_module.rb -@@ -477,7 +477,12 @@ def merge(class_module) - document = document.merge other_document - - @comment = RDoc::Comment.from_document(document) -- @comment_location = document -+ -+ @comment_location = if document.parts.first.is_a?(RDoc::Markup::Document) -+ document.parts.map { |doc| [doc, doc.file] } -+ else -+ [[document, document.file]] -+ end - end - - cm = class_module diff --git a/rpm_test_helper.rb b/rpm_test_helper.rb deleted file mode 100644 index 671ca55..0000000 --- a/rpm_test_helper.rb +++ /dev/null @@ -1,166 +0,0 @@ -require 'tmpdir' -require 'tempfile' -require 'fileutils' -# Available in Ruby upstream sources under tool/lib/envutil.rb -# Required for finding and setting up the built ruby binary. -require 'envutil' - -module RPMTestHelper - def setup - @tmpdir = Dir.mktmpdir - @tempfiles = [] - end - - def teardown - @tempfiles.each do |file| - file.close - file.unlink - end - - FileUtils.rmtree(@tmpdir) - end - - GENERATOR_SCRIPT = ENV['GENERATOR_SCRIPT'].clone.freeze - if GENERATOR_SCRIPT.nil? || GENERATOR_SCRIPT == '' - raise "GENERATOR_SCRIPT is not specified." \ - "Specify the ENV variable with absolute path to the generator." - end - - Dependency = Struct.new('Dependency', :name, :requirements) do - def to_rpm_str - "rubygem(#{self.name})" - end - end - - def make_gemspec(gem_info) - file = Tempfile.new('req_gemspec', @tmpdir) - # Fake gemspec with enough to pass most checks - # Rubygems uses to validate the format. - gemspec_contents = <<~EOF - # -*- encoding: utf-8 -*- - # stub: #{gem_info.name} #{gem_info.version} ruby lib - - Gem::Specification.new do |s| - s.name = "#{gem_info.name}".freeze - s.version = "#{gem_info.version}" - - s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib".freeze] - s.authors = ["John Doe".freeze] - s.bindir = "bin".freeze - s.date = "2023-12-15" - s.description = "Fake gemspec helper for testing Rubygem Generators".freeze - s.email = ["example@example.com".freeze] - s.files = ["LICENSE.txt".freeze, "lib/#{gem_info.name}.rb".freeze, "#{gem_info.name}.gemspec".freeze] - s.homepage = "https://pkgs.fedoraproject.org/rpms/ruby".freeze - s.licenses = ["MIT".freeze] - s.required_ruby_version = Gem::Requirement.new(">= 2.5.0".freeze) - s.rubygems_version = "3.3.5".freeze - s.summary = "Fake gemspec for testing Rubygem Generators".freeze - - if s.respond_to? :specification_version then - s.specification_version = 4 - end - - if s.respond_to? :add_runtime_dependency then - #{gem_info.gemspec_runtime_dep_str} - else - #{gem_info.gemspec_dep_str} - end - end - EOF - - file.write gemspec_contents - file.rewind - @tempfiles << file - file - end - - # Caller is expected to close subprocess stdin via #close_write - # in order to let subprocess proceed if the process is reading - # from STDIN in a loop. - def rb_subprocess(*args) - args = [GENERATOR_SCRIPT] if args.empty? - ruby = EnvUtil.rubybin - f = IO.popen([ruby] + args, 'r+') #, external_encoding: external_encoding) - yield(f) - ensure - f.close unless !f || f.closed? - end - - def run_generator_single_file(gem_info) - lines = [] - gemspec_f = make_gemspec(gem_info) - - rb_subprocess do |io| - io.write gemspec_f.path - io.close_write - lines = io.readlines - end - - lines - end - - def helper_rubygems_dependency - "ruby(rubygems)" - end - - class GemInfo - attr_accessor :name, :version, :dependencies - - def initialize(name: 'foo', version: '1.2.3', dependencies: []) - @name = name - @version = version - @dependencies = dependencies - end - - def dependencies=(other) - raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Expected array of `Dependency' elements" \ - unless other.is_a?(Array) && other.all? { |elem| elem.respond_to?(:name) && elem.respond_to?(:requirements) } - - @dependencies = other - end - - def to_rpm_str - "rubygem(#{self.name})" - end - - def gemspec_dep_str - return '' if self.dependencies.nil? || self.dependencies.empty? - @dependencies.inject("") do |memo, dep| - memo += if dep.requirements && !dep.requirements.empty? - %Q|s.add_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})| - else - %Q|s.add_dependency(%q<#{dep.name}>.freeze)| - end - - memo += "\n" - end - end - - def gemspec_runtime_dep_str - return '' if self.dependencies.nil? || self.dependencies.empty? - - @dependencies.inject("") do |memo, dep| - memo += if dep.requirements && !dep.requirements.empty? - %Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})| - else - %Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze)| - end - - memo += "\n" - end - end - - private - - def handle_dep_requirements(reqs) - raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must be an array." \ - unless reqs.is_a? Array - raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must not be empty for this method." \ - if reqs.empty? - - '[ "' + reqs.join('", "') + '" ]' - end - end -end diff --git a/ruby-1.8.6-p287-CVE-2008-5189.patch b/ruby-1.8.6-p287-CVE-2008-5189.patch new file mode 100644 index 0000000..2854826 --- /dev/null +++ b/ruby-1.8.6-p287-CVE-2008-5189.patch @@ -0,0 +1,14 @@ +--- lib/cgi.rb (revision 19665) ++++ lib/cgi.rb (working copy) +@@ -546,6 +546,11 @@ + when Hash + options = options.dup + end ++ options.each_value do |value| ++ if /\n(?![ \t])/ === value ++ raise ArgumentError, "potential HTTP header injection detected" ++ end ++ end + + unless options.has_key?("type") + options["type"] = "text/html" diff --git a/ruby-1.8.6-p287-remove-ssl-rand-range.patch b/ruby-1.8.6-p287-remove-ssl-rand-range.patch new file mode 100644 index 0000000..705f3d3 --- /dev/null +++ b/ruby-1.8.6-p287-remove-ssl-rand-range.patch @@ -0,0 +1,100 @@ +diff -ur ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.c ruby-1.8.6-p287/ext/openssl/openssl_missing.c +--- ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.c 2007-02-13 00:01:19.000000000 +0100 ++++ ruby-1.8.6-p287/ext/openssl/openssl_missing.c 2009-03-15 05:32:31.000000000 +0100 +@@ -43,7 +43,7 @@ + { + return CRYPTO_set_ex_data(&str->ex_data, idx, data); + } +- ++ + void *X509_STORE_get_ex_data(X509_STORE *str, int idx) + { + return CRYPTO_get_ex_data(&str->ex_data, idx); +@@ -113,7 +113,7 @@ + #endif + + #if !defined(HAVE_EVP_CIPHER_CTX_COPY) +-/* ++/* + * this function does not exist in OpenSSL yet... or ever?. + * a future version may break this function. + * tested on 0.9.7d. +@@ -182,12 +182,12 @@ + (ASN1_STRING *)(*a)->serialNumber, + (ASN1_STRING *)(*b)->serialNumber)); + } +- ++ + int + X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev) + { + X509_CRL_INFO *inf; +- ++ + inf = crl->crl; + if (!inf->revoked) + inf->revoked = sk_X509_REVOKED_new(OSSL_X509_REVOKED_cmp); +@@ -233,54 +233,6 @@ + } + #endif + +-#if !defined(HAVE_BN_RAND_RANGE) || !defined(HAVE_BN_PSEUDO_RAND_RANGE) +-static int +-bn_rand_range(int pseudo, BIGNUM *r, BIGNUM *range) +-{ +- int (*bn_rand)(BIGNUM *, int, int, int) = pseudo ? BN_pseudo_rand : BN_rand; +- int n; +- +- if (range->neg || BN_is_zero(range)) return 0; +- +- n = BN_num_bits(range); +- +- if (n == 1) { +- if (!BN_zero(r)) return 0; +- } else if (!BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3)) { +- do { +- if (!bn_rand(r, n + 1, -1, 0)) return 0; +- if (BN_cmp(r ,range) >= 0) { +- if (!BN_sub(r, r, range)) return 0; +- if (BN_cmp(r, range) >= 0) +- if (!BN_sub(r, r, range)) return 0; +- } +- } while (BN_cmp(r, range) >= 0); +- } else { +- do { +- if (!bn_rand(r, n, -1, 0)) return 0; +- } while (BN_cmp(r, range) >= 0); +- } +- +- return 1; +-} +-#endif +- +-#if !defined(HAVE_BN_RAND_RANGE) +-int +-BN_rand_range(BIGNUM *r, BIGNUM *range) +-{ +- return bn_rand_range(0, r, range); +-} +-#endif +- +-#if !defined(HAVE_BN_PSEUDO_RAND_RANGE) +-int +-BN_pseudo_rand_range(BIGNUM *r, BIGNUM *range) +-{ +- return bn_rand_range(1, r, range); +-} +-#endif +- + #if !defined(HAVE_CONF_GET1_DEFAULT_CONFIG_FILE) + #define OPENSSL_CONF "openssl.cnf" + char * +@@ -315,7 +267,7 @@ + { + int i,j; + const char *prompt; +- ++ + if (key) { + i = strlen(key); + i = (i > num) ? num : i; diff --git a/ruby-1.8.6-p369-ri-gem_multipath.patch b/ruby-1.8.6-p369-ri-gem_multipath.patch new file mode 100644 index 0000000..e5b5872 --- /dev/null +++ b/ruby-1.8.6-p369-ri-gem_multipath.patch @@ -0,0 +1,35 @@ +--- ruby-1.8.6-p369/lib/rdoc/ri/ri_options.rb.gemmulti 2007-02-13 08:01:19.000000000 +0900 ++++ ruby-1.8.6-p369/lib/rdoc/ri/ri_options.rb 2009-10-14 23:51:09.000000000 +0900 +@@ -63,7 +63,7 @@ + + [ "--gems", nil, nil, + "Include documentation from Rubygems:\n " + +- (RI::Paths::GEMDIRS ? "#{Gem.path}/doc/*/ri" : ++ (RI::Paths::GEMDIRS ? Gem.path.map {|path| "#{path}/doc/*/ri" }.join(', ') : + "No Rubygems ri found.") ], + + [ "--format", "-f", "", +@@ -136,7 +136,11 @@ + RI::Paths::HOMEDIR + ] + +- directories << "#{Gem.path}/doc/*/ri" if RI::Paths::GEMDIRS ++ if RI::Paths::GEMDIRS ++ Gem.path.each {|gempath| ++ directories << "#{gempath}/doc/*/ri" ++ } ++ end + + directories = directories.join("\n ") + +--- ruby-1.8.6-p369/lib/rdoc/ri/ri_paths.rb.gemmulti 2007-02-13 08:01:19.000000000 +0900 ++++ ruby-1.8.6-p369/lib/rdoc/ri/ri_paths.rb 2009-10-15 00:02:05.000000000 +0900 +@@ -44,7 +44,7 @@ + + begin + require 'rubygems' +- GEMDIRS = Dir["#{Gem.path}/doc/*/ri"] ++ GEMDIRS = Gem.path.map {|path| Dir["#{path}/doc/*/ri"]}.flatten + GEMDIRS.each { |path| RI::Paths::PATH << path } + rescue LoadError + GEMDIRS = nil diff --git a/ruby-1.8.6-p383-mkmf-use-shared.patch b/ruby-1.8.6-p383-mkmf-use-shared.patch new file mode 100644 index 0000000..fb0e6a5 --- /dev/null +++ b/ruby-1.8.6-p383-mkmf-use-shared.patch @@ -0,0 +1,11 @@ +--- ruby-1.8.6-p383/lib/mkmf.rb.static 2009-03-31 18:19:39.000000000 +0900 ++++ ruby-1.8.6-p383/lib/mkmf.rb 2009-12-09 15:03:19.000000000 +0900 +@@ -275,7 +275,7 @@ + 'LDFLAGS' => "#$LDFLAGS #{ldflags}", + 'LIBPATH' => libpathflag(libpath), + 'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs", +- 'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS") ++ 'LIBS' => "#$LIBRUBYARG_SHARED #{opt} #$LIBS") + Config::expand(TRY_LINK.dup, conf) + end + diff --git a/ruby-1.8.6-p383-rubyprefix.patch b/ruby-1.8.6-p383-rubyprefix.patch new file mode 100644 index 0000000..1f0fa43 --- /dev/null +++ b/ruby-1.8.6-p383-rubyprefix.patch @@ -0,0 +1,97 @@ +diff -ur ruby-1.8.6-p383.0-deadcode/configure.in ruby-1.8.6-p383/configure.in +--- ruby-1.8.6-p383.0-deadcode/configure.in 2009-07-20 15:24:22.000000000 +0200 ++++ ruby-1.8.6-p383/configure.in 2009-10-22 16:37:13.729623476 +0200 +@@ -1613,6 +1613,13 @@ + rubyw_install_name="$RUBYW_INSTALL_NAME" + ;; + esac ++ ++AC_ARG_WITH(ruby-prefix, ++ AC_HELP_STRING([--with-ruby-prefix], [build ruby with the special library prefix.]) ++ ,, ++ with_ruby_prefix=no) ++ ++if test "x$with_ruby_prefix" = "x"; then + case "$target_os" in + cygwin*|mingw*|*djgpp*|os2-emx*) + RUBY_LIB_PREFIX="/lib/ruby" +@@ -1621,20 +1628,30 @@ + RUBY_LIB_PREFIX="`eval "echo ${libdir}"`/ruby" + ;; + esac ++else ++ RUBY_LIB_PREFIX="${with_ruby_prefix}/ruby" ++fi + RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}" ++RUBY_LIB_PATH2="${libdir}/ruby/${MAJOR}.${MINOR}" + + AC_ARG_WITH(sitedir, + [ --with-sitedir=DIR site libraries in DIR [PREFIX/lib/ruby/site_ruby]], + [sitedir=$withval], + [sitedir="`eval "echo ${libdir}"`/ruby/site_ruby"]) +-SITE_DIR=`eval echo \\"${sitedir}\\"` ++SITE_DIR=`eval echo \\"${sitedir}\\" | sed -e "s/lib64/lib/"` ++_fc_sitedir="\$(DESTDIR)${sitedir}" ++SITE_DIR2=`eval echo \\"${_fc_sitedir}\\"` ++sitedir=`eval echo \\"${sitedir}\\" | sed -e "s/lib64/lib/"` ++ + case "$target_os" in + cygwin*|mingw*|*djgpp*|os2-emx*) + RUBY_SITE_LIB_PATH="`expr "$SITE_DIR" : "$prefix\(/.*\)"`" || + RUBY_SITE_LIB_PATH="$SITE_DIR";; + *) +- RUBY_SITE_LIB_PATH="$SITE_DIR";; ++ RUBY_SITE_LIB_PATH="$SITE_DIR"; ++ RUBY_SITE_LIB_PATH2="$SITE_DIR2";; + esac ++RUBY_SITE_LIB_PATH3="${RUBY_SITE_LIB_PATH2}/${MAJOR}.${MINOR}" + RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}" + + AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}") +@@ -1644,6 +1661,7 @@ + AC_SUBST(arch)dnl + AC_SUBST(sitearch)dnl + AC_SUBST(sitedir)dnl ++AC_SUBST(_fc_sitedir)dnl + + configure_args=$ac_configure_args + AC_SUBST(configure_args)dnl +@@ -1652,7 +1670,7 @@ + arch="fat-${target_os}" + + AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB, +- "${RUBY_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}") ++ "${RUBY_LIB_PATH2}/" __ARCHITECTURE__ "-${target_os}") + + AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB, + "${RUBY_SITE_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}") +@@ -1667,8 +1685,8 @@ + *) sitearch="${arch}" ;; + esac + +-AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}") +-AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${sitearch}") ++AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH2}/${arch}") ++AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH3}/${sitearch}") + + AC_ARG_WITH(search-path, + [ --with-search-path=DIR specify the additional search path], +Only in ruby-1.8.6-p383/: configure.in.orig +Only in ruby-1.8.6-p383/: configure.in.rej +diff -ur ruby-1.8.6-p383.0-deadcode/mkconfig.rb ruby-1.8.6-p383/mkconfig.rb +--- ruby-1.8.6-p383.0-deadcode/mkconfig.rb 2008-06-07 18:37:10.000000000 +0200 ++++ ruby-1.8.6-p383/mkconfig.rb 2009-10-22 16:30:55.776872493 +0200 +@@ -139,10 +139,10 @@ + print(*v_others) + print < @@entity_expansion_limit ++ raise "number of entity expansions exceeded, processing aborted." ++ end ++ end ++ + private + def build( source ) + Parsers::TreeParser.new( source, self ).parse +diff -pruN ruby-1.8.6-p287.orig/lib/rexml/entity.rb ruby-1.8.6-p287/lib/rexml/entity.rb +--- ruby-1.8.6-p287.orig/lib/rexml/entity.rb 2007-07-28 11:46:08.000000000 +0900 ++++ ruby-1.8.6-p287/lib/rexml/entity.rb 2008-10-08 22:25:14.000000000 +0900 +@@ -73,6 +73,7 @@ module REXML + # all entities -- both %ent; and &ent; entities. This differs from + # +value()+ in that +value+ only replaces %ent; entities. + def unnormalized ++ document.record_entity_expansion unless document.nil? + v = value() + return nil if v.nil? + @unnormalized = Text::unnormalize(v, parent) +diff -pruN ruby-1.8.6-p287.orig/test/rexml/test_document.rb ruby-1.8.6-p287/test/rexml/test_document.rb +--- ruby-1.8.6-p287.orig/test/rexml/test_document.rb 1970-01-01 09:00:00.000000000 +0900 ++++ ruby-1.8.6-p287/test/rexml/test_document.rb 2008-10-08 22:25:14.000000000 +0900 +@@ -0,0 +1,42 @@ ++require "rexml/document" ++require "test/unit" ++ ++class REXML::TestDocument < Test::Unit::TestCase ++ def test_new ++ doc = REXML::Document.new(< ++Hello world! ++EOF ++ assert_equal("Hello world!", doc.root.children.first.value) ++ end ++ ++ XML_WITH_NESTED_ENTITY = < ++ ++ ++ ++ ++ ++ ++ ++]> ++ ++&a; ++ ++EOF ++ ++ def test_entity_expansion_limit ++ doc = REXML::Document.new(XML_WITH_NESTED_ENTITY) ++ assert_raise(RuntimeError) do ++ doc.root.children.first.value ++ end ++ REXML::Document.entity_expansion_limit = 100 ++ assert_equal(100, REXML::Document.entity_expansion_limit) ++ doc = REXML::Document.new(XML_WITH_NESTED_ENTITY) ++ assert_raise(RuntimeError) do ++ doc.root.children.first.value ++ end ++ assert_equal(101, doc.entity_expansion_count) ++ end ++end diff --git a/ruby-1.8.6-simplify-openssl-digest.patch b/ruby-1.8.6-simplify-openssl-digest.patch new file mode 100644 index 0000000..2636538 --- /dev/null +++ b/ruby-1.8.6-simplify-openssl-digest.patch @@ -0,0 +1,239 @@ +diff --git a/ext/openssl/lib/openssl/digest.rb b/ext/openssl/lib/openssl/digest.rb +index b3e4484..4810f01 100644 +--- a/ext/openssl/lib/openssl/digest.rb ++++ b/ext/openssl/lib/openssl/digest.rb +@@ -19,13 +19,17 @@ + #require 'openssl' + + module OpenSSL +- module Digest ++ class Digest + + alg = %w(DSS DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1) + if OPENSSL_VERSION_NUMBER > 0x00908000 + alg += %w(SHA224 SHA256 SHA384 SHA512) + end + ++ def self.digest(name, data) ++ super(data, name) ++ end ++ + alg.each{|name| + klass = Class.new(Digest){ + define_method(:initialize){|*data| +@@ -44,6 +48,14 @@ module OpenSSL + const_set(name, klass) + } + ++ # This class is only provided for backwards compatibility. Use OpenSSL::Digest in the future. ++ class Digest < Digest ++ def initialize(*args) ++ # add warning ++ super(*args) ++ end ++ end ++ + end # Digest + end # OpenSSL + +diff --git a/ext/openssl/ossl_digest.c b/ext/openssl/ossl_digest.c +index 4096b09..b0308f0 100644 +--- a/ext/openssl/ossl_digest.c ++++ b/ext/openssl/ossl_digest.c +@@ -40,7 +40,7 @@ GetDigestPtr(VALUE obj) + + SafeGetDigest(obj, ctx); + +- return EVP_MD_CTX_md(ctx); /*== ctx->digest*/ ++ return EVP_MD_CTX_md(ctx); + } + + VALUE +@@ -51,7 +51,6 @@ ossl_digest_new(const EVP_MD *md) + + ret = ossl_digest_alloc(cDigest); + GetDigest(ret, ctx); +- EVP_MD_CTX_init(ctx); + EVP_DigestInit_ex(ctx, md, NULL); + + return ret; +@@ -69,9 +68,8 @@ ossl_digest_alloc(VALUE klass) + ctx = EVP_MD_CTX_create(); + if (ctx == NULL) + ossl_raise(rb_eRuntimeError, "EVP_MD_CTX_create() failed"); +- EVP_MD_CTX_init(ctx); + obj = Data_Wrap_Struct(klass, 0, EVP_MD_CTX_destroy, ctx); +- ++ + return obj; + } + +@@ -86,14 +84,9 @@ ossl_digest_initialize(int argc, VALUE *argv, VALUE self) + VALUE type, data; + + rb_scan_args(argc, argv, "11", &type, &data); +- StringValue(type); ++ md = GetDigestPtr(type); + if (!NIL_P(data)) StringValue(data); +- name = StringValuePtr(type); +- +- md = EVP_get_digestbyname(name); +- if (!md) { +- ossl_raise(rb_eRuntimeError, "Unsupported digest algorithm (%s).", name); +- } ++ + GetDigest(self, ctx); + EVP_DigestInit_ex(ctx, md, NULL); + +@@ -141,75 +134,25 @@ ossl_digest_update(VALUE self, VALUE data) + return self; + } + +-static void +-digest_final(EVP_MD_CTX *ctx, char **buf, int *buf_len) +-{ +- EVP_MD_CTX final; +- +- if (!EVP_MD_CTX_copy(&final, ctx)) { +- ossl_raise(eDigestError, NULL); +- } +- if (!(*buf = OPENSSL_malloc(EVP_MD_CTX_size(&final)))) { +- EVP_MD_CTX_cleanup(&final); +- ossl_raise(eDigestError, "Cannot allocate mem for digest"); +- } +- EVP_DigestFinal_ex(&final, *buf, buf_len); +- EVP_MD_CTX_cleanup(&final); +-} +- +-static VALUE +-ossl_digest_digest(VALUE self) +-{ +- EVP_MD_CTX *ctx; +- char *buf; +- int buf_len; +- VALUE digest; +- +- GetDigest(self, ctx); +- digest_final(ctx, &buf, &buf_len); +- digest = ossl_buf2str(buf, buf_len); +- +- return digest; +-} +- + static VALUE +-ossl_digest_hexdigest(VALUE self) ++ossl_digest_finish(int argc, VALUE *argv, VALUE self) + { + EVP_MD_CTX *ctx; +- char *buf, *hexbuf; +- int buf_len; +- VALUE hexdigest; ++ VALUE str; ++ rb_scan_args(argc, argv, "01", &str); + + GetDigest(self, ctx); +- digest_final(ctx, &buf, &buf_len); +- if (string2hex(buf, buf_len, &hexbuf, NULL) != 2 * buf_len) { +- OPENSSL_free(buf); +- ossl_raise(eDigestError, "Memory alloc error"); ++ if (NIL_P(str)) { ++ str = rb_str_new(NULL, EVP_MD_CTX_size(ctx)); ++ } else { ++ StringValue(str); ++ rb_str_resize(str, EVP_MD_CTX_size(ctx)); + } +- OPENSSL_free(buf); +- hexdigest = ossl_buf2str(hexbuf, 2 * buf_len); + +- return hexdigest; +-} +- +-static VALUE +-ossl_digest_s_digest(VALUE klass, VALUE str, VALUE data) +-{ +- VALUE obj = rb_class_new_instance(1, &str, klass); ++ EVP_DigestFinal_ex(ctx, RSTRING_PTR(str), NULL); + +- ossl_digest_update(obj, data); ++ return str; + +- return ossl_digest_digest(obj); +-} +- +-static VALUE +-ossl_digest_s_hexdigest(VALUE klass, VALUE str, VALUE data) +-{ +- VALUE obj = rb_class_new_instance(1, &str, klass); +- +- ossl_digest_update(obj, data); +- +- return ossl_digest_hexdigest(obj); + } + + static VALUE +@@ -258,41 +201,44 @@ ossl_digest_size(VALUE self) + return INT2NUM(EVP_MD_CTX_size(ctx)); + } + ++static VALUE ++ossl_digest_block_length(VALUE self) ++{ ++ EVP_MD_CTX *ctx; ++ ++ GetDigest(self, ctx); ++ ++ return INT2NUM(EVP_MD_CTX_block_size(ctx)); ++} ++ ++ + /* + * INIT + */ + void + Init_ossl_digest() + { ++ rb_require("openssl"); ++ rb_require("digest"); ++ + #if 0 /* let rdoc know about mOSSL */ + mOSSL = rb_define_module("OpenSSL"); + #endif + +- mDigest = rb_define_module_under(mOSSL, "Digest"); +- +- eDigestError = rb_define_class_under(mDigest, "DigestError", eOSSLError); +- +- cDigest = rb_define_class_under(mDigest, "Digest", rb_cObject); +- ++ cDigest = rb_define_class_under(mOSSL, "Digest", rb_path2class("Digest::Class")); ++ eDigestError = rb_define_class_under(cDigest, "DigestError", eOSSLError); ++ + rb_define_alloc_func(cDigest, ossl_digest_alloc); +- rb_define_singleton_method(cDigest, "digest", ossl_digest_s_digest, 2); +- rb_define_singleton_method(cDigest, "hexdigest", ossl_digest_s_hexdigest, 2); +- ++ + rb_define_method(cDigest, "initialize", ossl_digest_initialize, -1); +- rb_define_method(cDigest, "reset", ossl_digest_reset, 0); +- + rb_define_copy_func(cDigest, ossl_digest_copy); +- +- rb_define_method(cDigest, "digest", ossl_digest_digest, 0); +- rb_define_method(cDigest, "hexdigest", ossl_digest_hexdigest, 0); +- rb_define_alias(cDigest, "inspect", "hexdigest"); +- rb_define_alias(cDigest, "to_s", "hexdigest"); +- ++ rb_define_method(cDigest, "reset", ossl_digest_reset, 0); + rb_define_method(cDigest, "update", ossl_digest_update, 1); + rb_define_alias(cDigest, "<<", "update"); +- +- rb_define_method(cDigest, "==", ossl_digest_equal, 1); +- ++ rb_define_private_method(cDigest, "finish", ossl_digest_finish, -1); ++ rb_define_method(cDigest, "digest_length", ossl_digest_size, 0); ++ rb_define_method(cDigest, "block_length", ossl_digest_block_length, 0); ++ + rb_define_method(cDigest, "name", ossl_digest_name, 0); +- rb_define_method(cDigest, "size", ossl_digest_size, 0); + } ++ diff --git a/ruby-1.8head-irb-save-history.patch b/ruby-1.8head-irb-save-history.patch new file mode 100644 index 0000000..9349016 --- /dev/null +++ b/ruby-1.8head-irb-save-history.patch @@ -0,0 +1,111 @@ +Thu Jul 23 15:04:20 2009 Keiju Ishitsuka + +ruby* lib/irb.rb, lib/irb/init.rb, lib/irb/ext/save-history.rb: add +ruby IRB::irb_at_exit. no use finalizer saving history. [ruby-dev-38563] + +Index: lib/irb/ext/save-history.rb +=================================================================== +--- lib/irb/ext/save-history.rb (revision 24225) ++++ lib/irb/ext/save-history.rb (revision 24254) +@@ -50,23 +50,24 @@ + module HistorySavingAbility + include Readline + +- def HistorySavingAbility.create_finalizer +- proc do +- if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0 +- if hf = IRB.conf[:HISTORY_FILE] +- file = File.expand_path(hf) +- end +- file = IRB.rc_file("_history") unless file +- open(file, 'w' ) do |f| +- hist = HISTORY.to_a +- f.puts(hist[-num..-1] || hist) +- end +- end +- end +- end ++# def HistorySavingAbility.create_finalizer ++# proc do ++# if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0 ++# if hf = IRB.conf[:HISTORY_FILE] ++# file = File.expand_path(hf) ++# end ++# file = IRB.rc_file("_history") unless file ++# open(file, 'w' ) do |f| ++# hist = HISTORY.to_a ++# f.puts(hist[-num..-1] || hist) ++# end ++# end ++# end ++# end + + def HistorySavingAbility.extended(obj) +- ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer) ++# ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer) ++ IRB.conf[:AT_EXIT].push proc{obj.save_history} + obj.load_history + obj + end +@@ -80,6 +81,19 @@ + end + end + end ++ ++ def save_history ++ if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0 ++ if history_file = IRB.conf[:HISTORY_FILE] ++ history_file = File.expand_path(history_file) ++ end ++ history_file = IRB.rc_file("_history") unless history_file ++ open(history_file, 'w' ) do |f| ++ hist = HISTORY.to_a ++ f.puts(hist[-num..-1] || hist) ++ end ++ end ++ end + end + end + +Index: lib/irb/init.rb +=================================================================== +--- lib/irb/init.rb (revision 24225) ++++ lib/irb/init.rb (revision 24254) +@@ -114,6 +114,8 @@ + # @CONF[:LC_MESSAGES] = "en" + @CONF[:LC_MESSAGES] = Locale.new + ++ @CONF[:AT_EXIT] = [] ++ + @CONF[:DEBUG_LEVEL] = 1 + end + +Index: lib/irb.rb +=================================================================== +--- lib/irb.rb (revision 24225) ++++ lib/irb.rb (revision 24254) +@@ -65,13 +65,21 @@ + trap("SIGINT") do + irb.signal_handle + end +- +- catch(:IRB_EXIT) do +- irb.eval_input ++ ++ begin ++ catch(:IRB_EXIT) do ++ irb.eval_input ++ end ++ ensure ++ irb_at_exit + end + # print "\n" + end + ++ def IRB.irb_at_exit ++ @CONF[:AT_EXIT].each{|hook| hook.call} ++ end ++ + def IRB.irb_exit(irb, ret) + throw :IRB_EXIT, ret + end diff --git a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch b/ruby-2.1.0-Enable-configuration-of-archlibdir.patch deleted file mode 100644 index 8551d79..0000000 --- a/ruby-2.1.0-Enable-configuration-of-archlibdir.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e1293f665128b0d9c5bfa0b5beeab4afebf07e6a 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.ac | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/configure.ac b/configure.ac -index a64358fada..b3bdfad1eb 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -3556,6 +3556,11 @@ AS_IF([test ${multiarch+set}], [ - ]) - - 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}' 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 deleted file mode 100644 index 045d6ae..0000000 --- a/ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 6062f4976c5b51f8b952b9f6745175be7b1c5ff9 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.ac | 3 ++- - loadpath.c | 12 ++++++++++++ - tool/mkconfig.rb | 2 +- - 3 files changed, 15 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 2bc5153141..a64358fada 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -4472,7 +4472,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 b8969e6998..bbfd4daa78 100644 ---- a/loadpath.c -+++ b/loadpath.c -@@ -65,21 +65,33 @@ 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" -diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb -index db74115730..2b01796abf 100755 ---- a/tool/mkconfig.rb -+++ b/tool/mkconfig.rb -@@ -114,7 +114,7 @@ - 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$/ diff --git a/ruby-2.1.0-always-use-i386.patch b/ruby-2.1.0-always-use-i386.patch deleted file mode 100644 index 6ecfb2e..0000000 --- a/ruby-2.1.0-always-use-i386.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 9e70f6e4b8771965a30ecfb6d1c6015df350ca55 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.ac | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/configure.ac b/configure.ac -index b3bdfad1eb..411322a27f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -4536,6 +4536,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/` -+ - AS_IF([test "${universal_binary-no}" = yes ], [ - arch="universal-${target_os}" - AS_IF([test "${rb_cv_architecture_available}" = yes], [ diff --git a/ruby-2.1.0-custom-rubygems-location.patch b/ruby-2.1.0-custom-rubygems-location.patch deleted file mode 100644 index 969fefa..0000000 --- a/ruby-2.1.0-custom-rubygems-location.patch +++ /dev/null @@ -1,94 +0,0 @@ -From c7952996ac9738a14bea0a1a971fea13460a6c94 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.ac | 5 +++++ - loadpath.c | 4 ++++ - template/verconf.h.tmpl | 3 +++ - tool/rbinstall.rb | 10 ++++++++++ - 4 files changed, 22 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 411322a27f..b5f842a512 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -4508,6 +4508,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]) -+ - AS_IF([test "${LOAD_RELATIVE+set}"], [ - AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) - RUBY_EXEC_PREFIX='' -@@ -4532,6 +4536,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 bbfd4daa78..69677a9297 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 9ba2bd6de5..4ec4ce9353 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 a9e6365b27..7117e65e82 100755 ---- a/tool/rbinstall.rb -+++ b/tool/rbinstall.rb -@@ -393,6 +393,7 @@ def CONFIG.[](name, mandatory = false) - vendorlibdir = CONFIG["vendorlibdir"] - vendorarchlibdir = CONFIG["vendorarchdir"] - end -+rubygemsdir = CONFIG["rubygemsdir"] - mandir = CONFIG["mandir", true] - docdir = CONFIG["docdir", true] - enable_shared = CONFIG["ENABLE_SHARED"] == 'yes' -@@ -1082,7 +1083,16 @@ def (bins = []).add(name) - install?(:local, :comm, :lib) do - prepare "library scripts", rubylibdir - noinst = %w[*.txt *.rdoc *.gemspec] -+ # Bundler carries "rubygems.rb" file, so it must be specialcased :/ -+ noinst += %w[rubygems.rb rubygems/ bundler.rb bundler/] if rubygemsdir - install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode) -+ if rubygemsdir -+ noinst = %w[*.txt *.rdoc *.gemspec] -+ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :no_install => noinst, :mode => $data_mode) -+ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode) -+ install_recursive(File.join(srcdir, "lib", "bundler"), File.join(rubylibdir, "bundler"), :no_install => noinst, :mode => $data_mode) -+ install(File.join(srcdir, "lib", "bundler.rb"), rubylibdir, :mode => $data_mode) -+ end - end - - install?(:local, :comm, :hdr, :'comm-hdr') do diff --git a/ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch b/ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch deleted file mode 100644 index 82f5963..0000000 --- a/ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch +++ /dev/null @@ -1,22 +0,0 @@ -From f833e213596b0bcfad8264a555eb5093303fb5f2 Mon Sep 17 00:00:00 2001 -From: Jarek Prokop -Date: Thu, 25 Sep 2025 12:26:39 +0200 -Subject: [PATCH] Add ruby_version_dir_name support for RDoc. - ---- - lib/rdoc/ri/paths.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb -index 8e89b04e..731f9e36 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 = File.join RbConfig::CONFIG['ridir'], version - diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch deleted file mode 100644 index 2eb5d00..0000000 --- a/ruby-2.3.0-ruby_version.patch +++ /dev/null @@ -1,257 +0,0 @@ -From 5406ea4b4b13db747e5c1f8341bb257b4da04435 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.ac | 66 ++++++++++++++++++++++++--------------------- - template/ruby.pc.in | 1 + - 2 files changed, 36 insertions(+), 31 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 2bbce78fd0..9d8662369c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -4422,9 +4422,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], -@@ -4447,57 +4444,63 @@ 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 */']) --AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [ -- { -- echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" -- echo '@%:@include "confdefs.h"' -- echo '#define STRINGIZE(x) x' -- test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' -- echo '#include "version.h"' -- echo 'ruby_version=RUBY_LIB_VERSION' -- } > conftest.c -- ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`" -- eval $ruby_version --], [test -z "${ruby_version}"], [ -- AC_MSG_ERROR([No ruby version, No place for bundled libraries]) --], [ -- RUBY_LIB_VERSION="${ruby_version}" --]) -+RUBY_LIB_VERSION_STYLE='3 /* full */' -+{ -+echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE" -+echo '@%:@include "confdefs.h"' -+echo '#define STRINGIZE(x) x' -+test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0' -+echo '#include "version.h"' -+echo 'ruby_version=RUBY_LIB_VERSION' -+} > conftest.c -+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}'}]) - - AS_IF([test "${LOAD_RELATIVE+set}"], [ - AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) -@@ -4514,6 +4517,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 6901ec2320..9b7b787208 100644 ---- a/template/ruby.pc.in -+++ b/template/ruby.pc.in -@@ -2,6 +2,7 @@ MAJOR=@MAJOR@ - MINOR=@MINOR@ - 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@ - arch=@arch@ - -From baff562149499973123d2187620201be641c6538 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. - ---- - tool/rbinstall.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb -index 874c3ef1d9..a9e6365b27 100755 ---- a/tool/rbinstall.rb -+++ b/tool/rbinstall.rb -@@ -1053,7 +1053,7 @@ def (bins = []).add(name) - - 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, :no_install => rdoc_noinst, :mode => $data_mode) - end - -From 7cf872a9a34f38d71cd2ca04ac114b4ea85cc56c 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 | 7 ++++--- - test/rubygems/test_gem.rb | 5 +++-- - 2 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb -index 90f09fc191..f6b8a03b95 100644 ---- a/lib/rubygems/defaults.rb -+++ b/lib/rubygems/defaults.rb -@@ -35,7 +35,7 @@ def self.default_spec_cache_dir - # specified in the environment - - def self.default_dir -- @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"]) -+ @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]) - end - - ## -@@ -104,7 +104,8 @@ def self.user_dir - gem_dir = File.join(Gem.user_home, ".gem") - gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir) - parts = [gem_dir, 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 - -@@ -265,7 +266,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 - - ## -diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb -index 74c8953904..1f3bd91d51 100644 ---- a/test/rubygems/test_gem.rb -+++ b/test/rubygems/test_gem.rb -@@ -1339,7 +1339,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? - - FileUtils.mkdir_p File.join(parts) - -@@ -1415,7 +1416,7 @@ def test_self_vendor_dir - vendordir(File.join(@tempdir, "vendor")) do - 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 - -From 17cb98b7b78f8bfc511feffbe061747f676055b1 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.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 9d8662369c..2bc5153141 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -151,7 +151,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}') - - dnl checks for alternative programs - AC_CANONICAL_BUILD diff --git a/ruby-2.7.0-Initialize-ABRT-hook.patch b/ruby-2.7.0-Initialize-ABRT-hook.patch deleted file mode 100644 index 86d97fc..0000000 --- a/ruby-2.7.0-Initialize-ABRT-hook.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 03b44a86b574dc0b63fd57c5f9b52b56ad3ced37 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -Date: Mon, 6 Jan 2020 13:56:04 +0100 -Subject: [PATCH] Initialize ABRT hook. - -The ABRT hook used to be initialized by preludes via patches [[1], [2]]. -Unfortunately, due to [[3]] and especially since [[4]], this would -require boostrapping [[5]]. - -To keep the things simple for now, load the ABRT hook via C. - -[1]: https://bugs.ruby-lang.org/issues/8566 -[2]: https://bugs.ruby-lang.org/issues/15306 -[3]: https://bugs.ruby-lang.org/issues/16254 -[4]: https://github.com/ruby/ruby/pull/2735 -[5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/ ---- - abrt.c | 12 ++++++++++++ - common.mk | 1 + - ruby.c | 4 ++++ - spec/ruby/core/kernel/require_spec.rb | 2 ++ - 4 files changed, 19 insertions(+) - create mode 100644 abrt.c - -diff --git a/abrt.c b/abrt.c -new file mode 100644 -index 0000000000..e99cb432e6 ---- /dev/null -+++ b/abrt.c -@@ -0,0 +1,12 @@ -+#include "internal.h" -+ -+void -+Init_abrt(void) -+{ -+ rb_eval_string( -+ " begin\n" -+ " require 'abrt'\n" -+ " rescue LoadError\n" -+ " end\n" -+ ); -+} -diff --git a/common.mk b/common.mk -index 08fee9119a..dae7d9dc00 100644 ---- a/common.mk -+++ b/common.mk -@@ -116,6 +116,7 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \ - prism_init.$(OBJEXT) - - COMMONOBJS = \ -+ abrt.$(OBJEXT) \ - array.$(OBJEXT) \ - ast.$(OBJEXT) \ - bignum.$(OBJEXT) \ -diff --git a/ruby.c b/ruby.c -index b00fc1502d..32b88f7496 100644 ---- a/ruby.c -+++ b/ruby.c -@@ -1773,10 +1773,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) - - void Init_builtin_features(void); - -+/* abrt.c */ -+void Init_abrt(void); -+ - static void - ruby_init_prelude(void) - { - Init_builtin_features(); -+ Init_abrt(); - } - - void rb_call_builtin_inits(void); -diff --git a/spec/ruby/core/kernel/require_spec.rb b/spec/ruby/core/kernel/require_spec.rb -index 60d17242fe..a8f93b0db4 100644 ---- a/spec/ruby/core/kernel/require_spec.rb -+++ b/spec/ruby/core/kernel/require_spec.rb -@@ -26,6 +26,8 @@ - out = ruby_exe("puts $LOADED_FEATURES", options: '--disable-gems --disable-did-you-mean') - features = out.lines.map { |line| File.basename(line.chomp, '.*') } - -+ # Ignore ABRT -+ features -= %w[abrt] - # Ignore CRuby internals - features -= %w[encdb transdb windows_1252 windows_31j] - features.reject! { |feature| feature.end_with?('-fake') } diff --git a/ruby-3.3.0-Disable-syntax-suggest-test-case.patch b/ruby-3.3.0-Disable-syntax-suggest-test-case.patch deleted file mode 100644 index 09d11f9..0000000 --- a/ruby-3.3.0-Disable-syntax-suggest-test-case.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 9b7cb6a40d73bb86ee0de34360068e90e80f4e7e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -Date: Thu, 7 Sep 2023 13:13:02 +0200 -Subject: [PATCH] Disable syntax-suggest test case. - -This requires internet connection. ---- - common.mk | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/common.mk b/common.mk -index dae7d9dc00..111e859d1b 100644 ---- a/common.mk -+++ b/common.mk -@@ -1619,8 +1619,6 @@ no-test-bundled-gems-spec: - - test-syntax-suggest: - --check: $(DOT_WAIT) $(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest -- - test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck - no-test-bundler-precheck: - yes-test-bundler-precheck: main $(arch)-fake.rb diff --git a/ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch b/ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch deleted file mode 100644 index 8238b58..0000000 --- a/ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 1cfb11bc8d01e4fc1ff47807721e29b250f0f19f Mon Sep 17 00:00:00 2001 -From: Jarek Prokop -Date: Mon, 22 Dec 2025 10:13:34 +0100 -Subject: [PATCH] Support customizable rustc_flags for rustc builds. - -Add `rustc_flags` option for configure that appends to RUSTC_FLAGS -flags used when compiling with rustc for customizable build flags. -It appends to existing defaults in RUSTC_FLAGS. - -Co-authored-by: Alan Wu ---- - common.mk | 10 ++-------- - configure.ac | 8 ++++++++ - defs/jit.mk | 2 ++ - template/Makefile.in | 1 + - 4 files changed, 13 insertions(+), 8 deletions(-) - -diff --git a/common.mk b/common.mk -index 08fee9119a..9ac5ae919f 100644 ---- a/common.mk -+++ b/common.mk -@@ -270,21 +270,15 @@ MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \ - # For release builds - YJIT_RUSTC_ARGS = --crate-name=yjit \ - $(JIT_RUST_FLAGS) \ -+ $(RUSTC_FLAGS) \ - --edition=2021 \ -- -g \ -- -C lto=thin \ -- -C opt-level=3 \ -- -C overflow-checks=on \ - '--out-dir=$(CARGO_TARGET_DIR)/release/' \ - '$(top_srcdir)/yjit/src/lib.rs' - - ZJIT_RUSTC_ARGS = --crate-name=zjit \ - $(JIT_RUST_FLAGS) \ -+ $(RUSTC_FLAGS) \ - --edition=2024 \ -- -g \ -- -C lto=thin \ -- -C opt-level=3 \ -- -C overflow-checks=on \ - '--out-dir=$(CARGO_TARGET_DIR)/release/' \ - '$(top_srcdir)/zjit/src/lib.rs' - -diff --git a/configure.ac b/configure.ac -index 2bbce78fd0..a3aa6dc383 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -69,6 +69,7 @@ dnl 93(bright yellow) is copied from .github/workflows/mingw.yml - AC_ARG_VAR([cflags], [additional CFLAGS (ignored when CFLAGS is given)])dnl - AC_ARG_VAR([cppflags], [additional CPPFLAGS (ignored when CPPFLAGS is given)])dnl - AC_ARG_VAR([cxxflags], [additional CXXFLAGS (ignored when CXXFLAGS is given)])dnl -+AC_ARG_VAR([rustc_flags], [additional RUSTC_FLAGS])dnl - - [begin]_group "environment section" && { - HAVE_BASERUBY=yes -@@ -4054,6 +4055,11 @@ AS_CASE(["${ZJIT_SUPPORT}"], - AC_DEFINE(USE_ZJIT, 0) - ]) - -+RUSTC_FLAGS='-g -C lto=thin -C opt-level=3 -C overflow-checks=on' -+AS_IF([test -n "${rustc_flags}"], [ -+ RUSTC_FLAGS="${RUSTC_FLAGS} ${rustc_flags}" -+]) -+ - JIT_RUST_FLAGS='--crate-type=staticlib --cfg feature=\"stats_allocator\"' - RLIB_DIR= - AS_CASE(["$JIT_CARGO_SUPPORT:$YJIT_SUPPORT:$ZJIT_SUPPORT"], -@@ -4111,6 +4117,7 @@ AS_IF([test -n "$RUST_LIB"], [ - dnl These variables end up in ::RbConfig::CONFIG - AC_SUBST(RUSTC)dnl Rust compiler command - AC_SUBST(JIT_RUST_FLAGS)dnl the common rustc flags for JIT crates such as zjit -+AC_SUBST(RUSTC_FLAGS)dnl user-configurable rustc compiler flags - AC_SUBST(CARGO)dnl Cargo command for Rust builds - AC_SUBST(CARGO_BUILD_ARGS)dnl for selecting Rust build profiles - AC_SUBST(YJIT_SUPPORT)dnl what flavor of YJIT the Ruby build includes -@@ -4855,6 +4862,7 @@ config_summary "strip command" "$STRIP" - config_summary "install doc" "$DOCTARGETS" - config_summary "YJIT support" "$YJIT_SUPPORT" - config_summary "ZJIT support" "$ZJIT_SUPPORT" -+config_summary "RUSTC_FLAGS" "$RUSTC_FLAGS" - config_summary "man page type" "$MANTYPE" - config_summary "search path" "$search_path" - config_summary "static-linked-ext" ${EXTSTATIC:+"yes"} -diff --git a/defs/jit.mk b/defs/jit.mk -index 42b56c4cd9..27b14e7a07 100644 ---- a/defs/jit.mk -+++ b/defs/jit.mk -@@ -40,6 +40,7 @@ else ifneq ($(strip $(RLIB_DIR)),) # combo build - $(RUST_LIB): $(srcdir)/ruby.rs - $(ECHO) 'building $(@F)' - $(gnumake_recursive)$(Q) $(RUSTC) --edition=2024 \ -+ $(RUSTC_FLAGS) \ - '-L$(@D)' \ - --extern=yjit \ - --extern=zjit \ -@@ -58,6 +59,7 @@ $(JIT_RLIB): - $(gnumake_recursive)$(Q) $(RUSTC) --crate-name=jit \ - --edition=2024 \ - $(JIT_RUST_FLAGS) \ -+ $(RUSTC_FLAGS) \ - '--out-dir=$(@D)' \ - '$(top_srcdir)/jit/src/lib.rs' - endif # ifneq ($(JIT_CARGO_SUPPORT),no) -diff --git a/template/Makefile.in b/template/Makefile.in -index 443c394cb4..0b7b50e3aa 100644 ---- a/template/Makefile.in -+++ b/template/Makefile.in -@@ -115,6 +115,7 @@ CARGO_TARGET_DIR=@abs_top_builddir@/target - CARGO_BUILD_ARGS=@CARGO_BUILD_ARGS@ - ZJIT_TEST_FEATURES=@ZJIT_TEST_FEATURES@ - JIT_RUST_FLAGS=@JIT_RUST_FLAGS@ -+RUSTC_FLAGS=@RUSTC_FLAGS@ - RLIB_DIR=@RLIB_DIR@ - RUST_LIB=@RUST_LIB@ - RUST_LIBOBJ = $(RUST_LIB:.a=.@OBJEXT@) diff --git a/ruby-always-use-i386.patch b/ruby-always-use-i386.patch new file mode 100644 index 0000000..9dc8c87 --- /dev/null +++ b/ruby-always-use-i386.patch @@ -0,0 +1,11 @@ +--- ruby-1.8.6-p287/configure.in.i386 2009-03-16 00:55:15.000000000 +0900 ++++ ruby-1.8.6-p287/configure.in 2009-03-16 01:42:41.000000000 +0900 +@@ -1662,6 +1662,8 @@ + configure_args=$ac_configure_args + AC_SUBST(configure_args)dnl + ++target_cpu=`echo $target_cpu | sed s/i.86/i386/` ++ + if test "$fat_binary" != no ; then + arch="fat-${target_os}" + diff --git a/ruby-deadcode.patch b/ruby-deadcode.patch new file mode 100644 index 0000000..2cc3654 --- /dev/null +++ b/ruby-deadcode.patch @@ -0,0 +1,72 @@ +diff -pruN ruby-1.8.6.orig/ext/bigdecimal/bigdecimal.c ruby-1.8.6/ext/bigdecimal/bigdecimal.c +--- ruby-1.8.6.orig/ext/bigdecimal/bigdecimal.c 2007-02-27 20:51:55.000000000 +0900 ++++ ruby-1.8.6/ext/bigdecimal/bigdecimal.c 2007-03-15 21:14:32.000000000 +0900 +@@ -2167,12 +2167,14 @@ VpGetDoubleNegZero(void) /* Returns the + return nzero; + } + ++#if 0 + VP_EXPORT int + VpIsNegDoubleZero(double v) + { + double z = VpGetDoubleNegZero(); + return MemCmp(&v,&z,sizeof(v))==0; + } ++#endif + + VP_EXPORT int + VpException(unsigned short f, const char *str,int always) +diff -pruN ruby-1.8.6.orig/parse.y ruby-1.8.6/parse.y +--- ruby-1.8.6.orig/parse.y 2007-03-03 16:30:46.000000000 +0900 ++++ ruby-1.8.6/parse.y 2007-03-15 21:15:58.000000000 +0900 +@@ -4511,6 +4511,7 @@ rb_node_newnode(type, a0, a1, a2) + return n; + } + ++#if 0 + static enum node_type + nodetype(node) /* for debug */ + NODE *node; +@@ -4524,6 +4525,7 @@ nodeline(node) + { + return nd_line(node); + } ++#endif + + static NODE* + newline_node(node) +diff -pruN ruby-1.8.6.orig/regex.c ruby-1.8.6/regex.c +--- ruby-1.8.6.orig/regex.c 2007-02-27 20:51:55.000000000 +0900 ++++ ruby-1.8.6/regex.c 2007-03-15 21:16:52.000000000 +0900 +@@ -998,6 +998,7 @@ print_partial_compiled_pattern(start, en + } + + ++#if 0 + static void + print_compiled_pattern(bufp) + struct re_pattern_buffer *bufp; +@@ -1006,6 +1007,7 @@ print_compiled_pattern(bufp) + + print_partial_compiled_pattern(buffer, buffer + bufp->used); + } ++#endif + + static char* + calculate_must_string(start, end) +@@ -2586,6 +2588,7 @@ insert_jump_n(op, from, to, current_end, + + If you call this function, you must zero out pending_exact. */ + ++#if 0 + static void + insert_op(op, there, current_end) + int op; +@@ -2599,6 +2602,7 @@ insert_op(op, there, current_end) + + there[0] = (char)op; + } ++#endif + + + /* Open up space at location THERE, and insert operation OP followed by diff --git a/ruby-deprecated-search-path.patch b/ruby-deprecated-search-path.patch new file mode 100644 index 0000000..aead58e --- /dev/null +++ b/ruby-deprecated-search-path.patch @@ -0,0 +1,51 @@ +diff -ruN ruby-1.8.4.orig/configure.in ruby-1.8.4/configure.in +--- ruby-1.8.4.orig/configure.in 2006-04-20 12:53:38.000000000 +0900 ++++ ruby-1.8.4/configure.in 2006-04-20 13:06:07.000000000 +0900 +@@ -1472,12 +1472,16 @@ + esac + RUBY_SITE_LIB_PATH3="${RUBY_SITE_LIB_PATH2}/${MAJOR}.${MINOR}" + RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}" ++RUBY_DEPRECATED_SITE_LIB_PATH="${SITE_DIR2}/${MAJOR}.${MINOR}" + + AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}") + AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}") + AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}") + AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB, "${libdir}/site_ruby") + AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB2, "${libdir}/site_ruby/${MAJOR}.${MINOR}") ++AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_LIB, "${RUBY_LIB_PATH2}") ++AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_SITE_LIB, "${SITE_DIR2}") ++AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_SITE_LIB2, "${RUBY_DEPRECATED_SITE_LIB_PATH}") + + AC_SUBST(arch)dnl + AC_SUBST(sitearch)dnl +diff -ruN ruby-1.8.4.orig/ruby.c ruby-1.8.4/ruby.c +--- ruby-1.8.4.orig/ruby.c 2005-12-12 09:36:52.000000000 +0900 ++++ ruby-1.8.4/ruby.c 2006-04-20 12:59:50.000000000 +0900 +@@ -292,11 +292,17 @@ + #endif + + incpush(RUBY_RELATIVE(RUBY_SITE_LIB2)); ++#ifdef RUBY_DEPRECATED_SITE_LIB ++ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_SITE_LIB2)); ++#endif + #ifdef RUBY_SITE_THIN_ARCHLIB + incpush(RUBY_RELATIVE(RUBY_SITE_THIN_ARCHLIB)); + #endif + incpush(RUBY_RELATIVE(RUBY_SITE_ARCHLIB)); + incpush(RUBY_RELATIVE(RUBY_SITE_LIB)); ++#ifdef RUBY_DEPRECATED_SITE_LIB ++ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_SITE_LIB)); ++#endif + #ifdef RUBY_DEPRECATED_OLD_SITE_LIB2 + incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_LIB2)); + #endif +@@ -308,6 +314,9 @@ + #endif + + incpush(RUBY_RELATIVE(RUBY_LIB)); ++#ifdef RUBY_DEPRECATED_LIB ++ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_LIB)); ++#endif + #ifdef RUBY_THIN_ARCHLIB + incpush(RUBY_RELATIVE(RUBY_THIN_ARCHLIB)); + #endif diff --git a/ruby-deprecated-sitelib-search-path.patch b/ruby-deprecated-sitelib-search-path.patch new file mode 100644 index 0000000..5711727 --- /dev/null +++ b/ruby-deprecated-sitelib-search-path.patch @@ -0,0 +1,39 @@ +diff -ruN ruby-1.8.4.orig/configure.in ruby-1.8.4/configure.in +--- ruby-1.8.4.orig/configure.in 2006-06-07 13:58:03.000000000 +0900 ++++ ruby-1.8.4/configure.in 2006-06-07 15:54:36.000000000 +0900 +@@ -1476,6 +1476,8 @@ + AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}") + AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}") + AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}") ++AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB, "${libdir}/site_ruby") ++AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB2, "${libdir}/site_ruby/${MAJOR}.${MINOR}") + + AC_SUBST(arch)dnl + AC_SUBST(sitearch)dnl +@@ -1506,6 +1508,7 @@ + + AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH2}/${arch}") + AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH3}/${sitearch}") ++AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_ARCHLIB, "${libdir}/site_ruby/${MAJOR}.${MINOR}/${sitearch}") + + AC_ARG_WITH(search-path, + [ --with-search-path=DIR specify the additional search path], +diff -ruN ruby-1.8.4.orig/ruby.c ruby-1.8.4/ruby.c +--- ruby-1.8.4.orig/ruby.c 2005-12-12 09:36:52.000000000 +0900 ++++ ruby-1.8.4/ruby.c 2006-06-07 15:56:14.000000000 +0900 +@@ -297,6 +297,15 @@ + #endif + incpush(RUBY_RELATIVE(RUBY_SITE_ARCHLIB)); + incpush(RUBY_RELATIVE(RUBY_SITE_LIB)); ++#ifdef RUBY_DEPRECATED_OLD_SITE_LIB2 ++ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_LIB2)); ++#endif ++#ifdef RUBY_DEPRECATED_OLD_SITE_ARCHLIB ++ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_ARCHLIB)); ++#endif ++#ifdef RUBY_DEPRECATED_OLD_SITE_LIB ++ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_LIB)); ++#endif + + incpush(RUBY_RELATIVE(RUBY_LIB)); + #ifdef RUBY_THIN_ARCHLIB diff --git a/ruby-exercise.stp b/ruby-exercise.stp deleted file mode 100644 index df9df41..0000000 --- a/ruby-exercise.stp +++ /dev/null @@ -1,39 +0,0 @@ -/* 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-mode-init.el b/ruby-mode-init.el new file mode 100644 index 0000000..fcd99db --- /dev/null +++ b/ruby-mode-init.el @@ -0,0 +1,20 @@ +;; ruby-mode-init.el +;; Created: 2002-02-01 +;; +(if (featurep 'xemacs) + (setq load-path (cons "/usr/lib/xemacs/xemacs-packages/lisp/ruby-mode" load-path)) + (setq load-path (cons "/usr/share/emacs/site-lisp/ruby-mode" load-path))) + + +(autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t) +(setq auto-mode-alist + (cons '("\\.rb$" . ruby-mode) auto-mode-alist)) +(setq interpreter-mode-alist + (cons '("ruby" . ruby-mode) interpreter-mode-alist)) + +(autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process") +(autoload 'inf-ruby-keys "inf-ruby" "Set local key defs for inf-ruby in ruby-mode") + +(add-hook 'ruby-mode-hook + '(lambda () + (inf-ruby-keys))) diff --git a/ruby-multilib.patch b/ruby-multilib.patch new file mode 100644 index 0000000..5f2f75b --- /dev/null +++ b/ruby-multilib.patch @@ -0,0 +1,12 @@ +diff -ruN ruby-1.8.3.orig/mkconfig.rb ruby-1.8.3/mkconfig.rb +--- ruby-1.8.3.orig/mkconfig.rb 2005-09-21 15:10:57.000000000 +0900 ++++ ruby-1.8.3/mkconfig.rb 2005-09-21 15:17:32.000000000 +0900 +@@ -74,7 +74,7 @@ + + drive = File::PATH_SEPARATOR == ';' + +-prefix = '/lib/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM ++prefix = '/lib64/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM + print " TOPDIR = File.dirname(__FILE__).chomp!(#{prefix.dump})\n" + print " DESTDIR = ", (drive ? "TOPDIR && TOPDIR[/\\A[a-z]:/i] || " : ""), "'' unless defined? DESTDIR\n" + print " CONFIG = {}\n" diff --git a/ruby-openssl-1.0.patch b/ruby-openssl-1.0.patch new file mode 100644 index 0000000..508fd75 --- /dev/null +++ b/ruby-openssl-1.0.patch @@ -0,0 +1,176 @@ +diff -up ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c.ossl10 ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c +--- ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c.ossl10 2007-02-13 00:01:19.000000000 +0100 ++++ ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c 2009-08-26 12:29:41.000000000 +0200 +@@ -92,7 +92,7 @@ ossl_x509_ary2sk(VALUE ary) + + #define OSSL_IMPL_SK2ARY(name, type) \ + VALUE \ +-ossl_##name##_sk2ary(STACK *sk) \ ++ossl_##name##_sk2ary(STACK_OF(type) *sk) \ + { \ + type *t; \ + int i, num; \ +@@ -102,7 +102,7 @@ ossl_##name##_sk2ary(STACK *sk) \ + OSSL_Debug("empty sk!"); \ + return Qnil; \ + } \ +- num = sk_num(sk); \ ++ num = sk_##type##_num(sk); \ + if (num < 0) { \ + OSSL_Debug("items in sk < -1???"); \ + return rb_ary_new(); \ +@@ -110,7 +110,7 @@ ossl_##name##_sk2ary(STACK *sk) \ + ary = rb_ary_new2(num); \ + \ + for (i=0; id.sign->cert; +- crls = pkcs7->d.sign->crl; + break; + case NID_pkcs7_signedAndEnveloped: + certs = pkcs7->d.signed_and_enveloped->cert; ++ break; ++ default: ++ certs = NULL; ++ } ++ ++ return certs; ++} ++ ++static STACK_OF(X509_CRL) * ++pkcs7_get_crls(VALUE self) ++{ ++ PKCS7 *pkcs7; ++ STACK_OF(X509_CRL) *crls; ++ int i; ++ ++ GetPKCS7(self, pkcs7); ++ i = OBJ_obj2nid(pkcs7->type); ++ switch(i){ ++ case NID_pkcs7_signed: ++ crls = pkcs7->d.sign->crl; ++ break; ++ case NID_pkcs7_signedAndEnveloped: + crls = pkcs7->d.signed_and_enveloped->crl; + break; + default: +- certs = crls = NULL; ++ crls = NULL; + } + +- return want_certs ? certs : crls; ++ return crls; + } + + static VALUE +@@ -581,7 +601,7 @@ ossl_pkcs7_set_certificates(VALUE self, + STACK_OF(X509) *certs; + X509 *cert; + +- certs = pkcs7_get_certs_or_crls(self, 1); ++ certs = pkcs7_get_certs(self); + while((cert = sk_X509_pop(certs))) X509_free(cert); + rb_iterate(rb_each, ary, ossl_pkcs7_set_certs_i, self); + +@@ -591,7 +611,7 @@ ossl_pkcs7_set_certificates(VALUE self, + static VALUE + ossl_pkcs7_get_certificates(VALUE self) + { +- return ossl_x509_sk2ary(pkcs7_get_certs_or_crls(self, 1)); ++ return ossl_x509_sk2ary(pkcs7_get_certs(self)); + } + + static VALUE +@@ -621,7 +641,7 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ar + STACK_OF(X509_CRL) *crls; + X509_CRL *crl; + +- crls = pkcs7_get_certs_or_crls(self, 0); ++ crls = pkcs7_get_crls(self); + while((crl = sk_X509_CRL_pop(crls))) X509_CRL_free(crl); + rb_iterate(rb_each, ary, ossl_pkcs7_set_crls_i, self); + +@@ -631,7 +651,7 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ar + static VALUE + ossl_pkcs7_get_crls(VALUE self) + { +- return ossl_x509crl_sk2ary(pkcs7_get_certs_or_crls(self, 0)); ++ return ossl_x509crl_sk2ary(pkcs7_get_crls(self)); + } + + static VALUE +diff -up ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c.ossl10 ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c +--- ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c.ossl10 2007-03-12 05:12:32.000000000 +0100 ++++ ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c 2009-08-26 12:08:48.000000000 +0200 +@@ -89,12 +89,18 @@ static char *ossl_sslctx_attrs[] = { + static char *ossl_ssl_attr_readers[] = { "io", "context", }; + static char *ossl_ssl_attrs[] = { "sync_close", }; + ++#if OPENSSL_VERSION_NUMBER >= 0x10000000L ++#define OSSL_MORE_CONST const ++#define STACK _STACK ++#else ++#define OSSL_MORE_CONST ++#endif + /* + * SSLContext class + */ + struct { + const char *name; +- SSL_METHOD *(*func)(void); ++ OSSL_MORE_CONST SSL_METHOD *(*func)(void); + } ossl_ssl_method_tab[] = { + #define OSSL_SSL_METHOD_ENTRY(name) { #name, name##_method } + OSSL_SSL_METHOD_ENTRY(TLSv1), +@@ -144,7 +150,7 @@ static VALUE + ossl_sslctx_initialize(int argc, VALUE *argv, VALUE self) + { + VALUE ssl_method; +- SSL_METHOD *method = NULL; ++ OSSL_MORE_CONST SSL_METHOD *method = NULL; + SSL_CTX *ctx; + int i; + char *s; +@@ -407,7 +413,7 @@ ossl_sslctx_setup(VALUE self) + } + + static VALUE +-ossl_ssl_cipher_to_ary(SSL_CIPHER *cipher) ++ossl_ssl_cipher_to_ary(OSSL_MORE_CONST SSL_CIPHER *cipher) + { + VALUE ary; + int bits, alg_bits; +@@ -805,7 +811,7 @@ static VALUE + ossl_ssl_get_cipher(VALUE self) + { + SSL *ssl; +- SSL_CIPHER *cipher; ++ OSSL_MORE_CONST SSL_CIPHER *cipher; + + Data_Get_Struct(self, SSL, ssl); + if (!ssl) { diff --git a/ruby.rpmlintrc b/ruby.rpmlintrc deleted file mode 100644 index ec8ac11..0000000 --- a/ruby.rpmlintrc +++ /dev/null @@ -1,59 +0,0 @@ -# Keep matching patterns enough not to hide unintended errors and warnings. - -# There is no way to implement this with `%{SOURCE0}` without `%{_sourcedir}`. -# The order in the .spec file could be possibly different. -addFilter(r'ruby\.(spec|src):20: E: use-of-RPM_SOURCE_DIR$') - -# The used version is not obvious. -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-build_assert\)$') -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-check_type\)$') -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-container_of\)$') -addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-list\)$') - -# The template files do not have to have executable bits. -addFilter(r'^rubygem-bundler\.noarch: E: non-executable-script /usr/share/gems/gems/bundler-[\d\.]+/lib/bundler/templates/[\w/\.]+ 644 /usr/bin/env ') - -# Samples don't really need executable bits. -addFilter(r'^rubygem-bigdecimal\.x86_64: E: non-executable-script /usr/share/gems/gems/bigdecimal-[\d\.]+/sample/\w+.rb 644 /usr/local/bin/ruby$') - -# The bundled gem files permissions are overridden as 644 by `make install`. -# https://bugs.ruby-lang.org/issues/17840 -# https://github.com/rubygems/rubygems/issues/5255 -addFilter(r'^.*: E: non-executable-script /usr/share/gems/gems/(abbrev|getoptlong|nkf|observer|resolv|resolv-replace|rinda|syslog)-[\d\.]+/bin/\w+ 644 ') - -# Ruby provides API to set the cipher list. -addFilter(r'^ruby-libs\.\w+: W: crypto-policy-non-compliance-openssl /usr/lib(64)?/ruby/openssl.so SSL_CTX_set_cipher_list$') - -# `gethostbyname` is part of deprecated Ruby API. There is also request to drop the API altogether: -# https://bugs.ruby-lang.org/issues/13097 -# https://bugs.ruby-lang.org/issues/17944 -addFilter(r'^ruby-libs\.\w+: W: binary-or-shlib-calls-gethostbyname /usr/lib(64)?/ruby/socket.so$') - -# Rake ships some examples. -addFilter(r'^rubygem-rake.noarch: W: devel-file-in-non-devel-package /usr/share/gems/gems/rake-[\d\.]+/doc/example/\w+.c$') - -# Some executables don't have their manual pages. Is it worth of use help2man? -addFilter(r'^.+: W: no-manual-page-for-binary (bundler|gem|racc|rbs|rdbg|rdoc|ruby-mri|syntax_suggest|typeprof)$') - -# Default gems does not come with any documentation. -addFilter(r'^rubygem-(bigdecimal|io-console|json|psych)\.\w+: W: no-documentation$') - -# rubygems-devel ships only RPM macros and generators. Their placement is given -# by RPM and can't be modified. -addFilter(r'rubygems-devel.noarch: W: only-non-binary-in-usr-lib$') - -# Ignore some spelling false positives. -# Ignore spelling of technical terms -addFilter(r'^ruby-default-gems.noarch: E: spelling-error \(\'gemspec\'') -addFilter(r'^ruby-libs.x86_64: E: spelling-error \(\'libruby\'') -addFilter(r'^rubygem-test-unit.noarch: E: spelling-error \(\'xUnit\'') -addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'libyaml\'') -addFilter(r'^rubygem-io-console.x86_64: E: spelling-error \(\'readline\'') -# `pyaml` is part of URL -addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'pyyaml\'') -# `de-` is actually prefix -addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'de\'') - -# It does not seemt to be worth of changing rubygems to archful package due to -# single directory, unless it causes some real troubles. -addFilter(r'^rubygems.noarch: E: noarch-with-lib64$') diff --git a/ruby.spec b/ruby.spec index a364fe6..1fa8ccb 100644 --- a/ruby.spec +++ b/ruby.spec @@ -1,360 +1,70 @@ -%global major_version 4 -%global minor_version 0 -%global teeny_version 1 -%global major_minor_version %{major_version}.%{minor_version} +%define rubyxver 1.8 +%define rubyver 1.8.6 +%define _patchlevel 399 +%define dotpatchlevel %{?_patchlevel:.%{_patchlevel}} +%define patchlevel %{?_patchlevel:-p%{_patchlevel}} +%define arcver %{rubyver}%{?patchlevel} +%define sitedir %{_libdir}/ruby/site_ruby +# This is required to ensure that noarch files puts under /usr/lib/... for +# multilib because ruby library is installed under /usr/{lib,lib64}/ruby anyway. +%define sitedir2 %{_prefix}/lib/ruby/site_ruby +%define _normalized_cpu %(echo `echo %{_target_cpu} | sed 's/^ppc/powerpc/' | sed -e 's|i.86|i386|'`) -%global ruby_version %{major_minor_version}.%{teeny_version} -%global ruby_release %{ruby_version} +# emacs sitelisp directory +%{!?_emacs_sitelispdir: %global _emacs_sitelispdir %{_datadir}/emacs/site-lisp} +%{!?_emacs_sitestartdir: %global _emacs_sitestartdir %{_datadir}/emacs/site-lisp/site-start.d} -# Specify the named version. It has precedense to revision. -%dnl %global milestone preview2 - -# Keep the revision enabled for pre-releases from GIT. -%dnl %global revision d428d086c2 - -%global ruby_archive %{name}-%{ruby_version} - -# If revision and milestone are removed/commented out, the official release build is expected. -%if 0%{?milestone:1} != 0 -%global ruby_archive %{ruby_archive}-%{?milestone} -%endif - -%if 0%{?revision:1} != 0 -%global ruby_archive %{ruby_archive}-%{?revision} -%define ruby_archive_timestamp %(stat --printf='@%Y' %{_sourcedir}/%{ruby_archive}.tar.xz | date -f - +"%Y%m%d") -%endif - -%if 0%{?milestone:1}%{?revision:1} != 0 -%define development_release ~%{?ruby_archive_timestamp}%{?milestone}%{?!milestone:%{?revision:git%{revision}}} -%endif - - -# The RubyGems library has to stay out of Ruby directory tree, since the -# RubyGems should be share by all Ruby implementations. -%global rubygems_dir %{_datadir}/rubygems - -## BUNDLED_GEMS_VERSIONS - -# Bundled libraries versions -%global rubygems_version 4.0.3 -%global rubygems_molinillo_version 0.8.0 -%global rubygems_net_http_version 0.7.0 -%global rubygems_net_protocol_version 0.2.2 -%global rubygems_optparse_version 0.8.0 -%global rubygems_resolv_version 0.6.2 -%global rubygems_securerandom_version 0.4.1 -%global rubygems_timeout_version 0.4.4 -%global rubygems_tsort_version 0.2.0 -%global rubygems_uri_version 1.1.1 - -# Default gems. -%global bundler_version 4.0.3 -%global bundler_connection_pool_version 2.5.4 -%global bundler_fileutils_version 1.8.0 -%global bundler_net_http_persistent_version 4.0.6 -%global bundler_pub_grub_version 0.5.0 -%global bundler_securerandom_version 0.4.1 -%global bundler_thor_version 1.4.0 -%global bundler_tsort_version 0.2.0 -%global bundler_uri_version 1.1.1 - -%global date_version 3.5.1 -%global delegate_version 0.6.1 -%global did_you_mean_version 2.0.0 -%global digest_version 3.2.1 -%global english_version 0.8.1 -%global erb_version 6.0.1 -%global error_highlight_version 0.7.1 -%global etc_version 1.4.6 -%global fcntl_version 1.3.0 -%global fileutils_version 1.8.0 -%global find_version 0.2.0 -%global forwardable_version 1.4.0 -%global io_console_version 0.8.2 -%global io_nonblock_version 0.3.2 -%global io_wait_version 0.4.0 -%global ipaddr_version 1.2.8 -%global json_version 2.18.0 -%global net_http_version 0.9.1 -%global net_protocol_version 0.2.2 -%global open_uri_version 0.5.0 -%global open3_version 0.2.1 -%global openssl_version 4.0.0 -%global optparse_version 0.8.1 -%global pp_version 0.6.3 -%global prettyprint_version 0.2.0 -%global prism_version 1.8.0 -%global psych_version 5.3.1 -%global resolv_version 0.7.0 -%global ruby2_keywords_version 0.0.5 -%global securerandom_version 0.4.1 -%global shellwords_version 0.2.2 -%global singleton_version 0.3.0 -%global stringio_version 3.2.0 -%global strscan_version 3.1.6 -%global syntax_suggest_version 2.0.2 -%global tempfile_version 0.3.1 -%global time_version 0.4.2 -%global timeout_version 0.6.0 -%global tmpdir_version 0.3.1 -%global tsort_version 0.2.0 -%global un_version 0.3.0 -%global uri_version 1.1.1 -%global weakref_version 0.1.4 -%global win32_registry_version 0.1.2 -%global yaml_version 0.4.0 -%global zlib_version 3.2.2 - -# Bundled gems. -%global abbrev_version 0.1.2 -%global base64_version 0.3.0 -%global benchmark_version 0.5.0 -%global bigdecimal_version 4.0.1 -%global csv_version 3.3.5 -%global debug_version 1.11.1 -%global drb_version 2.2.3 -%global fiddle_version 1.1.8 -%global getoptlong_version 0.2.1 -%global irb_version 1.16.0 -%global logger_version 1.7.0 -%global matrix_version 0.4.3 -%global minitest_version 6.0.0 -%global mutex_m_version 0.3.0 -%global net_ftp_version 0.3.9 -%global net_imap_version 0.6.2 -%global net_pop_version 0.1.2 -%global net_smtp_version 0.5.1 -%global nkf_version 0.2.0 -%global observer_version 0.1.2 -%global ostruct_version 0.6.3 -%global power_assert_version 3.0.1 -%global prime_version 0.1.4 -%global pstore_version 0.2.0 -%global racc_version 1.8.1 -%global rake_version 13.3.1 -%global rbs_version 3.10.0 -%global rdoc_version 7.0.3 -%global readline_version 0.0.4 -%global reline_version 0.6.3 -%global repl_type_completor_version 0.1.12 -%global resolv_replace_version 0.1.1 -%global rexml_version 3.4.4 -%global rinda_version 0.2.0 -%global rss_version 0.3.2 -%global syslog_version 0.3.0 -%global test_unit_version 3.7.5 -%global typeprof_version 0.31.1 -%global win32ole_version 1.9.2 - -## END_BUNDLED_GEMS_VERSIONS - -# Bundled nkf version -%global bundled_nkf_version 2.1.5 - -%global tapset_libdir %(echo %{_libdir} | sed 's/64//')* - -%if 0%{?fedora} >= 19 -%bcond_without rubypick -%endif - -%bcond_without cmake -%bcond_without git -%bcond_without gmp -%bcond_without hostname -%bcond_without systemtap -%bcond_without rust - -# Don't build rust parts if we are not building with rust bits. -%if 0%{?with_rust} -# YJIT and ZJIT is supported on x86_64 and aarch64. -# https://github.com/ruby/ruby/blob/master/doc/jit/yjit.md -# https://github.com/ruby/ruby/blob/master/doc/jit/zjit.md -%ifarch x86_64 aarch64 -%bcond_without yjit -%bcond_without zjit -%endif -%endif - -# Enable test when building on local. -%bcond_with bundler_tests -%bcond_without parallel_tests - -%if 0%{?fedora} -%bcond_without hardening_test -%endif - -# The additional linker flags break binary rubygem- packages. -# https://bugzilla.redhat.com/show_bug.cgi?id=2043092 -%undefine _package_note_flags - -Summary: An interpreter of object-oriented scripting language -Name: ruby -Version: %{ruby_version}%{?development_release} -Release: 31%{?dist} -# Licenses, which are likely not included in binary RPMs: -# Apache-2.0: -# benchmark/gc/redblack.rb -# But this file might be BSD-2-Clause licensed after all: -# https://bugs.ruby-lang.org/issues/20420 -# GPL-1.0-or-later: ext/win32/lib/win32/sspi.rb -# GPL-1.0-or-later OR Artistic-1.0-Perl: win32/win32.c, include/ruby/win32.h, -# ext/win32ole/win32ole.c -# IETF (this is not official SPDX identifier) -# .bundle/gems/net-imap-0.4.9/LICENSE.txt -# Licenses in this file covers fair use and don't need to be listed: -# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/506 -# -# BSD-3-Clause: missing/{crypt,mt19937,setproctitle}.c, addr2line.c:2652 -# CC0: ccan/{build_assert/build_assert.h,check_type/check_type.h, -# container_of/container_of.h,str/str.h} -# Allowed based on 'grandfather clause': -# https://gitlab.com/fedora/legal/fedora-license-data/-/blob/7d9720b2cfd8ccb98d1975312942d99588a0da7c/data/CC0-1.0.toml#L11-14 -# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/499 -# dtoa: missing/dtoa.c -# GPL-3.0-or-later WITH Bison-exception-2.2: parse.{c,h}, ext/ripper/ripper.c -# HPND-Markus-Kuhn: missing/langinfo.c -# ISC: missing/strl{cat,cpy}.c -# LicenseRef-Fedora-Public-Domain: include/ruby/st.h, strftime.c, missing/*, ... -# https://gitlab.com/fedora/legal/fedora-license-data/-/merge_requests/145 -# MIT: ccan/list/list.h -# Ruby OR BSD-2-Clause OR GPL-1.0-or-later: lib/net/protocol.rb -# Ruby-pty: ext/pty/pty.c -# Unicode-DFS-2015: some of enc/trans/**/*.src -# There is also license review ticket here: -# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/500 -# zlib: ext/digest/md5/md5.*, ext/nkf/nkf-utf8/nkf.c -License: (Ruby OR BSD-2-Clause) AND (Ruby OR BSD-2-Clause OR GPL-1.0-or-later) AND BSD-3-Clause AND (GPL-3.0-or-later WITH Bison-exception-2.2) AND ISC AND LicenseRef-Fedora-Public-Domain AND MIT AND CC0-1.0 AND zlib AND Unicode-DFS-2015 AND HPND-Markus-Kuhn AND Ruby-pty -URL: https://www.ruby-lang.org/ -Source0: https://cache.ruby-lang.org/pub/%{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 -# RPM dependency generators. -Source6: rubygems.attr -Source7: rubygems.req -Source8: rubygems.prov -Source9: rubygems.con -# ABRT hoook test case. -Source10: test_abrt.rb -# SystemTap tests. -Source11: test_systemtap.rb -# Ruby OpenSSL FIPS tests. -Source12: test_openssl_fips.rb -# RPM gem Requires dependency generator tests. -Source13: rpm_test_helper.rb -Source14: test_rubygems_req.rb -Source15: test_rubygems_prov.rb -Source16: test_rubygems_con.rb - -# The load directive is supported since RPM 4.12, i.e. F21+. The build process -# fails on older Fedoras. -%{load:%{SOURCE4}} -%{load:%{SOURCE5}} - -%define _local_file_attrs local_generator -%define __local_generator_requires make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE7}" -%define __local_generator_provides make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE8}" -%define __local_generator_conflicts make -C %{_builddir}/%{buildsubdir}/%{_vpath_builddir} -s runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE9}" -%define __local_generator_path ^%{gem_dir}/specifications/.*\.gemspec$ - -# Fix ruby_version abuse. -# https://bugs.ruby-lang.org/issues/11002 -Patch0: ruby-2.3.0-ruby_version.patch -# Fix ruby_version abuse for rdoc. -# Since rdoc is bundled gem, the patch is split from ruby-2.3.0-ruby_version.patch -# re-made in ruby/rdoc git source and will be applied in correct path in the -# specfile where we have the exact rdoc version that is part of the path. -Patch1: ruby-2.3.0-ruby_version-Add-ruby_version_dir_name-support-for-RDoc.patch -# http://bugs.ruby-lang.org/issues/7807 -Patch2: 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 -Patch3: 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. -Patch4: 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 -Patch5: ruby-2.1.0-custom-rubygems-location.patch -# The ABRT hook used to be initialized by preludes via following patches: -# https://bugs.ruby-lang.org/issues/8566 -# https://bugs.ruby-lang.org/issues/15306 -# Unfortunately, due to https://bugs.ruby-lang.org/issues/16254 -# and especially since https://github.com/ruby/ruby/pull/2735 -# this would require boostrapping: -# https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/ -# For now, load the ABRT hook via this simple patch: -Patch6: ruby-2.7.0-Initialize-ABRT-hook.patch -# Disable syntax_suggest test suite, which tries to download its dependencies. -# https://bugs.ruby-lang.org/issues/19297 -Patch7: ruby-3.3.0-Disable-syntax-suggest-test-case.patch -# Add a way to provide %%build_rustflags to JIT's rustc. -# https://github.com/ruby/ruby/pull/15695 -Patch8: ruby-4.0.1-Support-customizable-rustc_flags-for-rustc-builds.patch -# https://github.com/ruby/rdoc/pull/1531 -# Fix error with `gem install --document=rdoc,ri` -Patch9: rdoc-pr1531-fix-mutilple-document-installation.patch - -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -%{?with_rubypick:Suggests: rubypick} -Recommends: ruby(rubygems) >= %{rubygems_version} -Recommends: ruby-default-gems >= %{version}-%{release} -Recommends: ruby-bundled-gems >= %{version}-%{release} -Recommends: rubygem(bigdecimal) >= %{bigdecimal_version} - -# Build dependencies -BuildRequires: autoconf -BuildRequires: gcc -BuildRequires: make -BuildRequires: libffi-devel -BuildRequires: libxcrypt-devel -BuildRequires: libyaml-devel -BuildRequires: openssl-devel -BuildRequires: zlib-devel -%{?with_gmp:BuildRequires: gmp-devel} -%{?with_systemtap:BuildRequires: %{_bindir}/dtrace} -%{?with_systemtap:BuildRequires: systemtap-sdt-devel} -%if 0%{?with_rust} -BuildRequires: %{_bindir}/rustc - -# We need the %%{build_rustflags}, EL needs different package than Fedora. -%if 0%{?fedora} -BuildRequires: rust-srpm-macros +Name: ruby +Version: %{rubyver}%{?dotpatchlevel} +Release: 1%{?dist} +License: Ruby or GPLv2 +URL: http://www.ruby-lang.org/ +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 +BuildRequires: compat-readline5-devel %else -Buildrequires: rust-toolset +BuildRequires: readline readline-devel %endif +BuildRequires: ncurses ncurses-devel gdbm gdbm-devel glibc-devel tcl-devel tk-devel libX11-devel autoconf gcc unzip openssl-devel db4-devel byacc +# Use bison to recreate parse.c (ref: bug 530275 comment 4) +BuildRequires: bison +BuildRequires: emacs -%endif +Source0: ftp://ftp.ruby-lang.org/pub/%{name}/%{rubyxver}/%{name}-%{arcver}.tar.bz2 +## Dead link +##Source1: http://www7.tok2.com/home/misc/files/%{name}/%{name}-refm-rdp-1.8.1-ja-html.tar.gz +#Source1: %{name}-refm-rdp-1.8.1-ja-html.tar.gz +Source1: http://elbereth-hp.hp.infoseek.co.jp/files/ruby/refm/old/2005/%{name}-refm-rdp-1.8.2-ja-html.tar.gz +Source2: ftp://ftp.ruby-lang.org/pub/%{name}/doc/rubyfaq-990927.tar.gz +Source3: ftp://ftp.ruby-lang.org/pub/%{name}/doc/rubyfaq-jp-990927.tar.gz +Source4: irb.1 +Source10: ruby-mode-init.el -# Install section -BuildRequires: multilib-rpm-config +Patch1: ruby-deadcode.patch +Patch20: ruby-1.8.6-p383-rubyprefix.patch +Patch21: ruby-deprecated-sitelib-search-path.patch +Patch22: ruby-deprecated-search-path.patch +Patch23: ruby-multilib.patch +# Needed in 1.8.6-p287, no longer needed in 1.8.6-p368? +#Patch25: ruby-1.8.6.111-gcc43.patch +Patch26: ruby-1.8.6-rexml-CVE-2008-3790.patch +Patch27: ruby-1.8.6-p287-CVE-2008-5189.patch +Patch28: ruby-1.8.6-p287-remove-ssl-rand-range.patch +Patch29: ruby-always-use-i386.patch +Patch30: ruby-openssl-1.0.patch +Patch31: ruby-1.8.6-p369-ri-gem_multipath.patch +# Patch32 from ruby_1_8 branch +Patch32: ruby-1.8head-irb-save-history.patch +Patch33: ruby-1.8.6-p383-mkmf-use-shared.patch +# Testing +# Patch34 disabled for now +Patch34: ruby-1.8.6-simplify-openssl-digest.patch +# bz 580993 +Patch35: ruby_1_8_7-gc-open4_096segv.patch -# Check dependencies - -# Required to test hardening. -%{?with_hardening_test:BuildRequires: %{_bindir}/checksec} - -# Needed to pass test_set_program_name(TestRubyOptions) -BuildRequires: procps -# Neede by `Socket.gethostname returns the host name ERROR` -%{?with_hostname:BuildRequires: %{_bindir}/hostname} - -# RubyGems test suite optional dependencies. -%{?with_git:BuildRequires: git} -# `cmake` is required for test/rubygems/test_gem_ext_cmake_builder.rb. -%{?with_cmake:BuildRequires: %{_bindir}/cmake} - -# The bundler/spec/runtime/setup_spec.rb requires the command `man`. -%{?with_bundler_tests:BuildRequires: %{_bindir}/man} - - -# 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} +Summary: An interpreter of object-oriented scripting language +Group: Development/Languages +Requires: %{name}-libs = %{version}-%{release} %description Ruby is the interpreted scripting language for quick and easy @@ -363,2650 +73,513 @@ files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible. -%package devel -Summary: A Ruby development environment -Requires: %{name}%{?_isa} = %{version}-%{release} -# This would not be needed if ~50 packages depending on -devel used -# --disable-gems -Requires: rubygems -# Users need CFLAGS from /usr/lib/rpm/redhat/redhat-hardened-cc1 -# for building gems with binary extensions (rhbz#1905222). -Recommends: redhat-rpm-config - -%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 -Provides: ruby(release) = %{ruby_release} - -# Virtual provides for CCAN copylibs. -# https://fedorahosted.org/fpc/ticket/364 -Provides: bundled(ccan-build_assert) -Provides: bundled(ccan-check_type) -Provides: bundled(ccan-container_of) -Provides: bundled(ccan-list) - -# StdLib default gems. -Provides: bundled(rubygem-did_you_mean) = %{did_you_mean_version} -Provides: bundled(rubygem-openssl) = %{openssl_version} - +Summary: Libraries necessary to run Ruby +Group: Development/Libraries +# ext/bigdecimal/bigdecimal.{c,h} are under (GPL+ or Artistic) which +# are used for bigdecimal.so +License: (Ruby or GPLv2) and (GPL+ or Artistic) +Provides: ruby(abi) = %{rubyxver} +Provides: libruby = %{version}-%{release} +Obsoletes: libruby <= %{version}-%{release} %description libs This package includes the libruby, necessary to run Ruby. -# TODO: Rename or not rename to ruby-rubygems? -%package -n rubygems -Summary: The Ruby standard for packaging ruby libraries -Version: %{rubygems_version} -# BSD-2-Clause OR Ruby: -# lib/rubygems/net-http/ -# lib/rubygems/net-protocol/ -# lib/rubygems/optparse/ -# lib/rubygems/resolv/ -# lib/rubygems/timeout/ -# lib/rubygems/tsort/ -# MIT: lib/rubygems/resolver/molinillo -# Ruby OR BSD-2-Clause OR GPL-1.0-or-later: lib/net/protocol.rb -License: (Ruby OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Ruby) AND (Ruby OR BSD-2-Clause OR GPL-1.0-or-later) AND MIT -Requires: ruby(release) -Recommends: rubygem(bundler) >= %{bundler_version} -Recommends: rubygem(rdoc) >= %{rdoc_version} -Recommends: rubygem(io-console) -Requires: rubygem(psych) >= %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} -Provides: gem = %{version}-%{release} -Provides: ruby(rubygems) = %{version}-%{release} -Provides: bundled(rubygems) = %{rubygems_version} -# https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 -Provides: bundled(rubygem-molinillo) = %{rubygems_molinillo_version} -Provides: bundled(rubygem-net-http) = %{rubygems_net_http_version} -Provides: bundled(rubygem-net-protocol) = %{rubygems_net_protocol_version} -Provides: bundled(rubygem-optparse) = %{rubygems_optparse_version} -Provides: bundled(rubygem-resolv) = %{rubygems_resolv_version} -Provides: bundled(rubygem-securerandom) = %{rubygems_securerandom_version} -Provides: bundled(rubygem-timeout) = %{rubygems_timeout_version} -Provides: bundled(rubygem-tsort) = %{rubygems_tsort_version} -Provides: bundled(rubygem-uri) = %{rubygems_uri_version} +%package devel +Summary: A Ruby development environment +Group: Development/Languages +Requires: %{name}-libs = %{version}-%{release} +#Provides: %{name}-libs-static = %{version}-%{release} -BuildArch: noarch +%description devel +Header files and libraries for building a extension library for the +Ruby or an application embedded Ruby. -%description -n rubygems -RubyGems is the Ruby standard for publishing and managing third party -libraries. +%package static +Summary: Static libraries for Ruby development environment +Group: Development/Languages +Requires: %{name}-devel = %{version}-%{release} + +%description static +Static libraries for for building a extension library for the +Ruby or an application embedded Ruby. + +%package tcltk +Summary: Tcl/Tk interface for scripting language Ruby +Group: Development/Languages +# Many files under ext/tk/sample/ are under TCL +License: (Ruby or GPLv2) and TCL +Requires: %{name}-libs = %{version}-%{release} + +%description tcltk +Tcl/Tk interface for the object-oriented scripting language Ruby. -%package -n rubygems-devel -Summary: Macros and development tools for packaging RubyGems -Version: %{rubygems_version} -License: MIT -Requires: ruby(rubygems) >= %{version}-%{release} -# Needed for RDoc documentation format generation. -Requires: rubygem(json) >= %{json_version} -Requires: rubygem(rdoc) >= %{rdoc_version} -BuildArch: noarch +%package irb +Summary: The Interactive Ruby +Group: Development/Languages +Requires: %{name} = %{version}-%{release} +Provides: irb = %{version}-%{release} +Obsoletes: irb <= %{version}-%{release} -%description -n rubygems-devel -Macros and development tools for packaging RubyGems. - - -# Default gems -# -# These packages are part of Ruby StdLib and are expected to be loadable even -# with disabled RubyGems. - -%package default-gems -Summary: Default gems which are part of Ruby StdLib -Supplements: ruby(rubygems) -# Obsoleted by Ruby 3.0 in F34 timeframe. -Obsoletes: rubygem-openssl < 2.2.0-145 -BuildArch: noarch - -%description default-gems -The .gemspec files and executables of default gems, which are part of Ruby -StdLib. - - -%package -n rubygem-irb -Summary: The Interactive Ruby -Version: %{irb_version} -License: Ruby OR BSD-2-Clause -Provides: irb = %{version}-%{release} -Provides: bundled(rubygem-irb) = %{irb_version} -BuildArch: noarch - -%description -n rubygem-irb +%description irb The irb is acronym for Interactive Ruby. It evaluates ruby expression from the terminal. -%package -n rubygem-rdoc -Summary: A tool to generate HTML and command-line documentation for Ruby projects -Version: %{rdoc_version} -# BSD-3-Clause: lib/rdoc/generator/darkfish.rb -# CC-BY-2.5: lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif -# OFL-1.1-RFN: lib/rdoc/generator/template/darkfish/css/fonts.css -# MIT: lib/rdoc/generator/aliki.rb -# MIT: lib/rdoc/generator/template/aliki/* -# Note that RDoc now embeds Racc parser: -# https://github.com/ruby/rdoc/pull/1019 -# Luckily, this should have no license impact: -# https://github.com/ruby/racc/blob/5eb07b28bfb3e193a1cac07798fe7be7e1e246c4/lib/racc/parser.rb#L8-L10 -License: GPL-2.0-only AND Ruby AND BSD-3-Clause AND CC-BY-2.5 AND OFL-1.1-RFN AND MIT -Requires: rubygem(io-console) -Requires: rubygem(json) >= %{json_version} -Provides: rdoc = %{version}-%{release} -Provides: ri = %{version}-%{release} -Provides: bundled(rubygem-rdoc) = %{rdoc_version} -BuildArch: noarch +%package rdoc +Summary: A tool to generate documentation from Ruby source files +Group: Development/Languages +# generators/template/html/html.rb is under CC-BY +License: (GPLv2 or Ruby) and CC-BY +## ruby-irb requires ruby +#Requires: %{name} = %{version}-%{release} +Requires: %{name}-irb = %{version}-%{release} +Provides: rdoc = %{version}-%{release} +Obsoletes: rdoc <= %{version}-%{release} -%description -n 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. +%description rdoc +The rdoc is a tool to generate the documentation from Ruby source files. +It supports some output formats, like HTML, Ruby interactive reference (ri), +XML and Windows Help file (chm). -%package doc -Summary: Documentation for %{name} -Requires: %{_bindir}/ri -BuildArch: noarch +%package docs +Summary: Manuals and FAQs for scripting language Ruby +Group: Documentation -%description doc -This package contains documentation for %{name}. +%description docs +Manuals and FAQs for the object-oriented scripting language Ruby. -%package -n rubygem-bigdecimal -Summary: BigDecimal provides arbitrary-precision floating point decimal arithmetic -Version: %{bigdecimal_version} -# dtoa: missing/dtoa.c -License: (Ruby OR BSD-2-Clause) AND dtoa -Provides: bundled(rubygem-bigdecimal) = %{bigdecimal_version} +%package mode +Summary: Emacs Lisp for the scripting language Ruby +Group: Applications/Editors +Requires: emacs-common -%description -n 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. +%description mode +Emacs Lisp ruby-mode for the object-oriented scripting language Ruby. -%package -n rubygem-io-console -Summary: IO/Console is a simple console utilizing library -Version: %{io_console_version} -License: Ruby OR BSD-2-Clause -Provides: bundled(rubygem-io-console) = %{io_console_version} +%package ri +Summary: Ruby interactive reference +Group: Documentation +## ruby-irb requires ruby, which ruby-rdoc requires +#Requires: %{name} = %{version}-%{release} +Requires: %{name}-rdoc = %{version}-%{release} +Provides: ri = %{version}-%{release} +Obsoletes: ri <= %{version}-%{release} -%description -n 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 rubygem-json -Summary: This is a JSON implementation as a Ruby extension in C -Version: %{json_version} -# Apache-2.0 OR BSL-1.0: ext/json/vendor/ryu.h -# MIT: ext/json/vendor/jeaiii-ltoa.h -# BSL-1.0: ext/json/vendor/fpconv.c -License: (Ruby OR BSD-2-Clause) AND (Apache-2.0 OR BSL-1.0) AND MIT AND BSL-1.0 -Provides: bundled(rubygem-json) = %{json_version} -# https://github.com/ulfjack/ryu -Provides: bundled(ryu) -# jeaiii-ltoa.h -# https://github.com/jeaiii/itoa -Provides: bundled(itoa) -# https://github.com/night-shift/fpconv -Provides: bundled(fpconv) - -%description -n 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 rubygem-psych -Summary: A libyaml wrapper for Ruby -Version: %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} -License: MIT -Provides: bundled(rubygem-psych) = %{psych_version}%{?psych_prerelease:~%{sub %{psych_prerelease} 2 -1}} - -%description -n 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 rubygem-bundler -Summary: Library and utilities to manage a Ruby application's gem dependencies -Version: %{bundler_version} -# BSD-2-Clause OR Ruby: -# lib/bundler/vendor/fileutils -# lib/bundler/vendor/tsort -# lib/bundler/vendor/uri -# MIT: -# lib/bundler/vendor/connection_pool -# lib/bundler/vendor/net-http-persistent -# lib/bundler/vendor/pub_brub -# lib/bundler/vendor/thor -# lib/rubygems/resolver/molinillo -License: MIT AND (Ruby OR BSD-2-Clause) -Requires: rubygem(io-console) -Provides: bundled(rubygem-bundler) = %{bundler_version} -# https://github.com/bundler/bundler/issues/3647 -Provides: bundled(rubygem-connection_pool) = %{bundler_connection_pool_version} -Provides: bundled(rubygem-fileutils) = %{bundler_fileutils_version} -Provides: bundled(rubygem-net-http-persistent) = %{bundler_net_http_persistent_version} -Provides: bundled(rubygem-pub_grub) = %{bundler_pub_grub_version} -Provides: bundled(rubygem-securerandom) = %{bundler_securerandom_version} -Provides: bundled(rubygem-thor) = %{bundler_thor_version} -Provides: bundled(rubygem-tsort) = %{bundler_tsort_version} -Provides: bundled(rubygem-uri) = %{bundler_uri_version} -BuildArch: noarch - -%description -n rubygem-bundler -Bundler manages an application's dependencies through its entire life, across -many machines, systematically and repeatably. - - -# Bundled gems -# -# These are regular packages, which might be installed just optionally. Users -# should list them among their dependencies (in Gemfile). - -%package bundled-gems -Summary: Bundled gems which are part of Ruby StdLib -Provides: bundled(rubygem-abbrev) = %{abbrev_version} -Provides: bundled(rubygem-base64) = %{base64_version} -Provides: bundled(rubygem-benchmark) = %{benchmark_version} -Provides: bundled(rubygem-csv) = %{csv_version} -Provides: bundled(rubygem-debug) = %{debug_version} -Provides: bundled(rubygem-drb) = %{drb_version} -Provides: bundled(rubygem-getoptlong) = %{getoptlong_version} -Provides: bundled(rubygem-fiddle) = %{fiddle_version} -Provides: bundled(rubygem-logger) = %{logger_version} -Provides: bundled(rubygem-matrix) = %{matrix_version} -Provides: bundled(rubygem-mutex_m) = %{mutex_m_version} -Provides: bundled(rubygem-net-ftp) = %{net_ftp_version} -Provides: bundled(rubygem-net-imap) = %{net_imap_version} -Provides: bundled(rubygem-net-pop) = %{net_pop_version} -Provides: bundled(rubygem-net-smtp) = %{net_smtp_version} -Provides: bundled(rubygem-nkf) = %{nkf_version} -Provides: bundled(rubygem-observer) = %{observer_version} -Provides: bundled(rubygem-ostruct) = %{ostruct_version} -Provides: bundled(rubygem-prime) = %{prime_version} -Provides: bundled(rubygem-pstore) = %{pstore_version} -Provides: bundled(rubygem-readline) = %{readline_version} -Provides: bundled(rubygem-reline) = %{reline_version} -Provides: bundled(rubygem-repl_type_completor) = %{repl_type_completor_version} -Provides: bundled(rubygem-resolv-replace) = %{resolv_replace_version} -Provides: bundled(rubygem-rinda) = %{rinda_version} -Provides: bundled(rubygem-syslog) = %{syslog_version} -# https://github.com/nurse/nkf -# Please note that nkf going to be promoted to bundled gem in Ruby 3.4: -# https://github.com/ruby/ruby/commit/2e3a7f70ae71650be6ea38a483f66ce17ca5eb1d -Provides: bundled(nkf) = %{bundled_nkf_version} - - -%description bundled-gems -Bundled gems which are part of Ruby StdLib. While being part of Ruby, these -needs to be listed in Gemfile to be used by Bundler. - - -%package -n rubygem-minitest -Summary: Minitest provides a complete suite of testing facilities -Version: %{minitest_version} -License: MIT -Provides: bundled(rubygem-minitest) = %{minitest_version} -BuildArch: noarch - -%description -n rubygem-minitest -minitest/test 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/pride shows pride in testing and adds coloring to your test -output. - - -%package -n rubygem-power_assert -Summary: Power Assert for Ruby -Version: %{power_assert_version} -License: Ruby OR BSD-2-Clause -Provides: bundled(rubygem-power_assert) = %{power_assert_version} -BuildArch: noarch - -%description -n 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 rubygem-rake -Summary: Ruby based make-like utility -Version: %{rake_version} -License: MIT -Provides: rake = %{version}-%{release} -Provides: bundled(rubygem-rake) = %{rake_version} -BuildArch: noarch - -%description -n rubygem-rake -Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax. - - -%package -n rubygem-rbs -Summary: Type signature for Ruby -Version: %{rbs_version} -License: Ruby OR BSD-2-Clause -Provides: bundled(rubygem-rbs) = %{rbs_version} - -%description -n rubygem-rbs -RBS is the language for type signatures for Ruby and standard library -definitions. - - -%package -n rubygem-test-unit -Summary: An xUnit family unit testing framework for Ruby -Version: %{test_unit_version} -# lib/test/unit/diff.rb is a double license of the Ruby license and PSF license. -License: (Ruby OR BSD-2-Clause) AND (Ruby OR BSD-2-Clause OR Python-2.0.1) -Provides: bundled(rubygem-test-unit) = %{test_unit_version} -BuildArch: noarch - -%description -n rubygem-test-unit -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 -n rubygem-racc -Version: %{racc_version} -Summary: Racc is a LALR(1) parser generator -License: Ruby OR BSD-2-Clause -URL: https://github.com/ruby/racc -Provides: bundled(rubygem-racc) = %{racc_version} - -%description -n rubygem-racc -Racc is a LALR(1) parser generator. -It is written in Ruby itself, and generates Ruby program. - - -%package -n rubygem-rexml -Summary: An XML toolkit for Ruby -Version: %{rexml_version} -License: BSD-2-Clause -URL: https://github.com/ruby/rexml -Provides: bundled(rubygem-rexml) = %{rexml_version} -BuildArch: noarch - -%description -n rubygem-rexml -REXML was inspired by the Electric XML library for Java, which features an -easy-to-use API, small size, and speed. Hopefully, REXML, designed with the same -philosophy, has these same features. I've tried to keep the API as intuitive as -possible, and have followed the Ruby methodology for method naming and code -flow, rather than mirroring the Java API. - -REXML supports both tree and stream document parsing. Stream parsing is faster -(about 1.5 times as fast). However, with stream parsing, you don't get access to -features such as XPath. - - -%package -n rubygem-rss -Summary: Family of libraries that support various formats of XML "feeds" -Version: %{rss_version} -License: BSD-2-Clause -URL: https://github.com/ruby/rss -Provides: bundled(rubygem-rss) = %{rss_version} -BuildArch: noarch - -%description -n rubygem-rss -Really Simple Syndication (RSS) is a family of formats that describe 'feeds', -specially constructed XML documents that allow an interested person to subscribe -and receive updates from a particular web service. This library provides tooling -to read and create these feeds. - - -%package -n rubygem-typeprof -Summary: TypeProf is a type analysis tool for Ruby code based on abstract interpretation -Version: %{typeprof_version} -License: MIT -URL: https://github.com/ruby/typeprof -Provides: bundled(rubygem-typeprof) = %{typeprof_version} -BuildArch: noarch - -%description -n rubygem-typeprof -TypeProf performs a type analysis of non-annotated Ruby code. -It abstractly executes input Ruby code in a level of types instead of values, -gathers what types are passed to and returned by methods, and prints the -analysis result in RBS format, a standard type description format for Ruby -3.0. +%description ri +ri is a command line tool that displays descriptions of built-in +Ruby methods, classes and modules. For methods, it shows you the calling +sequence and a description. For classes and modules, it shows a synopsis +along with a list of the methods the class or module implements. %prep -%setup -q -n %{ruby_archive} - -%patch 0 -p1 - -pushd .bundle/gems/rdoc-%{rdoc_version} -%patch 1 -p1 -%patch 9 -p1 +%setup -q -c -a 2 -a 3 +mkdir -p ruby-refm-ja +pushd ruby-refm-ja +tar fxz %{SOURCE1} +popd +pushd %{name}-%{arcver} +%patch1 -p1 +%patch20 -p1 +%patch21 -p1 +%ifarch ppc64 s390x sparc64 x86_64 +%patch22 -p1 +%patch23 -p1 +%endif +#%patch25 -p1 +#%patch26 -p1 +%patch27 -p0 +%patch28 -p1 +%patch29 -p1 +%patch30 -p2 +%patch31 -p1 +%patch32 -p0 +%patch33 -p1 +# Once kill patch34 due to build failure on actionpack +#%%patch34 -p1 +%patch35 -p1 popd - -%patch 2 -p1 -%patch 3 -p1 -%patch 4 -p1 -%patch 5 -p1 -%patch 6 -p1 -%patch 7 -p1 -%patch 8 -p1 - -# Provide an example of usage of the tapset: -cp -a %{SOURCE3} . %build +pushd %{name}-%{arcver} +for i in config.sub config.guess; do + test -f %{_datadir}/libtool/$i && cp %{_datadir}/libtool/$i . +done autoconf -%global _configure %{_builddir}/%{buildsubdir}/configure - -mkdir -p %{_vpath_builddir} -pushd %{_vpath_builddir} - +rb_cv_func_strtod=no +export rb_cv_func_strtod +CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +export CFLAGS %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='%{name}.pc' \ - --with-compress-debug-sections=no \ - --disable-rpath \ - --enable-mkmf-verbose \ - --enable-shared \ - --with-ruby-version='' \ - --enable-multiarch \ - %{?with_yjit: --enable-yjit} \ - %{?with_zjit: --enable-zjit} \ - %{?with_rust: rustc_flags='%{build_rustflags}'} \ + --with-sitedir='%{sitedir}' \ + --with-default-kcode=none \ + --with-bundled-sha1 \ + --with-bundled-md5 \ + --with-bundled-rmd160 \ + --enable-shared \ + --enable-ipv6 \ + --enable-pthread \ + --with-lookup-order-hack=INET \ + --disable-rpath \ +%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6 + --with-readline-include=%{_includedir}/readline5 \ + --with-readline-lib=%{_libdir}/readline5 \ +%endif + --with-ruby-prefix=%{_prefix}/lib + +# For example ext/socket/extconf.rb uses try_run (for getaddrinfo test), +# which executes conftest and setting LD_LIBRARY_PATH for libruby.so is +# needed. +export LD_LIBRARY_PATH=$(pwd) + +make RUBY_INSTALL_NAME=ruby %{?_smp_mflags} COPY="cp -p" %{?_smp_mflags} +%ifarch ia64 +# Miscompilation? Buggy code? +rm -f parse.o +make OPT=-O0 RUBY_INSTALL_NAME=ruby %{?_smp_mflags} +%endif popd -# V=1 in %%make_build outputs the compiler options more verbosely. -# https://bugs.ruby-lang.org/issues/18756 -%make_build COPY="cp -p" -C %{_vpath_builddir} +%check +pushd %{name}-%{arcver} +%ifarch ppc64 +make test || : +%else +make test +%endif +popd %install -rm -rf %{buildroot} +rm -rf $RPM_BUILD_ROOT -%make_install -C %{_vpath_builddir} +mkdir -p $RPM_BUILD_ROOT%{_emacs_sitelispdir}/ruby-mode +mkdir -p $RPM_BUILD_ROOT%{_emacs_sitestartdir} -# TODO: Regenerate RBS parser in lib/rbs/parser.rb +# installing documents and exapmles... +rm -rf tmp-ruby-docs +mkdir tmp-ruby-docs +cd tmp-ruby-docs -# Rename ruby/config.h to ruby/config-.h to avoid file conflicts on -# multilib systems and install config.h wrapper -%multilib_fix_c_header --file %{_includedir}/%{name}/config.h +# for ruby.rpm +mkdir ruby ruby-libs ruby-devel ruby-tcltk ruby-docs irb +cd ruby +(cd ../../%{name}-%{arcver} && tar cf - sample) | tar xvf - +cd .. -# `ruby` executable is placed in some strange directory for some unknow -# reasons. -# https://bugs.ruby-lang.org/issues/20800 -# https://github.com/ruby/ruby/pull/12043 -CONFIG_TARGET_DIR=%{buildroot}%{_exec_prefix}/$( \ - %{_vpath_builddir}/miniruby -I%{_vpath_builddir} -rrbconfig -e 'puts RbConfig::CONFIG["config_target"]' -) -mv ${CONFIG_TARGET_DIR}/bin/ruby %{buildroot}%{_bindir} -rm -rd ${CONFIG_TARGET_DIR} +# for ruby-libs +cd ruby-libs +(cd ../../%{name}-%{arcver} && tar cf - lib/README*) | tar xf - +(cd ../../%{name}-%{arcver}/doc && tar cf - .) | tar xf - +(cd ../../%{name}-%{arcver} && + tar cf - `find ext \ + -mindepth 1 \ + \( -path '*/sample/*' -o -path '*/demo/*' \) -o \ + \( -name '*.rb' -not -path '*/lib/*' -not -name extconf.rb \) -o \ + \( -name 'README*' -o -name '*.txt*' -o -name 'MANUAL*' \)`) | tar xf - +cd .. -# Rename the ruby executable. It is replaced by RubyPick. -%{?with_rubypick:mv %{buildroot}%{_bindir}/%{name}{,-mri}} +# for irb +cd irb +mv ../ruby-libs/irb/* . +rmdir ../ruby-libs/irb +cd .. -# 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/%{name}.pc +# for ruby-devel +cd ruby-devel -# Kill bundled certificates, as they should be part of ca-certificates. -for cert in \ - rubygems.org/GlobalSign.pem +cd .. + +# for ruby-tcltk +cd ruby-tcltk +for target in tcltklib tk do - rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert - rm -d $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) || : + (cd ../ruby-libs && + tar cf - `find . -path "*/$target/*"`) | tar xf - + (cd ../ruby-libs && + rm -rf `find . -name "$target" -type d`) done -# Ensure there is not forgotten any certificate. -test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" +cd .. -# Move macros file into proper place and replace the %%{name} macro, since it -# would be wrongly evaluated during build of other packages. -mkdir -p %{buildroot}%{_rpmmacrodir} -install -m 644 %{SOURCE4} %{buildroot}%{_rpmmacrodir}/macros.ruby -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmmacrodir}/macros.ruby -install -m 644 %{SOURCE5} %{buildroot}%{_rpmmacrodir}/macros.rubygems -sed -i "s/%%{name}/%{name}/" %{buildroot}%{_rpmmacrodir}/macros.rubygems +# for ruby-docs +cd ruby-docs +mkdir refm-ja faq-en faq-ja +(cd ../../ruby-refm-ja && tar cf - .) | (cd refm-ja && tar xf -) +(cd ../../rubyfaq && tar cf - .) | (cd faq-en && tar xf -) +(cd ../../rubyfaq-jp && tar cf - .) | (cd faq-ja && tar xf -) -# Install dependency generators. -mkdir -p %{buildroot}%{_fileattrsdir} -install -m 644 %{SOURCE6} %{buildroot}%{_fileattrsdir} -install -m 755 %{SOURCE7} %{buildroot}%{_rpmconfigdir} -install -m 755 %{SOURCE8} %{buildroot}%{_rpmconfigdir} -install -m 755 %{SOURCE9} %{buildroot}%{_rpmconfigdir} +(cd faq-ja && + for f in rubyfaq-jp*.html + do + sed -e 's/\(/dev/null || { iconv -f euc-jp -t utf-8 $i > $i.new && mv $i.new $i || status=1 ; } + if [ $status = 0 ]; then + if dirname $i | grep -q refm-ja ; then + sed -i -e '/encoding/s|EUC-JP|UTF-8|' -e '/charset/s|EUC-JP|UTF-8|' $i + fi + else + iconv -f iso8859-1 -t utf-8 $i > $.new && mv $i.new $i || rm -f $i.new + fi +done -# Move bundled rubygems to %%gem_dir and %%gem_extdir_mri -# make symlinks for io-console, which is considered to be part of stdlib by other Gems -# TODO: Put help files into proper location. -# https://bugs.ruby-lang.org/issues/15359 -mkdir -p %{buildroot}%{gem_libdir bundler} -mv %{buildroot}%{ruby_libdir}/bundler.rb %{buildroot}%{gem_libdir bundler} -mv %{buildroot}%{ruby_libdir}/bundler %{buildroot}%{gem_libdir bundler} -mv %{buildroot}%{gem_spec -d bundler} %{buildroot}%{gem_spec bundler} +# done +cd .. -mkdir -p %{buildroot}%{gem_libdir io-console} -mkdir -p %{buildroot}%{gem_extdir_mri io-console}/io -mv %{buildroot}%{ruby_libdir}/io %{buildroot}%{gem_libdir io-console} -mv %{buildroot}%{ruby_libarchdir}/io/console.so %{buildroot}%{gem_extdir_mri io-console}/io -touch %{buildroot}%{gem_extdir_mri io-console}/gem.build_complete -mv %{buildroot}%{gem_spec -d io-console} %{buildroot}%{gem_spec io-console} -ln -s %{gem_libdir io-console}/io %{buildroot}%{ruby_libdir}/io -ln -s %{gem_extdir_mri io-console}/io/console.so %{buildroot}%{ruby_libarchdir}/io/console.so +# installing binaries ... +make -C $RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{arcver} DESTDIR=$RPM_BUILD_ROOT install -mkdir -p %{buildroot}%{gem_libdir json} -mkdir -p %{buildroot}%{gem_extdir_mri json} -mv %{buildroot}%{ruby_libdir}/json* %{buildroot}%{gem_libdir json} -mv %{buildroot}%{ruby_libarchdir}/json/ %{buildroot}%{gem_extdir_mri json} -touch %{buildroot}%{gem_extdir_mri json}/gem.build_complete -mv %{buildroot}%{gem_spec -d json} %{buildroot}%{gem_spec json} -ln -s %{gem_libdir json}/json.rb %{buildroot}%{ruby_libdir}/json.rb -ln -s %{gem_libdir json}/json %{buildroot}%{ruby_libdir}/json -ln -s %{gem_extdir_mri json}/json/ %{buildroot}%{ruby_libarchdir}/json +# generate ri doc +rubybuilddir=$RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{arcver} +rm -rf %{name}-%{arcver}/.ext/rdoc +LD_LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir} RUBYLIB=$RPM_BUILD_ROOT%{_libdir}/ruby/%{rubyxver}:$RPM_BUILD_ROOT%{_libdir}/ruby/%{rubyxver}/%{_normalized_cpu}-%{_target_os} make -C $rubybuilddir DESTDIR=$RPM_BUILD_ROOT install-doc +#DESTDIR=$RPM_BUILD_ROOT LD_LIBRARY_PATH=$RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_bindir}/ruby -I $rubybuilddir -I $RPM_BUILD_ROOT%{_libdir}/ruby/%{rubyxver}/%{_normalized_cpu}-%{_target_os}/ -I $rubybuilddir/lib $RPM_BUILD_ROOT%{_bindir}/rdoc --all --ri-system $rubybuilddir -mkdir -p %{buildroot}%{gem_libdir psych} -mkdir -p %{buildroot}%{gem_extdir_mri psych} -mv %{buildroot}%{ruby_libdir}/psych* %{buildroot}%{gem_libdir psych} -mv %{buildroot}%{ruby_libarchdir}/psych.so %{buildroot}%{gem_extdir_mri psych} -touch %{buildroot}%{gem_extdir_mri psych}/gem.build_complete -mv %{buildroot}%{gem_spec -d psych} %{buildroot}%{gem_spec psych} -ln -s %{gem_libdir psych}/psych %{buildroot}%{ruby_libdir}/psych -ln -s %{gem_libdir psych}/psych.rb %{buildroot}%{ruby_libdir}/psych.rb -ln -s %{gem_extdir_mri psych}/psych.so %{buildroot}%{ruby_libarchdir}/psych.so +mkdir -p $RPM_BUILD_ROOT%{sitedir2}/%{rubyxver} +mkdir -p $RPM_BUILD_ROOT%{sitedir}/%{rubyxver}/%{_normalized_cpu}-%{_target_os} -# Move the binary extensions into proper place (if no gem has binary extension, -# the extensions directory might be empty). -# TODO: Get information about extension form .gemspec files. -find %{buildroot}%{gem_dir}/extensions/*-%{_target_os}/%{major_minor_version}.*/* -maxdepth 0 \ - -exec mv '{}' %{buildroot}%{_libdir}/gems/%{name}/ \; \ - || echo "No gem binary extensions to move." +# XXX: installing irb +install -p -m 0644 %{SOURCE4} $RPM_BUILD_ROOT%{_mandir}/man1/ -# Remove the extension sources and library copies from `lib` dir. -find %{buildroot}%{gem_dir}/gems/*/ext -maxdepth 0 -exec rm -rf '{}' + -find %{buildroot}%{gem_dir}/gems/*/lib -name \*.so -delete +# installing ruby-mode +cd %{name}-%{arcver} +cp -p misc/*.el $RPM_BUILD_ROOT%{_emacs_sitelispdir}/ruby-mode -# Move man pages into proper location -mkdir -p %{buildroot}%{_mandir}/man{1,5} -mv %{buildroot}%{gem_instdir irb}/man/irb.1 %{buildroot}%{_mandir}/man1 -mv %{buildroot}%{gem_instdir rake}/doc/rake.1 %{buildroot}%{_mandir}/man1 -mv %{buildroot}%{gem_instdir rdoc}/man/ri.1 %{buildroot}%{_mandir}/man1 -# https://bugs.ruby-lang.org/issues/17778 -cp -a %{buildroot}%{gem_libdir bundler}/bundler/man/*.1 %{buildroot}%{_mandir}/man1 -cp -a %{buildroot}%{gem_libdir bundler}/bundler/man/*.5 %{buildroot}%{_mandir}/man5 +## for ruby-mode +pushd $RPM_BUILD_ROOT%{_emacs_sitelispdir}/ruby-mode +cat < path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +emacs --no-site-file -q -batch -l path.el -f batch-byte-compile *.el +rm -f path.el* +popd +install -p -m 644 %{SOURCE10} \ + $RPM_BUILD_ROOT%{_emacs_sitestartdir} -%if %{with systemtap} -# Install a tapset and fix up the path to the library. -mkdir -p %{buildroot}%{_systemtap_tapsetdir} -sed -e "s|@LIBRARY_PATH@|%{tapset_libdir}/libruby.so.%{major_minor_version}|" \ - %{SOURCE2} > %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp -# Escape '*/' in comment. -sed -i -r "s|( \*.*\*)\/(.*)|\1\\\/\2|" %{buildroot}%{_systemtap_tapsetdir}/libruby.so.%{major_minor_version}.stp -%endif +cd .. -# 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 +# remove shebang +for i in $RPM_BUILD_ROOT%{_prefix}/lib/ruby/1.8/{abbrev,generator,irb/{cmd/subirb,ext/save-history},matrix,rdoc/{markup/sample/rdoc2latex,parsers/parse_rb},set,tsort}.rb; do + sed -i -e '/^#!.*/,1D' $i +done -find doc -maxdepth 1 -type f -name '*.ja*' > .ruby-doc.ja -echo 'doc/pty' >> .ruby-doc.ja +find $RPM_BUILD_ROOT/ -name "*.so" -exec chmod 755 {} \; -sed -i 's/^/%doc /' .ruby-doc.* -sed -i 's/^/%lang(ja) /' .ruby-doc.ja +%clean +rm -rf $RPM_BUILD_ROOT -%check -%if 0%{?with_hardening_test} -# Check Ruby hardening. -%define fortification_x86_64 fortified="10" fortify-able="26" -%define fortification_i686 fortified="10" fortify-able="26" -%define fortification_aarch64 fortified="11" fortify-able="28" -%define fortification_ppc64le fortified="7" fortify-able="24" -%define fortification_s390x fortified="10" fortify-able="24" -%define fortification_riscv64 fortified="10" fortify-able="26" -# https://unix.stackexchange.com/questions/366/convince-grep-to-output-all-lines-not-just-those-with-matches -checksec --format=xml --file=%{_vpath_builddir}/libruby.so.%{ruby_version} | \ - sed -r "s//\1/" | \ - sed -nr $'/relro="full" canary="yes" nx="yes" pie="dso" rpath="no" runpath="no" symbols="yes" fortify_source="partial" %{expand:%{fortification_%{_target_cpu}}} filename='\''redhat-linux-build\/libruby.so.%{ruby_version}'\''/h; ${p;x;/./Q0;Q1}' -%endif +%post libs -p /sbin/ldconfig -# Check RubyGems version. -[ "`make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT='%{_builddir}/%{buildsubdir}/bin/gem -v' | tail -1`" == '%{rubygems_version}' ] - -# Check Rubygems bundled dependencies versions. - -# Molinillo. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; module Resolver; end; end; \ - require 'rubygems/vendor/molinillo/lib/molinillo/gem_metadata'; \ - puts '%%{rubygems_molinillo_version}: %{rubygems_molinillo_version}'; \ - puts %Q[Gem::Molinillo::VERSION: #{Gem::Molinillo::VERSION}]; \ - exit 1 if Gem::Molinillo::VERSION != '%{rubygems_molinillo_version}'; \ -\"" - -# Net::HTTP. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; module Net; end; end; \ - require 'rbconfig'; \ - require 'rubygems/vendor/net-http/lib/net/http'; \ - puts '%%{rubygems_net_http_version}: %{rubygems_net_http_version}'; \ - puts %Q[Gem::Net::HTTP::VERSION: #{Gem::Net::HTTP::VERSION}]; \ - exit 1 if Gem::Net::HTTP::VERSION != '%{rubygems_net_http_version}'; \ -\"" - -# Net::Protocol. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; module Net; end; end; \ - require 'rubygems/vendor/net-protocol/lib/net/protocol'; \ - puts '%%{rubygems_net_protocol_version}: %{rubygems_net_protocol_version}'; \ - puts %Q[Gem::Net::Protocol::VERSION: #{Gem::Net::Protocol::VERSION}]; \ - exit 1 if Gem::Net::Protocol::VERSION != '%{rubygems_net_protocol_version}'; \ -\"" - -# OptParse. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/optparse/lib/optparse'; \ - puts '%%{rubygems_optparse_version}: %{rubygems_optparse_version}'; \ - puts %Q[Gem::OptionParser::Version: #{Gem::OptionParser::Version}]; \ - exit 1 if Gem::OptionParser::Version != '%{rubygems_optparse_version}'; \ -\"" - -# Resolv. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rbconfig'; \ - require 'rubygems/vendor/resolv/lib/resolv'; \ - puts '%%{rubygems_resolv_version}: %{rubygems_resolv_version}'; \ - puts %Q[Gem::Resolv::VERSION: #{Gem::Resolv::VERSION}]; \ - exit 1 if Gem::Resolv::VERSION != '%{rubygems_resolv_version}'; \ -\"" - -# SecureRandom. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; module Random; end; end; \ - require 'rubygems/vendor/securerandom/lib/securerandom'; \ - puts '%%{rubygems_securerandom_version}: %{rubygems_securerandom_version}'; \ - puts %Q[Gem::SecureRandom::VERSION: #{Gem::SecureRandom::VERSION}]; \ - exit 1 if Gem::SecureRandom::VERSION != '%{rubygems_securerandom_version}'; \ -\"" - -# Timeout. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/timeout/lib/timeout'; \ - puts '%%{rubygems_timeout_version}: %{rubygems_timeout_version}'; \ - puts %Q[Gem::Timeout::VERSION: #{Gem::Timeout::VERSION}]; \ - exit 1 if Gem::Timeout::VERSION != '%{rubygems_timeout_version}'; \ -\"" - -# TSort -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/tsort/lib/tsort'; \ - puts '%%{rubygems_tsort_version}: %{rubygems_tsort_version}'; \ - puts %Q[Gem::TSort::VERSION: #{Gem::TSort::VERSION}]; \ - exit 1 if Gem::TSort::VERSION != '%{rubygems_tsort_version}'; \ -\"" - -# URI. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - require 'rubygems/vendor/uri/lib/uri/version'; \ - puts '%%{rubygems_uri_version}: %{rubygems_uri_version}'; \ - puts %Q[Gem::URI::VERSION: #{Gem::URI::VERSION}]; \ - exit 1 if Gem::URI::VERSION != '%{rubygems_uri_version}'; \ -\"" - -# Check Bundler bundled dependencies versions. - -# connection_pool. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/connection_pool/lib/connection_pool/version'; \ - puts '%%{bundler_connection_pool_version}; %{bundler_connection_pool_version}'; \ - puts %Q[Bundler::ConnectionPool::VERSION: #{Bundler::ConnectionPool::VERSION}]; \ - exit 1 if Bundler::ConnectionPool::VERSION != '%{bundler_connection_pool_version}'; \ -\"" - -# FileUtils. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/fileutils/lib/fileutils'; \ - puts '%%{bundler_fileutils_version}: %{bundler_fileutils_version}'; \ - puts %Q[Bundler::FileUtils::VERSION: #{Bundler::FileUtils::VERSION}]; \ - exit 1 if Bundler::FileUtils::VERSION != '%{bundler_fileutils_version}'; \ -\"" - -# PubGrub -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/pub_grub/lib/pub_grub/version'; \ - puts '%%{bundler_pub_grub_version}: %{bundler_pub_grub_version}'; \ - puts %Q[Bundler::PubGrub::VERSION: #{Bundler::PubGrub::VERSION}]; \ - exit 1 if Bundler::PubGrub::VERSION != '%{bundler_pub_grub_version}'; \ -\"" - -# Net::HTTP::Persistent. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Gem; end; \ - module Bundler; end; \ - require 'rbconfig'; \ - require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'; \ - puts '%%{bundler_net_http_persistent_version}: %{bundler_net_http_persistent_version}'; \ - puts %Q[Gem::Net::HTTP::Persistent::VERSION: #{Gem::Net::HTTP::Persistent::VERSION}]; \ - exit 1 if Gem::Net::HTTP::Persistent::VERSION != '%{bundler_net_http_persistent_version}'; \ -\"" - -# SecureRandom. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; module Random; end; end; \ - require 'bundler/vendor/securerandom/lib/securerandom'; \ - puts '%%{bundler_securerandom_version}: %{bundler_securerandom_version}'; \ - puts %Q[Bundler::SecureRandom::VERSION: #{Bundler::SecureRandom::VERSION}]; \ - exit 1 if Bundler::SecureRandom::VERSION != '%{bundler_securerandom_version}'; \ -\"" - -# Thor. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/thor/lib/thor/version'; \ - puts '%%{bundler_thor_version}: %{bundler_thor_version}'; \ - puts %Q[Bundler::Thor::VERSION: #{Bundler::Thor::VERSION}]; \ - exit 1 if Bundler::Thor::VERSION != '%{bundler_thor_version}'; \ -\"" - -# TSort -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/tsort/lib/tsort'; \ - puts '%%{bundler_tsort_version}: %{bundler_tsort_version}'; \ - puts %Q[Bundler::TSort::VERSION: #{Bundler::TSort::VERSION}]; \ - exit 1 if Bundler::TSort::VERSION != '%{bundler_tsort_version}'; \ -\"" - -# URI. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - module Bundler; end; \ - require 'bundler/vendor/uri/lib/uri/version'; \ - puts '%%{bundler_uri_version}: %{bundler_uri_version}'; \ - puts %Q[Bundler::URI::VERSION: #{Bundler::URI::VERSION}]; \ - exit 1 if Bundler::URI::VERSION != '%{bundler_uri_version}'; \ -\"" - -# Check bundled libraries versions. - -# Nkf. -make -C %{_vpath_builddir} -s runruby TESTRUN_SCRIPT="-e \" \ - require 'rubygems'; \ - require 'nkf'; \ - puts '%%{bundled_nkf_version}: %{bundled_nkf_version}'; \ - puts %Q[NKF::NKF_VERSION: #{NKF::NKF_VERSION}]; \ - exit 1 if NKF::NKF_VERSION != '%{bundled_nkf_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 %{_vpath_builddir}/abrt.rb - -# Check if abrt hook is required (RubyGems are disabled by default when using -# runruby, so re-enable them). -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT="--enable-gems %{SOURCE10}" - -# Check if systemtap is supported. -%if %{with systemtap} -ln -sfr probes.d %{_vpath_builddir}/ -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=%{SOURCE11} -%endif - -# Test dependency generators for RPM -GENERATOR_SCRIPT="%{SOURCE7}" \ -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ - %{SOURCE14} --verbose" -GENERATOR_SCRIPT="%{SOURCE8}" \ -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ - %{SOURCE15} --verbose" -GENERATOR_SCRIPT="%{SOURCE9}" \ -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - -I%{_builddir}/%{buildsubdir}/tool/lib -I%{_sourcedir} --enable-gems \ - %{SOURCE16} --verbose" - - -DISABLE_TESTS="" -MSPECOPTS="" - -# Avoid `hostname' dependency. -%{!?with_hostname:MSPECOPTS="-P 'Socket.gethostname returns the host name'"} - -# Give an option to increase the timeout in tests. -# https://bugs.ruby-lang.org/issues/16921 -%{?test_timeout_scale:RUBY_TEST_TIMEOUT_SCALE="%{test_timeout_scale}"} \ - make -C %{_vpath_builddir} %{?with_parallel_tests:%{?_smp_mflags}} check TESTS="-v --show-skip $DISABLE_TESTS" MSPECOPT="-fs $MSPECOPTS" - -# Run Ruby OpenSSL tests in OpenSSL FIPS. -make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - -I%{_builddir}/%{buildsubdir}/tool/lib --enable-gems \ - %{SOURCE12} %{_builddir}/%{buildsubdir} --verbose" - -%{?with_bundler_tests:make -C %{_vpath_builddir} test-bundler-parallel} +%postun libs -p /sbin/ldconfig %files -%license BSDL -%license COPYING -%lang(ja) %license COPYING.ja -%license GPL -%license LEGAL -%{_bindir}/%{name}%{?with_rubypick:-mri} -%{_mandir}/man1/ruby* +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%doc %{name}-%{arcver}/NEWS +%doc %{name}-%{arcver}/README +%lang(ja) %doc %{name}-%{arcver}/README.ja +%doc %{name}-%{arcver}/ToDo +%doc %{name}-%{arcver}/doc/ChangeLog-1.8.0 +%doc %{name}-%{arcver}/doc/NEWS-1.8.0 +%doc tmp-ruby-docs/ruby/* +%{_bindir}/ruby +%{_bindir}/erb +%{_bindir}/testrb +%{_mandir}/man1/ruby.1* %files devel -%license BSDL -%license COPYING -%lang(ja) %license COPYING.ja -%license GPL -%license LEGAL - -%{_rpmmacrodir}/macros.ruby - -%{_includedir}/* +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%doc %{name}-%{arcver}/README.EXT +%lang(ja) %doc %{name}-%{arcver}/README.EXT.ja %{_libdir}/libruby.so -%{_libdir}/pkgconfig/%{name}.pc +#%%{_libdir}/libruby-static.a +%{_libdir}/ruby/%{rubyxver}/*/*.h + +%files static +%defattr(-, root, root, -) +%{_libdir}/libruby-static.a %files libs -%license COPYING -%lang(ja) %license COPYING.ja -%license GPL -%license LEGAL -%doc README.md -%doc NEWS.md -# 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} +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/README +%lang(ja) %doc %{name}-%{arcver}/README.ja +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%dir %{_prefix}/lib/ruby +%dir %{_prefix}/lib/ruby/%{rubyxver} +%ifnarch ppc64 s390x sparc64 x86_64 +%if "%{_gnu}" == "-gnueabi" +%dir %{_prefix}/lib/ruby/%{rubyxver}/%{_normalized_cpu}-%{_target_os}-eabi +%else +%dir %{_prefix}/lib/ruby/%{rubyxver}/%{_normalized_cpu}-%{_target_os} +%endif +%endif +%ifarch ppc64 s390x sparc64 x86_64 +%dir %{_libdir}/ruby +%dir %{_libdir}/ruby/%{rubyxver} +%dir %{_libdir}/ruby/%{rubyxver}/%{_normalized_cpu}-%{_target_os} +%{sitedir} +%endif +%{sitedir2} +## the following files should goes into ruby-tcltk package. +%exclude %{_prefix}/lib/ruby/%{rubyxver}/*tk.rb +%exclude %{_prefix}/lib/ruby/%{rubyxver}/tcltk.rb +%exclude %{_prefix}/lib/ruby/%{rubyxver}/tk +%exclude %{_prefix}/lib/ruby/%{rubyxver}/tk*.rb +%exclude %{_prefix}/lib/ruby/%{rubyxver}/tkextlib +%exclude %{_libdir}/ruby/%{rubyxver}/*/tcltklib.so +%exclude %{_libdir}/ruby/%{rubyxver}/*/tkutil.so +## the following files should goes into ruby-rdoc package. +%exclude %{_prefix}/lib/ruby/%{rubyxver}/rdoc +## the following files should goes into ruby-irb package. +%exclude %{_prefix}/lib/ruby/%{rubyxver}/irb.rb +%exclude %{_prefix}/lib/ruby/%{rubyxver}/irb +## files in ruby-libs from here +%{_prefix}/lib/ruby/%{rubyxver}/*.rb +%{_prefix}/lib/ruby/%{rubyxver}/bigdecimal +%{_prefix}/lib/ruby/%{rubyxver}/cgi +%{_prefix}/lib/ruby/%{rubyxver}/date +%{_prefix}/lib/ruby/%{rubyxver}/digest +%{_prefix}/lib/ruby/%{rubyxver}/dl +%{_prefix}/lib/ruby/%{rubyxver}/drb +%{_prefix}/lib/ruby/%{rubyxver}/io +%{_prefix}/lib/ruby/%{rubyxver}/net +%{_prefix}/lib/ruby/%{rubyxver}/openssl +%{_prefix}/lib/ruby/%{rubyxver}/optparse +%{_prefix}/lib/ruby/%{rubyxver}/racc +%{_prefix}/lib/ruby/%{rubyxver}/rexml +%{_prefix}/lib/ruby/%{rubyxver}/rinda +%{_prefix}/lib/ruby/%{rubyxver}/rss +%{_prefix}/lib/ruby/%{rubyxver}/runit +%{_prefix}/lib/ruby/%{rubyxver}/shell +%{_prefix}/lib/ruby/%{rubyxver}/soap +%{_prefix}/lib/ruby/%{rubyxver}/test +%{_prefix}/lib/ruby/%{rubyxver}/uri +%{_prefix}/lib/ruby/%{rubyxver}/webrick +%{_prefix}/lib/ruby/%{rubyxver}/wsdl +%{_prefix}/lib/ruby/%{rubyxver}/xmlrpc +%{_prefix}/lib/ruby/%{rubyxver}/xsd +%{_prefix}/lib/ruby/%{rubyxver}/yaml +%{_libdir}/libruby.so.* +%{_libdir}/ruby/%{rubyxver}/*/*.so +%{_libdir}/ruby/%{rubyxver}/*/digest +%{_libdir}/ruby/%{rubyxver}/*/io +%{_libdir}/ruby/%{rubyxver}/*/racc +%{_libdir}/ruby/%{rubyxver}/*/rbconfig.rb -# List all these files explicitly to prevent surprises -# Platform independent libraries. -%dir %{ruby_libdir} -%exclude %{ruby_libdir}/json* -%exclude %{ruby_libdir}/psych* -%{ruby_libdir}/bundled_gems.rb -%{ruby_libdir}/cgi* -%{ruby_libdir}/coverage.rb -%{ruby_libdir}/date.rb -%{ruby_libdir}/delegate* -%{ruby_libdir}/digest* -%{ruby_libdir}/English.rb -%{ruby_libdir}/erb* -%{ruby_libdir}/error_highlight* -%{ruby_libdir}/expect.rb -%{ruby_libdir}/fileutils.rb -%{ruby_libdir}/find.rb -%{ruby_libdir}/forwardable* -%{ruby_libdir}/ipaddr.rb -%{ruby_libdir}/mkmf.rb -%{ruby_libdir}/monitor.rb -%{ruby_libdir}/net -%{ruby_libdir}/objspace* -%{ruby_libdir}/open-uri.rb -%{ruby_libdir}/open3* -%{ruby_libdir}/optionparser.rb -%{ruby_libdir}/optparse* -%{ruby_libdir}/pathname.rb -%{ruby_libdir}/pp.rb -%{ruby_libdir}/prettyprint.rb -%{ruby_libdir}/random -%{ruby_libdir}/resolv.rb -%{ruby_libdir}/ripper* -%{ruby_libdir}/securerandom.rb -%{ruby_libdir}/set/subclass_compatible.rb -%{ruby_libdir}/shellwords.rb -%{ruby_libdir}/singleton* -%{ruby_libdir}/socket.rb -%{ruby_libdir}/strscan -%{ruby_libdir}/syntax_suggest* -%{ruby_libdir}/tempfile.rb -%{ruby_libdir}/timeout* -%{ruby_libdir}/time.rb -%{ruby_libdir}/tmpdir.rb -%{ruby_libdir}/tsort.rb -%{ruby_libdir}/unicode_normalize -%{ruby_libdir}/un.rb -%{ruby_libdir}/uri* -%{ruby_libdir}/weakref* -%{ruby_libdir}/yaml* -%{ruby_libdir}/prism* +%files tcltk +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%doc tmp-ruby-docs/ruby-tcltk/ext/* +%{_prefix}/lib/ruby/%{rubyxver}/*-tk.rb +%{_prefix}/lib/ruby/%{rubyxver}/tcltk.rb +%{_prefix}/lib/ruby/%{rubyxver}/tk +%{_prefix}/lib/ruby/%{rubyxver}/tk*.rb +%{_prefix}/lib/ruby/%{rubyxver}/tkextlib +%{_libdir}/ruby/%{rubyxver}/*/tcltklib.so +%{_libdir}/ruby/%{rubyxver}/*/tkutil.so -# Platform specific libraries. -%{_libdir}/libruby.so.{%{major_minor_version},%{ruby_version}} -%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 -%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/cesu_8.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/cesu_8.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_1253.so -%{ruby_libarchdir}/enc/windows_1254.so -%{ruby_libarchdir}/enc/windows_1257.so -%{ruby_libarchdir}/enc/windows_31j.so -%{ruby_libarchdir}/erb/escape.so -%{ruby_libarchdir}/etc.so -%{ruby_libarchdir}/fcntl.so -%dir %{ruby_libarchdir}/io -%{ruby_libarchdir}/io/nonblock.so -%{ruby_libarchdir}/io/wait.so -%{ruby_libarchdir}/monitor.so -%{ruby_libarchdir}/objspace.so -%{ruby_libarchdir}/pty.so -%dir %{ruby_libarchdir}/rbconfig -%{ruby_libarchdir}/rbconfig.rb -%{ruby_libarchdir}/rbconfig/sizeof.so -%{ruby_libarchdir}/ripper.so -%{ruby_libarchdir}/socket.so -%{ruby_libarchdir}/stringio.so -%{ruby_libarchdir}/strscan.so -%{ruby_libarchdir}/zlib.so +%files rdoc +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%{_bindir}/rdoc +%{_prefix}/lib/ruby/%{rubyxver}/rdoc -# Default gems -%{ruby_libdir}/did_you_mean* -%{ruby_libdir}/openssl* -%{ruby_libarchdir}/openssl.so - -%{?with_systemtap:%{_systemtap_datadir}} - -%files -n rubygems -%{_bindir}/gem -%dir %{rubygems_dir} -%{rubygems_dir}/rubygems -%{rubygems_dir}/rubygems.rb - -# 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}/plugins -%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 rubygems-devel -%{_rpmmacrodir}/macros.rubygems -%{_fileattrsdir}/rubygems.attr -%{_rpmconfigdir}/rubygems.req -%{_rpmconfigdir}/rubygems.prov -%{_rpmconfigdir}/rubygems.con - -%files default-gems -%gem_spec -d date -%gem_spec -d delegate -%gem_spec -d did_you_mean -%gem_spec -d digest -%gem_spec -d english -%gem_spec -d erb -%gem_instdir erb -%{_bindir}/erb -%{_mandir}/man1/erb* -%gem_spec -d error_highlight -%gem_spec -d etc -%gem_spec -d fcntl -%gem_spec -d fileutils -%gem_spec -d find -%gem_spec -d forwardable -%gem_spec -d io-nonblock -%gem_spec -d io-wait -%gem_spec -d ipaddr -%gem_spec -d net-http -%gem_spec -d net-protocol -%gem_spec -d open3 -%gem_spec -d open-uri -%gem_spec -d optparse -%gem_spec -d openssl -%gem_spec -d pp -%gem_spec -d prettyprint -%gem_spec -d resolv -%gem_spec -d ruby2_keywords -%gem_spec -d securerandom -%gem_spec -d shellwords -%gem_spec -d singleton -%gem_spec -d stringio -%gem_spec -d strscan -%gem_spec -d syntax_suggest -%{_bindir}/syntax_suggest -%gem_instdir syntax_suggest -%gem_spec -d tempfile -%gem_spec -d time -%gem_spec -d timeout -%gem_spec -d tmpdir -%gem_spec -d tsort -%gem_spec -d un -%gem_spec -d uri -%gem_spec -d weakref -#%%gem_spec -d win32ole -#%%gem_spec -d win32-registry -%gem_spec -d yaml -%gem_spec -d prism -%gem_spec -d zlib - -%files -n rubygem-irb +%files irb +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%doc tmp-ruby-docs/irb/* %{_bindir}/irb -%dir %{gem_instdir irb} -%{gem_libdir irb} -%{gem_spec irb} -%{gem_instdir irb}/exe - -%{gem_instdir irb}/Gemfile -%license %{gem_instdir irb}/LICENSE.txt -%doc %{gem_instdir irb}/doc -%doc %{gem_instdir irb}/README.md -%doc %{gem_instdir irb}/CONTRIBUTING.md -%doc %{gem_instdir irb}/EXTEND_IRB.md +%{_prefix}/lib/ruby/%{rubyxver}/irb.rb +%{_prefix}/lib/ruby/%{rubyxver}/irb %{_mandir}/man1/irb.1* -%files -n rubygem-rdoc -%{_bindir}/rdoc +%files ri +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL %{_bindir}/ri -%{gem_instdir rdoc} -%{gem_spec rdoc} -%{gem_plugin rdoc} -%{_mandir}/man1/ri* - -%files doc -f .ruby-doc.en -f .ruby-doc.ja -%doc README.md -%doc ChangeLog -%{?with_systemtap:%doc ruby-exercise.stp} %{_datadir}/ri -%files -n rubygem-bigdecimal -%{gem_extdir_mri bigdecimal} -%{gem_instdir bigdecimal} -%{gem_spec bigdecimal} - -%files -n rubygem-io-console -%{ruby_libdir}/io -%{ruby_libarchdir}/io/console.so -%{gem_extdir_mri io-console} -%{gem_instdir io-console} -%{gem_spec io-console} - -%files -n rubygem-json -%{ruby_libdir}/json* -%{ruby_libarchdir}/json* -%{gem_extdir_mri json} -%{gem_instdir json} -%{gem_spec json} - -%files -n rubygem-psych -%{ruby_libdir}/psych -%{ruby_libdir}/psych.rb -%{ruby_libarchdir}/psych.so -%{gem_extdir_mri psych} -%dir %{gem_instdir psych} -%{gem_libdir psych} -%{gem_spec psych} - -%files -n rubygem-bundler -%{_bindir}/bundle -%{_bindir}/bundler -%{gem_instdir bundler} -%{gem_spec bundler} -%{_mandir}/man1/bundle*.1* -%{_mandir}/man5/gemfile.5* - -%files bundled-gems -# abbrev -%dir %{gem_instdir abbrev} -%license %{gem_instdir abbrev}/LICENSE.txt -%{gem_instdir abbrev}/bin -%{gem_libdir abbrev} -%{gem_spec abbrev} -%{gem_instdir abbrev}/Gemfile -%doc %{gem_instdir abbrev}/README.md -%{gem_instdir abbrev}/Rakefile - -# base64 -%dir %{gem_instdir base64} -%license %{gem_instdir base64}/BSDL -%license %{gem_instdir base64}/COPYING -%license %{gem_instdir base64}/LEGAL -%{gem_instdir base64}/sig -%{gem_libdir base64} -%{gem_spec base64} -%doc %{gem_instdir base64}/README.md - -# benchmark -%dir %{gem_instdir benchmark} -%license %{gem_instdir benchmark}/BSDL -%license %{gem_instdir benchmark}/COPYING -%doc %{gem_instdir benchmark}/README.md -%{gem_instdir benchmark}/Gemfile -%{gem_instdir benchmark}/Rakefile -%{gem_instdir benchmark}/bin -%{gem_libdir benchmark} -%{gem_spec benchmark} - -# csv -%dir %{gem_instdir csv} -%license %{gem_instdir csv}/LICENSE.txt -%doc %{gem_instdir csv}/NEWS.md -%{gem_libdir csv} -%{gem_spec csv} -%doc %{gem_instdir csv}/README.md -%doc %{gem_instdir csv}/doc - -# drb -%dir %{gem_instdir drb} -%license %{gem_instdir drb}/LICENSE.txt -%{gem_libdir drb} -%{gem_instdir drb}/drb.gemspec -%{gem_spec drb} - -# getoptlong -%dir %{gem_instdir getoptlong} -%license %{gem_instdir getoptlong}/LICENSE.txt -%{gem_instdir getoptlong}/bin -%{gem_libdir getoptlong} -%{gem_instdir getoptlong}/sample -%{gem_spec getoptlong} -%{gem_instdir getoptlong}/Gemfile -%doc %{gem_instdir getoptlong}/README.md -%{gem_instdir getoptlong}/Rakefile - -# fiddle -%dir %{gem_instdir fiddle} -%license %{gem_instdir fiddle}/LICENSE.txt -%doc %{gem_instdir fiddle}/README.md -%{gem_instdir fiddle}/Rakefile -%{gem_libdir fiddle} -%dir %{gem_extdir_mri fiddle} -%{gem_extdir_mri fiddle}/fiddle.so -%{gem_extdir_mri fiddle}/gem.build_complete -%{gem_instdir fiddle}/fiddle.gemspec -%{gem_spec fiddle} - -# logger -%dir %{gem_instdir logger} -%license %{gem_instdir logger}/BSDL -%license %{gem_instdir logger}/COPYING -%doc %{gem_instdir logger}/README.md -%{gem_libdir logger} -%{gem_spec logger} - -# matrix -%dir %{gem_instdir matrix} -%license %{gem_instdir matrix}/BSDL -%license %{gem_instdir matrix}/COPYING -%{gem_libdir matrix} -%{gem_instdir matrix}/matrix.gemspec -%{gem_spec matrix} - -# mutex_m -%dir %{gem_instdir mutex_m} -%license %{gem_instdir mutex_m}/BSDL -%license %{gem_instdir mutex_m}/COPYING -%{gem_libdir mutex_m} -%{gem_instdir mutex_m}/sig -%{gem_spec mutex_m} -%doc %{gem_instdir mutex_m}/README.md - -# net-ftp -%dir %{gem_instdir net-ftp} -%license %{gem_instdir net-ftp}/BSDL -%license %{gem_instdir net-ftp}/COPYING -%{gem_instdir net-ftp}/Gemfile -%license %{gem_instdir net-ftp}/LICENSE.txt -%doc %{gem_instdir net-ftp}/README.md -%{gem_instdir net-ftp}/Rakefile -%{gem_libdir net-ftp} -%{gem_spec net-ftp} - -# net-imap -%dir %{gem_instdir net-imap} -%license %{gem_instdir net-imap}/BSDL -%license %{gem_instdir net-imap}/COPYING -%{gem_instdir net-imap}/Gemfile -%license %{gem_instdir net-imap}/LICENSE.txt -%doc %{gem_instdir net-imap}/README.md -%{gem_instdir net-imap}/Rakefile -%{gem_instdir net-imap}/docs -%{gem_libdir net-imap} -%{gem_instdir net-imap}/rakelib -%{gem_instdir net-imap}/sample -%{gem_spec net-imap} - -# net-pop -%dir %{gem_instdir net-pop} -%{gem_instdir net-pop}/Gemfile -%license %{gem_instdir net-pop}/LICENSE.txt -%doc %{gem_instdir net-pop}/README.md -%{gem_instdir net-pop}/Rakefile -%{gem_libdir net-pop} -%{gem_spec net-pop} - -# net-smtp -%dir %{gem_instdir net-smtp} -%doc %{gem_instdir net-smtp}/NEWS.md -%doc %{gem_instdir net-smtp}/README.md -%license %{gem_instdir net-smtp}/LICENSE.txt -%{gem_libdir net-smtp} -%{gem_spec net-smtp} - -# nkf -%dir %{gem_instdir nkf} -%{gem_extdir_mri nkf} -%license %{gem_instdir nkf}/LICENSE.txt -%{gem_instdir nkf}/bin -%{gem_libdir nkf} -%{gem_spec nkf} -%{gem_instdir nkf}/Gemfile -%doc %{gem_instdir nkf}/README.md -%{gem_instdir nkf}/Rakefile - -# observer -%dir %{gem_instdir observer} -%license %{gem_instdir observer}/LICENSE.txt -%{gem_instdir observer}/bin -%{gem_libdir observer} -%exclude %{gem_cache observer} -%{gem_spec observer} -%{gem_instdir observer}/Gemfile -%doc %{gem_instdir observer}/README.md -%{gem_instdir observer}/Rakefile - -# ostruct -%dir %{gem_instdir ostruct} -%license %{gem_instdir ostruct}/BSDL -%license %{gem_instdir ostruct}/COPYING -%doc %{gem_instdir ostruct}/README.md -%{gem_instdir ostruct}/Gemfile -%{gem_instdir ostruct}/Rakefile -%{gem_instdir ostruct}/bin -%{gem_libdir ostruct} -%{gem_instdir ostruct}/ostruct.gemspec -%{gem_spec ostruct} - -# prime -%dir %{gem_instdir prime} -%license %{gem_instdir prime}/BSDL -%license %{gem_instdir prime}/COPYING -%doc %{gem_instdir prime}/README.md -%{gem_instdir prime}/Rakefile -%{gem_libdir prime} -%{gem_instdir prime}/sig -%{gem_instdir prime}/prime.gemspec -%{gem_spec prime} - -# pstore -%dir %{gem_instdir pstore} -%license %{gem_instdir pstore}/BSDL -%license %{gem_instdir pstore}/COPYING -%doc %{gem_instdir pstore}/README.md -%{gem_instdir pstore}/Gemfile -%{gem_instdir pstore}/Rakefile -%{gem_instdir pstore}/bin -%{gem_libdir pstore} -%{gem_spec pstore} - -# rdbg -%{_bindir}/rdbg -%dir %{gem_extdir_mri debug} -%{gem_extdir_mri debug}/gem.build_complete -%dir %{gem_extdir_mri debug}/debug -%{gem_extdir_mri debug}/debug/debug.so -%dir %{gem_instdir debug} -%exclude %{gem_instdir debug}/.* -%doc %{gem_instdir debug}/CONTRIBUTING.md -%{gem_instdir debug}/Gemfile -%license %{gem_instdir debug}/LICENSE.txt -%doc %{gem_instdir debug}/README.md -%{gem_instdir debug}/Rakefile -%doc %{gem_instdir debug}/TODO.md -%{gem_instdir debug}/exe -%{gem_libdir debug} -%{gem_instdir debug}/misc -%{gem_spec debug} - -# readline -%dir %{gem_instdir readline} -%license %{gem_instdir readline}/BSDL -%license %{gem_instdir readline}/COPYING -%doc %{gem_instdir readline}/README.md -%{gem_libdir readline} -%{gem_spec readline} - -# reline -%dir %{gem_instdir reline} -%license %{gem_instdir reline}/BSDL -%license %{gem_instdir reline}/COPYING -%license %{gem_instdir reline}/license_of_rb-readline -%doc %{gem_instdir reline}/README.md -%{gem_libdir reline} -%{gem_spec reline} - -# repl_type_completor -%dir %{gem_instdir repl_type_completor} -%license %{gem_instdir repl_type_completor}/LICENSE.txt -%{gem_libdir repl_type_completor} -%{gem_instdir repl_type_completor}/sig -%exclude %{gem_cache repl_type_completor} -%{gem_spec repl_type_completor} -%{gem_instdir repl_type_completor}/Gemfile -%doc %{gem_instdir repl_type_completor}/README.md -%{gem_instdir repl_type_completor}/Rakefile - -# rinda -%dir %{gem_instdir rinda} -%license %{gem_instdir rinda}/LICENSE.txt -%{gem_instdir rinda}/bin -%{gem_libdir rinda} -%{gem_spec rinda} -%{gem_instdir rinda}/Gemfile -%doc %{gem_instdir rinda}/README.md -%{gem_instdir rinda}/Rakefile - -# resolv-replace -%dir %{gem_instdir resolv-replace} -%license %{gem_instdir resolv-replace}/LICENSE.txt -%{gem_instdir resolv-replace}/bin -%{gem_libdir resolv-replace} -%{gem_spec resolv-replace} -%{gem_instdir resolv-replace}/Gemfile -%doc %{gem_instdir resolv-replace}/README.md -%{gem_instdir resolv-replace}/Rakefile - -# syslog -%dir %{gem_instdir syslog} -%{gem_extdir_mri syslog} -%license %{gem_instdir syslog}/BSDL -%license %{gem_instdir syslog}/COPYING -%{gem_instdir syslog}/bin -%{gem_libdir syslog} -%exclude %{gem_cache syslog} -%{gem_spec syslog} -%{gem_instdir syslog}/Gemfile -%doc %{gem_instdir syslog}/README.md -%{gem_instdir syslog}/Rakefile - -%files -n rubygem-minitest -%{_bindir}/minitest -%dir %{gem_instdir minitest} -%exclude %{gem_instdir minitest}/.* -%{gem_instdir minitest}/Manifest.txt -%{gem_instdir minitest}/design_rationale.rb -%{gem_instdir minitest}/bin -%{gem_libdir minitest} -%{gem_spec minitest} -%doc %{gem_instdir minitest}/History.rdoc -%doc %{gem_instdir minitest}/README.rdoc -%{gem_instdir minitest}/Rakefile -%{gem_instdir minitest}/test - -%files -n rubygem-power_assert -%dir %{gem_instdir power_assert} -%exclude %{gem_instdir power_assert}/.* -%license %{gem_instdir power_assert}/BSDL -%license %{gem_instdir power_assert}/COPYING -%license %{gem_instdir power_assert}/LEGAL -%{gem_libdir power_assert} -%{gem_spec power_assert} -%{gem_instdir power_assert}/Gemfile -%doc %{gem_instdir power_assert}/README.md -%{gem_instdir power_assert}/Rakefile - -%files -n rubygem-rake -%{_bindir}/rake -%{gem_instdir rake} -%{gem_spec rake} -%{_mandir}/man1/rake.1* - -%files -n rubygem-rbs -%{_bindir}/rbs -%dir %{gem_extdir_mri rbs} -%{gem_extdir_mri rbs}/gem.build_complete -%{gem_extdir_mri rbs}/rbs_extension.so -%dir %{gem_instdir rbs} -%license %{gem_instdir rbs}/BSDL -%doc %{gem_instdir rbs}/CHANGELOG.md -%license %{gem_instdir rbs}/COPYING -%doc %{gem_instdir rbs}/README.md -%{gem_instdir rbs}/Rakefile -%{gem_instdir rbs}/Steepfile -%{gem_instdir rbs}/config.yml -%{gem_instdir rbs}/core -%doc %{gem_instdir rbs}/docs -%{gem_instdir rbs}/exe -%{gem_instdir rbs}/goodcheck.yml -%{gem_instdir rbs}/include -%{gem_libdir rbs} -%{gem_instdir rbs}/schema -%{gem_instdir rbs}/sig -%{gem_instdir rbs}/src -%{gem_instdir rbs}/stdlib -%{gem_spec rbs} - -%files -n rubygem-test-unit -%{_bindir}/test-unit -%dir %{gem_instdir test-unit} -%license %{gem_instdir test-unit}/BSDL -%license %{gem_instdir test-unit}/COPYING -%license %{gem_instdir test-unit}/PSFL -%{gem_libdir test-unit} -%{gem_instdir test-unit}/sample -%{gem_instdir test-unit}/bin -%{gem_spec test-unit} -%doc %{gem_instdir test-unit}/README.md -%{gem_instdir test-unit}/Rakefile -%doc %{gem_instdir test-unit}/doc - -%files -n rubygem-racc -%dir %{gem_instdir racc} -%{_bindir}/racc -%{gem_extdir_mri racc} -%license %{gem_instdir racc}/BSDL -%license %{gem_instdir racc}/COPYING -%doc %{gem_instdir racc}/ChangeLog -%lang(ja) %doc %{gem_instdir racc}/README.ja.rdoc -%doc %{gem_instdir racc}/README.rdoc -%doc %{gem_instdir racc}/TODO -%{gem_instdir racc}/bin -%doc %{gem_instdir racc}/doc -%{gem_libdir racc} -%{gem_spec racc} - -%files -n rubygem-rexml -%dir %{gem_instdir rexml} -%license %{gem_instdir rexml}/LICENSE.txt -%doc %{gem_instdir rexml}/NEWS.md -%doc %{gem_instdir rexml}/doc -%{gem_libdir rexml} -%{gem_spec rexml} -%doc %{gem_instdir rexml}/README.md - -%files -n rubygem-rss -%dir %{gem_instdir rss} -%exclude %{gem_instdir rss}/.* -%license %{gem_instdir rss}/LICENSE.txt -%doc %{gem_instdir rss}/NEWS.md -%{gem_libdir rss} -%{gem_spec rss} -%doc %{gem_instdir rss}/README.md - -%files -n rubygem-typeprof -%dir %{gem_instdir typeprof} -%{_bindir}/typeprof -%exclude %{gem_instdir typeprof}/.* -%license %{gem_instdir typeprof}/LICENSE -%{gem_instdir typeprof}/bin -%{gem_instdir typeprof}/typeprof.conf.jsonc -%doc %{gem_instdir typeprof}/doc -%{gem_libdir typeprof} -%{gem_spec typeprof} -%doc %{gem_instdir typeprof}/README.md +%files docs +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%doc tmp-ruby-docs/ruby-docs/* +%doc tmp-ruby-docs/ruby-libs/* +%files mode +%defattr(-, root, root, -) +%doc %{name}-%{arcver}/COPYING* +%doc %{name}-%{arcver}/ChangeLog +%doc %{name}-%{arcver}/GPL +%doc %{name}-%{arcver}/LEGAL +%doc %{name}-%{arcver}/LGPL +%doc %{name}-%{arcver}/misc/README +%{_emacs_sitelispdir}/ruby-mode +%{_emacs_sitestartdir}/ruby-mode-init.el %changelog -* Tue Jan 13 2026 Vít Ondruch - 4.0.1-31 -- Upgrade to Ruby 4.0.1. - Resolves: rhbz#2428861 - -* Fri Jan 02 2026 Jarek Prokop - 4.0.0-30 -- Upgrade to Ruby 4.0.0. - Resolves: rhbz#2425358 - -* Wed Dec 17 2025 Vít Ondruch - 3.4.8-29 -- Update to Ruby 3.4.8. - Resolves: rhbz#2422963 - Resolves: rhbz#2412227 - -* Tue Oct 21 2025 Jun Aruga - 3.4.7-28 -- Upgrade to Ruby 3.4.7. - Resolves: rhbz#2402422 -- Fix URI Credential Leakage Bypass previous fixes. - Resolves: CVE-2025-61594 -- Fix REXML denial of service. - Resolves: CVE-2025-58767 - -* Mon Aug 18 2025 Jarek Prokop - 3.4.5-27 -- Upgrade to Ruby 3.4.5. - Resolves: rhbz#2380246 - -* Fri Jul 25 2025 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Wed Jun 11 2025 Jarek Prokop - 3.4.4-25 -- Upgrade to Ruby 3.4.4. - Resolves: rhbz#2359563 - -* Tue Apr 08 2025 Jun Aruga - 3.4.2-24 -- Fix the tests using SHA-1 Probabilistic Signature Scheme (PSS) parameters. - Resolves: rhbz#2358256 - -* Wed Feb 19 2025 Vít Ondruch - 3.4.2-23 -- Upgrade to Ruby 3.4.2. - Resolves: rhbz#2345875 - -* Sat Feb 01 2025 Björn Esser - 3.4.1-23 -- Add explicit BR: libxcrypt-devel - -* Fri Jan 24 2025 Jarek Prokop - 3.4.1-22 -- Stop including C++ header, it is deprecated since C++17. - Resolves: rhbz#2336567 - -* Sat Jan 18 2025 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Jan 08 2025 Vít Ondruch - 3.4.1-20 -- Re-enable FIPS test cases. - -* Thu Jan 02 2025 Vít Ondruch - 3.4.1-19 -- Upgrade to Ruby 3.4.1. - Resolves: rhbz#2334047 - -* Mon Dec 16 2024 Jun Aruga - 3.3.6-18 -- Fix Ruby OpenSSL to respect crypto-policies TLS minimal version. - -* Wed Nov 20 2024 David Abdurachmanov - 3.3.6-17 -- Add riscv64 information for checksec - -* Mon Nov 11 2024 Vít Ondruch - 3.3.6-16 -- Upgrade to Ruby 3.3.6. - -* Fri Sep 13 2024 Vít Ondruch - 3.3.5-15 -- Fix Bundler `--local` option - Resolves: rhbz#2311898 - -* Tue Sep 03 2024 Vít Ondruch - 3.3.5-14 -- Upgrade to Ruby 3.3.5. - Resolves: rhbz#2309364 - -* Mon Jul 29 2024 Jun Aruga - 3.3.4-13 -- Add systemtap-sdt-devel to build Ruby with systemtap sdt header files. - Co-authored-by: Lumír Balhar - -* Fri Jul 19 2024 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed Jul 10 2024 Vít Ondruch - 3.3.4-11 -- Upgrade to Ruby 3.3.4. - Resolves: rhbz#2292052 - -* Tue Jun 18 2024 Vít Ondruch - 3.3.2-10 -- Make sure hardening configuration flags are correctly applied. - -* Thu Jun 06 2024 Vít Ondruch - 3.3.2-9 -- Upgrade to Ruby 3.3.2. - Resolves: rhbz#2284020 - -* Tue May 28 2024 Vít Ondruch - 3.3.1-8 -- Adjust the test to updated `checksec` output. - Resolves: rhbz#2282953 -- Make sure fortification flags are applied. - -* Tue Apr 23 2024 Vít Ondruch - 3.3.1-7 -- Upgrade to Ruby 3.3.1. - Resolves: rhbz#2276680 - -* Fri Apr 12 2024 Vít Ondruch - 3.3.0-6 -- Add `bundled` provide for NKF. -- License review and fixes of SPDX syntax. - -* Wed Mar 06 2024 Vít Ondruch - 3.3.0-5 -- Fix FTBFS caused by OpenSSL 3.2.1 update. - -* Fri Jan 26 2024 Jarek Prokop - 3.3.0-4 -- Do not set AI_ADDRCONFIG by default when calling getaddrinfo(3). - -* Mon Jan 22 2024 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 15 2024 Jarek Prokop - 3.3.0-2 -- Fix compiling coroutines with aarch64's branch protection. - -* Tue Jan 02 2024 Vít Ondruch - 3.3.0-1 -- Upgrade to Ruby 3.3.0. - Resolves: rhbz#2255918 - -* Thu Nov 09 2023 Jun Aruga - 3.2.2-183 -- ssl: use ffdhe2048 from RFC 7919 as the default DH group parameters - -* Thu Nov 02 2023 Jarek Prokop - 3.2.2-183 -- Fix typo in bundled provide of rubygem-bundler for rubygem-net-http-persistent. - -* Wed Sep 20 2023 Jun Aruga - 3.2.2-182 -- Fix OpenSSL.fips_mode and OpenSSL::PKey.read in OpenSSL 3 FIPS. - -* Fri Jul 21 2023 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Fri Mar 31 2023 Vít Ondruch - 3.2.2-180 -- Upgrade to Ruby 3.2.2. - Resolves: rhbz#2183284 - -* Thu Feb 09 2023 Vít Ondruch - 3.2.1-179 -- Upgrade to Ruby 3.2.1. - Resolves: rhbz#2168292 - -* Fri Jan 20 2023 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Jan 05 2023 Vít Ondruch - 3.2.0-177 -- Fix ELN FTBFS due to stronger crypto settings. - -* Mon Jan 02 2023 Vít Ondruch - 3.2.0-176 -- Upgrade to Ruby 3.2.0. - -* Thu Dec 22 2022 Yaakov Selkowitz - 3.1.3-175 -- Use SHA256 instead of SHA1 where needed in Openssl tests -- Let OpenSSL choose the digest if digest for Openssl::OCSP::BasicResponse#sign is nil - -* Wed Dec 21 2022 Vít Ondruch - 3.1.3-174 -- Fix for tzdata-2022g. - -* Thu Dec 08 2022 Vít Ondruch - 3.1.3-173 -- Disable MJIT test cases on i686 due to issues with PCH. -- Fix CGI causing issue with leading '.' in domain names. - -* Thu Nov 24 2022 Vít Ondruch - 3.1.3-172 -- Upgrade to Ruby 3.1.3. - -* Tue Nov 22 2022 Vít Ondruch - 3.1.2-171 -- Re-disable package notes. It causes additional issues with installing binary - gems. - -* Thu Sep 29 2022 Vít Ondruch - 3.1.2-170 -- Re-enable package notes. - -* Fri Sep 02 2022 Jarek Prokop - 3.1.2-169 -- Disable fiddle tests that use FFI closures. - Related: rhbz#2040380 - -* Mon Aug 29 2022 Jun Aruga - 3.1.2-168 -- Make RDoc soft dependnecy in IRB. - Resolves: rhbz#2119964 -- Add IRB to ruby-bundled-gems recommends. - Resolves: rhbz#2120562 - -* Wed Aug 24 2022 Jun Aruga - 3.1.2-168 -- Fix tests with Europe/Amsterdam pre-1970 time on tzdata version 2022b. - Resolves: rhbz#2120354 - -* Mon Jul 25 2022 Jarek Prokop - 3.1.2-167 -- Fix directory permissions in one of the rubygems tests. - -* Sat Jul 23 2022 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jun 16 2022 Jarek Prokop - 3.1.2-166 -- Detect compaction support during run time. - -* Tue Jun 07 2022 Jarek Prokop - 3.1.2-165 -- Define GC compaction methods as rb_f_notimplement on unsupported platforms. - -* Thu Apr 14 2022 Vít Ondruch - 3.1.2-164 -- Upgrade to Ruby 3.1.2. -- Use upstream patch for correct build of gem extensions. - -* Mon Apr 04 2022 Vít Ondruch - 3.1.1-163 -- Properly build binary gem extensions. - -* Mon Mar 14 2022 Vít Ondruch - 3.1.1-162 -- Upgrade to Ruby 3.1.1. - -* Thu Feb 10 2022 Vít Ondruch - 3.1.0-161 -- Prevent segfaults running with SystemTap. - -* Wed Jan 26 2022 Vít Ondruch - 3.1.0-160 -- Upgrade to Ruby 3.1.0. - -* Tue Jan 25 2022 Vít Ondruch - 3.0.3-159 -- Update OpenSSL 3 compatibility patches. - -* Thu Jan 20 2022 Vít Ondruch - 3.0.3-158 -- Disable package notes to prevent rubygem- build breakage. - -* Thu Jan 20 2022 Vít Ondruch - 3.0.3-157 -- Fix segfault in `TestArray#test_sample` on s390x. - -* Tue Jan 11 2022 Jun Aruga - 3.0.3-157 -- Remove the patch applied to pass the test/fiddle/test_import.rb on PPC. - -* Mon Jan 10 2022 Miro Hrončok - 3.0.3-156 -- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34 - -* Thu Dec 09 2021 Vít Ondruch - 3.0.3-155 -- Fix loading of default gems. - Resolves: rhbz#2027099 - -* Thu Nov 25 2021 Vít Ondruch - 3.0.3-154 -- Upgrade to Ruby 3.0.3. - -* Fri Nov 05 2021 Vít Ondruch - 3.0.2-153 -- Fix OpenSSL 3.0 compatibility. - Resolves: rhbz#2021922 - -* Tue Sep 14 2021 Sahana Prasad -- Rebuilt with OpenSSL 3.0.0 - -* Tue Aug 24 2021 Vít Ondruch - 3.0.2-152 -- Enable LTO. -- Load user installed RubyGems plugins. - -* Fri Jul 23 2021 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jul 13 2021 Jarek Prokop - 3.0.2-150 -- Upgrade to Ruby 3.0.2. -- Fix command injection vulnerability in RDoc. - Resolves: CVE-2021-31799 -- Fix FTP PASV command response can cause Net::FTP to connect to arbitrary host. - Resolves: CVE-2021-31810 -- Fix StartTLS stripping vulnerability in Net::IMAP. - Resolves: CVE-2021-32066 -- Fix dependencies of gems with explicit source installed from a different - source. - Resolves: CVE-2020-36327 - -* Mon May 17 2021 Timm Bäder - 3.0.1-149 -- Pass ldflags to gem install via CONFIGURE_ARGS - -* Tue Apr 06 2021 Vít Ondruch - 3.0.1-148 -- Upgrade to Ruby 3.0.1. - -* Thu Apr 01 2021 Vít Ondruch - 3.0.0-147 -- Remove IRB dependency from rubygem-rdoc. - -* Tue Mar 02 2021 Vít Ondruch - 3.0.0-146 -- Fix flaky excon test suite. -- Properly support DWARF5 debug information. - Resolves: rhbz#1920533 - -* Mon Jan 25 2021 Vít Ondruch - 3.0.0-145 -- Bundle OpenSSL into StdLib. -- Use proper path for plugin wrappers. - -* Sat Jan 16 2021 Vít Ondruch - 3.0.0-144 -- Fix SEGFAULT in rubygem-shoulda-matchers test suite. - -* Tue Jan 12 2021 Vít Ondruch - 3.0.0-143 -- Provide `gem.build_complete` file for binary gems. - -* Mon Jan 11 2021 Vít Ondruch - 3.0.0-142 -- Re-enable test suite. - -* Fri Jan 8 2021 Vít Ondruch - 3.0.0-141 -- ruby-default-gems have to depend on rubygem(io-console) due to reline. - -* Fri Jan 8 2021 Vít Ondruch - 3.0.0-140 -- Fix SEGFAULT preventing rubygem-unicode to build on armv7hl. - -* Wed Jan 6 2021 Vít Ondruch - 3.0.0-139 -- Add support for reworked RubyGems plugins. - -* Mon Jan 04 2021 Vít Ondruch - 3.0.0-138 -- Upgrade to Ruby 3.0.0. -- Extract RSS and REXML into separate subpackages, because they were moved from - default gems to bundled gems. -- Obsolete Net::Telnet and XMLRPC packages, because they were dropped from Ruby. - -* Tue Dec 15 16:26:46 CET 2020 Pavel Valena - 2.7.2-137 -- Add Recommends: redhat-rpm-config to devel subpackage. - Resolves: rhbz#1905222 - -* Tue Nov 24 18:16:02 CET 2020 Vít Ondruch - 2.7.2-136 -- Add explicit `BR: make`. - -* Tue Oct 13 2020 Vít Ondruch - 2.7.2-135 -- Upgrade to Ruby 2.7.2. - -* Wed Jul 29 2020 Fedora Release Engineering - 2.7.1-134 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Vít Ondruch - 2.7.1-133 -- Disable LTO, which appear to cause issues with SIGSEV handler. -- Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add. - -* Tue Jul 14 2020 Tom Stellard - 2.7.1-133 -- Use make macros -- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro - -* Wed Jun 24 2020 Jun Aruga - 2.7.1-132 -- Add ruby-default-gems dependency on irb. - Resolves: rhbz#1850541 - -* Wed Jun 24 2020 Vít Ondruch - 2.7.1-132 -- Fix `require` behavior allowing to load libraries multiple times. - Resolves: rhbz#1835836 - -* Fri May 15 2020 Vít Ondruch - 2.7.1-131 -- Relax rubygems-devel dependency on rubygems. - -* Wed Apr 08 2020 Vít Ondruch - 2.7.1-130 -- Bundle did_you_mean into StdLib. - Resolves: rhbz#1817178 -- Prevent issues with openssl loading when RubyGems are disabled. - -* Thu Apr 02 2020 Vít Ondruch - 2.7.1-129 -- Add ruby-default-gems subpackage shipping all extra default gem content. -- Bundle Racc into StdLib. - -* Wed Apr 01 2020 Vít Ondruch - 2.7.1-128 -- Upgrade to Ruby 2.7.1. -- Fix FTBFS due to glibc 2.31.9000 implementing lchmod(2). - -* Tue Jan 28 2020 Vít Ondruch - 2.7.0-127 -- Provide StdLib links for Racc and install it by default. - -* Thu Jan 16 2020 Vít Ondruch - 2.7.0-126 -- Make rubygem(did_you_mean) hard dependency. - -* Tue Jan 07 2020 Vít Ondruch - 2.7.0-125 -- Upgrade to Ruby 2.7.0. -- Drop useless %%{rubygems_default_filter}. - -* Tue Oct 08 2019 Slava Kardakov - 2.6.5-124 -- Update to Ruby 2.6.5. - -* Fri Aug 30 2019 Pavel Valena - 2.6.4-123 -- Update to Ruby 2.6.4. -- Fix checksec 2.0+ compatibility. - -* Fri Jul 26 2019 Fedora Release Engineering - 2.6.3-122 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Tue Jun 25 2019 Vít Ondruch - 2.6.3-121 -- Properly support %%prerelease in %%gemspec_ macros. - -* Thu Apr 25 2019 Pavel Valena - 2.6.3-120 -- Update to Ruby 2.6.3. - -* Thu Mar 28 2019 Arjen Heidinga - 2.6.2-119 -- Add zlib-devel explicitly as BuildRequirement. - -* Thu Mar 21 2019 Vít Ondruch - 2.6.2-118 -- Link IRB files instead of directories, which RPM cannot handle - during updates (rhbz#1691039). - -* Tue Mar 19 2019 Vít Ondruch - 2.6.2-117 -- Link IRB back to StdLib. - -* Thu Mar 14 2019 Vít Ondruch - 2.6.2-116 -- Upgrade to Ruby 2.6.2. - -* Tue Mar 05 2019 Vít Ondruch - 2.6.1-115 -- Fix ".include =" support in openssl.cnf (rhbz#1668916). - -* Sun Feb 17 2019 Igor Gnatenko - 2.6.1-114 -- Rebuild for readline 8.0 - -* Thu Feb 07 2019 Vít Ondruch - 2.6.1-113 -- Don't ship .stp files when SystemTap support is disabled. - -* Thu Jan 31 2019 Vít Ondruch - 2.6.1-112 -- Upgrade to Ruby 2.6.1. - -* Thu Jan 24 2019 Vít Ondruch - 2.6.0-111 -- Properly generate versioned ruby(rubygems) dependencies. -- Loosen RDoc dependency. - -* Thu Jan 17 2019 Vít Ondruch - 2.6.0-110 -- Upgrade to Ruby 2.6.0. - -* Mon Jan 14 2019 Björn Esser - 2.5.3-104 -- Rebuilt for libcrypt.so.2 (#1666033) - -* Fri Jan 11 2019 Jun Aruga - 2.5.3-103 -- Refresh expired certificates to fix FTBFS. - -* Tue Nov 13 2018 Vít Ondruch - 2.5.3-102 -- Fix Tokyo TZ tests. - -* Fri Oct 19 2018 Jun Aruga - 2.5.3-101 -- Update to Ruby 2.5.3. - -* Mon Sep 03 2018 Vít Ondruch - 2.5.1-100 -- Properly harden package using -fstack-protector-strong. - -* Wed Aug 29 2018 Vít Ondruch - 2.5.1-99 -- Additional OpenSSL 1.1.1 fixes. -- Add --with-cxxflags configuration for %%gem_install macro. - -* Tue Aug 28 2018 Jun Aruga - 2.5.1-99 -- Fix generated rdoc template issues. - -* Mon Aug 13 2018 Vít Ondruch - 2.5.1-98 -- Properly execute entire test suite. - -* Mon Aug 13 2018 Vít Ondruch - 2.5.1-97 -- Fix TLS 1.3 issues. - -* Tue Jul 31 2018 Florian Weimer - 2.5.1-96 -- Rebuild with fixed binutils - -* Fri Jul 27 2018 Igor Gnatenko - 2.5.1-95 -- Rebuild for new binutils - -* Thu Jul 26 2018 Vít Ondruch - 2.5.1-94 -- Disable some test failing with OpenSSL 1.1.1. - -* Sat Jul 14 2018 Fedora Release Engineering - 2.5.1-94 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Thu May 10 2018 Pavel Valena - 2.5.1-93 -- Add macros to edit files lists in .gemspec - (gemspec_add_file and gemspec_remove_file). - -* Wed May 02 2018 Vít Ondruch - 2.5.1-93 -- Make %%gemspec_{add,remove}_dep modify .gemspec provided by %%setup macro. - -* Tue Apr 10 2018 Vít Ondruch - 2.5.1-92 -- Conflict requirement needs to generate dependency. -- Stop using --with-setjmp-type=setjmp on aarch64 (rhbz#1545239). - -* Thu Mar 29 2018 Pavel Valena - 2.5.1-92 -- Update to Ruby 2.5.1. - -* Mon Mar 05 2018 Vít Ondruch - 2.5.0-91 -- Don't force libraries used to build Ruby to its dependencies. -- Re-enable GMP dependency. - -* Thu Mar 01 2018 Vít Ondruch - 2.5.0-90 -- Drop GMP dependency. - -* Sat Feb 24 2018 Florian Weimer - 2.5.0-89 -- Rebuild with new LDFLAGS from redhat-rpm-config -- Use --with-setjmp-type=setjmp on aarch64 to work around gcc issue (#1545239) - -* Wed Feb 21 2018 Pavel Valena - 2.5.0-89 -- Fix: Multiple vulnerabilities in RubyGems - https://bugzilla.redhat.com/show_bug.cgi?id=1547431 - https://www.ruby-lang.org/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/ - -* Tue Feb 13 2018 Vít Ondruch - 2.5.0-89 -- Drop obsolete ldconfig scriptlets. -- Add GMP dependency. -- Use 'with' operator in RPM dependency generator. -- Add conflicts RPM generator. -- Fix thread_safe test suite segfaults. -- Fix invalid licenses. - -* Fri Feb 09 2018 Fedora Release Engineering - 2.5.0-89 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Sat Jan 20 2018 Björn Esser - 2.5.0-88 -- Rebuilt for switch to libxcrypt - -* Tue Jan 09 2018 Vít Ondruch - 2.5.0-87 -- Fix segfaults during generating of documentation. - -* Tue Jan 02 2018 Vít Ondruch - 2.5.0-86 -- Upgrade to Ruby 2.5.0. - -* Fri Oct 27 2017 Jun Aruga - 2.4.2-86 -- Add macro to remove rubypick dependency. -- Improve "with" conditional statement as inline. - -* Thu Oct 19 2017 Jun Aruga - 2.4.2-85 -- Add macros to remove systemtap, git and cmake dependencies. - -* Mon Sep 18 2017 Pavel Valena - 2.4.2-84 -- Update to Ruby 2.4.2. - -* Fri Sep 08 2017 Vít Ondruch - 2.4.1-84 -- Drop ruby-devel dependency on rubypick, which is pulled in transtitively. - -* Fri Aug 11 2017 Vít Ondruch - 2.4.1-83 -- Fix "IOError: stream closed" errors affecting Puma. -- Temporary disable checksec on PPC64LE (rhbz#1479302). - -* Thu Aug 03 2017 Fedora Release Engineering - 2.4.1-82 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 2.4.1-81 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Thu Jul 20 2017 Vít Ondruch - 2.4.1-80 -- OpenSSL 1.1.0f-3 disables some weak ciphers. Adjust the package to pass - the tests suite. - -* Mon Apr 03 2017 Vít Ondruch - 2.4.1-79 -- Update to Ruby 2.4.1. - -* Thu Feb 23 2017 Vít Ondruch - 2.4.0-78 -- Fix OpenSSL symlinks. - -* Sat Feb 11 2017 Fedora Release Engineering - 2.4.0-77 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Fri Feb 03 2017 Vít Ondruch - 2.4.0-76 -- Fix GCC 7.x compatibility (rhbz#1417590). -- Use standardized multilib solution (rhbz#1412274). - -* Tue Jan 17 2017 Vít Ondruch - 2.4.0-75 -- Apply patch fixing rubygem-mongo build failures. - -* Fri Jan 13 2017 Mamoru TASAKA - 2.4.0-74 -- Rebuild again for f26-ruby24 sidetag - -* Thu Jan 12 2017 Igor Gnatenko - 2.4.0-73 -- Rebuild for readline 7.x - -* Wed Jan 11 2017 Vít Ondruch - 2.4.0-72 -- Link files into directory to avoid dir => symlink isues. - -* Mon Jan 09 2017 Vít Ondruch - 2.4.0-71 -- Add rubygem-io-console dependency for rubygem-rdoc. - -* Mon Jan 02 2017 Vít Ondruch - 2.4.0-70 -- Upgrade to Ruby 2.4.0. -- Move gemified xmlrpc into subpackage. -- Move gemified openssl into subpackage. -- Tk is removed from stdlib. -- Extend 'gem_' macros for pre-release version support. - -* Tue Nov 22 2016 Vít Ondruch - 2.3.3-61 -- Update to Ruby 2.3.3. -- Exclude json.rb from ruby-libs (rhbz#1397370). - -* Fri Nov 18 2016 Vít Ondruch - 2.3.2-60 -- Update to Ruby 2.3.2. - -* Fri Oct 21 2016 Vít Ondruch - 2.3.1-59 -- Continue to use OpenSSL 1.0 for the moment. -- Add gemspec_add_dep and gemspec_remove_dep macros. -- Harden package. - -* Wed Aug 10 2016 Vít Ondruch - 2.3.1-58 -- Workaround "an invalid stdio handle" error on PPC (rhbz#1361037). - -* Tue Jul 12 2016 Vít Ondruch - 2.3.1-57 -- Make symlinks for json gem. - -* Mon May 23 2016 Vít Ondruch - 2.3.1-56 -- Requires rubygem(json) for rubygem-rdoc (rhbz#1325022). - -* Fri Apr 29 2016 Vít Ondruch - 2.3.1-55 -- Update to Ruby 2.3.1. - -* 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) @@ -3056,7 +629,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ * 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 + Ruby is under GPLv2 * Sat Jun 20 2009 Jeroen van Meeuwen - 1.8.6.369-1 - New patchlevel fixing CVE-2009-1904 @@ -3152,7 +725,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - Disable the static library building. * Tue Dec 04 2007 Release Engineering - 1.8.6.111-2 -- Rebuild for openssl bump + - Rebuild for openssl bump * Wed Oct 31 2007 Akira TAGOH - Fix the dead link. @@ -3181,11 +754,11 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ * Fri Aug 10 2007 Akira TAGOH - Update License tag. -* Mon Jun 25 2007 Akira TAGOH - 1.8.6.36-3 +* Mon Jul 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 +* Wed Jul 20 2007 Akira TAGOH - 1.8.6.36-2 - New upstream release. - Fix Etc::getgrgid to get the correct gid as requested. (#236647) @@ -3649,7 +1222,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - Removed ruby_cvs.2000092718.patch and added ruby_cvs.2000100218.patch (upgraded ruby to latest cvs version). -* Wed Sep 27 2000 akira yamada +* Thu 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). @@ -3681,7 +1254,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ - Removed ruby-list.23190.patch(included into ruby_cvs.patch). - Added ruby-dev.10054.patch. -* Thu Jun 15 2000 akira yamada +* Tue 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. @@ -3727,7 +1300,7 @@ make -C %{_vpath_builddir} runruby TESTRUN_SCRIPT=" \ * Fri Nov 13 1998 Toru Hoshina - Version up. -* Tue Sep 22 1998 Toru Hoshina +* Mon Sep 22 1998 Toru Hoshina - To make a libruby.so. * Mon Sep 21 1998 Toru Hoshina diff --git a/ruby_1_8_7-gc-open4_096segv.patch b/ruby_1_8_7-gc-open4_096segv.patch new file mode 100644 index 0000000..4514022 --- /dev/null +++ b/ruby_1_8_7-gc-open4_096segv.patch @@ -0,0 +1,351 @@ +Index: ruby_1_8_7/marshal.c +=================================================================== +--- ruby_1_8_7/marshal.c (revision 26075) ++++ ruby_1_8_7/marshal.c (revision 26076) +@@ -85,12 +85,10 @@ + static ID s_getc, s_read, s_write, s_binmode; + + struct dump_arg { +- VALUE obj; + VALUE str, dest; + st_table *symbols; + st_table *data; + int taint; +- VALUE wrapper; + }; + + struct dump_call_arg { +@@ -104,22 +102,32 @@ + struct dump_arg *arg; + ID sym; + { +- if (!DATA_PTR(arg->wrapper)) { ++ if (!arg->symbols) { + rb_raise(rb_eRuntimeError, "Marshal.dump reentered at %s", + rb_id2name(sym)); + } + } + ++static void clear_dump_arg _((struct dump_arg *arg)); ++ + static void + mark_dump_arg(ptr) + void *ptr; + { + struct dump_arg *p = ptr; +- if (!ptr) ++ if (!p->symbols) + return; + rb_mark_set(p->data); + } + ++static void ++free_dump_arg(ptr) ++ void *ptr; ++{ ++ clear_dump_arg(ptr); ++ xfree(ptr); ++} ++ + static VALUE + class2path(klass) + VALUE klass; +@@ -699,32 +707,17 @@ + } + } + +-static VALUE +-dump(arg) +- struct dump_call_arg *arg; +-{ +- w_object(arg->obj, arg->arg, arg->limit); +- if (arg->arg->dest) { +- rb_io_write(arg->arg->dest, arg->arg->str); +- rb_str_resize(arg->arg->str, 0); +- } +- return 0; +-} +- +-static VALUE +-dump_ensure(arg) ++static void ++clear_dump_arg(arg) + struct dump_arg *arg; + { +- if (!DATA_PTR(arg->wrapper)) return 0; ++ if (!arg->symbols) return; + st_free_table(arg->symbols); ++ arg->symbols = 0; + st_free_table(arg->data); +- DATA_PTR(arg->wrapper) = 0; +- arg->wrapper = 0; + if (arg->taint) { + OBJ_TAINT(arg->str); + } +- +- return 0; + } + + /* +@@ -760,8 +753,8 @@ + { + VALUE obj, port, a1, a2; + int limit = -1; +- struct dump_arg arg; +- struct dump_call_arg c_arg; ++ struct dump_arg *arg; ++ VALUE wrapper; + + port = Qnil; + rb_scan_args(argc, argv, "12", &obj, &a1, &a2); +@@ -775,37 +768,40 @@ + else if (NIL_P(a1)) goto type_error; + else port = a1; + } +- arg.dest = 0; +- arg.symbols = st_init_numtable(); +- arg.data = st_init_numtable(); +- arg.taint = Qfalse; +- arg.str = rb_str_buf_new(0); +- RBASIC(arg.str)->klass = 0; +- arg.wrapper = Data_Wrap_Struct(rb_cData, mark_dump_arg, 0, &arg); ++ wrapper = Data_Make_Struct(rb_cData, struct dump_arg, mark_dump_arg, free_dump_arg, arg); ++ arg->dest = 0; ++ arg->symbols = st_init_numtable(); ++ arg->data = st_init_numtable(); ++ arg->taint = Qfalse; ++ arg->str = rb_str_buf_new(0); ++ RBASIC(arg->str)->klass = 0; + if (!NIL_P(port)) { + if (!rb_respond_to(port, s_write)) { + type_error: + rb_raise(rb_eTypeError, "instance of IO needed"); + } +- arg.dest = port; ++ arg->dest = port; + if (rb_respond_to(port, s_binmode)) { + rb_funcall2(port, s_binmode, 0, 0); +- check_dump_arg(&arg, s_binmode); ++ check_dump_arg(arg, s_binmode); + } + } + else { +- port = arg.str; ++ port = arg->str; + } + +- c_arg.obj = obj; +- c_arg.arg = &arg; +- c_arg.limit = limit; ++ w_byte(MARSHAL_MAJOR, arg); ++ w_byte(MARSHAL_MINOR, arg); + +- w_byte(MARSHAL_MAJOR, &arg); +- w_byte(MARSHAL_MINOR, &arg); ++ w_object(obj, arg, limit); ++ if (arg->dest) { ++ rb_io_write(arg->dest, arg->str); ++ rb_str_resize(arg->str, 0); ++ } + +- rb_ensure(dump, (VALUE)&c_arg, dump_ensure, (VALUE)&arg); +- RBASIC(arg.str)->klass = rb_cString; ++ RBASIC(arg->str)->klass = rb_cString; ++ clear_dump_arg(arg); ++ RB_GC_GUARD(wrapper); + + return port; + } +@@ -817,7 +813,6 @@ + st_table *data; + VALUE proc; + int taint; +- VALUE wrapper; + }; + + static void +@@ -825,22 +820,31 @@ + struct load_arg *arg; + ID sym; + { +- if (!DATA_PTR(arg->wrapper)) { ++ if (!arg->symbols) { + rb_raise(rb_eRuntimeError, "Marshal.load reentered at %s", + rb_id2name(sym)); + } + } + ++static void clear_load_arg _((struct load_arg *arg)); ++ + static void + mark_load_arg(ptr) + void *ptr; + { + struct load_arg *p = ptr; +- if (!ptr) ++ if (!p->symbols) + return; + rb_mark_tbl(p->data); + } + ++static void ++free_load_arg(void *ptr) ++{ ++ clear_load_arg(ptr); ++ xfree(ptr); ++} ++ + static VALUE r_object _((struct load_arg *arg)); + + static int +@@ -1415,23 +1419,14 @@ + return r_object0(arg, arg->proc, 0, Qnil); + } + +-static VALUE +-load(arg) ++static void ++clear_load_arg(arg) + struct load_arg *arg; + { +- return r_object(arg); +-} +- +-static VALUE +-load_ensure(arg) +- struct load_arg *arg; +-{ +- if (!DATA_PTR(arg->wrapper)) return 0; ++ if (!arg->symbols) return; + st_free_table(arg->symbols); ++ arg->symbols = 0; + st_free_table(arg->data); +- DATA_PTR(arg->wrapper) = 0; +- arg->wrapper = 0; +- return 0; + } + + /* +@@ -1451,35 +1446,37 @@ + VALUE *argv; + { + VALUE port, proc; +- int major, minor; +- VALUE v; +- struct load_arg arg; ++ int major, minor, taint = Qfalse; ++ VALUE v, wrapper; ++ struct load_arg *arg; + + rb_scan_args(argc, argv, "11", &port, &proc); + v = rb_check_string_type(port); + if (!NIL_P(v)) { +- arg.taint = OBJ_TAINTED(port); /* original taintedness */ ++ taint = OBJ_TAINTED(port); /* original taintedness */ + port = v; + } + else if (rb_respond_to(port, s_getc) && rb_respond_to(port, s_read)) { + if (rb_respond_to(port, s_binmode)) { + rb_funcall2(port, s_binmode, 0, 0); + } +- arg.taint = Qtrue; ++ taint = Qtrue; + } + else { + rb_raise(rb_eTypeError, "instance of IO needed"); + } +- arg.src = port; +- arg.offset = 0; +- arg.symbols = st_init_numtable(); +- arg.data = st_init_numtable(); +- arg.proc = 0; +- arg.wrapper = Data_Wrap_Struct(rb_cData, mark_load_arg, 0, &arg); ++ wrapper = Data_Make_Struct(rb_cData, struct load_arg, mark_load_arg, free_load_arg, arg); ++ arg->src = port; ++ arg->offset = 0; ++ arg->symbols = st_init_numtable(); ++ arg->data = st_init_numtable(); ++ arg->proc = 0; ++ arg->taint = taint; + +- major = r_byte(&arg); +- minor = r_byte(&arg); ++ major = r_byte(arg); ++ minor = r_byte(arg); + if (major != MARSHAL_MAJOR || minor > MARSHAL_MINOR) { ++ clear_load_arg(arg); + rb_raise(rb_eTypeError, "incompatible marshal file format (can't be read)\n\ + \tformat version %d.%d required; %d.%d given", + MARSHAL_MAJOR, MARSHAL_MINOR, major, minor); +@@ -1490,8 +1487,10 @@ + MARSHAL_MAJOR, MARSHAL_MINOR, major, minor); + } + +- if (!NIL_P(proc)) arg.proc = proc; +- v = rb_ensure(load, (VALUE)&arg, load_ensure, (VALUE)&arg); ++ if (!NIL_P(proc)) arg->proc = proc; ++ v = r_object(arg); ++ clear_load_arg(arg); ++ RB_GC_GUARD(wrapper); + + return v; + } +Index: ruby_1_8_7/test/ruby/test_marshal.rb +=================================================================== +--- ruby_1_8_7/test/ruby/test_marshal.rb (revision 26075) ++++ ruby_1_8_7/test/ruby/test_marshal.rb (revision 26076) +@@ -71,4 +71,41 @@ + } + assert_equal("marshal data too short", e.message) + end ++ ++ class DumpTest ++ def marshal_dump ++ loop { Thread.pass } ++ end ++ end ++ ++ class LoadTest ++ def marshal_dump ++ nil ++ end ++ def marshal_load(obj) ++ loop { Thread.pass } ++ end ++ end ++ ++ def test_context_switch ++ o = DumpTest.new ++ Thread.new { Marshal.dump(o) } ++ GC.start ++ assert(true, '[ruby-dev:39425]') ++ ++ o = LoadTest.new ++ m = Marshal.dump(o) ++ Thread.new { Marshal.load(m) } ++ GC.start ++ assert(true, '[ruby-dev:39425]') ++ end ++ ++ def test_taint ++ x = Object.new ++ x.taint ++ s = Marshal.dump(x) ++ assert_equal(true, s.tainted?) ++ y = Marshal.load(s) ++ assert_equal(true, y.tainted?) ++ end + end +Index: ruby_1_8_7/ruby.h +=================================================================== +--- ruby_1_8_7/ruby.h (revision 16014) ++++ ruby_1_8_7/ruby.h (revision 16015) +@@ -224,6 +224,8 @@ + + #define TYPE(x) rb_type((VALUE)(x)) + ++#define RB_GC_GUARD(v) (*(volatile VALUE *)&(v)) ++ + void rb_check_type _((VALUE,int)); + #define Check_Type(v,t) rb_check_type((VALUE)(v),t) + diff --git a/rubygems.attr b/rubygems.attr deleted file mode 100644 index 5793bf7..0000000 --- a/rubygems.attr +++ /dev/null @@ -1,6 +0,0 @@ -%__rubygems_requires %{_rpmconfigdir}/rubygems.req -%__rubygems_provides %{_rpmconfigdir}/rubygems.prov -%__rubygems_conflicts %{_rpmconfigdir}/rubygems.con -# In non-gem packages, the %%{gem_name} macro is not available and the macro -# stays unexpanded which leads to "invalid regex" error (rhbz#1154067). -%__rubygems_path ^%{?gem_name:%{gem_spec}}%{!?gem_name:this_should_never_match_anything}$ diff --git a/rubygems.con b/rubygems.con deleted file mode 100644 index bcdeddc..0000000 --- a/rubygems.con +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/ruby - -require 'rubygems/package' - -module RubyGemsReq - module Helpers - # Keep only '!=' requirements. - def self.conflicts(requirements) - conflicts = requirements.select {|r| r.first == '!='} - end - - # Converts Gem::Requirement into array of requirements strings compatible - # with RPM .spec file. - def self.requirement_versions_to_rpm(requirement) - self.conflicts(requirement.requirements).map do |op, version| - version == Gem::Version.new(0) ? "" : "= #{version}" - end - end - end - - # Report conflicting gem dependencies including their version. - def self.gem_dependencies(specification) - specification.runtime_dependencies.each do |dependency| - conflict_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement| - requirement_string = "rubygem(#{dependency.name}) #{requirement}" - end - if conflict_strings.length > 0 - conflict_string = conflict_strings.join(' with ') - conflict_string.prepend('(').concat(')') if conflict_strings.length > 1 - puts conflict_string - end - end - end - - # Reports all conflicts specified by all provided .gemspec files. - def self.conflicts - while filename = gets - filename.strip! - begin - specification = Gem::Specification.load filename - - gem_dependencies(specification) - rescue => e - # Ignore all errors. - end - end - end -end - -if __FILE__ == $0 - RubyGemsReq::conflicts -end diff --git a/rubygems.prov b/rubygems.prov deleted file mode 100644 index f23ec3f..0000000 --- a/rubygems.prov +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/ruby - -require 'rubygems/package' - -module RubyGemsProv - module Helpers - # If there is some prelease version files, such as rc1 (i.e. non-numeric - # field), prepend this field by tilde instead of dot. - def self.normalize_prerelease(version) - if version.prerelease? - prerelease = version.version.sub /^#{version.release}\./, '' - "#{version.release}~#{prerelease}" - else - version.release - end - end - end - - # Reports all functionality gem provides. - def self.provides - while filename = gets - filename.strip! - begin - specification = Gem::Specification.load filename - - puts "rubygem(#{specification.name}) = #{Helpers::normalize_prerelease(specification.version)}" - rescue => e - # Ignore all errors. - end - end - end -end - -if __FILE__ == $0 - RubyGemsProv::provides -end diff --git a/rubygems.req b/rubygems.req deleted file mode 100644 index 70aebd4..0000000 --- a/rubygems.req +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/ruby - -require 'rubygems/package' - -module RubyGemsReq - module Helpers - # Expands '~>' and '!=' gem requirements. - def self.expand_requirement(requirements) - requirements.inject([]) do |output, r| - output.concat case r.first - when '~>' - expand_pessimistic_requirement(r) - when '!=' - # If there is only the conflict requirement, we still need to depend - # on the specified gem. - if requirements.size == 1 - Gem::Requirement.default.requirements - else - [] - end - else - [r] - end - end.reject {|r| r.empty? } - end - - # Expands the pessimistic version operator '~>' into equivalent '>=' and - # '<' pair. - def self.expand_pessimistic_requirement(requirement) - next_version = Gem::Version.create(requirement.last).bump - return ['>=', requirement.last], ['<', next_version] - end - - # Converts Gem::Requirement into array of requirements strings compatible - # with RPM .spec file. - def self.requirement_versions_to_rpm(requirement) - self.expand_requirement(requirement.requirements).map do |op, version| - version == Gem::Version.new(0) ? "" : " #{op} #{version}" - end - end - - # Compose dependency together with its requirements in RPM rich dependency - # string. - def self.compose_dependency_string(name, requirements) - dependency_strings = requirements.map { |requirement| name + requirement } - dependency_string = dependency_strings.join(' with ') - dependency_string.prepend('(').concat(')') if dependency_strings.length > 1 - dependency_string - end - end - - # Report RubyGems dependency, versioned if required. - def self.rubygems_dependency(specification) - dependency_name = "ruby(rubygems)" - requirements = Helpers::requirement_versions_to_rpm(specification.required_rubygems_version) - - puts Helpers::compose_dependency_string(dependency_name, requirements) - end - - # Report all gem dependencies including their version. - def self.gem_dependencies(specification) - specification.runtime_dependencies.each do |dependency| - dependency_name = "rubygem(#{dependency.name})" - requirements = Helpers::requirement_versions_to_rpm(dependency.requirement) - - puts Helpers::compose_dependency_string(dependency_name, requirements) - end - end - - # Reports all requirements specified by all provided .gemspec files. - def self.requires - while filename = gets - filename.strip! - begin - specification = Gem::Specification.load filename - - rubygems_dependency(specification) - gem_dependencies(specification) - rescue => e - # Ignore all errors. - end - end - end -end - -if __FILE__ == $0 - RubyGemsReq::requires -end diff --git a/sources b/sources index f1f97eb..4217687 100644 --- a/sources +++ b/sources @@ -1 +1,5 @@ -SHA512 (ruby-4.0.1.tar.xz) = b67d9d1f97ba30200d103f8454e39dc2d0450819d51d91eb5451d44b0bafc56d2fa48bb1be6c5081babe5828f679984bad02b9bcee7441f6bd34c0a95b8f200b +f26cefbc8ab6728650ab9ae773d22bcb ruby-1.8.6-p388.tar.bz2 +b6dd396f513efeb7864685c840f9643a ruby-refm-rdp-1.8.2-ja-html.tar.gz +634c25b14e19925d10af3720d72e8741 rubyfaq-990927.tar.gz +4fcec898f51d8371cc42d0a013940469 rubyfaq-jp-990927.tar.gz +f77c307cb72fb8808b0e85af5d05cefc ruby-1.8.6-p399.tar.bz2 diff --git a/test_abrt.rb b/test_abrt.rb deleted file mode 100644 index 6d110ba..0000000 --- a/test_abrt.rb +++ /dev/null @@ -1,7 +0,0 @@ -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_openssl_fips.rb b/test_openssl_fips.rb deleted file mode 100644 index ffc7883..0000000 --- a/test_openssl_fips.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'openssl' - -# Run openssl tests in OpenSSL FIPS. See the link below for how to test. -# https://github.com/ruby/openssl/blob/master/.github/workflows/test.yml -# - step name: test on fips module - -# Listing the testing files by an array explicitly rather than the `Dir.glob` -# to prevent the test files from not loading unintentionally. -TEST_FILES = %w[ - test/openssl/test_fips.rb - test/openssl/test_pkey.rb -].freeze - -if ARGV.empty? - puts 'ERROR: Argument base_dir required.' - puts "Usage: #{__FILE__} base_dir [options]" - exit false -end -BASE_DIR = ARGV[0] -abs_test_files = TEST_FILES.map { |file| File.join(BASE_DIR, file) } - -# Set Fedora/RHEL downstream OpenSSL downstream environment variable to enable -# FIPS module in non-FIPS OS environment. It is available in Fedora 38 or later -# versions. -# https://src.fedoraproject.org/rpms/openssl/blob/rawhide/f/0009-Add-Kernel-FIPS-mode-flag-support.patch -ENV['OPENSSL_FORCE_FIPS_MODE'] = '1' -# A flag to tell the tests the current environment is FIPS enabled. -# https://github.com/ruby/openssl/blob/master/test/openssl/test_fips.rb -ENV['TEST_RUBY_OPENSSL_FIPS_ENABLED'] = 'true' - -abs_test_files.each do |file| - puts "INFO: Loading #{file}." - require file -end diff --git a/test_rubygems_con.rb b/test_rubygems_con.rb deleted file mode 100644 index e124a49..0000000 --- a/test_rubygems_con.rb +++ /dev/null @@ -1,124 +0,0 @@ -# frozen_string_literal: true - -require 'test/unit' -require 'rpm_test_helper' - -class TestRubyGemsCon < Test::Unit::TestCase - include RPMTestHelper - - def test_filter_out_regular_requirements - gem_i = GemInfo.new - - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - - deps = [ Dependency.new('bar') ] - gem_i.dependencies = deps - - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - - deps = [ - Dependency.new('bar'), - Dependency.new('baq'), - Dependency.new('quz') - ] - - gem_i.dependencies = deps - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - - deps = [ - Dependency.new('bar', ['>= 4.1']), - Dependency.new('baz', ['~> 3.2']), - Dependency.new('quz', ['>= 5.6']) - ] - - gem_i.dependencies = deps - - lines = run_generator_single_file(gem_i) - - assert_equal(0, lines.size) - end - - def test_single_gem_single_version_conflict - con = Dependency.new('bar', ['!= 0.4.4']) - - gem_i = GemInfo.new(dependencies: [ con ]) - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{con.to_rpm_str} = 0.4.4\n", lines.first) - end - - def test_multiple_gems_with_single_conflict - cons = [ - Dependency.new('bar', ['!= 1.1']), - Dependency.new('baq', ['!= 1.2.2']), - Dependency.new('quz', ['!= 1.3']) - ] - - gem_i = GemInfo.new(dependencies: cons) - - lines = run_generator_single_file(gem_i) - - assert_equal(3, lines.size) - - assert_equal("#{cons[0].to_rpm_str} = 1.1\n" , lines[0]) - assert_equal("#{cons[1].to_rpm_str} = 1.2.2\n", lines[1]) - assert_equal("#{cons[2].to_rpm_str} = 1.3\n" , lines[2]) - end - - def test_multiple_conflicts_on_single_gem - con = Dependency.new('bar', ['!= 2.3', '!= 2.4']) - - gem_i = GemInfo.new(dependencies: [con]) - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - rpm_name = con.to_rpm_str - left_rpm_constraint = "(#{rpm_name} = 2.3 with " - right_rpm_constraint = "#{rpm_name} = 2.4)\n" - assert_equal((left_rpm_constraint + right_rpm_constraint), lines[0]) - - con = Dependency.new('bar', ['!= 2.3', '!= 2.4', '!= 4.5']) - - gem_i = GemInfo.new(dependencies: [ con ]) - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - - rpm_name = con.to_rpm_str - left_rpm_constraint = "(#{rpm_name} = 2.3 with " - middle_rpm_constraint = "#{rpm_name} = 2.4 with " - right_rpm_constraint = "#{rpm_name} = 4.5)\n" - - assert_equal((left_rpm_constraint + middle_rpm_constraint + right_rpm_constraint), lines[0]) - end - - def test_generates_conflicts_while_ignoring_regular_requirements - deps = [ - Dependency.new('bar', ['>= 2.3', '!= 2.4.2']), - Dependency.new('quz', ['~> 3.0', '!= 3.2']) - ] - - gem_i = GemInfo.new(dependencies: deps) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - - rpm_name = deps[0].to_rpm_str - rpm_constraint = "#{rpm_name} = 2.4.2\n" - assert_equal(rpm_constraint, lines[0]) - - rpm_name = deps[1].to_rpm_str - rpm_constraint = "#{rpm_name} = 3.2\n" - assert_equal(rpm_constraint, lines[1]) - end -end diff --git a/test_rubygems_prov.rb b/test_rubygems_prov.rb deleted file mode 100644 index b660ff6..0000000 --- a/test_rubygems_prov.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -require 'test/unit' -require 'rpm_test_helper' - -class TestRubyGemsProv < Test::Unit::TestCase - include RPMTestHelper - - def test_provides_the_gem_version - gem_i = GemInfo.new(version: '1.2') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first) - - gem_i = GemInfo.new(name: 'somegem_foo', version: '4.5.6') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first) - - deps = [ - Dependency.new('bar'), - Dependency.new('baq', [">= 1.2"]), - Dependency.new('quz', ["!= 3.2"]) - ] - gem_i = GemInfo.new(dependencies: deps) - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first) - end - - def test_translates_prelease_version_provides_from_rubygems_to_rpm - gem_i = GemInfo.new(version: '1.2.3.dev') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev\n", lines.first) - - gem_i = GemInfo.new(name: 'foo2', version: '1.2.3.dev.2') - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev.2\n", lines.first) - end -end diff --git a/test_rubygems_req.rb b/test_rubygems_req.rb deleted file mode 100644 index 490923e..0000000 --- a/test_rubygems_req.rb +++ /dev/null @@ -1,205 +0,0 @@ -# frozen_string_literal: true - -require 'test/unit' -require 'rpm_test_helper' - -class TestRubyGemsReq < Test::Unit::TestCase - include RPMTestHelper - - def test_depends_on_rubygems - gem_i = GemInfo.new - - lines = run_generator_single_file(gem_i) - - assert_equal(1, lines.size) - assert_equal("#{helper_rubygems_dependency}\n", lines.first) - end - - def test_requires_rubygems_and_dependency - dep = Dependency.new('bar') - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{helper_rubygems_dependency}\n", lines.first) - assert_equal("#{dep.to_rpm_str}\n", lines[1]) - end - - def test_requires_multiple_dependencies_with_constraint - constraints = [ - '>= 3.0', - '>= 3.0.0', - '>= 3', - '= 1.0.2', - '= 3.0', - '< 3.2', - '<= 3.4' - ] - - dependencies = [] - constraints.each_with_index do |constraint, idx| - dependencies << Dependency.new("bar#{idx}", [constraint]) - end - - gem_i = GemInfo.new(dependencies: dependencies) - - lines = run_generator_single_file(gem_i) - # + 1 for the rubygems dependency - assert_equal(constraints.size + 1, lines.size) - dependencies.each_with_index do |dep, idx| - rpm_dep_name = dep.to_rpm_str - # Start indexing lines at 1, to jump over rubygems dependency - assert_equal("#{rpm_dep_name} #{constraints[idx]}\n", lines[idx + 1]) - end - end - - def test_expands_pessimistic_constraint_for_rpm - dep = Dependency.new('bar', ['~> 1.2']) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - - rpm_dep_name = dep.to_rpm_str - left_constraint = "#{rpm_dep_name} >= 1.2" - right_constraint = "#{rpm_dep_name} < 2" - expected_constraint = "(#{left_constraint} with #{right_constraint})\n" - assert_equal(expected_constraint, lines[1]) - end - - def test_multiple_pessimistically_constrained_dependencies - dependencies = [] - dep_map = [ - { - constraint: '~> 1.2.3', - expanded_left: '>= 1.2.3', - expanded_rigth: '< 1.3', - gem_name: 'bar1' - }, - { - constraint: '~> 1.2', - expanded_left: '>= 1.2', - expanded_rigth: '< 2', - gem_name: 'bar2' - }, - { - constraint: '~> 3', - expanded_left: '>= 3', - expanded_rigth: '< 4', - gem_name: 'bar3' - } - ].each do |deps| - dependencies << Dependency.new(deps[:gem_name], [deps[:constraint]]) - end - - gem_i = GemInfo.new(dependencies: dependencies) - - lines = run_generator_single_file(gem_i) - - assert_equal(dep_map.size + 1, lines.size) - - dep_map.each_with_index do |hash, idx| - rpm_dep_name = dependencies[idx].to_rpm_str - left_constraint = rpm_dep_name + ' ' + hash[:expanded_left] - right_constraint = rpm_dep_name + ' ' + hash[:expanded_rigth] - expected_constraint = "(#{left_constraint} with #{right_constraint})\n" - assert_equal(expected_constraint, lines[idx + 1]) - end - end - - def test_multiple_constraints_on_one_dependency_composes_constraints_for_RPM - # The quoting here depends on how the constraint is expanded in the helpers. - # right now the form is `["#{constraint}"]`, therefore we have to not specify - # left and right quotes. - constraints = ['>= 0.2.3', '<= 0.2.5'] - dep = Dependency.new('baz', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - rpm_dep_name = dep.to_rpm_str - assert_equal("(#{rpm_dep_name} >= 0.2.3 with #{rpm_dep_name} <= 0.2.5)\n", lines[1]) - - # Not sure who would compose a dependency like this, but it's possible - # to do with the current generator - constraints = ['> 0.4.5', '< 0.6.4', '>= 2.3', '<= 2.5.3'] - dep = Dependency.new('qux', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - rpm_dep = dep.to_rpm_str - expected_str = "(#{rpm_dep} > 0.4.5 with #{rpm_dep} < 0.6.4 with " \ - "#{rpm_dep} >= 2.3 with #{rpm_dep} <= 2.5.3)\n" - - assert_equal(2, lines.size) - assert_equal(expected_str, lines[1]) - end - - # https://bugzilla.redhat.com/show_bug.cgi?id=1561487 - def test_depends_on_gem_with_version_conflict - dep = Dependency.new('baz', ['!= 0.4']) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str}\n", lines[1]) - end - - def test_filters_conflict_from_regular_version_constraints - constraint = ['> 1.2.4', '!= 1.2.7'] - dep = Dependency.new('baq', constraint) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1]) - end - - def test_filtering_conflicts_is_not_depending_on_contraint_ordering - constraints = ['!= 1.2.7', '> 1.2.4'] - dep = Dependency.new('baq', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1]) - end - - def test_filters_multiple_conflicts_from_dependency - omit "Case not yet supported." - constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '!= 4.8'] - dep = Dependency.new('baf', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str}\n", lines[1]) - end - - def test_filters_multiple_conflicts_from_dependency_but_keeps_regular_constraint - constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '<= 4.8'] - dep = Dependency.new('bam', constraints) - - gem_i = GemInfo.new(dependencies: [dep]) - - lines = run_generator_single_file(gem_i) - - assert_equal(2, lines.size) - assert_equal("#{dep.to_rpm_str} <= 4.8\n", lines[1]) - end -end diff --git a/test_systemtap.rb b/test_systemtap.rb deleted file mode 100644 index 5784e2d..0000000 --- a/test_systemtap.rb +++ /dev/null @@ -1,65 +0,0 @@ -require 'set' - -LIBRUBY_SO = 'libruby.so' -PROBES_D = 'probes.d' - -# 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', - '\.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_declared = [] - -File.open(PROBES_D) do |file| - file.each_line do |line| - if probe = line[/probe (\S+)\(.*\);/, 1] - probes_declared << probe - end - end -end - -probes_declared = Set.new probes_declared - -unless EXCLUDE_PROBES.subset? probes_declared - puts 'ERROR: Change in SystemTap (DTrace) probes definition file detected.' - exit false -end - -probes_declared -= EXCLUDE_PROBES - -# Detect probes in resulting library. -get_probes_detected = %r{ -^\s*Provider:\s+ruby,\s+Name:\s+(\S+),\s+.*$ -} - -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_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