Compare commits
31 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c1d86b93e | ||
|
|
b1f489610b | ||
|
|
a20c473b1b | ||
|
|
aa2899b823 | ||
|
|
bef5dc7bd3 | ||
|
|
556d824d52 | ||
|
|
198404c010 | ||
|
|
55c456f0e6 | ||
|
|
effa5c1162 | ||
|
|
9c8430ad61 | ||
|
|
a2e4876d29 | ||
|
|
88d0fa1e95 | ||
|
|
6375743887 | ||
|
|
34d2b6588a | ||
|
|
44d26c808a | ||
|
|
c933d86054 | ||
|
|
d48fbe996c | ||
|
|
ad3ca0cdd5 | ||
|
|
bc964685c1 | ||
|
|
b842da0db3 | ||
|
|
24c71d8fed | ||
|
|
60a4adff46 | ||
|
|
f8554ed4bd | ||
|
|
0de5456c86 | ||
|
|
f4336c3927 | ||
|
|
9ac6f1286a | ||
|
|
a74e6a62d0 | ||
|
|
267fbc6cd1 | ||
|
|
e170316f1b | ||
|
|
a9b40195d0 | ||
|
|
a942830f25 |
45 changed files with 1605 additions and 4798 deletions
|
|
@ -1 +0,0 @@
|
||||||
1
|
|
||||||
27
.gitignore
vendored
27
.gitignore
vendored
|
|
@ -1,6 +1,21 @@
|
||||||
/*/
|
ruby-1.8.7-p299.tar.bz2
|
||||||
/ruby-*.tar.xz
|
ruby-rev415a3ef9ab82c65a7abc-ext_tk.tar.gz
|
||||||
/rexml-*.gem
|
/ruby-1.8.7-p302.tar.bz2
|
||||||
/*.rpm
|
/ruby-rev54f344095916f83a2755a177f94e65a1c390a612-ext_tk.tar.gz
|
||||||
|
/ruby-1.8.7-p330.tar.bz2
|
||||||
!/plans/
|
/ruby-revf30eca26639ce538339bc488c7ed1fd397b0c13f-ext_tk.tar.gz
|
||||||
|
/ruby-1.8.7-p334.tar.bz2
|
||||||
|
/ruby-1.8.7-p352.tar.bz2
|
||||||
|
/ruby-revc2dfaa7d40531aef3706bcc16f38178b0c6633ee-ext_tk.tar.gz
|
||||||
|
/ruby-1.8.7-p357.tar.bz2
|
||||||
|
/ruby-1.9.3-p0.tar.gz
|
||||||
|
/ruby-1.9.3-p125.tar.gz
|
||||||
|
/ruby-1.9.3-p194.tar.gz
|
||||||
|
/ruby-1.9.3-p286.tar.gz
|
||||||
|
/ruby-1.9.3-p327.tar.gz
|
||||||
|
/ruby-1.9.3-p362.tar.gz
|
||||||
|
/ruby-1.9.3-p374.tar.gz
|
||||||
|
/ruby-1.9.3-p385.tar.gz
|
||||||
|
/ruby-1.9.3-p392.tar.gz
|
||||||
|
/ruby-1.9.3-p429.tar.gz
|
||||||
|
/ruby-1.9.3-p448.tar.gz
|
||||||
|
|
|
||||||
303
libruby.stp
303
libruby.stp
|
|
@ -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
|
|
||||||
}
|
|
||||||
22
macros.ruby
22
macros.ruby
|
|
@ -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$ \
|
|
||||||
}
|
|
||||||
227
macros.rubygems
227
macros.rubygems
|
|
@ -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 <gem_file> Overrides gem file name for installation.
|
|
||||||
# -d <install_dir> 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 <gem> [options] [requirements]
|
|
||||||
#
|
|
||||||
# Add dependency named <gem> 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 <gemspec_file> 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 <gem> [options] [requirements]
|
|
||||||
#
|
|
||||||
# Remove dependency named <gem> 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 <gemspec_file> 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] <file>
|
|
||||||
#
|
|
||||||
# Add files to .gemspec file. <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 <gemspec_file> 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] <file>
|
|
||||||
#
|
|
||||||
# Remove files from .gemspec file. <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 <gemspec_file> 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}
|
|
||||||
|
|
@ -2,41 +2,15 @@ module Gem
|
||||||
class << self
|
class << self
|
||||||
|
|
||||||
##
|
##
|
||||||
# Returns full path of previous but one directory of dir in path
|
# Returns a string representing that part or the directory tree that is
|
||||||
# E.g. for '/usr/share/ruby', 'ruby', it returns '/usr'
|
# common to all specified directories.
|
||||||
|
|
||||||
def previous_but_one_dir_to(path, dir)
|
def common_path(dirs)
|
||||||
return unless path
|
paths = dirs.collect {|dir| dir.split(File::SEPARATOR)}
|
||||||
|
uncommon_idx = paths.transpose.each_with_index.find {|dirnames, idx| dirnames.uniq.length > 1}.last
|
||||||
split_path = path.split(File::SEPARATOR)
|
paths[0][0 ... uncommon_idx].join(File::SEPARATOR)
|
||||||
File.join(split_path.take_while { |one_dir| one_dir !~ /^#{dir}$/ }[0..-2])
|
|
||||||
end
|
end
|
||||||
private :previous_but_one_dir_to
|
private :common_path
|
||||||
|
|
||||||
##
|
|
||||||
# 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).
|
# Default gems locations allowed on FHS system (/usr, /usr/share).
|
||||||
|
|
@ -45,8 +19,8 @@ module Gem
|
||||||
|
|
||||||
def default_locations
|
def default_locations
|
||||||
@default_locations ||= {
|
@default_locations ||= {
|
||||||
:system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']),
|
:system => common_path([ConfigMap[:vendorlibdir], ConfigMap[:vendorarchdir]]),
|
||||||
:local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME'])
|
:local => common_path([ConfigMap[:sitelibdir], ConfigMap[:sitearchdir]])
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -55,77 +29,33 @@ module Gem
|
||||||
# platform independent (:gem_dir) and dependent (:ext_dir) files.
|
# platform independent (:gem_dir) and dependent (:ext_dir) files.
|
||||||
|
|
||||||
def default_dirs
|
def default_dirs
|
||||||
@libdir ||= case RUBY_PLATFORM
|
@default_dirs ||= Hash[default_locations.collect do |destination, path|
|
||||||
when 'java'
|
[destination, {
|
||||||
RbConfig::CONFIG['datadir']
|
:bin_dir => File.join(path, ConfigMap[:bindir].split(File::SEPARATOR).last),
|
||||||
else
|
:gem_dir => File.join(path, ConfigMap[:datadir].split(File::SEPARATOR).last, 'gems'),
|
||||||
RbConfig::CONFIG['libdir']
|
:ext_dir => File.join(path, ConfigMap[:libdir].split(File::SEPARATOR).last, 'gems')
|
||||||
|
}]
|
||||||
|
end]
|
||||||
end
|
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.
|
# RubyGems default overrides.
|
||||||
|
|
||||||
def default_dir
|
def default_dir
|
||||||
if opt_build_root?
|
if Process.uid == 0
|
||||||
Gem.default_dirs[:system][:gem_dir]
|
|
||||||
elsif Process.uid == 0
|
|
||||||
Gem.default_dirs[:local][:gem_dir]
|
Gem.default_dirs[:local][:gem_dir]
|
||||||
else
|
else
|
||||||
Gem.user_dir
|
Gem.user_dir
|
||||||
end
|
end
|
||||||
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
|
def default_path
|
||||||
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
|
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
|
||||||
path.unshift Gem.user_dir if File.exist? Gem.user_home
|
path.unshift Gem.user_dir if File.exist? Gem.user_home
|
||||||
path
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def default_bindir
|
def default_bindir
|
||||||
if opt_build_root?
|
if Process.uid == 0
|
||||||
Gem.default_dirs[:system][:bin_dir]
|
|
||||||
elsif Process.uid == 0
|
|
||||||
Gem.default_dirs[:local][:bin_dir]
|
Gem.default_dirs[:local][:bin_dir]
|
||||||
else
|
else
|
||||||
File.join [Dir.home, 'bin']
|
File.join [Dir.home, 'bin']
|
||||||
|
|
@ -133,26 +63,8 @@ module Gem
|
||||||
end
|
end
|
||||||
|
|
||||||
def default_ext_dir_for base_dir
|
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 = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
|
||||||
dirs && dirs.last[:ext_dir]
|
dirs && File.join(dirs.last[:ext_dir], 'exts')
|
||||||
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
From 994ee4c17fb8c217ab0335df55620c6bdb5d5cbe Mon Sep 17 00:00:00 2001
|
|
||||||
From: tompng <tomoyapenguin@gmail.com>
|
|
||||||
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
|
|
||||||
|
|
@ -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
|
|
||||||
188
ruby-1.9.3-added-site-and-vendor-arch-flags.patch
Normal file
188
ruby-1.9.3-added-site-and-vendor-arch-flags.patch
Normal file
|
|
@ -0,0 +1,188 @@
|
||||||
|
From b0a875862d14244ca41cd1e1e9090f87757aaeb9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Mon, 5 Sep 2011 13:10:47 +0200
|
||||||
|
Subject: [PATCH] Added configuration flags for site and vendor architecture
|
||||||
|
specific directories.
|
||||||
|
|
||||||
|
---
|
||||||
|
Makefile.in | 3 +++
|
||||||
|
configure.in | 40 ++++++++++++++++++++++++++++++++++++++++
|
||||||
|
tool/mkconfig.rb | 8 ++++++--
|
||||||
|
version.c | 4 ++++
|
||||||
|
4 files changed, 53 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.in b/Makefile.in
|
||||||
|
index bcdaf5f..f57e4c4 100644
|
||||||
|
--- a/Makefile.in
|
||||||
|
+++ b/Makefile.in
|
||||||
|
@@ -34,6 +34,9 @@ datadir = @datadir@
|
||||||
|
archdir = @archdir@
|
||||||
|
sitearch = @sitearch@
|
||||||
|
sitedir = @sitedir@
|
||||||
|
+sitearchdir= @sitearchdir@
|
||||||
|
+vendordir = @vendordir@
|
||||||
|
+vendorarchdir = @vendorarchdir@
|
||||||
|
ruby_version = @ruby_version@
|
||||||
|
|
||||||
|
TESTUI = console
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index 83e5d76..31532bd 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -2811,6 +2811,15 @@ until SITE_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITE_DIR}"; do
|
||||||
|
dir="${SITE_DIR}"
|
||||||
|
done
|
||||||
|
|
||||||
|
+AC_ARG_WITH(sitearchdir,
|
||||||
|
+ AS_HELP_STRING([--with-sitearchdir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]),
|
||||||
|
+ [sitearchdir=$withval],
|
||||||
|
+ [sitearchdir='${rubylibprefix}/site_ruby/${arch}'])
|
||||||
|
+dir="${sitearchdir}"
|
||||||
|
+until SITEARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITEARCH_DIR}"; do
|
||||||
|
+ dir="${SITEARCH_DIR}"
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
AC_ARG_WITH(vendordir,
|
||||||
|
AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]),
|
||||||
|
[vendordir=$withval],
|
||||||
|
@@ -2820,19 +2829,32 @@ until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do
|
||||||
|
dir="${VENDOR_DIR}"
|
||||||
|
done
|
||||||
|
|
||||||
|
+AC_ARG_WITH(vendorarchdir,
|
||||||
|
+ AS_HELP_STRING([--with-vendorarchdir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]),
|
||||||
|
+ [vendorarchdir=$withval],
|
||||||
|
+ [vendorarchdir='${rubylibprefix}/vendor_ruby/${arch}'])
|
||||||
|
+dir="${vendorarchdir}"
|
||||||
|
+until VENDORARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDORARCH_DIR}"; do
|
||||||
|
+ dir="${VENDORARCH_DIR}"
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
if test "${LOAD_RELATIVE+set}"; then
|
||||||
|
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||||
|
RUBY_EXEC_PREFIX=""
|
||||||
|
RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
RUBY_ARCH_LIB_PATH="`eval echo "$ARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
+ RUBY_SITE_ARCHLIB_PATH="`eval echo "$SITEARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
+ RUBY_VENDOR_ARCHLIB_PATH="`eval echo "$VENDORARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
else
|
||||||
|
RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`"
|
||||||
|
RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
RUBY_ARCH_LIB_PATH="`eval echo \\"$ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
+ RUBY_SITE_ARCHLIB_PATH="`eval echo \\"$SITEARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
+ RUBY_VENDOR_ARCHLIB_PATH="`eval echo \\"$VENDORARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)'
|
||||||
|
@@ -2850,6 +2872,13 @@ AS_CASE(["$RUBY_SITE_LIB_PATH"],
|
||||||
|
[
|
||||||
|
RUBY_SITE_LIB_PATH="\"${RUBY_SITE_LIB_PATH}\""
|
||||||
|
])
|
||||||
|
+AS_CASE(["$RUBY_SITE_ARCHLIB_PATH"],
|
||||||
|
+ ["$RUBY_LIB_PREFIX/"*], [
|
||||||
|
+ RUBY_SITE_ARCHLIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_ARCHLIB_PATH\" : \"$pat\"`"'"'
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+ RUBY_SITE_ARCHLIB_PATH="\"${RUBY_SITE_ARCHLIB_PATH}\""
|
||||||
|
+ ])
|
||||||
|
AS_CASE(["$RUBY_VENDOR_LIB_PATH"],
|
||||||
|
["$RUBY_LIB_PREFIX/"*], [
|
||||||
|
RUBY_VENDOR_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_LIB_PATH\" : \"$pat\"`"'"'
|
||||||
|
@@ -2857,6 +2886,13 @@ AS_CASE(["$RUBY_VENDOR_LIB_PATH"],
|
||||||
|
[
|
||||||
|
RUBY_VENDOR_LIB_PATH="\"${RUBY_VENDOR_LIB_PATH}\""
|
||||||
|
])
|
||||||
|
+AS_CASE(["$RUBY_VENDOR_ARCHLIB_PATH"],
|
||||||
|
+ ["$RUBY_LIB_PREFIX/"*], [
|
||||||
|
+ RUBY_VENDOR_ARCHLIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_ARCHLIB_PATH\" : \"$pat\"`"'"'
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+ RUBY_VENDOR_ARCHLIB_PATH="\"${RUBY_VENDOR_ARCHLIB_PATH}\""
|
||||||
|
+ ])
|
||||||
|
pat=`echo "$RUBY_EXEC_PREFIX/" | tr -c '\012' .`'\(.*\)'
|
||||||
|
AS_CASE(["$RUBY_LIB_PREFIX"],
|
||||||
|
["$RUBY_EXEC_PREFIX/"*], [
|
||||||
|
@@ -2878,19 +2914,23 @@ if test "x$SITE_DIR" = xno; then
|
||||||
|
AC_DEFINE(NO_RUBY_SITE_LIB)
|
||||||
|
else
|
||||||
|
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB_PATH})
|
||||||
|
+ AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, ${RUBY_SITE_ARCHLIB_PATH})
|
||||||
|
fi
|
||||||
|
if test "x$VENDOR_DIR" = xno; then
|
||||||
|
AC_DEFINE(NO_RUBY_VENDOR_LIB)
|
||||||
|
else
|
||||||
|
AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB_PATH})
|
||||||
|
+ AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, ${RUBY_VENDOR_ARCHLIB_PATH})
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(arch)dnl
|
||||||
|
AC_SUBST(sitearch)dnl
|
||||||
|
AC_SUBST(ruby_version)dnl
|
||||||
|
AC_SUBST(archdir)dnl
|
||||||
|
AC_SUBST(sitedir)dnl
|
||||||
|
+AC_SUBST(sitearchdir)dnl
|
||||||
|
AC_SUBST(vendordir)dnl
|
||||||
|
+AC_SUBST(vendorarchdir)dnl
|
||||||
|
|
||||||
|
configure_args=$ac_configure_args
|
||||||
|
AC_SUBST(configure_args)dnl
|
||||||
|
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
||||||
|
index b707c4b..6230720 100755
|
||||||
|
--- a/tool/mkconfig.rb
|
||||||
|
+++ b/tool/mkconfig.rb
|
||||||
|
@@ -44,6 +44,8 @@ v_others = []
|
||||||
|
continued_line = nil
|
||||||
|
path_version = "/$(ruby_version)"
|
||||||
|
archdir_override = "$(vendorlibdir)/$(sitearch)"
|
||||||
|
+sitearchdir_override = "$(sitelibdir)/$(sitearch)"
|
||||||
|
+vendorarchdir_override = "$(vendorlibdir)/$(sitearch)"
|
||||||
|
File.foreach "config.status" do |line|
|
||||||
|
next if /^#/ =~ line
|
||||||
|
name = nil
|
||||||
|
@@ -79,6 +81,8 @@ File.foreach "config.status" do |line|
|
||||||
|
when /^RUBY_SO_NAME$/; next if $so_name
|
||||||
|
when /^arch$/; if val.empty? then val = arch else arch = val end
|
||||||
|
when /^archdir$/; archdir_override = val; next
|
||||||
|
+ when /^sitearchdir$/; sitearchdir_override = val; next
|
||||||
|
+ when /^vendorarchdir$/; vendorarchdir_override = val; next
|
||||||
|
when /^sitearch/; val = '$(arch)' if val.empty?
|
||||||
|
end
|
||||||
|
case val
|
||||||
|
@@ -213,11 +217,11 @@ print <<EOS
|
||||||
|
EOS
|
||||||
|
print <<EOS unless v_disabled["sitedir"]
|
||||||
|
CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
|
||||||
|
- CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
|
||||||
|
+ CONFIG["sitearchdir"] = "#{sitearchdir_override}"
|
||||||
|
EOS
|
||||||
|
print <<EOS unless v_disabled["vendordir"]
|
||||||
|
CONFIG["vendorlibdir"] = "$(vendordir)#{path_version}"
|
||||||
|
- CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
|
||||||
|
+ CONFIG["vendorarchdir"] = "#{vendorarchdir_override}"
|
||||||
|
EOS
|
||||||
|
print <<EOS
|
||||||
|
CONFIG["topdir"] = File.dirname(__FILE__)
|
||||||
|
diff --git a/version.c b/version.c
|
||||||
|
index 59d4e5e..2558aa0 100644
|
||||||
|
--- a/version.c
|
||||||
|
+++ b/version.c
|
||||||
|
@@ -50,8 +50,12 @@
|
||||||
|
#ifndef RUBY_ARCHLIB
|
||||||
|
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
|
||||||
|
#endif
|
||||||
|
+#ifndef RUBY_SITE_ARCHLIB
|
||||||
|
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
|
||||||
|
+#endif
|
||||||
|
+#ifndef RUBY_VENDOR_ARCHLIB
|
||||||
|
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
|
||||||
|
+#endif
|
||||||
|
#ifdef RUBY_THINARCH
|
||||||
|
#define RUBY_THIN_ARCHLIB RUBY_LIB "/"RUBY_THINARCH
|
||||||
|
#define RUBY_SITE_THIN_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_THINARCH
|
||||||
|
--
|
||||||
|
1.7.6.1
|
||||||
|
|
||||||
11
ruby-1.9.3-always-use-i386.patch
Normal file
11
ruby-1.9.3-always-use-i386.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/configure.in.orig 2011-10-18 08:56:21.587594685 +0200
|
||||||
|
+++ b/configure.in 2011-10-18 08:56:59.751593321 +0200
|
||||||
|
@@ -2935,6 +2935,8 @@
|
||||||
|
configure_args=$ac_configure_args
|
||||||
|
AC_SUBST(configure_args)dnl
|
||||||
|
|
||||||
|
+target_cpu=`echo $target_cpu | sed s/i.86/i386/`
|
||||||
|
+
|
||||||
|
if test "${universal_binary-no}" = yes ; then
|
||||||
|
arch="universal-${target_os}"
|
||||||
|
AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,
|
||||||
132
ruby-1.9.3-arch-specific-dir.patch
Normal file
132
ruby-1.9.3-arch-specific-dir.patch
Normal file
|
|
@ -0,0 +1,132 @@
|
||||||
|
From df4253a5b79b63f16f215f2c19f1b9666c4ca01e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Thu, 8 Sep 2011 15:30:05 +0200
|
||||||
|
Subject: [PATCH] Add configuration arch specific dir flag.
|
||||||
|
|
||||||
|
---
|
||||||
|
Makefile.in | 1 +
|
||||||
|
configure.in | 20 ++++++++++++++++++++
|
||||||
|
tool/mkconfig.rb | 4 +++-
|
||||||
|
version.c | 2 ++
|
||||||
|
4 files changed, 26 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile.in b/Makefile.in
|
||||||
|
index bcdaf5f..d61b2ee 100644
|
||||||
|
--- a/Makefile.in
|
||||||
|
+++ b/Makefile.in
|
||||||
|
@@ -31,6 +31,7 @@ libexecdir = @libexecdir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
arch = @arch@
|
||||||
|
+archdir = @archdir@
|
||||||
|
sitearch = @sitearch@
|
||||||
|
sitedir = @sitedir@
|
||||||
|
ruby_version = @ruby_version@
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index 83e5d76..e6dc38c 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -2793,6 +2793,15 @@ else
|
||||||
|
RUBY_LIB_VERSION="\"${ruby_version}\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
+AC_ARG_WITH(archdir,
|
||||||
|
+ AS_HELP_STRING([--with-archdir=DIR], [architecture specific ruby libraries [[LIBDIR/RUBY_BASE_NAME/ARCH]]]),
|
||||||
|
+ [archdir=$withval],
|
||||||
|
+ [archdir='${rubylibprefix}/${arch}'])
|
||||||
|
+dir="${archdir}"
|
||||||
|
+until ARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${ARCH_DIR}"; do
|
||||||
|
+ dir="${ARCH_DIR}"
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
AC_ARG_WITH(sitedir,
|
||||||
|
AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]),
|
||||||
|
[sitedir=$withval],
|
||||||
|
@@ -2815,16 +2824,25 @@ if test "${LOAD_RELATIVE+set}"; then
|
||||||
|
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||||
|
RUBY_EXEC_PREFIX=""
|
||||||
|
RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
+ RUBY_ARCH_LIB_PATH="`eval echo "$ARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
|
||||||
|
else
|
||||||
|
RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`"
|
||||||
|
RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
+ RUBY_ARCH_LIB_PATH="`eval echo \\"$ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)'
|
||||||
|
+AS_CASE(["$RUBY_ARCH_LIB_PATH"],
|
||||||
|
+ ["$RUBY_LIB_PREFIX/"*], [
|
||||||
|
+ RUBY_ARCH_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_ARCH_LIB_PATH\" : \"$pat\"`"'"'
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+ RUBY_ARCH_LIB_PATH="\"${RUBY_ARCH_LIB_PATH}\""
|
||||||
|
+ ])
|
||||||
|
AS_CASE(["$RUBY_SITE_LIB_PATH"],
|
||||||
|
["$RUBY_LIB_PREFIX/"*], [
|
||||||
|
RUBY_SITE_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_LIB_PATH\" : \"$pat\"`"'"'
|
||||||
|
@@ -2855,6 +2873,7 @@ else
|
||||||
|
fi
|
||||||
|
AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, "${RUBY_EXEC_PREFIX}")
|
||||||
|
AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, ${RUBY_LIB_PREFIX})
|
||||||
|
+AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, ${RUBY_ARCH_LIB_PATH})
|
||||||
|
if test "x$SITE_DIR" = xno; then
|
||||||
|
AC_DEFINE(NO_RUBY_SITE_LIB)
|
||||||
|
else
|
||||||
|
@@ -2869,6 +2888,7 @@ fi
|
||||||
|
AC_SUBST(arch)dnl
|
||||||
|
AC_SUBST(sitearch)dnl
|
||||||
|
AC_SUBST(ruby_version)dnl
|
||||||
|
+AC_SUBST(archdir)dnl
|
||||||
|
AC_SUBST(sitedir)dnl
|
||||||
|
AC_SUBST(vendordir)dnl
|
||||||
|
|
||||||
|
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
||||||
|
index b707c4b..9780ef2 100755
|
||||||
|
--- a/tool/mkconfig.rb
|
||||||
|
+++ b/tool/mkconfig.rb
|
||||||
|
@@ -43,6 +43,7 @@ v_others = []
|
||||||
|
continued_name = nil
|
||||||
|
continued_line = nil
|
||||||
|
path_version = "/$(ruby_version)"
|
||||||
|
+archdir_override = "$(vendorlibdir)/$(sitearch)"
|
||||||
|
File.foreach "config.status" do |line|
|
||||||
|
next if /^#/ =~ line
|
||||||
|
name = nil
|
||||||
|
@@ -77,6 +78,7 @@ File.foreach "config.status" do |line|
|
||||||
|
when /^RUBY_INSTALL_NAME$/; next if $install_name
|
||||||
|
when /^RUBY_SO_NAME$/; next if $so_name
|
||||||
|
when /^arch$/; if val.empty? then val = arch else arch = val end
|
||||||
|
+ when /^archdir$/; archdir_override = val; next
|
||||||
|
when /^sitearch/; val = '$(arch)' if val.empty?
|
||||||
|
end
|
||||||
|
case val
|
||||||
|
@@ -207,7 +209,7 @@ print(*v_fast)
|
||||||
|
print(*v_others)
|
||||||
|
print <<EOS
|
||||||
|
CONFIG["rubylibdir"] = "$(rubylibprefix)#{path_version}"
|
||||||
|
- CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
|
||||||
|
+ CONFIG["archdir"] = "#{archdir_override}"
|
||||||
|
EOS
|
||||||
|
print <<EOS unless v_disabled["sitedir"]
|
||||||
|
CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
|
||||||
|
diff --git a/version.c b/version.c
|
||||||
|
index 59d4e5e..915a0a2 100644
|
||||||
|
--- a/version.c
|
||||||
|
+++ b/version.c
|
||||||
|
@@ -47,7 +47,9 @@
|
||||||
|
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
|
||||||
|
#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
|
||||||
|
#endif
|
||||||
|
+#ifndef RUBY_ARCHLIB
|
||||||
|
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
|
||||||
|
+#endif
|
||||||
|
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
|
||||||
|
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
|
||||||
|
#ifdef RUBY_THINARCH
|
||||||
|
--
|
||||||
|
1.7.6.1
|
||||||
|
|
||||||
31
ruby-1.9.3-bignum-test-fix.patch
Normal file
31
ruby-1.9.3-bignum-test-fix.patch
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
--- ruby-1.9.3-p0/test/ruby/test_bignum.rb.orig 2011-11-10 09:52:59.101925465 +0100
|
||||||
|
+++ ruby-1.9.3-p0/test/ruby/test_bignum.rb 2011-11-10 09:54:14.580798826 +0100
|
||||||
|
@@ -378,7 +378,7 @@
|
||||||
|
assert_equal(true, (2**32).even?)
|
||||||
|
end
|
||||||
|
|
||||||
|
- def interrupt
|
||||||
|
+ def assert_interrupt
|
||||||
|
time = Time.now
|
||||||
|
start_flag = false
|
||||||
|
end_flag = false
|
||||||
|
@@ -387,14 +387,16 @@
|
||||||
|
yield
|
||||||
|
end_flag = true
|
||||||
|
end
|
||||||
|
- sleep 1
|
||||||
|
+ Thread.pass until start_flag
|
||||||
|
thread.raise
|
||||||
|
thread.join rescue nil
|
||||||
|
- start_flag && !end_flag && Time.now - time < 10
|
||||||
|
+ time = Time.now - time
|
||||||
|
+ assert_equal([true, false], [start_flag, end_flag])
|
||||||
|
+ assert_operator(time, :<, 10)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_interrupt
|
||||||
|
- assert(interrupt { (65536 ** 65536).to_s })
|
||||||
|
+ assert_interrupt {(65536 ** 65536).to_s}
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_too_big_to_s
|
||||||
97
ruby-1.9.3-custom-rubygems-location.patch
Normal file
97
ruby-1.9.3-custom-rubygems-location.patch
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
From 279a693ce4ef3a887ce8d4fa59e0f2616a14d91a Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Fri, 11 Nov 2011 13:14:45 +0100
|
||||||
|
Subject: [PATCH] Allow to install RubyGems into custom location, outside of
|
||||||
|
Ruby tree.
|
||||||
|
|
||||||
|
---
|
||||||
|
configure.in | 8 ++++++++
|
||||||
|
tool/mkconfig.rb | 1 +
|
||||||
|
tool/rbinstall.rb | 9 +++++++++
|
||||||
|
version.c | 4 ++++
|
||||||
|
4 files changed, 22 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index b1bc951..91c5d0d 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -2838,6 +2838,13 @@ until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do
|
||||||
|
dir="${VENDORARCH_DIR}"
|
||||||
|
done
|
||||||
|
|
||||||
|
+AC_ARG_WITH(rubygemsdir,
|
||||||
|
+ AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]),
|
||||||
|
+ [rubygemsdir=$withval])
|
||||||
|
+if test "$rubygemsdir" != ""; then
|
||||||
|
+ AC_DEFINE_UNQUOTED(RUBYGEMS_DIR,"$rubygemsdir")
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
if test "${LOAD_RELATIVE+set}"; then
|
||||||
|
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||||
|
RUBY_EXEC_PREFIX=""
|
||||||
|
@@ -2931,6 +2938,7 @@ AC_SUBST(sitearch)dnl
|
||||||
|
AC_SUBST(sitearchdir)dnl
|
||||||
|
AC_SUBST(vendordir)dnl
|
||||||
|
AC_SUBST(vendorarchdir)dnl
|
||||||
|
+AC_SUBST(rubygemsdir)dnl
|
||||||
|
|
||||||
|
configure_args=$ac_configure_args
|
||||||
|
AC_SUBST(configure_args)dnl
|
||||||
|
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
||||||
|
index b707c4b..9fecbfb 100755
|
||||||
|
--- a/tool/mkconfig.rb
|
||||||
|
+++ b/tool/mkconfig.rb
|
||||||
|
@@ -84,6 +84,7 @@ File.foreach "config.status" do |line|
|
||||||
|
when /^sitearchdir$/; sitearchdir_override = val; next
|
||||||
|
when /^vendorarchdir$/; vendorarchdir_override = val; next
|
||||||
|
when /^sitearch/; val = '$(arch)' if val.empty?
|
||||||
|
+ when /^rubygemsdir/; next if val.empty?
|
||||||
|
end
|
||||||
|
case val
|
||||||
|
when /^\$\(ac_\w+\)$/; next
|
||||||
|
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||||
|
index 6bfc73e..31dc446 100755
|
||||||
|
--- a/tool/rbinstall.rb
|
||||||
|
+++ b/tool/rbinstall.rb
|
||||||
|
@@ -300,6 +300,7 @@ sitelibdir = CONFIG["sitelibdir"]
|
||||||
|
sitearchlibdir = CONFIG["sitearchdir"]
|
||||||
|
vendorlibdir = CONFIG["vendorlibdir"]
|
||||||
|
vendorarchlibdir = CONFIG["vendorarchdir"]
|
||||||
|
+rubygemsdir = CONFIG["rubygemsdir"]
|
||||||
|
mandir = CONFIG["mandir"]
|
||||||
|
capidir = CONFIG["docdir"]
|
||||||
|
configure_args = Shellwords.shellwords(CONFIG["configure_args"])
|
||||||
|
@@ -487,7 +488,15 @@ end
|
||||||
|
install?(:local, :comm, :lib) do
|
||||||
|
prepare "library scripts", rubylibdir
|
||||||
|
noinst = %w[README* *.txt *.rdoc]
|
||||||
|
+ noinst += %w[*ubygems.rb rubygems/ datadir.rb] if rubygemsdir
|
||||||
|
install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode)
|
||||||
|
+ if rubygemsdir
|
||||||
|
+ noinst = %w[obsolete.rb]
|
||||||
|
+ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode)
|
||||||
|
+ install_recursive(File.join(srcdir, "lib", "rbconfig"), File.join(rubygemsdir, "rbconfig"), :no_install => noinst, :mode => $data_mode)
|
||||||
|
+ install(File.join(srcdir, "lib", "ubygems.rb"), File.join(rubygemsdir, "ubygems.rb"), :mode => $data_mode)
|
||||||
|
+ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode)
|
||||||
|
+ end
|
||||||
|
end
|
||||||
|
|
||||||
|
install?(:local, :arch, :lib) do
|
||||||
|
diff --git a/version.c b/version.c
|
||||||
|
index 59d4e5e..12ba7e9 100644
|
||||||
|
--- a/version.c
|
||||||
|
+++ b/version.c
|
||||||
|
@@ -103,6 +103,10 @@ const char ruby_initial_load_paths[] =
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef RUBYGEMS_DIR
|
||||||
|
+ RUBYGEMS_DIR "\0"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
RUBY_LIB "\0"
|
||||||
|
#ifdef RUBY_THIN_ARCHLIB
|
||||||
|
RUBY_THIN_ARCHLIB "\0"
|
||||||
|
--
|
||||||
|
1.7.7
|
||||||
|
|
||||||
149
ruby-1.9.3-disable-versioned-paths.patch
Normal file
149
ruby-1.9.3-disable-versioned-paths.patch
Normal file
|
|
@ -0,0 +1,149 @@
|
||||||
|
From fa1a50ad10814f724b8713865dc222724cb955ab Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Thu, 25 Aug 2011 14:33:51 +0200
|
||||||
|
Subject: [PATCH] Allow to disable versioned paths.
|
||||||
|
|
||||||
|
---
|
||||||
|
configure.in | 11 +++++++++++
|
||||||
|
tool/mkconfig.rb | 9 ++++++---
|
||||||
|
version.c | 10 ++++++++++
|
||||||
|
3 files changed, 27 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index e742e74..86cb68f 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -2963,6 +2963,17 @@ else
|
||||||
|
fi
|
||||||
|
AC_SUBST(USE_RUBYGEMS)
|
||||||
|
|
||||||
|
+AC_ARG_ENABLE(versioned-paths,
|
||||||
|
+ AS_HELP_STRING([--disable-versioned-paths], [disable paths with version number]),
|
||||||
|
+ [enable_versioned_paths="$enableval"], [enable_versioned_paths=yes])
|
||||||
|
+if test x"$enable_versioned_paths" = xno; then
|
||||||
|
+ AC_DEFINE(DISABLE_VERSIONED_PATHS, 1)
|
||||||
|
+ USE_VERSIONED_PATHS=NO
|
||||||
|
+else
|
||||||
|
+ USE_VERSIONED_PATHS=YES
|
||||||
|
+fi
|
||||||
|
+AC_SUBST(USE_VERSIONED_PATHS)
|
||||||
|
+
|
||||||
|
arch_hdrdir="${EXTOUT}/include/${arch}/ruby"
|
||||||
|
AS_MKDIR_P("${arch_hdrdir}")
|
||||||
|
config_h="${arch_hdrdir}/config.h"
|
||||||
|
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
||||||
|
index a2221f0..47d8c8f 100755
|
||||||
|
--- a/tool/mkconfig.rb
|
||||||
|
+++ b/tool/mkconfig.rb
|
||||||
|
@@ -42,6 +42,7 @@ v_others = []
|
||||||
|
vars = {}
|
||||||
|
continued_name = nil
|
||||||
|
continued_line = nil
|
||||||
|
+path_version = "/$(ruby_version)"
|
||||||
|
File.foreach "config.status" do |line|
|
||||||
|
next if /^#/ =~ line
|
||||||
|
name = nil
|
||||||
|
@@ -138,6 +139,8 @@ File.foreach "config.status" do |line|
|
||||||
|
case name
|
||||||
|
when "ruby_version"
|
||||||
|
version = val[/\A"(.*)"\z/, 1]
|
||||||
|
+ when /^USE_VERSIONED_PATHS$/
|
||||||
|
+ path_version = nil if /NO/ =~ val
|
||||||
|
end
|
||||||
|
end
|
||||||
|
# break if /^CEOF/
|
||||||
|
@@ -203,15 +206,15 @@ end
|
||||||
|
print(*v_fast)
|
||||||
|
print(*v_others)
|
||||||
|
print <<EOS
|
||||||
|
- CONFIG["rubylibdir"] = "$(rubylibprefix)/$(ruby_version)"
|
||||||
|
+ CONFIG["rubylibdir"] = "$(rubylibprefix)#{path_version}"
|
||||||
|
CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
|
||||||
|
EOS
|
||||||
|
print <<EOS unless v_disabled["sitedir"]
|
||||||
|
- CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
|
||||||
|
+ CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
|
||||||
|
CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
|
||||||
|
EOS
|
||||||
|
print <<EOS unless v_disabled["vendordir"]
|
||||||
|
- CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
|
||||||
|
+ CONFIG["vendorlibdir"] = "$(vendordir)#{path_version}"
|
||||||
|
CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
|
||||||
|
EOS
|
||||||
|
print <<EOS
|
||||||
|
diff --git a/version.c b/version.c
|
||||||
|
index 59d4e5e..641dc33 100644
|
||||||
|
--- a/version.c
|
||||||
|
+++ b/version.c
|
||||||
|
@@ -38,9 +38,15 @@
|
||||||
|
#define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef DISABLE_VERSIONED_PATHS
|
||||||
|
+#define RUBY_LIB RUBY_LIB_PREFIX
|
||||||
|
+#define RUBY_SITE_LIB2 RUBY_SITE_LIB
|
||||||
|
+#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB
|
||||||
|
+#else
|
||||||
|
#define RUBY_LIB RUBY_LIB_PREFIX "/"RUBY_LIB_VERSION
|
||||||
|
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
|
||||||
|
#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
|
||||||
|
+#endif
|
||||||
|
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
|
||||||
|
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
|
||||||
|
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
|
||||||
|
@@ -75,8 +81,10 @@ const char ruby_initial_load_paths[] =
|
||||||
|
RUBY_SITE_THIN_ARCHLIB "\0"
|
||||||
|
#endif
|
||||||
|
RUBY_SITE_ARCHLIB "\0"
|
||||||
|
+#ifndef DISABLE_VERSIONED_PATHS
|
||||||
|
RUBY_SITE_LIB "\0"
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifndef NO_RUBY_VENDOR_LIB
|
||||||
|
RUBY_VENDOR_LIB2 "\0"
|
||||||
|
@@ -84,8 +92,10 @@ const char ruby_initial_load_paths[] =
|
||||||
|
RUBY_VENDOR_THIN_ARCHLIB "\0"
|
||||||
|
#endif
|
||||||
|
RUBY_VENDOR_ARCHLIB "\0"
|
||||||
|
+#ifndef DISABLE_VERSIONED_PATHS
|
||||||
|
RUBY_VENDOR_LIB "\0"
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
RUBY_LIB "\0"
|
||||||
|
#ifdef RUBY_THIN_ARCHLIB
|
||||||
|
--
|
||||||
|
1.7.7.3
|
||||||
|
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
|
||||||
|
index a3c65bf..0575730 100644
|
||||||
|
--- a/lib/rdoc/ri/paths.rb
|
||||||
|
+++ b/lib/rdoc/ri/paths.rb
|
||||||
|
@@ -11,9 +11,9 @@ module RDoc::RI::Paths
|
||||||
|
version = RbConfig::CONFIG['ruby_version']
|
||||||
|
|
||||||
|
base = if RbConfig::CONFIG.key? 'ridir' then
|
||||||
|
- File.join RbConfig::CONFIG['ridir'], version
|
||||||
|
+ File.join [RbConfig::CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
|
||||||
|
else
|
||||||
|
- File.join RbConfig::CONFIG['datadir'], 'ri', version
|
||||||
|
+ File.join [RbConfig::CONFIG['datadir'], 'ri', RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
|
||||||
|
end
|
||||||
|
|
||||||
|
SYSDIR = File.join base, "system"
|
||||||
|
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||||
|
index cec8c9f..fed14d2 100755
|
||||||
|
--- a/tool/rbinstall.rb
|
||||||
|
+++ b/tool/rbinstall.rb
|
||||||
|
@@ -379,7 +379,7 @@ end
|
||||||
|
|
||||||
|
install?(:doc, :rdoc) do
|
||||||
|
if $rdocdir
|
||||||
|
- ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system")
|
||||||
|
+ ridatadir = File.join([CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil, "system"].compact)
|
||||||
|
prepare "rdoc", ridatadir
|
||||||
|
install_recursive($rdocdir, ridatadir, :mode => $data_mode)
|
||||||
|
end
|
||||||
|
--
|
||||||
|
1.7.6
|
||||||
|
|
||||||
11
ruby-1.9.3-mkmf-verbose.patch
Normal file
11
ruby-1.9.3-mkmf-verbose.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- ruby-1.9.3-p0/lib/mkmf.rb.debug 2011-08-11 15:07:37.000000000 +0900
|
||||||
|
+++ ruby-1.9.3-p0/lib/mkmf.rb 2012-01-29 21:34:17.000000000 +0900
|
||||||
|
@@ -1638,7 +1638,7 @@
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
# V=0 quiet, V=1 verbose. other values don't work.
|
||||||
|
-V = 0
|
||||||
|
+V = 1
|
||||||
|
Q1 = $(V:1=)
|
||||||
|
Q = $(Q1:0=@)
|
||||||
|
n=$(NULLCMD)
|
||||||
14
ruby-1.9.3-p286-open-devtty-on-koji.patch
Normal file
14
ruby-1.9.3-p286-open-devtty-on-koji.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
--- ruby-1.9.3-p286/test/ruby/test_io.rb.devtty 2012-10-12 17:37:54.000000000 +0900
|
||||||
|
+++ ruby-1.9.3-p286/test/ruby/test_io.rb 2012-10-13 14:00:24.000000000 +0900
|
||||||
|
@@ -2068,6 +2068,11 @@
|
||||||
|
return if /linux/ !~ RUBY_PLATFORM
|
||||||
|
return if /^i.?86|^x86_64/ !~ RUBY_PLATFORM
|
||||||
|
return unless File.exist?('/dev/tty')
|
||||||
|
+ begin
|
||||||
|
+ File.open('/dev/tty') {|f|}
|
||||||
|
+ rescue Errno::ENXIO
|
||||||
|
+ return
|
||||||
|
+ end
|
||||||
|
|
||||||
|
File.open('/dev/tty') { |f|
|
||||||
|
tiocgwinsz=0x5413
|
||||||
49
ruby-1.9.3-p327-ignore-internal-server-error-on-test.patch
Normal file
49
ruby-1.9.3-p327-ignore-internal-server-error-on-test.patch
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
--- ruby-1.9.3-p327/test/webrick/test_cgi.rb.koji 2012-08-28 00:40:30.000000000 +0900
|
||||||
|
+++ ruby-1.9.3-p327/test/webrick/test_cgi.rb 2012-11-10 16:33:36.000000000 +0900
|
||||||
|
@@ -28,6 +28,15 @@
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_cgi
|
||||||
|
+'''
|
||||||
|
+On koji:
|
||||||
|
+test_cgi(TestWEBrickCGI) [/builddir/build/BUILD/ruby-1.9.3-p327/test/webrick/test_cgi.rb:34]:
|
||||||
|
+....
|
||||||
|
+....
|
||||||
|
+<"/webrick.cgi"> expected but was
|
||||||
|
+<"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n<HTML>\n <HEAD><TITLE>Internal Server Error</TITLE></HEAD>\n <BODY>\n <H1>Internal Server Error</H1>\n Broken pipe\n <HR>\n <ADDRESS>\n WEBrick/1.3.1 (Ruby/1.9.3/2012-11-10) OpenSSL/1.0.1c at\n 127.0.0.1:58617\n </ADDRESS>\n </BODY>\n</HTML>\n">.
|
||||||
|
+'''
|
||||||
|
+ return # Skip on koji
|
||||||
|
start_cgi_server{|server, addr, port, log|
|
||||||
|
http = Net::HTTP.new(addr, port)
|
||||||
|
req = Net::HTTP::Get.new("/webrick.cgi")
|
||||||
|
@@ -84,6 +93,13 @@
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_bad_request
|
||||||
|
+'''
|
||||||
|
+On koji:
|
||||||
|
+test_bad_request(TestWEBrickCGI) [/builddir/build/BUILD/ruby-1.9.3-p327/test/webrick/test_cgi.rb:96]:
|
||||||
|
+....
|
||||||
|
+Expected /\AHTTP\/\d.\d 400 Bad Request/ to match "HTTP/1.1 500 Internal Server Error \r\nContent-Type: text/html; charset=ISO-8859-1\r\nServer: WEBrick/1.3.1 (Ruby/1.9.3/2012-11-10) OpenSSL/1.0.1c\r\nDate: Sat, 10 Nov 2012 07:17:08 GMT\r\nContent-Length: 307\r\nConnection: close\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n<HTML>\n <HEAD><TITLE>Internal Server Error</TITLE></HEAD>\n <BODY>\n <H1>Internal Server Error</H1>\n Broken pipe\n <HR>\n <ADDRESS>\n WEBrick/1.3.1 (Ruby/1.9.3/2012-11-10) OpenSSL/1.0.1c at\n localhost:41188\n </ADDRESS>\n </BODY>\n</HTML>\n".
|
||||||
|
+'''
|
||||||
|
+ return # Skip on koji
|
||||||
|
start_cgi_server{|server, addr, port, log|
|
||||||
|
sock = TCPSocket.new(addr, port)
|
||||||
|
begin
|
||||||
|
--- ruby-1.9.3-p327/test/webrick/test_filehandler.rb.koji 2012-08-28 00:40:30.000000000 +0900
|
||||||
|
+++ ruby-1.9.3-p327/test/webrick/test_filehandler.rb 2012-11-10 16:33:02.000000000 +0900
|
||||||
|
@@ -244,6 +244,14 @@
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_script_disclosure
|
||||||
|
+'''
|
||||||
|
+On koji:
|
||||||
|
+test_script_disclosure(WEBrick::TestFileHandler) [/builddir/build/BUILD/ruby-1.9.3-p327/test/webrick/test_filehandler.rb:265]:
|
||||||
|
+....
|
||||||
|
+<"200"> expected but was
|
||||||
|
+<"500">.
|
||||||
|
+'''
|
||||||
|
+ return # Skip on koji
|
||||||
|
config = {
|
||||||
|
:CGIInterpreter => TestWEBrick::RubyBin,
|
||||||
|
:DocumentRoot => File.dirname(__FILE__),
|
||||||
76
ruby-1.9.3-rubygems-1.8.11-uninstaller.patch
Normal file
76
ruby-1.9.3-rubygems-1.8.11-uninstaller.patch
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
--- ruby-1.9.3-p0/lib/rubygems/uninstaller.rb.orig 2011-10-31 10:22:36.321579483 +0100
|
||||||
|
+++ ruby-1.9.3-p0/lib/rubygems/uninstaller.rb 2011-10-31 10:34:25.563626119 +0100
|
||||||
|
@@ -51,15 +51,14 @@
|
||||||
|
@bin_dir = options[:bin_dir]
|
||||||
|
@format_executable = options[:format_executable]
|
||||||
|
|
||||||
|
+ if options[:force]
|
||||||
|
+ @force_all = true
|
||||||
|
+ @force_ignore = true
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
# only add user directory if install_dir is not set
|
||||||
|
@user_install = false
|
||||||
|
@user_install = options[:user_install] unless options[:install_dir]
|
||||||
|
-
|
||||||
|
- if @user_install then
|
||||||
|
- Gem.use_paths Gem.user_dir, @gem_home
|
||||||
|
- else
|
||||||
|
- Gem.use_paths @gem_home
|
||||||
|
- end
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
@@ -69,10 +68,24 @@
|
||||||
|
def uninstall
|
||||||
|
list = Gem::Specification.find_all_by_name(@gem, @version)
|
||||||
|
|
||||||
|
+ list, other_repo_specs = list.partition do |spec|
|
||||||
|
+ @gem_home == spec.base_dir or
|
||||||
|
+ (@user_install and spec.base_dir == Gem.user_dir)
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
if list.empty? then
|
||||||
|
- raise Gem::InstallError, "gem #{@gem.inspect} is not installed"
|
||||||
|
+ raise Gem::InstallError, "gem #{@gem.inspect} is not installed" if
|
||||||
|
+ other_repo_specs.empty?
|
||||||
|
+
|
||||||
|
+ other_repos = other_repo_specs.map { |spec| spec.base_dir }.uniq
|
||||||
|
+
|
||||||
|
+ message = ["#{@gem} is not installed in GEM_HOME, try:"]
|
||||||
|
+ message.concat other_repos.map { |repo|
|
||||||
|
+ "\tgem uninstall -i #{repo} #{@gem}"
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- elsif list.size > 1 and @force_all then
|
||||||
|
+ raise Gem::InstallError, message.join("\n")
|
||||||
|
+ elsif @force_all then
|
||||||
|
remove_all list
|
||||||
|
|
||||||
|
elsif list.size > 1 then
|
||||||
|
@@ -250,12 +263,10 @@
|
||||||
|
msg << "\t#{spec.full_name}"
|
||||||
|
|
||||||
|
spec.dependent_gems.each do |dep_spec, dep, satlist|
|
||||||
|
- msg <<
|
||||||
|
- ("#{dep_spec.name}-#{dep_spec.version} depends on " +
|
||||||
|
- "[#{dep.name} (#{dep.requirement})]")
|
||||||
|
+ msg << "#{dep_spec.name}-#{dep_spec.version} depends on #{dep}"
|
||||||
|
end
|
||||||
|
|
||||||
|
- msg << 'If you remove this gems, one or more dependencies will not be met.'
|
||||||
|
+ msg << 'If you remove this gem, one or more dependencies will not be met.'
|
||||||
|
msg << 'Continue with Uninstall?'
|
||||||
|
return ask_yes_no(msg.join("\n"), true)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb.orig 2011-11-03 08:58:31.411272176 +0100
|
||||||
|
+++ ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb 2011-11-03 08:58:43.010272351 +0100
|
||||||
|
@@ -225,7 +225,7 @@
|
||||||
|
|
||||||
|
uninstaller = Gem::Uninstaller.new('a')
|
||||||
|
|
||||||
|
- use_ui Gem::MockGemUi.new("2\n") do
|
||||||
|
+ use_ui Gem::MockGemUi.new("2\ny\n") do
|
||||||
|
uninstaller.uninstall
|
||||||
|
end
|
||||||
24
ruby-1.9.3-webrick-test-fix.patch
Normal file
24
ruby-1.9.3-webrick-test-fix.patch
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
diff --git a/test/webrick/test_cgi.rb b/test/webrick/test_cgi.rb
|
||||||
|
index 1185316..0ef1b37 100644
|
||||||
|
--- a/test/webrick/test_cgi.rb
|
||||||
|
+++ b/test/webrick/test_cgi.rb
|
||||||
|
@@ -14,6 +14,7 @@ class TestWEBrickCGI < Test::Unit::TestCase
|
||||||
|
def req.meta_vars
|
||||||
|
meta = super
|
||||||
|
meta["RUBYLIB"] = $:.join(File::PATH_SEPARATOR)
|
||||||
|
+ meta[RbConfig::CONFIG['LIBPATHENV']] = ENV[RbConfig::CONFIG['LIBPATHENV']]
|
||||||
|
return meta
|
||||||
|
end
|
||||||
|
},
|
||||||
|
diff --git a/test/webrick/test_filehandler.rb b/test/webrick/test_filehandler.rb
|
||||||
|
index bcdb3df..f78ba5c 100644
|
||||||
|
--- a/test/webrick/test_filehandler.rb
|
||||||
|
+++ b/test/webrick/test_filehandler.rb
|
||||||
|
@@ -252,6 +252,7 @@ class WEBrick::TestFileHandler < Test::Unit::TestCase
|
||||||
|
def req.meta_vars
|
||||||
|
meta = super
|
||||||
|
meta["RUBYLIB"] = $:.join(File::PATH_SEPARATOR)
|
||||||
|
+ meta[RbConfig::CONFIG['LIBPATHENV']] = ENV[RbConfig::CONFIG['LIBPATHENV']]
|
||||||
|
return meta
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
From bf4959bc763167b2245a5f4c699fcb72afead5a5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Fri, 18 Jan 2013 15:51:49 +0100
|
||||||
|
Subject: [PATCH] Expand ruby.pc variable by configuration process.
|
||||||
|
|
||||||
|
---
|
||||||
|
template/ruby.pc.in | 12 ++++++------
|
||||||
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/template/ruby.pc.in b/template/ruby.pc.in
|
||||||
|
index 2d6716c..25e42f3 100644
|
||||||
|
--- a/template/ruby.pc.in
|
||||||
|
+++ b/template/ruby.pc.in
|
||||||
|
@@ -25,12 +25,12 @@ LIBS=@LIBS@
|
||||||
|
DLDFLAGS=@DLDFLAGS@
|
||||||
|
ruby=${bindir}/${RUBY_INSTALL_NAME}@EXEEXT@
|
||||||
|
rubylibprefix=@rubylibprefix@
|
||||||
|
-rubylibdir=${rubylibprefix}/${ruby_version}
|
||||||
|
-vendordir=${rubylibprefix}/vendor_ruby
|
||||||
|
-sitedir=${rubylibprefix}/site_ruby
|
||||||
|
-rubyarchdir=${rubylibdir}/${arch}
|
||||||
|
-vendorarchdir=${vendordir}/${sitearch}
|
||||||
|
-sitearchdir=${sitedir}/${sitearch}
|
||||||
|
+rubylibdir=@rubylibprefix@
|
||||||
|
+vendordir=@vendordir@
|
||||||
|
+sitedir=@sitedir@
|
||||||
|
+rubyarchdir=@archdir@
|
||||||
|
+vendorarchdir=@vendorarchdir@
|
||||||
|
+sitearchdir=@sitearchdir@
|
||||||
|
rubyhdrdir=@rubyhdrdir@
|
||||||
|
vendorhdrdir=@vendorhdrdir@
|
||||||
|
sitehdrdir=@sitehdrdir@
|
||||||
|
--
|
||||||
|
1.8.0.2
|
||||||
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
From e1293f665128b0d9c5bfa0b5beeab4afebf07e6a Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
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}'
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
||||||
From 6062f4976c5b51f8b952b9f6745175be7b1c5ff9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
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$/
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
From 9e70f6e4b8771965a30ecfb6d1c6015df350ca55 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
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], [
|
|
||||||
|
|
@ -1,94 +0,0 @@
|
||||||
From c7952996ac9738a14bea0a1a971fea13460a6c94 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
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
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
From f833e213596b0bcfad8264a555eb5093303fb5f2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jarek Prokop <jprokop@redhat.com>
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
@ -1,257 +0,0 @@
|
||||||
From 5406ea4b4b13db747e5c1f8341bb257b4da04435 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
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?= <vondruch@redhat.com>
|
|
||||||
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?= <vondruch@redhat.com>
|
|
||||||
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?= <vondruch@redhat.com>
|
|
||||||
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
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
From 03b44a86b574dc0b63fd57c5f9b52b56ad3ced37 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
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') }
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
From 9b7cb6a40d73bb86ee0de34360068e90e80f4e7e Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
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
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
||||||
From 1cfb11bc8d01e4fc1ff47807721e29b250f0f19f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jarek Prokop <jprokop@redhat.com>
|
|
||||||
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 <XrXr@users.noreply.github.com>
|
|
||||||
---
|
|
||||||
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@)
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
@ -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$')
|
|
||||||
296
rubygems-1.8.11-binary-extensions.patch
Normal file
296
rubygems-1.8.11-binary-extensions.patch
Normal file
|
|
@ -0,0 +1,296 @@
|
||||||
|
From 5a37a3489491a33f2e7011043fbbcd9a765e1777 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Thu, 3 Nov 2011 16:43:05 +0100
|
||||||
|
Subject: [PATCH 1/6] Add dedicate extensions folder into $LOAD_PATH.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/rubygems/specification.rb | 37 ++++++++++++++++++++++++++++++-------
|
||||||
|
1 files changed, 30 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
|
||||||
|
index 97db19e..263e7d3 100644
|
||||||
|
--- a/lib/rubygems/specification.rb
|
||||||
|
+++ b/lib/rubygems/specification.rb
|
||||||
|
@@ -843,6 +843,12 @@ class Gem::Specification
|
||||||
|
File.join full_gem_path, path
|
||||||
|
end
|
||||||
|
|
||||||
|
+ unless extensions.empty?
|
||||||
|
+ paths += require_paths.map do |path|
|
||||||
|
+ File.join ext_dir, path
|
||||||
|
+ end
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
# gem directories must come after -I and ENV['RUBYLIB']
|
||||||
|
insert_index = Gem.load_path_insert_index
|
||||||
|
|
||||||
|
@@ -954,16 +960,16 @@ class Gem::Specification
|
||||||
|
|
||||||
|
def contains_requirable_file? file
|
||||||
|
root = full_gem_path
|
||||||
|
+ ext = ext_dir
|
||||||
|
+
|
||||||
|
+ require_paths.any? do |lib|
|
||||||
|
+ base = ["#{root}/#{lib}/#{file}"]
|
||||||
|
+ base << "#{ext}/#{lib}/#{file}" unless extensions.empty?
|
||||||
|
|
||||||
|
- require_paths.each do |lib|
|
||||||
|
- base = "#{root}/#{lib}/#{file}"
|
||||||
|
- Gem.suffixes.each do |suf|
|
||||||
|
- path = "#{base}#{suf}"
|
||||||
|
- return true if File.file? path
|
||||||
|
+ base.any? do |path|
|
||||||
|
+ Gem.suffixes.any? { |suf| File.file? "#{path}#{suf}" }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-
|
||||||
|
- return false
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
@@ -1273,6 +1279,23 @@ class Gem::Specification
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
+ # Returns the full path to this spec's ext directory.
|
||||||
|
+ # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
|
||||||
|
+
|
||||||
|
+ def ext_dir
|
||||||
|
+ @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ ##
|
||||||
|
+ # Returns the full path to the exts directory containing this spec's
|
||||||
|
+ # gem directory. eg: /usr/local/lib/ruby/1.8/exts
|
||||||
|
+
|
||||||
|
+ def exts_dir
|
||||||
|
+ # TODO: this logic seems terribly broken, but tests fail if just base_dir
|
||||||
|
+ @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ ##
|
||||||
|
# Deprecated and ignored, defaults to true.
|
||||||
|
#
|
||||||
|
# Formerly used to indicate this gem was RDoc-capable.
|
||||||
|
--
|
||||||
|
1.7.7.3
|
||||||
|
|
||||||
|
|
||||||
|
From 671e4285bf9db948bc5f054d7d3d931cdd7a17f8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Wed, 16 Nov 2011 13:26:48 +0100
|
||||||
|
Subject: [PATCH 2/6] Use spec's ext dir for extension installation.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/rubygems/installer.rb | 2 +-
|
||||||
|
lib/rubygems/specification.rb | 7 +++----
|
||||||
|
2 files changed, 4 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
|
||||||
|
index 74d803d..0063c7f 100644
|
||||||
|
--- a/lib/rubygems/installer.rb
|
||||||
|
+++ b/lib/rubygems/installer.rb
|
||||||
|
@@ -499,7 +499,7 @@ TEXT
|
||||||
|
def build_extensions
|
||||||
|
return if spec.extensions.empty?
|
||||||
|
say "Building native extensions. This could take a while..."
|
||||||
|
- dest_path = File.join gem_dir, spec.require_paths.first
|
||||||
|
+ dest_path = spec.ext_dir
|
||||||
|
ran_rake = false # only run rake once
|
||||||
|
|
||||||
|
spec.extensions.each do |extension|
|
||||||
|
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
|
||||||
|
index 263e7d3..d31b93b 100644
|
||||||
|
--- a/lib/rubygems/specification.rb
|
||||||
|
+++ b/lib/rubygems/specification.rb
|
||||||
|
@@ -1283,16 +1283,15 @@ class Gem::Specification
|
||||||
|
# eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
|
||||||
|
|
||||||
|
def ext_dir
|
||||||
|
- @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
|
||||||
|
+ @ext_dir ||= File.join exts_dir, full_name, require_paths.first
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns the full path to the exts directory containing this spec's
|
||||||
|
- # gem directory. eg: /usr/local/lib/ruby/1.8/exts
|
||||||
|
+ # gem directory. eg: /usr/local/lib/ruby/1.8/gems
|
||||||
|
|
||||||
|
def exts_dir
|
||||||
|
- # TODO: this logic seems terribly broken, but tests fail if just base_dir
|
||||||
|
- @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
|
||||||
|
+ @exts_dir ||= gems_dir
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
--
|
||||||
|
1.7.7.3
|
||||||
|
|
||||||
|
|
||||||
|
From 11b4a0cbadd8b1d3320f838881aa60feb6f848e7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Wed, 16 Nov 2011 14:52:16 +0100
|
||||||
|
Subject: [PATCH 3/6] Simplify the extending of $LOAD_PATH for binary gems.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/rubygems/specification.rb | 11 +++++------
|
||||||
|
1 files changed, 5 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
|
||||||
|
index d31b93b..e65ea2d 100644
|
||||||
|
--- a/lib/rubygems/specification.rb
|
||||||
|
+++ b/lib/rubygems/specification.rb
|
||||||
|
@@ -843,11 +843,7 @@ class Gem::Specification
|
||||||
|
File.join full_gem_path, path
|
||||||
|
end
|
||||||
|
|
||||||
|
- unless extensions.empty?
|
||||||
|
- paths += require_paths.map do |path|
|
||||||
|
- File.join ext_dir, path
|
||||||
|
- end
|
||||||
|
- end
|
||||||
|
+ paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
|
||||||
|
|
||||||
|
# gem directories must come after -I and ENV['RUBYLIB']
|
||||||
|
insert_index = Gem.load_path_insert_index
|
||||||
|
@@ -1291,7 +1287,10 @@ class Gem::Specification
|
||||||
|
# gem directory. eg: /usr/local/lib/ruby/1.8/gems
|
||||||
|
|
||||||
|
def exts_dir
|
||||||
|
- @exts_dir ||= gems_dir
|
||||||
|
+ @exts_dir ||= begin
|
||||||
|
+ dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
|
||||||
|
+ dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
|
||||||
|
+ end
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
--
|
||||||
|
1.7.7.3
|
||||||
|
|
||||||
|
|
||||||
|
From 5d46cd2b1ac9517a9cbcfa430261e62bb3a376b8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Fri, 9 Dec 2011 16:31:04 +0100
|
||||||
|
Subject: [PATCH 4/6] Fix the binary extension search path construction.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/rubygems/installer.rb | 2 +-
|
||||||
|
lib/rubygems/specification.rb | 4 ++--
|
||||||
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
|
||||||
|
index 0063c7f..83b8fd5 100644
|
||||||
|
--- a/lib/rubygems/installer.rb
|
||||||
|
+++ b/lib/rubygems/installer.rb
|
||||||
|
@@ -499,7 +499,7 @@ TEXT
|
||||||
|
def build_extensions
|
||||||
|
return if spec.extensions.empty?
|
||||||
|
say "Building native extensions. This could take a while..."
|
||||||
|
- dest_path = spec.ext_dir
|
||||||
|
+ dest_path = File.join spec.ext_dir, spec.require_paths.first
|
||||||
|
ran_rake = false # only run rake once
|
||||||
|
|
||||||
|
spec.extensions.each do |extension|
|
||||||
|
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
|
||||||
|
index e65ea2d..8be2ade 100644
|
||||||
|
--- a/lib/rubygems/specification.rb
|
||||||
|
+++ b/lib/rubygems/specification.rb
|
||||||
|
@@ -843,7 +843,7 @@ class Gem::Specification
|
||||||
|
File.join full_gem_path, path
|
||||||
|
end
|
||||||
|
|
||||||
|
- paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
|
||||||
|
+ paths << File.join(ext_dir, require_paths.first) unless extensions.empty? || (ext_dir == full_gem_path)
|
||||||
|
|
||||||
|
# gem directories must come after -I and ENV['RUBYLIB']
|
||||||
|
insert_index = Gem.load_path_insert_index
|
||||||
|
@@ -1279,7 +1279,7 @@ class Gem::Specification
|
||||||
|
# eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
|
||||||
|
|
||||||
|
def ext_dir
|
||||||
|
- @ext_dir ||= File.join exts_dir, full_name, require_paths.first
|
||||||
|
+ @ext_dir ||= File.join exts_dir, full_name
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
--
|
||||||
|
1.7.7.3
|
||||||
|
|
||||||
|
|
||||||
|
From 6229583633802b45e5a3e5689ab9077347cd9ef7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Tue, 13 Dec 2011 12:14:54 +0100
|
||||||
|
Subject: [PATCH 5/6] Remove binary extensions during uninstall.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/rubygems/uninstaller.rb | 1 +
|
||||||
|
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rubygems/uninstaller.rb b/lib/rubygems/uninstaller.rb
|
||||||
|
index cc32ea4..94d78e0 100644
|
||||||
|
--- a/lib/rubygems/uninstaller.rb
|
||||||
|
+++ b/lib/rubygems/uninstaller.rb
|
||||||
|
@@ -213,6 +213,7 @@ class Gem::Uninstaller
|
||||||
|
File.writable?(spec.base_dir)
|
||||||
|
|
||||||
|
FileUtils.rm_rf spec.full_gem_path
|
||||||
|
+ FileUtils.rm_rf spec.ext_dir
|
||||||
|
|
||||||
|
# TODO: should this be moved to spec?... I vote eww (also exists in docmgr)
|
||||||
|
old_platform_name = [spec.name,
|
||||||
|
--
|
||||||
|
1.7.7.3
|
||||||
|
|
||||||
|
|
||||||
|
From bc40e1b9f60a9a04456e3504ffe6ee600b6da269 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
|
Date: Tue, 13 Dec 2011 14:27:14 +0100
|
||||||
|
Subject: [PATCH 6/6] Avoid dependency on customized operating_system.rb.
|
||||||
|
|
||||||
|
---
|
||||||
|
lib/rubygems/defaults.rb | 11 +++++++++++
|
||||||
|
lib/rubygems/specification.rb | 5 +----
|
||||||
|
2 files changed, 12 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
|
||||||
|
index 20b4198..6d8711f 100644
|
||||||
|
--- a/lib/rubygems/defaults.rb
|
||||||
|
+++ b/lib/rubygems/defaults.rb
|
||||||
|
@@ -87,6 +87,17 @@ module Gem
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
+ # Returns binary extensions dir for specified RubyGems base dir or nil
|
||||||
|
+ # if such directory cannot be determined.
|
||||||
|
+ #
|
||||||
|
+ # By default, the binary extensions are located side by side with their
|
||||||
|
+ # Ruby counterparts, therefore nil is returned
|
||||||
|
+
|
||||||
|
+ def self.default_ext_dir_for base_dir
|
||||||
|
+ nil
|
||||||
|
+ end
|
||||||
|
+
|
||||||
|
+ ##
|
||||||
|
# The default system-wide source info cache directory
|
||||||
|
|
||||||
|
def self.default_system_source_cache_dir
|
||||||
|
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
|
||||||
|
index 8be2ade..f54210a 100644
|
||||||
|
--- a/lib/rubygems/specification.rb
|
||||||
|
+++ b/lib/rubygems/specification.rb
|
||||||
|
@@ -1287,10 +1287,7 @@ class Gem::Specification
|
||||||
|
# gem directory. eg: /usr/local/lib/ruby/1.8/gems
|
||||||
|
|
||||||
|
def exts_dir
|
||||||
|
- @exts_dir ||= begin
|
||||||
|
- dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
|
||||||
|
- dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
|
||||||
|
- end
|
||||||
|
+ @exts_dir ||= Gem.default_ext_dir_for(base_dir) || gems_dir
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
--
|
||||||
|
1.7.7.3
|
||||||
|
|
||||||
|
|
@ -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}$
|
|
||||||
52
rubygems.con
52
rubygems.con
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
88
rubygems.req
88
rubygems.req
|
|
@ -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
|
|
||||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
||||||
SHA512 (ruby-4.0.1.tar.xz) = b67d9d1f97ba30200d103f8454e39dc2d0450819d51d91eb5451d44b0bafc56d2fa48bb1be6c5081babe5828f679984bad02b9bcee7441f6bd34c0a95b8f200b
|
a893cff26bcf351b8975ebf2a63b1023 ruby-1.9.3-p448.tar.gz
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue