summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortaca <taca@pkgsrc.org>2005-01-23 17:34:55 +0000
committertaca <taca@pkgsrc.org>2005-01-23 17:34:55 +0000
commit93cc3fc2037d2c377919c1323e051ba3d5c0439f (patch)
tree0aba6b6cb15e2a9c8360bb70f2fd94e4ea3ec561
parente794da07d3e022101a0d7f988aef6b7f67e24d92 (diff)
downloadpkgsrc-93cc3fc2037d2c377919c1323e051ba3d5c0439f.tar.gz
Update to Ruby 1.8.2 base and thses changes:
o Set RUBY_HAS_ARCHLIB=yes for Ruby packages including archtecture depending extention library in order to depend more specific Ruby. o Apply some bug fixes. * ext/zlib/zlib.c (zstream_end): should return value. * ext/zlib/zlib.c (rb_deflate_s_deflate, rb_inflate_s_inflate): ensure freeing internal zstreams. fixed: [ruby-dev:25309] * ext/zlib/zlib.c (rb_deflate_init_copy): replace rb_deflate_clone.
-rw-r--r--devel/ruby-zlib/Makefile4
-rw-r--r--devel/ruby-zlib/distinfo5
-rw-r--r--devel/ruby-zlib/patches/patch-aa166
3 files changed, 173 insertions, 2 deletions
diff --git a/devel/ruby-zlib/Makefile b/devel/ruby-zlib/Makefile
index 993c3e6ba1c..ee7bff837ca 100644
--- a/devel/ruby-zlib/Makefile
+++ b/devel/ruby-zlib/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.4 2004/11/30 17:03:15 taca Exp $
+# $NetBSD: Makefile,v 1.5 2005/01/23 17:34:55 taca Exp $
# FreeBSD: ports/archivers/ruby-zlib/Makefile,v 1.7 2000/09/26 22:01:12 knu Exp
DISTNAME= ${RUBY_DISTNAME}
@@ -10,10 +10,10 @@ MAINTAINER= taca@NetBSD.org
HOMEPAGE= ${RUBY_HOMEPAGE}
COMMENT= Zlib library for Ruby
+RUBY_HAS_ARCHLIB= yes
RUBY_VERSION_SUPPORTED= 18
USE_BUILDLINK3= yes
USE_RUBY_EXTCONF= yes
-DISTINFO_FILE= ${RUBY_DISTINFO_FILE}
EXTRACT_ELEMENTS= ${RUBY_DISTNAME}/ext/zlib
WRKSRC= ${RUBY_WRKSRC}/ext/zlib
diff --git a/devel/ruby-zlib/distinfo b/devel/ruby-zlib/distinfo
new file mode 100644
index 00000000000..5c9d4e2386d
--- /dev/null
+++ b/devel/ruby-zlib/distinfo
@@ -0,0 +1,5 @@
+$NetBSD: distinfo,v 1.3 2005/01/23 17:34:55 taca Exp $
+
+SHA1 (ruby/ruby-1.8.2.tar.gz) = 409a917d3a0aba41f45bd053b767c85b2bc35ffa
+Size (ruby/ruby-1.8.2.tar.gz) = 3627349 bytes
+SHA1 (patch-aa) = acb62c1fdeec74fa0c1b7fe55067f780ce52fd57
diff --git a/devel/ruby-zlib/patches/patch-aa b/devel/ruby-zlib/patches/patch-aa
new file mode 100644
index 00000000000..c6b187c64c9
--- /dev/null
+++ b/devel/ruby-zlib/patches/patch-aa
@@ -0,0 +1,166 @@
+$NetBSD: patch-aa,v 1.1 2005/01/23 17:34:55 taca Exp $
+
+--- ext/zlib/zlib.c.orig 2004-12-18 16:37:01.000000000 +0900
++++ ext/zlib/zlib.c
+@@ -55,7 +55,7 @@ static void zstream_reset_input _((struc
+ static void zstream_passthrough_input _((struct zstream*));
+ static VALUE zstream_detach_input _((struct zstream*));
+ static void zstream_reset _((struct zstream*));
+-static void zstream_end _((struct zstream*));
++static VALUE zstream_end _((struct zstream*));
+ static void zstream_run _((struct zstream*, Bytef*, uInt, int));
+ static VALUE zstream_sync _((struct zstream*, Bytef*, uInt));
+ static void zstream_mark _((struct zstream*));
+@@ -80,7 +80,8 @@ static VALUE rb_zstream_closed_p _((VALU
+
+ static VALUE rb_deflate_s_allocate _((VALUE));
+ static VALUE rb_deflate_initialize _((int, VALUE*, VALUE));
+-static VALUE rb_deflate_clone _((VALUE));
++static VALUE rb_deflate_init_copy _((VALUE, VALUE));
++static VALUE deflate_run _((VALUE));
+ static VALUE rb_deflate_s_deflate _((int, VALUE*, VALUE));
+ static void do_deflate _((struct zstream*, VALUE, int));
+ static VALUE rb_deflate_deflate _((int, VALUE*, VALUE));
+@@ -89,6 +90,7 @@ static VALUE rb_deflate_flush _((int, VA
+ static VALUE rb_deflate_params _((VALUE, VALUE, VALUE));
+ static VALUE rb_deflate_set_dictionary _((VALUE, VALUE));
+
++static VALUE inflate_run _((VALUE));
+ static VALUE rb_inflate_s_allocate _((VALUE));
+ static VALUE rb_inflate_initialize _((int, VALUE*, VALUE));
+ static VALUE rb_inflate_s_inflate _((VALUE, VALUE));
+@@ -667,7 +669,7 @@ zstream_reset(z)
+ zstream_reset_input(z);
+ }
+
+-static void
++static VALUE
+ zstream_end(z)
+ struct zstream *z;
+ {
+@@ -692,6 +694,7 @@ zstream_end(z)
+ raise_zlib_error(err, z->stream.msg);
+ }
+ z->flags = 0;
++ return Qnil;
+ }
+
+ static void
+@@ -1152,26 +1155,31 @@ rb_deflate_initialize(argc, argv, obj)
+ * Duplicates the deflate stream.
+ */
+ static VALUE
+-rb_deflate_clone(obj)
+- VALUE obj;
++rb_deflate_init_copy(self, orig)
++ VALUE self, orig;
+ {
+- struct zstream *z = get_zstream(obj);
+- struct zstream *z2;
+- VALUE clone;
++ struct zstream *z1 = get_zstream(self);
++ struct zstream *z2 = get_zstream(orig);
+ int err;
+
+- clone = zstream_deflate_new(rb_class_of(obj));
+- Data_Get_Struct(clone, struct zstream, z2);
+-
+- err = deflateCopy(&z2->stream, &z->stream);
++ err = deflateCopy(&z1->stream, &z2->stream);
+ if (err != Z_OK) {
+ raise_zlib_error(err, 0);
+ }
++ z1->flags = z2->flags;
+
+- z2->flags = z->flags;
+- CLONESETUP(clone, obj);
+- OBJ_INFECT(clone, obj);
+- return clone;
++ return self;
++}
++
++static VALUE
++deflate_run(args)
++ VALUE args;
++{
++ struct zstream *z = (struct zstream *)((VALUE *)args)[0];
++ VALUE src = ((VALUE *)args)[1];
++
++ zstream_run(z, RSTRING(src)->ptr, RSTRING(src)->len, Z_FINISH);
++ return zstream_detach_buffer(z);
+ }
+
+ /*
+@@ -1201,7 +1209,7 @@ rb_deflate_s_deflate(argc, argv, klass)
+ VALUE klass;
+ {
+ struct zstream z;
+- VALUE src, level, dst;
++ VALUE src, level, dst, args[2];
+ int err, lev;
+
+ rb_scan_args(argc, argv, "11", &src, &level);
+@@ -1215,9 +1223,9 @@ rb_deflate_s_deflate(argc, argv, klass)
+ }
+ ZSTREAM_READY(&z);
+
+- zstream_run(&z, RSTRING(src)->ptr, RSTRING(src)->len, Z_FINISH);
+- dst = zstream_detach_buffer(&z);
+- zstream_end(&z);
++ args[0] = (VALUE)&z;
++ args[1] = src;
++ dst = rb_ensure(deflate_run, (VALUE)args, zstream_end, (VALUE)&z);
+
+ OBJ_INFECT(dst, src);
+ return dst;
+@@ -1239,6 +1247,18 @@ do_deflate(z, src, flush)
+ }
+ }
+
++static VALUE
++inflate_run(args)
++ VALUE args;
++{
++ struct zstream *z = (struct zstream *)((VALUE *)args)[0];
++ VALUE src = ((VALUE *)args)[1];
++
++ zstream_run(z, RSTRING(src)->ptr, RSTRING(src)->len, Z_SYNC_FLUSH);
++ zstream_run(z, "", 0, Z_FINISH); /* for checking errors */
++ return zstream_detach_buffer(z);
++}
++
+ /*
+ * call-seq: deflate(string[, flush])
+ *
+@@ -1452,7 +1472,7 @@ rb_inflate_s_inflate(obj, src)
+ VALUE obj, src;
+ {
+ struct zstream z;
+- VALUE dst;
++ VALUE dst, args[2];
+ int err;
+
+ StringValue(src);
+@@ -1463,10 +1483,9 @@ rb_inflate_s_inflate(obj, src)
+ }
+ ZSTREAM_READY(&z);
+
+- zstream_run(&z, RSTRING(src)->ptr, RSTRING(src)->len, Z_SYNC_FLUSH);
+- zstream_run(&z, "", 0, Z_FINISH); /* for checking errors */
+- dst = zstream_detach_buffer(&z);
+- zstream_end(&z);
++ args[0] = (VALUE)&z;
++ args[1] = src;
++ dst = rb_ensure(inflate_run, (VALUE)args, zstream_end, (VALUE)&z);
+
+ OBJ_INFECT(dst, src);
+ return dst;
+@@ -3333,7 +3352,7 @@ void Init_zlib()
+ rb_define_singleton_method(cDeflate, "deflate", rb_deflate_s_deflate, -1);
+ rb_define_alloc_func(cDeflate, rb_deflate_s_allocate);
+ rb_define_method(cDeflate, "initialize", rb_deflate_initialize, -1);
+- rb_define_method(cDeflate, "clone", rb_deflate_clone, 0);
++ rb_define_method(cDeflate, "initialize_copy", rb_deflate_init_copy, 0);
+ rb_define_method(cDeflate, "deflate", rb_deflate_deflate, -1);
+ rb_define_method(cDeflate, "<<", rb_deflate_addstr, 1);
+ rb_define_method(cDeflate, "flush", rb_deflate_flush, -1);