Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
bea32eafdb | ||
|
603d5bcb0d | ||
|
0a36cfbd1b | ||
|
b75ade43da | ||
|
581a67640d | ||
|
bbb75e646f | ||
|
f6e0b7bfc3 | ||
|
0626aac23a | ||
|
de154d4802 | ||
|
9b01046539 | ||
|
70c675d663 | ||
|
04a81668f1 | ||
|
c250b79137 | ||
|
6442d2b1c2 | ||
|
ac48241710 | ||
|
bca35bc20f | ||
|
92d5fbdb7d | ||
|
43f0bad6ce |
6
.cvsignore → .gitignore
vendored
6
.cvsignore → .gitignore
vendored
@ -1,5 +1,5 @@
|
||||
ruby-1.8.6-p287.tar.bz2
|
||||
ruby-refm-rdp-1.8.1-ja-html.tar.gz
|
||||
ruby-1.8.6-p388.tar.bz2
|
||||
ruby-refm-rdp-1.8.2-ja-html.tar.gz
|
||||
rubyfaq-990927.tar.gz
|
||||
rubyfaq-jp-990927.tar.gz
|
||||
ruby-refm-rdp-1.8.2-ja-html.tar.gz
|
||||
ruby-1.8.6-p399.tar.bz2
|
21
Makefile
21
Makefile
@ -1,21 +0,0 @@
|
||||
# Makefile for source rpm: ruby
|
||||
# $Id: Makefile,v 1.1 2004/09/09 11:54:27 cvsdist Exp $
|
||||
NAME := ruby
|
||||
SPECFILE = $(firstword $(wildcard *.spec))
|
||||
|
||||
define find-makefile-common
|
||||
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||
|
||||
ifeq ($(MAKEFILE_COMMON),)
|
||||
# attempt a checkout
|
||||
define checkout-makefile-common
|
||||
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||
endif
|
||||
|
||||
include $(MAKEFILE_COMMON)
|
@ -1,3 +0,0 @@
|
||||
ruby-1_8_6_287-4_fc10:HEAD:ruby-1.8.6.287-4.fc10.src.rpm:1237096558
|
||||
ruby-1_8_6_287-5_fc10:HEAD:ruby-1.8.6.287-5.fc10.src.rpm:1237096677
|
||||
ruby-1_8_6_287-7_fc11:HEAD:ruby-1.8.6.287-7.fc11.src.rpm:1237351812
|
@ -98,16 +98,3 @@ diff -ur ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.c ruby-1.8.6-p287/ext/
|
||||
if (key) {
|
||||
i = strlen(key);
|
||||
i = (i > num) ? num : i;
|
||||
diff -ur ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.h ruby-1.8.6-p287/ext/openssl/openssl_missing.h
|
||||
--- ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.h 2008-08-04 06:43:34.000000000 +0200
|
||||
+++ ruby-1.8.6-p287/ext/openssl/openssl_missing.h 2009-03-15 05:33:56.000000000 +0100
|
||||
@@ -120,8 +120,6 @@
|
||||
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
|
||||
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx);
|
||||
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx);
|
||||
-int BN_rand_range(BIGNUM *r, BIGNUM *range);
|
||||
-int BN_pseudo_rand_range(BIGNUM *r, BIGNUM *range);
|
||||
char *CONF_get1_default_config_file(void);
|
||||
int PEM_def_callback(char *buf, int num, int w, void *key);
|
||||
|
||||
Only in ruby-1.8.6-p287/ext/openssl: .openssl_missing.h.swp
|
||||
|
35
ruby-1.8.6-p369-ri-gem_multipath.patch
Normal file
35
ruby-1.8.6-p369-ri-gem_multipath.patch
Normal file
@ -0,0 +1,35 @@
|
||||
--- ruby-1.8.6-p369/lib/rdoc/ri/ri_options.rb.gemmulti 2007-02-13 08:01:19.000000000 +0900
|
||||
+++ ruby-1.8.6-p369/lib/rdoc/ri/ri_options.rb 2009-10-14 23:51:09.000000000 +0900
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
[ "--gems", nil, nil,
|
||||
"Include documentation from Rubygems:\n " +
|
||||
- (RI::Paths::GEMDIRS ? "#{Gem.path}/doc/*/ri" :
|
||||
+ (RI::Paths::GEMDIRS ? Gem.path.map {|path| "#{path}/doc/*/ri" }.join(', ') :
|
||||
"No Rubygems ri found.") ],
|
||||
|
||||
[ "--format", "-f", "<name>",
|
||||
@@ -136,7 +136,11 @@
|
||||
RI::Paths::HOMEDIR
|
||||
]
|
||||
|
||||
- directories << "#{Gem.path}/doc/*/ri" if RI::Paths::GEMDIRS
|
||||
+ if RI::Paths::GEMDIRS
|
||||
+ Gem.path.each {|gempath|
|
||||
+ directories << "#{gempath}/doc/*/ri"
|
||||
+ }
|
||||
+ end
|
||||
|
||||
directories = directories.join("\n ")
|
||||
|
||||
--- ruby-1.8.6-p369/lib/rdoc/ri/ri_paths.rb.gemmulti 2007-02-13 08:01:19.000000000 +0900
|
||||
+++ ruby-1.8.6-p369/lib/rdoc/ri/ri_paths.rb 2009-10-15 00:02:05.000000000 +0900
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
begin
|
||||
require 'rubygems'
|
||||
- GEMDIRS = Dir["#{Gem.path}/doc/*/ri"]
|
||||
+ GEMDIRS = Gem.path.map {|path| Dir["#{path}/doc/*/ri"]}.flatten
|
||||
GEMDIRS.each { |path| RI::Paths::PATH << path }
|
||||
rescue LoadError
|
||||
GEMDIRS = nil
|
11
ruby-1.8.6-p383-mkmf-use-shared.patch
Normal file
11
ruby-1.8.6-p383-mkmf-use-shared.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- ruby-1.8.6-p383/lib/mkmf.rb.static 2009-03-31 18:19:39.000000000 +0900
|
||||
+++ ruby-1.8.6-p383/lib/mkmf.rb 2009-12-09 15:03:19.000000000 +0900
|
||||
@@ -275,7 +275,7 @@
|
||||
'LDFLAGS' => "#$LDFLAGS #{ldflags}",
|
||||
'LIBPATH' => libpathflag(libpath),
|
||||
'LOCAL_LIBS' => "#$LOCAL_LIBS #$libs",
|
||||
- 'LIBS' => "#$LIBRUBYARG_STATIC #{opt} #$LIBS")
|
||||
+ 'LIBS' => "#$LIBRUBYARG_SHARED #{opt} #$LIBS")
|
||||
Config::expand(TRY_LINK.dup, conf)
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
|
||||
--- ruby-1.8.6-p287.orig/configure.in 2008-07-13 00:03:28.000000000 +0900
|
||||
+++ ruby-1.8.6-p287/configure.in 2008-08-14 01:08:00.000000000 +0900
|
||||
@@ -1608,6 +1608,13 @@ case "$target_os" in
|
||||
diff -ur ruby-1.8.6-p383.0-deadcode/configure.in ruby-1.8.6-p383/configure.in
|
||||
--- ruby-1.8.6-p383.0-deadcode/configure.in 2009-07-20 15:24:22.000000000 +0200
|
||||
+++ ruby-1.8.6-p383/configure.in 2009-10-22 16:37:13.729623476 +0200
|
||||
@@ -1613,6 +1613,13 @@
|
||||
rubyw_install_name="$RUBYW_INSTALL_NAME"
|
||||
;;
|
||||
esac
|
||||
@ -15,12 +15,12 @@ diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
|
||||
case "$target_os" in
|
||||
cygwin*|mingw*|*djgpp*|os2-emx*)
|
||||
RUBY_LIB_PREFIX="/lib/ruby"
|
||||
@@ -1616,20 +1623,29 @@ case "$target_os" in
|
||||
RUBY_LIB_PREFIX="${prefix}/lib/ruby"
|
||||
@@ -1621,20 +1628,30 @@
|
||||
RUBY_LIB_PREFIX="`eval "echo ${libdir}"`/ruby"
|
||||
;;
|
||||
esac
|
||||
+else
|
||||
+ RUBY_LIB_PREFIX="${with_ruby_prefix}/ruby"
|
||||
+ RUBY_LIB_PREFIX="${with_ruby_prefix}/ruby"
|
||||
+fi
|
||||
RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}"
|
||||
+RUBY_LIB_PATH2="${libdir}/ruby/${MAJOR}.${MINOR}"
|
||||
@ -28,12 +28,13 @@ diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
|
||||
AC_ARG_WITH(sitedir,
|
||||
[ --with-sitedir=DIR site libraries in DIR [PREFIX/lib/ruby/site_ruby]],
|
||||
[sitedir=$withval],
|
||||
[sitedir='${prefix}/lib/ruby/site_ruby'])
|
||||
[sitedir="`eval "echo ${libdir}"`/ruby/site_ruby"])
|
||||
-SITE_DIR=`eval echo \\"${sitedir}\\"`
|
||||
+SITE_DIR=`eval echo \\"${sitedir}\\" | sed -e "s/lib64/lib/"`
|
||||
+_fc_sitedir="\$(DESTDIR)${sitedir}"
|
||||
+SITE_DIR2=`eval echo \\"${_fc_sitedir}\\"`
|
||||
+sitedir=`eval echo \\"${sitedir}\\" | sed -e "s/lib64/lib/"`
|
||||
+
|
||||
case "$target_os" in
|
||||
cygwin*|mingw*|*djgpp*|os2-emx*)
|
||||
RUBY_SITE_LIB_PATH="`expr "$SITE_DIR" : "$prefix\(/.*\)"`" ||
|
||||
@ -47,7 +48,7 @@ diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
|
||||
RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}"
|
||||
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
|
||||
@@ -1639,6 +1655,7 @@ AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RU
|
||||
@@ -1644,6 +1661,7 @@
|
||||
AC_SUBST(arch)dnl
|
||||
AC_SUBST(sitearch)dnl
|
||||
AC_SUBST(sitedir)dnl
|
||||
@ -55,7 +56,7 @@ diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
|
||||
|
||||
configure_args=$ac_configure_args
|
||||
AC_SUBST(configure_args)dnl
|
||||
@@ -1647,7 +1664,7 @@ if test "$fat_binary" != no ; then
|
||||
@@ -1652,7 +1670,7 @@
|
||||
arch="fat-${target_os}"
|
||||
|
||||
AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB,
|
||||
@ -64,7 +65,7 @@ diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
|
||||
|
||||
AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB,
|
||||
"${RUBY_SITE_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
|
||||
@@ -1662,8 +1679,8 @@ case "$target_os" in
|
||||
@@ -1667,8 +1685,8 @@
|
||||
*) sitearch="${arch}" ;;
|
||||
esac
|
||||
|
||||
@ -75,10 +76,12 @@ diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
|
||||
|
||||
AC_ARG_WITH(search-path,
|
||||
[ --with-search-path=DIR specify the additional search path],
|
||||
diff -pruN ruby-1.8.6-p287.orig/mkconfig.rb ruby-1.8.6-p287/mkconfig.rb
|
||||
--- ruby-1.8.6-p287.orig/mkconfig.rb 2008-06-08 01:37:10.000000000 +0900
|
||||
+++ ruby-1.8.6-p287/mkconfig.rb 2008-08-14 01:08:00.000000000 +0900
|
||||
@@ -139,10 +139,10 @@ print(*v_fast)
|
||||
Only in ruby-1.8.6-p383/: configure.in.orig
|
||||
Only in ruby-1.8.6-p383/: configure.in.rej
|
||||
diff -ur ruby-1.8.6-p383.0-deadcode/mkconfig.rb ruby-1.8.6-p383/mkconfig.rb
|
||||
--- ruby-1.8.6-p383.0-deadcode/mkconfig.rb 2008-06-07 18:37:10.000000000 +0200
|
||||
+++ ruby-1.8.6-p383/mkconfig.rb 2009-10-22 16:30:55.776872493 +0200
|
||||
@@ -139,10 +139,10 @@
|
||||
print(*v_others)
|
||||
print <<EOS
|
||||
CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
|
239
ruby-1.8.6-simplify-openssl-digest.patch
Normal file
239
ruby-1.8.6-simplify-openssl-digest.patch
Normal file
@ -0,0 +1,239 @@
|
||||
diff --git a/ext/openssl/lib/openssl/digest.rb b/ext/openssl/lib/openssl/digest.rb
|
||||
index b3e4484..4810f01 100644
|
||||
--- a/ext/openssl/lib/openssl/digest.rb
|
||||
+++ b/ext/openssl/lib/openssl/digest.rb
|
||||
@@ -19,13 +19,17 @@
|
||||
#require 'openssl'
|
||||
|
||||
module OpenSSL
|
||||
- module Digest
|
||||
+ class Digest
|
||||
|
||||
alg = %w(DSS DSS1 MD2 MD4 MD5 MDC2 RIPEMD160 SHA SHA1)
|
||||
if OPENSSL_VERSION_NUMBER > 0x00908000
|
||||
alg += %w(SHA224 SHA256 SHA384 SHA512)
|
||||
end
|
||||
|
||||
+ def self.digest(name, data)
|
||||
+ super(data, name)
|
||||
+ end
|
||||
+
|
||||
alg.each{|name|
|
||||
klass = Class.new(Digest){
|
||||
define_method(:initialize){|*data|
|
||||
@@ -44,6 +48,14 @@ module OpenSSL
|
||||
const_set(name, klass)
|
||||
}
|
||||
|
||||
+ # This class is only provided for backwards compatibility. Use OpenSSL::Digest in the future.
|
||||
+ class Digest < Digest
|
||||
+ def initialize(*args)
|
||||
+ # add warning
|
||||
+ super(*args)
|
||||
+ end
|
||||
+ end
|
||||
+
|
||||
end # Digest
|
||||
end # OpenSSL
|
||||
|
||||
diff --git a/ext/openssl/ossl_digest.c b/ext/openssl/ossl_digest.c
|
||||
index 4096b09..b0308f0 100644
|
||||
--- a/ext/openssl/ossl_digest.c
|
||||
+++ b/ext/openssl/ossl_digest.c
|
||||
@@ -40,7 +40,7 @@ GetDigestPtr(VALUE obj)
|
||||
|
||||
SafeGetDigest(obj, ctx);
|
||||
|
||||
- return EVP_MD_CTX_md(ctx); /*== ctx->digest*/
|
||||
+ return EVP_MD_CTX_md(ctx);
|
||||
}
|
||||
|
||||
VALUE
|
||||
@@ -51,7 +51,6 @@ ossl_digest_new(const EVP_MD *md)
|
||||
|
||||
ret = ossl_digest_alloc(cDigest);
|
||||
GetDigest(ret, ctx);
|
||||
- EVP_MD_CTX_init(ctx);
|
||||
EVP_DigestInit_ex(ctx, md, NULL);
|
||||
|
||||
return ret;
|
||||
@@ -69,9 +68,8 @@ ossl_digest_alloc(VALUE klass)
|
||||
ctx = EVP_MD_CTX_create();
|
||||
if (ctx == NULL)
|
||||
ossl_raise(rb_eRuntimeError, "EVP_MD_CTX_create() failed");
|
||||
- EVP_MD_CTX_init(ctx);
|
||||
obj = Data_Wrap_Struct(klass, 0, EVP_MD_CTX_destroy, ctx);
|
||||
-
|
||||
+
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -86,14 +84,9 @@ ossl_digest_initialize(int argc, VALUE *argv, VALUE self)
|
||||
VALUE type, data;
|
||||
|
||||
rb_scan_args(argc, argv, "11", &type, &data);
|
||||
- StringValue(type);
|
||||
+ md = GetDigestPtr(type);
|
||||
if (!NIL_P(data)) StringValue(data);
|
||||
- name = StringValuePtr(type);
|
||||
-
|
||||
- md = EVP_get_digestbyname(name);
|
||||
- if (!md) {
|
||||
- ossl_raise(rb_eRuntimeError, "Unsupported digest algorithm (%s).", name);
|
||||
- }
|
||||
+
|
||||
GetDigest(self, ctx);
|
||||
EVP_DigestInit_ex(ctx, md, NULL);
|
||||
|
||||
@@ -141,75 +134,25 @@ ossl_digest_update(VALUE self, VALUE data)
|
||||
return self;
|
||||
}
|
||||
|
||||
-static void
|
||||
-digest_final(EVP_MD_CTX *ctx, char **buf, int *buf_len)
|
||||
-{
|
||||
- EVP_MD_CTX final;
|
||||
-
|
||||
- if (!EVP_MD_CTX_copy(&final, ctx)) {
|
||||
- ossl_raise(eDigestError, NULL);
|
||||
- }
|
||||
- if (!(*buf = OPENSSL_malloc(EVP_MD_CTX_size(&final)))) {
|
||||
- EVP_MD_CTX_cleanup(&final);
|
||||
- ossl_raise(eDigestError, "Cannot allocate mem for digest");
|
||||
- }
|
||||
- EVP_DigestFinal_ex(&final, *buf, buf_len);
|
||||
- EVP_MD_CTX_cleanup(&final);
|
||||
-}
|
||||
-
|
||||
-static VALUE
|
||||
-ossl_digest_digest(VALUE self)
|
||||
-{
|
||||
- EVP_MD_CTX *ctx;
|
||||
- char *buf;
|
||||
- int buf_len;
|
||||
- VALUE digest;
|
||||
-
|
||||
- GetDigest(self, ctx);
|
||||
- digest_final(ctx, &buf, &buf_len);
|
||||
- digest = ossl_buf2str(buf, buf_len);
|
||||
-
|
||||
- return digest;
|
||||
-}
|
||||
-
|
||||
static VALUE
|
||||
-ossl_digest_hexdigest(VALUE self)
|
||||
+ossl_digest_finish(int argc, VALUE *argv, VALUE self)
|
||||
{
|
||||
EVP_MD_CTX *ctx;
|
||||
- char *buf, *hexbuf;
|
||||
- int buf_len;
|
||||
- VALUE hexdigest;
|
||||
+ VALUE str;
|
||||
+ rb_scan_args(argc, argv, "01", &str);
|
||||
|
||||
GetDigest(self, ctx);
|
||||
- digest_final(ctx, &buf, &buf_len);
|
||||
- if (string2hex(buf, buf_len, &hexbuf, NULL) != 2 * buf_len) {
|
||||
- OPENSSL_free(buf);
|
||||
- ossl_raise(eDigestError, "Memory alloc error");
|
||||
+ if (NIL_P(str)) {
|
||||
+ str = rb_str_new(NULL, EVP_MD_CTX_size(ctx));
|
||||
+ } else {
|
||||
+ StringValue(str);
|
||||
+ rb_str_resize(str, EVP_MD_CTX_size(ctx));
|
||||
}
|
||||
- OPENSSL_free(buf);
|
||||
- hexdigest = ossl_buf2str(hexbuf, 2 * buf_len);
|
||||
|
||||
- return hexdigest;
|
||||
-}
|
||||
-
|
||||
-static VALUE
|
||||
-ossl_digest_s_digest(VALUE klass, VALUE str, VALUE data)
|
||||
-{
|
||||
- VALUE obj = rb_class_new_instance(1, &str, klass);
|
||||
+ EVP_DigestFinal_ex(ctx, RSTRING_PTR(str), NULL);
|
||||
|
||||
- ossl_digest_update(obj, data);
|
||||
+ return str;
|
||||
|
||||
- return ossl_digest_digest(obj);
|
||||
-}
|
||||
-
|
||||
-static VALUE
|
||||
-ossl_digest_s_hexdigest(VALUE klass, VALUE str, VALUE data)
|
||||
-{
|
||||
- VALUE obj = rb_class_new_instance(1, &str, klass);
|
||||
-
|
||||
- ossl_digest_update(obj, data);
|
||||
-
|
||||
- return ossl_digest_hexdigest(obj);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
@@ -258,41 +201,44 @@ ossl_digest_size(VALUE self)
|
||||
return INT2NUM(EVP_MD_CTX_size(ctx));
|
||||
}
|
||||
|
||||
+static VALUE
|
||||
+ossl_digest_block_length(VALUE self)
|
||||
+{
|
||||
+ EVP_MD_CTX *ctx;
|
||||
+
|
||||
+ GetDigest(self, ctx);
|
||||
+
|
||||
+ return INT2NUM(EVP_MD_CTX_block_size(ctx));
|
||||
+}
|
||||
+
|
||||
+
|
||||
/*
|
||||
* INIT
|
||||
*/
|
||||
void
|
||||
Init_ossl_digest()
|
||||
{
|
||||
+ rb_require("openssl");
|
||||
+ rb_require("digest");
|
||||
+
|
||||
#if 0 /* let rdoc know about mOSSL */
|
||||
mOSSL = rb_define_module("OpenSSL");
|
||||
#endif
|
||||
|
||||
- mDigest = rb_define_module_under(mOSSL, "Digest");
|
||||
-
|
||||
- eDigestError = rb_define_class_under(mDigest, "DigestError", eOSSLError);
|
||||
-
|
||||
- cDigest = rb_define_class_under(mDigest, "Digest", rb_cObject);
|
||||
-
|
||||
+ cDigest = rb_define_class_under(mOSSL, "Digest", rb_path2class("Digest::Class"));
|
||||
+ eDigestError = rb_define_class_under(cDigest, "DigestError", eOSSLError);
|
||||
+
|
||||
rb_define_alloc_func(cDigest, ossl_digest_alloc);
|
||||
- rb_define_singleton_method(cDigest, "digest", ossl_digest_s_digest, 2);
|
||||
- rb_define_singleton_method(cDigest, "hexdigest", ossl_digest_s_hexdigest, 2);
|
||||
-
|
||||
+
|
||||
rb_define_method(cDigest, "initialize", ossl_digest_initialize, -1);
|
||||
- rb_define_method(cDigest, "reset", ossl_digest_reset, 0);
|
||||
-
|
||||
rb_define_copy_func(cDigest, ossl_digest_copy);
|
||||
-
|
||||
- rb_define_method(cDigest, "digest", ossl_digest_digest, 0);
|
||||
- rb_define_method(cDigest, "hexdigest", ossl_digest_hexdigest, 0);
|
||||
- rb_define_alias(cDigest, "inspect", "hexdigest");
|
||||
- rb_define_alias(cDigest, "to_s", "hexdigest");
|
||||
-
|
||||
+ rb_define_method(cDigest, "reset", ossl_digest_reset, 0);
|
||||
rb_define_method(cDigest, "update", ossl_digest_update, 1);
|
||||
rb_define_alias(cDigest, "<<", "update");
|
||||
-
|
||||
- rb_define_method(cDigest, "==", ossl_digest_equal, 1);
|
||||
-
|
||||
+ rb_define_private_method(cDigest, "finish", ossl_digest_finish, -1);
|
||||
+ rb_define_method(cDigest, "digest_length", ossl_digest_size, 0);
|
||||
+ rb_define_method(cDigest, "block_length", ossl_digest_block_length, 0);
|
||||
+
|
||||
rb_define_method(cDigest, "name", ossl_digest_name, 0);
|
||||
- rb_define_method(cDigest, "size", ossl_digest_size, 0);
|
||||
}
|
||||
+
|
@ -1,16 +0,0 @@
|
||||
diff -pruN ruby-1.8.6-p111.orig/ext/socket/socket.c ruby-1.8.6-p111/ext/socket/socket.c
|
||||
--- ruby-1.8.6-p111.orig/ext/socket/socket.c 2007-05-23 00:08:43.000000000 +0900
|
||||
+++ ruby-1.8.6-p111/ext/socket/socket.c 2008-02-19 11:24:22.000000000 +0900
|
||||
@@ -893,10 +893,10 @@ port_str(port, pbuf, len)
|
||||
}
|
||||
|
||||
#ifndef NI_MAXHOST
|
||||
-# define 1025
|
||||
+# define NI_MAXHOST 1025
|
||||
#endif
|
||||
#ifndef NI_MAXSERV
|
||||
-# define 32
|
||||
+# define NI_MAXSERV 32
|
||||
#endif
|
||||
|
||||
static struct addrinfo*
|
111
ruby-1.8head-irb-save-history.patch
Normal file
111
ruby-1.8head-irb-save-history.patch
Normal file
@ -0,0 +1,111 @@
|
||||
Thu Jul 23 15:04:20 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
|
||||
|
||||
ruby* lib/irb.rb, lib/irb/init.rb, lib/irb/ext/save-history.rb: add
|
||||
ruby IRB::irb_at_exit. no use finalizer saving history. [ruby-dev-38563]
|
||||
|
||||
Index: lib/irb/ext/save-history.rb
|
||||
===================================================================
|
||||
--- lib/irb/ext/save-history.rb (revision 24225)
|
||||
+++ lib/irb/ext/save-history.rb (revision 24254)
|
||||
@@ -50,23 +50,24 @@
|
||||
module HistorySavingAbility
|
||||
include Readline
|
||||
|
||||
- def HistorySavingAbility.create_finalizer
|
||||
- proc do
|
||||
- if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
|
||||
- if hf = IRB.conf[:HISTORY_FILE]
|
||||
- file = File.expand_path(hf)
|
||||
- end
|
||||
- file = IRB.rc_file("_history") unless file
|
||||
- open(file, 'w' ) do |f|
|
||||
- hist = HISTORY.to_a
|
||||
- f.puts(hist[-num..-1] || hist)
|
||||
- end
|
||||
- end
|
||||
- end
|
||||
- end
|
||||
+# def HistorySavingAbility.create_finalizer
|
||||
+# proc do
|
||||
+# if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
|
||||
+# if hf = IRB.conf[:HISTORY_FILE]
|
||||
+# file = File.expand_path(hf)
|
||||
+# end
|
||||
+# file = IRB.rc_file("_history") unless file
|
||||
+# open(file, 'w' ) do |f|
|
||||
+# hist = HISTORY.to_a
|
||||
+# f.puts(hist[-num..-1] || hist)
|
||||
+# end
|
||||
+# end
|
||||
+# end
|
||||
+# end
|
||||
|
||||
def HistorySavingAbility.extended(obj)
|
||||
- ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer)
|
||||
+# ObjectSpace.define_finalizer(obj, HistorySavingAbility.create_finalizer)
|
||||
+ IRB.conf[:AT_EXIT].push proc{obj.save_history}
|
||||
obj.load_history
|
||||
obj
|
||||
end
|
||||
@@ -80,6 +81,19 @@
|
||||
end
|
||||
end
|
||||
end
|
||||
+
|
||||
+ def save_history
|
||||
+ if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
|
||||
+ if history_file = IRB.conf[:HISTORY_FILE]
|
||||
+ history_file = File.expand_path(history_file)
|
||||
+ end
|
||||
+ history_file = IRB.rc_file("_history") unless history_file
|
||||
+ open(history_file, 'w' ) do |f|
|
||||
+ hist = HISTORY.to_a
|
||||
+ f.puts(hist[-num..-1] || hist)
|
||||
+ end
|
||||
+ end
|
||||
+ end
|
||||
end
|
||||
end
|
||||
|
||||
Index: lib/irb/init.rb
|
||||
===================================================================
|
||||
--- lib/irb/init.rb (revision 24225)
|
||||
+++ lib/irb/init.rb (revision 24254)
|
||||
@@ -114,6 +114,8 @@
|
||||
# @CONF[:LC_MESSAGES] = "en"
|
||||
@CONF[:LC_MESSAGES] = Locale.new
|
||||
|
||||
+ @CONF[:AT_EXIT] = []
|
||||
+
|
||||
@CONF[:DEBUG_LEVEL] = 1
|
||||
end
|
||||
|
||||
Index: lib/irb.rb
|
||||
===================================================================
|
||||
--- lib/irb.rb (revision 24225)
|
||||
+++ lib/irb.rb (revision 24254)
|
||||
@@ -65,13 +65,21 @@
|
||||
trap("SIGINT") do
|
||||
irb.signal_handle
|
||||
end
|
||||
-
|
||||
- catch(:IRB_EXIT) do
|
||||
- irb.eval_input
|
||||
+
|
||||
+ begin
|
||||
+ catch(:IRB_EXIT) do
|
||||
+ irb.eval_input
|
||||
+ end
|
||||
+ ensure
|
||||
+ irb_at_exit
|
||||
end
|
||||
# print "\n"
|
||||
end
|
||||
|
||||
+ def IRB.irb_at_exit
|
||||
+ @CONF[:AT_EXIT].each{|hook| hook.call}
|
||||
+ end
|
||||
+
|
||||
def IRB.irb_exit(irb, ret)
|
||||
throw :IRB_EXIT, ret
|
||||
end
|
176
ruby-openssl-1.0.patch
Normal file
176
ruby-openssl-1.0.patch
Normal file
@ -0,0 +1,176 @@
|
||||
diff -up ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c.ossl10 ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c
|
||||
--- ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c.ossl10 2007-02-13 00:01:19.000000000 +0100
|
||||
+++ ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl.c 2009-08-26 12:29:41.000000000 +0200
|
||||
@@ -92,7 +92,7 @@ ossl_x509_ary2sk(VALUE ary)
|
||||
|
||||
#define OSSL_IMPL_SK2ARY(name, type) \
|
||||
VALUE \
|
||||
-ossl_##name##_sk2ary(STACK *sk) \
|
||||
+ossl_##name##_sk2ary(STACK_OF(type) *sk) \
|
||||
{ \
|
||||
type *t; \
|
||||
int i, num; \
|
||||
@@ -102,7 +102,7 @@ ossl_##name##_sk2ary(STACK *sk) \
|
||||
OSSL_Debug("empty sk!"); \
|
||||
return Qnil; \
|
||||
} \
|
||||
- num = sk_num(sk); \
|
||||
+ num = sk_##type##_num(sk); \
|
||||
if (num < 0) { \
|
||||
OSSL_Debug("items in sk < -1???"); \
|
||||
return rb_ary_new(); \
|
||||
@@ -110,7 +110,7 @@ ossl_##name##_sk2ary(STACK *sk) \
|
||||
ary = rb_ary_new2(num); \
|
||||
\
|
||||
for (i=0; i<num; i++) { \
|
||||
- t = (type *)sk_value(sk, i); \
|
||||
+ t = sk_##type##_value(sk, i); \
|
||||
rb_ary_push(ary, ossl_##name##_new(t)); \
|
||||
} \
|
||||
return ary; \
|
||||
diff -up ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_pkcs7.c.ossl10 ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_pkcs7.c
|
||||
--- ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_pkcs7.c.ossl10 2007-02-13 00:01:19.000000000 +0100
|
||||
+++ ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_pkcs7.c 2009-08-26 12:53:05.000000000 +0200
|
||||
@@ -543,12 +543,11 @@ ossl_pkcs7_add_certificate(VALUE self, V
|
||||
return self;
|
||||
}
|
||||
|
||||
-static STACK *
|
||||
-pkcs7_get_certs_or_crls(VALUE self, int want_certs)
|
||||
+static STACK_OF(X509) *
|
||||
+pkcs7_get_certs(VALUE self)
|
||||
{
|
||||
PKCS7 *pkcs7;
|
||||
STACK_OF(X509) *certs;
|
||||
- STACK_OF(X509_CRL) *crls;
|
||||
int i;
|
||||
|
||||
GetPKCS7(self, pkcs7);
|
||||
@@ -556,17 +555,38 @@ pkcs7_get_certs_or_crls(VALUE self, int
|
||||
switch(i){
|
||||
case NID_pkcs7_signed:
|
||||
certs = pkcs7->d.sign->cert;
|
||||
- crls = pkcs7->d.sign->crl;
|
||||
break;
|
||||
case NID_pkcs7_signedAndEnveloped:
|
||||
certs = pkcs7->d.signed_and_enveloped->cert;
|
||||
+ break;
|
||||
+ default:
|
||||
+ certs = NULL;
|
||||
+ }
|
||||
+
|
||||
+ return certs;
|
||||
+}
|
||||
+
|
||||
+static STACK_OF(X509_CRL) *
|
||||
+pkcs7_get_crls(VALUE self)
|
||||
+{
|
||||
+ PKCS7 *pkcs7;
|
||||
+ STACK_OF(X509_CRL) *crls;
|
||||
+ int i;
|
||||
+
|
||||
+ GetPKCS7(self, pkcs7);
|
||||
+ i = OBJ_obj2nid(pkcs7->type);
|
||||
+ switch(i){
|
||||
+ case NID_pkcs7_signed:
|
||||
+ crls = pkcs7->d.sign->crl;
|
||||
+ break;
|
||||
+ case NID_pkcs7_signedAndEnveloped:
|
||||
crls = pkcs7->d.signed_and_enveloped->crl;
|
||||
break;
|
||||
default:
|
||||
- certs = crls = NULL;
|
||||
+ crls = NULL;
|
||||
}
|
||||
|
||||
- return want_certs ? certs : crls;
|
||||
+ return crls;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
@@ -581,7 +601,7 @@ ossl_pkcs7_set_certificates(VALUE self,
|
||||
STACK_OF(X509) *certs;
|
||||
X509 *cert;
|
||||
|
||||
- certs = pkcs7_get_certs_or_crls(self, 1);
|
||||
+ certs = pkcs7_get_certs(self);
|
||||
while((cert = sk_X509_pop(certs))) X509_free(cert);
|
||||
rb_iterate(rb_each, ary, ossl_pkcs7_set_certs_i, self);
|
||||
|
||||
@@ -591,7 +611,7 @@ ossl_pkcs7_set_certificates(VALUE self,
|
||||
static VALUE
|
||||
ossl_pkcs7_get_certificates(VALUE self)
|
||||
{
|
||||
- return ossl_x509_sk2ary(pkcs7_get_certs_or_crls(self, 1));
|
||||
+ return ossl_x509_sk2ary(pkcs7_get_certs(self));
|
||||
}
|
||||
|
||||
static VALUE
|
||||
@@ -621,7 +641,7 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ar
|
||||
STACK_OF(X509_CRL) *crls;
|
||||
X509_CRL *crl;
|
||||
|
||||
- crls = pkcs7_get_certs_or_crls(self, 0);
|
||||
+ crls = pkcs7_get_crls(self);
|
||||
while((crl = sk_X509_CRL_pop(crls))) X509_CRL_free(crl);
|
||||
rb_iterate(rb_each, ary, ossl_pkcs7_set_crls_i, self);
|
||||
|
||||
@@ -631,7 +651,7 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ar
|
||||
static VALUE
|
||||
ossl_pkcs7_get_crls(VALUE self)
|
||||
{
|
||||
- return ossl_x509crl_sk2ary(pkcs7_get_certs_or_crls(self, 0));
|
||||
+ return ossl_x509crl_sk2ary(pkcs7_get_crls(self));
|
||||
}
|
||||
|
||||
static VALUE
|
||||
diff -up ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c.ossl10 ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c
|
||||
--- ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c.ossl10 2007-03-12 05:12:32.000000000 +0100
|
||||
+++ ruby-1.8.6.369/ruby-1.8.6-p369/ext/openssl/ossl_ssl.c 2009-08-26 12:08:48.000000000 +0200
|
||||
@@ -89,12 +89,18 @@ static char *ossl_sslctx_attrs[] = {
|
||||
static char *ossl_ssl_attr_readers[] = { "io", "context", };
|
||||
static char *ossl_ssl_attrs[] = { "sync_close", };
|
||||
|
||||
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
+#define OSSL_MORE_CONST const
|
||||
+#define STACK _STACK
|
||||
+#else
|
||||
+#define OSSL_MORE_CONST
|
||||
+#endif
|
||||
/*
|
||||
* SSLContext class
|
||||
*/
|
||||
struct {
|
||||
const char *name;
|
||||
- SSL_METHOD *(*func)(void);
|
||||
+ OSSL_MORE_CONST SSL_METHOD *(*func)(void);
|
||||
} ossl_ssl_method_tab[] = {
|
||||
#define OSSL_SSL_METHOD_ENTRY(name) { #name, name##_method }
|
||||
OSSL_SSL_METHOD_ENTRY(TLSv1),
|
||||
@@ -144,7 +150,7 @@ static VALUE
|
||||
ossl_sslctx_initialize(int argc, VALUE *argv, VALUE self)
|
||||
{
|
||||
VALUE ssl_method;
|
||||
- SSL_METHOD *method = NULL;
|
||||
+ OSSL_MORE_CONST SSL_METHOD *method = NULL;
|
||||
SSL_CTX *ctx;
|
||||
int i;
|
||||
char *s;
|
||||
@@ -407,7 +413,7 @@ ossl_sslctx_setup(VALUE self)
|
||||
}
|
||||
|
||||
static VALUE
|
||||
-ossl_ssl_cipher_to_ary(SSL_CIPHER *cipher)
|
||||
+ossl_ssl_cipher_to_ary(OSSL_MORE_CONST SSL_CIPHER *cipher)
|
||||
{
|
||||
VALUE ary;
|
||||
int bits, alg_bits;
|
||||
@@ -805,7 +811,7 @@ static VALUE
|
||||
ossl_ssl_get_cipher(VALUE self)
|
||||
{
|
||||
SSL *ssl;
|
||||
- SSL_CIPHER *cipher;
|
||||
+ OSSL_MORE_CONST SSL_CIPHER *cipher;
|
||||
|
||||
Data_Get_Struct(self, SSL, ssl);
|
||||
if (!ssl) {
|
130
ruby.spec
130
ruby.spec
@ -1,6 +1,6 @@
|
||||
%define rubyxver 1.8
|
||||
%define rubyver 1.8.6
|
||||
%define _patchlevel 287
|
||||
%define _patchlevel 399
|
||||
%define dotpatchlevel %{?_patchlevel:.%{_patchlevel}}
|
||||
%define patchlevel %{?_patchlevel:-p%{_patchlevel}}
|
||||
%define arcver %{rubyver}%{?patchlevel}
|
||||
@ -12,15 +12,22 @@
|
||||
|
||||
# emacs sitelisp directory
|
||||
%{!?_emacs_sitelispdir: %global _emacs_sitelispdir %{_datadir}/emacs/site-lisp}
|
||||
%{!?_emacs_sitestartdir: %global _emacs_sitelispdir %{_datadir}/emacs/site-lisp/site-start.d}
|
||||
%{!?_emacs_sitestartdir: %global _emacs_sitestartdir %{_datadir}/emacs/site-lisp/site-start.d}
|
||||
|
||||
Name: ruby
|
||||
Version: %{rubyver}%{?dotpatchlevel}
|
||||
Release: 8%{?dist}
|
||||
Release: 1%{?dist}
|
||||
License: Ruby or GPLv2
|
||||
URL: http://www.ruby-lang.org/
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildRequires: readline readline-devel ncurses ncurses-devel gdbm gdbm-devel glibc-devel tcl-devel tk-devel libX11-devel autoconf gcc unzip openssl-devel db4-devel byacc
|
||||
%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6
|
||||
BuildRequires: compat-readline5-devel
|
||||
%else
|
||||
BuildRequires: readline readline-devel
|
||||
%endif
|
||||
BuildRequires: ncurses ncurses-devel gdbm gdbm-devel glibc-devel tcl-devel tk-devel libX11-devel autoconf gcc unzip openssl-devel db4-devel byacc
|
||||
# Use bison to recreate parse.c (ref: bug 530275 comment 4)
|
||||
BuildRequires: bison
|
||||
BuildRequires: emacs
|
||||
|
||||
Source0: ftp://ftp.ruby-lang.org/pub/%{name}/%{rubyxver}/%{name}-%{arcver}.tar.bz2
|
||||
@ -34,15 +41,26 @@ Source4: irb.1
|
||||
Source10: ruby-mode-init.el
|
||||
|
||||
Patch1: ruby-deadcode.patch
|
||||
Patch20: ruby-rubyprefix.patch
|
||||
Patch20: ruby-1.8.6-p383-rubyprefix.patch
|
||||
Patch21: ruby-deprecated-sitelib-search-path.patch
|
||||
Patch22: ruby-deprecated-search-path.patch
|
||||
Patch23: ruby-multilib.patch
|
||||
Patch25: ruby-1.8.6.111-gcc43.patch
|
||||
# Needed in 1.8.6-p287, no longer needed in 1.8.6-p368?
|
||||
#Patch25: ruby-1.8.6.111-gcc43.patch
|
||||
Patch26: ruby-1.8.6-rexml-CVE-2008-3790.patch
|
||||
Patch27: ruby-1.8.6-p287-CVE-2008-5189.patch
|
||||
Patch28: ruby-1.8.6-p287-remove-ssl-rand-range.patch
|
||||
Patch29: ruby-always-use-i386.patch
|
||||
Patch30: ruby-openssl-1.0.patch
|
||||
Patch31: ruby-1.8.6-p369-ri-gem_multipath.patch
|
||||
# Patch32 from ruby_1_8 branch
|
||||
Patch32: ruby-1.8head-irb-save-history.patch
|
||||
Patch33: ruby-1.8.6-p383-mkmf-use-shared.patch
|
||||
# Testing
|
||||
# Patch34 disabled for now
|
||||
Patch34: ruby-1.8.6-simplify-openssl-digest.patch
|
||||
# bz 580993
|
||||
Patch35: ruby_1_8_7-gc-open4_096segv.patch
|
||||
|
||||
Summary: An interpreter of object-oriented scripting language
|
||||
Group: Development/Languages
|
||||
@ -73,12 +91,20 @@ This package includes the libruby, necessary to run Ruby.
|
||||
Summary: A Ruby development environment
|
||||
Group: Development/Languages
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
Provides: %{name}-libs-static = %{version}-%{release}
|
||||
#Provides: %{name}-libs-static = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
Header files and libraries for building a extension library for the
|
||||
Ruby or an application embedded Ruby.
|
||||
|
||||
%package static
|
||||
Summary: Static libraries for Ruby development environment
|
||||
Group: Development/Languages
|
||||
Requires: %{name}-devel = %{version}-%{release}
|
||||
|
||||
%description static
|
||||
Static libraries for for building a extension library for the
|
||||
Ruby or an application embedded Ruby.
|
||||
|
||||
%package tcltk
|
||||
Summary: Tcl/Tk interface for scripting language Ruby
|
||||
@ -129,7 +155,7 @@ Manuals and FAQs for the object-oriented scripting language Ruby.
|
||||
|
||||
|
||||
%package mode
|
||||
Summary: Emacs Lisp ruby-mode for the scripting language Ruby
|
||||
Summary: Emacs Lisp for the scripting language Ruby
|
||||
Group: Applications/Editors
|
||||
Requires: emacs-common
|
||||
|
||||
@ -167,11 +193,18 @@ pushd %{name}-%{arcver}
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
%endif
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
#%patch25 -p1
|
||||
#%patch26 -p1
|
||||
%patch27 -p0
|
||||
%patch28 -p1
|
||||
%patch29 -p1
|
||||
%patch30 -p2
|
||||
%patch31 -p1
|
||||
%patch32 -p0
|
||||
%patch33 -p1
|
||||
# Once kill patch34 due to build failure on actionpack
|
||||
#%%patch34 -p1
|
||||
%patch35 -p1
|
||||
popd
|
||||
|
||||
%build
|
||||
@ -196,8 +229,17 @@ export CFLAGS
|
||||
--enable-pthread \
|
||||
--with-lookup-order-hack=INET \
|
||||
--disable-rpath \
|
||||
%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6
|
||||
--with-readline-include=%{_includedir}/readline5 \
|
||||
--with-readline-lib=%{_libdir}/readline5 \
|
||||
%endif
|
||||
--with-ruby-prefix=%{_prefix}/lib
|
||||
|
||||
# For example ext/socket/extconf.rb uses try_run (for getaddrinfo test),
|
||||
# which executes conftest and setting LD_LIBRARY_PATH for libruby.so is
|
||||
# needed.
|
||||
export LD_LIBRARY_PATH=$(pwd)
|
||||
|
||||
make RUBY_INSTALL_NAME=ruby %{?_smp_mflags} COPY="cp -p" %{?_smp_mflags}
|
||||
%ifarch ia64
|
||||
# Miscompilation? Buggy code?
|
||||
@ -389,9 +431,13 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%doc %{name}-%{arcver}/README.EXT
|
||||
%lang(ja) %doc %{name}-%{arcver}/README.EXT.ja
|
||||
%{_libdir}/libruby.so
|
||||
%{_libdir}/libruby-static.a
|
||||
#%%{_libdir}/libruby-static.a
|
||||
%{_libdir}/ruby/%{rubyxver}/*/*.h
|
||||
|
||||
%files static
|
||||
%defattr(-, root, root, -)
|
||||
%{_libdir}/libruby-static.a
|
||||
|
||||
%files libs
|
||||
%defattr(-, root, root, -)
|
||||
%doc %{name}-%{arcver}/README
|
||||
@ -404,8 +450,12 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%dir %{_prefix}/lib/ruby
|
||||
%dir %{_prefix}/lib/ruby/%{rubyxver}
|
||||
%ifnarch ppc64 s390x sparc64 x86_64
|
||||
%if "%{_gnu}" == "-gnueabi"
|
||||
%dir %{_prefix}/lib/ruby/%{rubyxver}/%{_normalized_cpu}-%{_target_os}-eabi
|
||||
%else
|
||||
%dir %{_prefix}/lib/ruby/%{rubyxver}/%{_normalized_cpu}-%{_target_os}
|
||||
%endif
|
||||
%endif
|
||||
%ifarch ppc64 s390x sparc64 x86_64
|
||||
%dir %{_libdir}/ruby
|
||||
%dir %{_libdir}/ruby/%{rubyxver}
|
||||
@ -530,6 +580,64 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_emacs_sitestartdir}/ruby-mode-init.el
|
||||
|
||||
%changelog
|
||||
* Tue Apr 27 2010 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.399-1
|
||||
- Update to 1.8.6 p 399 (bug 579675)
|
||||
- Patch to fix gc bug causing open4 crash (bug 580993)
|
||||
|
||||
* Fri Mar 12 2010 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.388-9
|
||||
- F-14: rebuild against new gdbm
|
||||
|
||||
* Thu Jan 28 2010 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp>
|
||||
- Once revert the previous change (patch34)
|
||||
|
||||
* Wed Jan 27 2010 Jeroen van Meeuwen <j.van.meeuwen@ogd.nl> - 1.8.6.388-8
|
||||
- Backport openssl/digest functions providing digest and hexdigest functions
|
||||
directly in OpenSSL::Digest.methods
|
||||
- Make sure that Red Hat people version their changelog entries
|
||||
- This is actually release #1, but now needs to be release #7
|
||||
|
||||
* Mon Jan 18 2010 Akira TAGOH <tagoh@redhat.com> - 1.8.6.388-1
|
||||
- Add conditional for RHEL.
|
||||
|
||||
* Wed Jan 13 2010 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.383-6
|
||||
- CVE-2009-4492 ruby WEBrick log escape sequence (bug 554485)
|
||||
|
||||
* Wed Dec 9 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.383-5
|
||||
- Change mkmf.rb to use LIBRUBYARG_SHARED so that have_library() works
|
||||
without libruby-static.a (bug 428384)
|
||||
- And move libruby-static.a to -static subpackage
|
||||
|
||||
* Thu Oct 29 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.383-4
|
||||
- Use bison to regenerate parse.c to keep the original format of error
|
||||
messages (bug 530275 comment 4)
|
||||
|
||||
* Sun Oct 25 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.383-3
|
||||
- Patch so that irb saves its history (bug 518584, ruby issue 1556)
|
||||
|
||||
* Sat Oct 24 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.383-2
|
||||
- Update to 1.8.6 patchlevel 383 (bug 520063)
|
||||
|
||||
* Wed Oct 14 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.369-5
|
||||
- Much better idea for Patch31 provided by Akira TAGOH <tagoh@redhat.com>
|
||||
|
||||
* Wed Oct 14 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.369-4
|
||||
- Fix the search path of ri command for ri manuals installed with gem
|
||||
(bug 528787)
|
||||
|
||||
* Wed Aug 26 2009 Tomas Mraz <tmraz@redhat.com> - 1.8.6.369-3
|
||||
- Rebuild against new openssl
|
||||
|
||||
* Thu Jul 23 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.369-2
|
||||
- Make sure that readline.so is linked against readline 5 because
|
||||
Ruby is under GPLv2
|
||||
|
||||
* Sat Jun 20 2009 Jeroen van Meeuwen <kanarip@fedoraproject.org> - 1.8.6.369-1
|
||||
- New patchlevel fixing CVE-2009-1904
|
||||
- Fix directory on ARM (#506233, Kedar Sovani)
|
||||
|
||||
* Sun May 31 2009 Jeroen van Meeuwen <j.van.meeuwen@ogd.nl> - 1.8.6.368-1
|
||||
- New upstream release (p368)
|
||||
|
||||
* Sat Apr 11 2009 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.287-8
|
||||
- Merge Review fix (#226381)
|
||||
|
||||
|
351
ruby_1_8_7-gc-open4_096segv.patch
Normal file
351
ruby_1_8_7-gc-open4_096segv.patch
Normal file
@ -0,0 +1,351 @@
|
||||
Index: ruby_1_8_7/marshal.c
|
||||
===================================================================
|
||||
--- ruby_1_8_7/marshal.c (revision 26075)
|
||||
+++ ruby_1_8_7/marshal.c (revision 26076)
|
||||
@@ -85,12 +85,10 @@
|
||||
static ID s_getc, s_read, s_write, s_binmode;
|
||||
|
||||
struct dump_arg {
|
||||
- VALUE obj;
|
||||
VALUE str, dest;
|
||||
st_table *symbols;
|
||||
st_table *data;
|
||||
int taint;
|
||||
- VALUE wrapper;
|
||||
};
|
||||
|
||||
struct dump_call_arg {
|
||||
@@ -104,22 +102,32 @@
|
||||
struct dump_arg *arg;
|
||||
ID sym;
|
||||
{
|
||||
- if (!DATA_PTR(arg->wrapper)) {
|
||||
+ if (!arg->symbols) {
|
||||
rb_raise(rb_eRuntimeError, "Marshal.dump reentered at %s",
|
||||
rb_id2name(sym));
|
||||
}
|
||||
}
|
||||
|
||||
+static void clear_dump_arg _((struct dump_arg *arg));
|
||||
+
|
||||
static void
|
||||
mark_dump_arg(ptr)
|
||||
void *ptr;
|
||||
{
|
||||
struct dump_arg *p = ptr;
|
||||
- if (!ptr)
|
||||
+ if (!p->symbols)
|
||||
return;
|
||||
rb_mark_set(p->data);
|
||||
}
|
||||
|
||||
+static void
|
||||
+free_dump_arg(ptr)
|
||||
+ void *ptr;
|
||||
+{
|
||||
+ clear_dump_arg(ptr);
|
||||
+ xfree(ptr);
|
||||
+}
|
||||
+
|
||||
static VALUE
|
||||
class2path(klass)
|
||||
VALUE klass;
|
||||
@@ -699,32 +707,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
-static VALUE
|
||||
-dump(arg)
|
||||
- struct dump_call_arg *arg;
|
||||
-{
|
||||
- w_object(arg->obj, arg->arg, arg->limit);
|
||||
- if (arg->arg->dest) {
|
||||
- rb_io_write(arg->arg->dest, arg->arg->str);
|
||||
- rb_str_resize(arg->arg->str, 0);
|
||||
- }
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-static VALUE
|
||||
-dump_ensure(arg)
|
||||
+static void
|
||||
+clear_dump_arg(arg)
|
||||
struct dump_arg *arg;
|
||||
{
|
||||
- if (!DATA_PTR(arg->wrapper)) return 0;
|
||||
+ if (!arg->symbols) return;
|
||||
st_free_table(arg->symbols);
|
||||
+ arg->symbols = 0;
|
||||
st_free_table(arg->data);
|
||||
- DATA_PTR(arg->wrapper) = 0;
|
||||
- arg->wrapper = 0;
|
||||
if (arg->taint) {
|
||||
OBJ_TAINT(arg->str);
|
||||
}
|
||||
-
|
||||
- return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -760,8 +753,8 @@
|
||||
{
|
||||
VALUE obj, port, a1, a2;
|
||||
int limit = -1;
|
||||
- struct dump_arg arg;
|
||||
- struct dump_call_arg c_arg;
|
||||
+ struct dump_arg *arg;
|
||||
+ VALUE wrapper;
|
||||
|
||||
port = Qnil;
|
||||
rb_scan_args(argc, argv, "12", &obj, &a1, &a2);
|
||||
@@ -775,37 +768,40 @@
|
||||
else if (NIL_P(a1)) goto type_error;
|
||||
else port = a1;
|
||||
}
|
||||
- arg.dest = 0;
|
||||
- arg.symbols = st_init_numtable();
|
||||
- arg.data = st_init_numtable();
|
||||
- arg.taint = Qfalse;
|
||||
- arg.str = rb_str_buf_new(0);
|
||||
- RBASIC(arg.str)->klass = 0;
|
||||
- arg.wrapper = Data_Wrap_Struct(rb_cData, mark_dump_arg, 0, &arg);
|
||||
+ wrapper = Data_Make_Struct(rb_cData, struct dump_arg, mark_dump_arg, free_dump_arg, arg);
|
||||
+ arg->dest = 0;
|
||||
+ arg->symbols = st_init_numtable();
|
||||
+ arg->data = st_init_numtable();
|
||||
+ arg->taint = Qfalse;
|
||||
+ arg->str = rb_str_buf_new(0);
|
||||
+ RBASIC(arg->str)->klass = 0;
|
||||
if (!NIL_P(port)) {
|
||||
if (!rb_respond_to(port, s_write)) {
|
||||
type_error:
|
||||
rb_raise(rb_eTypeError, "instance of IO needed");
|
||||
}
|
||||
- arg.dest = port;
|
||||
+ arg->dest = port;
|
||||
if (rb_respond_to(port, s_binmode)) {
|
||||
rb_funcall2(port, s_binmode, 0, 0);
|
||||
- check_dump_arg(&arg, s_binmode);
|
||||
+ check_dump_arg(arg, s_binmode);
|
||||
}
|
||||
}
|
||||
else {
|
||||
- port = arg.str;
|
||||
+ port = arg->str;
|
||||
}
|
||||
|
||||
- c_arg.obj = obj;
|
||||
- c_arg.arg = &arg;
|
||||
- c_arg.limit = limit;
|
||||
+ w_byte(MARSHAL_MAJOR, arg);
|
||||
+ w_byte(MARSHAL_MINOR, arg);
|
||||
|
||||
- w_byte(MARSHAL_MAJOR, &arg);
|
||||
- w_byte(MARSHAL_MINOR, &arg);
|
||||
+ w_object(obj, arg, limit);
|
||||
+ if (arg->dest) {
|
||||
+ rb_io_write(arg->dest, arg->str);
|
||||
+ rb_str_resize(arg->str, 0);
|
||||
+ }
|
||||
|
||||
- rb_ensure(dump, (VALUE)&c_arg, dump_ensure, (VALUE)&arg);
|
||||
- RBASIC(arg.str)->klass = rb_cString;
|
||||
+ RBASIC(arg->str)->klass = rb_cString;
|
||||
+ clear_dump_arg(arg);
|
||||
+ RB_GC_GUARD(wrapper);
|
||||
|
||||
return port;
|
||||
}
|
||||
@@ -817,7 +813,6 @@
|
||||
st_table *data;
|
||||
VALUE proc;
|
||||
int taint;
|
||||
- VALUE wrapper;
|
||||
};
|
||||
|
||||
static void
|
||||
@@ -825,22 +820,31 @@
|
||||
struct load_arg *arg;
|
||||
ID sym;
|
||||
{
|
||||
- if (!DATA_PTR(arg->wrapper)) {
|
||||
+ if (!arg->symbols) {
|
||||
rb_raise(rb_eRuntimeError, "Marshal.load reentered at %s",
|
||||
rb_id2name(sym));
|
||||
}
|
||||
}
|
||||
|
||||
+static void clear_load_arg _((struct load_arg *arg));
|
||||
+
|
||||
static void
|
||||
mark_load_arg(ptr)
|
||||
void *ptr;
|
||||
{
|
||||
struct load_arg *p = ptr;
|
||||
- if (!ptr)
|
||||
+ if (!p->symbols)
|
||||
return;
|
||||
rb_mark_tbl(p->data);
|
||||
}
|
||||
|
||||
+static void
|
||||
+free_load_arg(void *ptr)
|
||||
+{
|
||||
+ clear_load_arg(ptr);
|
||||
+ xfree(ptr);
|
||||
+}
|
||||
+
|
||||
static VALUE r_object _((struct load_arg *arg));
|
||||
|
||||
static int
|
||||
@@ -1415,23 +1419,14 @@
|
||||
return r_object0(arg, arg->proc, 0, Qnil);
|
||||
}
|
||||
|
||||
-static VALUE
|
||||
-load(arg)
|
||||
+static void
|
||||
+clear_load_arg(arg)
|
||||
struct load_arg *arg;
|
||||
{
|
||||
- return r_object(arg);
|
||||
-}
|
||||
-
|
||||
-static VALUE
|
||||
-load_ensure(arg)
|
||||
- struct load_arg *arg;
|
||||
-{
|
||||
- if (!DATA_PTR(arg->wrapper)) return 0;
|
||||
+ if (!arg->symbols) return;
|
||||
st_free_table(arg->symbols);
|
||||
+ arg->symbols = 0;
|
||||
st_free_table(arg->data);
|
||||
- DATA_PTR(arg->wrapper) = 0;
|
||||
- arg->wrapper = 0;
|
||||
- return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1451,35 +1446,37 @@
|
||||
VALUE *argv;
|
||||
{
|
||||
VALUE port, proc;
|
||||
- int major, minor;
|
||||
- VALUE v;
|
||||
- struct load_arg arg;
|
||||
+ int major, minor, taint = Qfalse;
|
||||
+ VALUE v, wrapper;
|
||||
+ struct load_arg *arg;
|
||||
|
||||
rb_scan_args(argc, argv, "11", &port, &proc);
|
||||
v = rb_check_string_type(port);
|
||||
if (!NIL_P(v)) {
|
||||
- arg.taint = OBJ_TAINTED(port); /* original taintedness */
|
||||
+ taint = OBJ_TAINTED(port); /* original taintedness */
|
||||
port = v;
|
||||
}
|
||||
else if (rb_respond_to(port, s_getc) && rb_respond_to(port, s_read)) {
|
||||
if (rb_respond_to(port, s_binmode)) {
|
||||
rb_funcall2(port, s_binmode, 0, 0);
|
||||
}
|
||||
- arg.taint = Qtrue;
|
||||
+ taint = Qtrue;
|
||||
}
|
||||
else {
|
||||
rb_raise(rb_eTypeError, "instance of IO needed");
|
||||
}
|
||||
- arg.src = port;
|
||||
- arg.offset = 0;
|
||||
- arg.symbols = st_init_numtable();
|
||||
- arg.data = st_init_numtable();
|
||||
- arg.proc = 0;
|
||||
- arg.wrapper = Data_Wrap_Struct(rb_cData, mark_load_arg, 0, &arg);
|
||||
+ wrapper = Data_Make_Struct(rb_cData, struct load_arg, mark_load_arg, free_load_arg, arg);
|
||||
+ arg->src = port;
|
||||
+ arg->offset = 0;
|
||||
+ arg->symbols = st_init_numtable();
|
||||
+ arg->data = st_init_numtable();
|
||||
+ arg->proc = 0;
|
||||
+ arg->taint = taint;
|
||||
|
||||
- major = r_byte(&arg);
|
||||
- minor = r_byte(&arg);
|
||||
+ major = r_byte(arg);
|
||||
+ minor = r_byte(arg);
|
||||
if (major != MARSHAL_MAJOR || minor > MARSHAL_MINOR) {
|
||||
+ clear_load_arg(arg);
|
||||
rb_raise(rb_eTypeError, "incompatible marshal file format (can't be read)\n\
|
||||
\tformat version %d.%d required; %d.%d given",
|
||||
MARSHAL_MAJOR, MARSHAL_MINOR, major, minor);
|
||||
@@ -1490,8 +1487,10 @@
|
||||
MARSHAL_MAJOR, MARSHAL_MINOR, major, minor);
|
||||
}
|
||||
|
||||
- if (!NIL_P(proc)) arg.proc = proc;
|
||||
- v = rb_ensure(load, (VALUE)&arg, load_ensure, (VALUE)&arg);
|
||||
+ if (!NIL_P(proc)) arg->proc = proc;
|
||||
+ v = r_object(arg);
|
||||
+ clear_load_arg(arg);
|
||||
+ RB_GC_GUARD(wrapper);
|
||||
|
||||
return v;
|
||||
}
|
||||
Index: ruby_1_8_7/test/ruby/test_marshal.rb
|
||||
===================================================================
|
||||
--- ruby_1_8_7/test/ruby/test_marshal.rb (revision 26075)
|
||||
+++ ruby_1_8_7/test/ruby/test_marshal.rb (revision 26076)
|
||||
@@ -71,4 +71,41 @@
|
||||
}
|
||||
assert_equal("marshal data too short", e.message)
|
||||
end
|
||||
+
|
||||
+ class DumpTest
|
||||
+ def marshal_dump
|
||||
+ loop { Thread.pass }
|
||||
+ end
|
||||
+ end
|
||||
+
|
||||
+ class LoadTest
|
||||
+ def marshal_dump
|
||||
+ nil
|
||||
+ end
|
||||
+ def marshal_load(obj)
|
||||
+ loop { Thread.pass }
|
||||
+ end
|
||||
+ end
|
||||
+
|
||||
+ def test_context_switch
|
||||
+ o = DumpTest.new
|
||||
+ Thread.new { Marshal.dump(o) }
|
||||
+ GC.start
|
||||
+ assert(true, '[ruby-dev:39425]')
|
||||
+
|
||||
+ o = LoadTest.new
|
||||
+ m = Marshal.dump(o)
|
||||
+ Thread.new { Marshal.load(m) }
|
||||
+ GC.start
|
||||
+ assert(true, '[ruby-dev:39425]')
|
||||
+ end
|
||||
+
|
||||
+ def test_taint
|
||||
+ x = Object.new
|
||||
+ x.taint
|
||||
+ s = Marshal.dump(x)
|
||||
+ assert_equal(true, s.tainted?)
|
||||
+ y = Marshal.load(s)
|
||||
+ assert_equal(true, y.tainted?)
|
||||
+ end
|
||||
end
|
||||
Index: ruby_1_8_7/ruby.h
|
||||
===================================================================
|
||||
--- ruby_1_8_7/ruby.h (revision 16014)
|
||||
+++ ruby_1_8_7/ruby.h (revision 16015)
|
||||
@@ -224,6 +224,8 @@
|
||||
|
||||
#define TYPE(x) rb_type((VALUE)(x))
|
||||
|
||||
+#define RB_GC_GUARD(v) (*(volatile VALUE *)&(v))
|
||||
+
|
||||
void rb_check_type _((VALUE,int));
|
||||
#define Check_Type(v,t) rb_check_type((VALUE)(v),t)
|
||||
|
6
sources
6
sources
@ -1,5 +1,5 @@
|
||||
80b5f3db12531d36e6c81fac6d05dda9 ruby-1.8.6-p287.tar.bz2
|
||||
d65e3a216d6d345a2a6f1aa8758c2f75 ruby-refm-rdp-1.8.1-ja-html.tar.gz
|
||||
f26cefbc8ab6728650ab9ae773d22bcb ruby-1.8.6-p388.tar.bz2
|
||||
b6dd396f513efeb7864685c840f9643a ruby-refm-rdp-1.8.2-ja-html.tar.gz
|
||||
634c25b14e19925d10af3720d72e8741 rubyfaq-990927.tar.gz
|
||||
4fcec898f51d8371cc42d0a013940469 rubyfaq-jp-990927.tar.gz
|
||||
b6dd396f513efeb7864685c840f9643a ruby-refm-rdp-1.8.2-ja-html.tar.gz
|
||||
f77c307cb72fb8808b0e85af5d05cefc ruby-1.8.6-p399.tar.bz2
|
||||
|
Loading…
Reference in New Issue
Block a user