Your message dated Sun, 12 Aug 2012 19:28:02 +0100
with message-id <1344796082.2978.73.ca...@jacala.jungle.funky-badger.org>
and subject line Re: Bug#684626: unblock: ruby-mysql/2.8.2+gem2deb-3
has caused the Debian Bug report #684626,
regarding unblock: ruby-mysql/2.8.2+gem2deb-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
684626: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684626
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package ruby-mysql

This version fixes one RC bug (#678515). The debdiff between the version
in testing and this new version, that was just uploaded to unstable, is
attached.

unblock ruby-mysql/2.8.2+gem2deb-3

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=pt_BR.utf8, LC_CTYPE=pt_BR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

-- 
Antonio Terceiro <terce...@debian.org>
diff -Nru ruby-mysql-2.8.2+gem2deb/debian/changelog ruby-mysql-2.8.2+gem2deb/debian/changelog
--- ruby-mysql-2.8.2+gem2deb/debian/changelog	2012-06-30 08:42:12.000000000 -0300
+++ ruby-mysql-2.8.2+gem2deb/debian/changelog	2012-08-11 22:09:37.000000000 -0300
@@ -1,3 +1,12 @@
+ruby-mysql (2.8.2+gem2deb-3) unstable; urgency=low
+
+  * Team upload.
+  * debian/patches/add-basic-encoding-awareness-logic.patch: convert all
+    string data to the default external encoding. This makes it possible to
+    use the mysql bindings with RUby 1.9 and UTF-8 (Closes: #678515)
+
+ -- Antonio Terceiro <terce...@debian.org>  Sat, 11 Aug 2012 22:09:35 -0300
+
 ruby-mysql (2.8.2+gem2deb-2) unstable; urgency=low
 
   * Team upload.
diff -Nru ruby-mysql-2.8.2+gem2deb/debian/patches/add-basic-encoding-awareness-logic.patch ruby-mysql-2.8.2+gem2deb/debian/patches/add-basic-encoding-awareness-logic.patch
--- ruby-mysql-2.8.2+gem2deb/debian/patches/add-basic-encoding-awareness-logic.patch	1969-12-31 21:00:00.000000000 -0300
+++ ruby-mysql-2.8.2+gem2deb/debian/patches/add-basic-encoding-awareness-logic.patch	2012-08-05 14:19:12.000000000 -0300
@@ -0,0 +1,280 @@
+Description: Add basic encoding aware logic
+ Convert all data to default external encoding
+ .
+ This patch has been adapted for the ruby-mysql Debian package by Antonio
+ Terceiro <terce...@debian.org>
+Author: Loren Segal <lse...@soen.ca>
+
+---
+
+Origin: https://github.com/lsegal/mysql-ruby/commit/b7e4613559f0a741935ad375f07f9411c2107bb7
+Bug-Debian: http://bugs.debian.org/678515
+Reviewed-By: Antonio Terceiro <terce...@debian.org>
+Last-Update: 2012-08-05
+
+--- ruby-mysql-2.8.2+gem2deb.orig/mysql.c
++++ ruby-mysql-2.8.2+gem2deb/mysql.c
+@@ -42,6 +42,32 @@
+ #define GetMysqlRes(obj)	(Check_Type(obj, T_DATA), ((struct mysql_res*)DATA_PTR(obj))->res)
+ #define GetMysqlStmt(obj)	(Check_Type(obj, T_DATA), ((struct mysql_stmt*)DATA_PTR(obj))->stmt)
+ 
++#ifdef RUBY19
++#include <ruby/encoding.h>
++#define DEFAULT_ENCODING (rb_enc_get(rb_enc_default_external()))
++#else
++#define DEFAULT_ENCODING NULL
++#define rb_enc_str_new(ptr, len, enc) rb_str_new(ptr, len)
++#endif
++
++VALUE
++rb_mysql_enc_tainted_str_new(const char *ptr, long len)
++{
++    VALUE str = rb_enc_str_new(ptr, len, DEFAULT_ENCODING);
++
++    OBJ_TAINT(str);
++    return str;
++}
++
++VALUE
++rb_mysql_enc_tainted_str_new2(const char *ptr)
++{
++    VALUE str = rb_enc_str_new(ptr, strlen(ptr), DEFAULT_ENCODING);
++
++    OBJ_TAINT(str);
++    return str;
++}
++
+ VALUE cMysql;
+ VALUE cMysqlRes;
+ VALUE cMysqlField;
+@@ -170,7 +196,7 @@ static void mysql_raise(MYSQL* m)
+     VALUE e = rb_exc_new2(eMysql, mysql_error(m));
+     rb_iv_set(e, "errno", INT2FIX(mysql_errno(m)));
+ #if MYSQL_VERSION_ID >= 40101
+-    rb_iv_set(e, "sqlstate", rb_tainted_str_new2(mysql_sqlstate(m)));
++    rb_iv_set(e, "sqlstate", rb_mysql_enc_tainted_str_new2(mysql_sqlstate(m)));
+ #endif
+     rb_exc_raise(e);
+ }
+@@ -197,9 +223,9 @@ static VALUE make_field_obj(MYSQL_FIELD*
+     if (f == NULL)
+ 	return Qnil;
+     obj = rb_obj_alloc(cMysqlField);
+-    rb_iv_set(obj, "name", f->name? rb_str_freeze(rb_tainted_str_new2(f->name)): Qnil);
+-    rb_iv_set(obj, "table", f->table? rb_str_freeze(rb_tainted_str_new2(f->table)): Qnil);
+-    rb_iv_set(obj, "def", f->def? rb_str_freeze(rb_tainted_str_new2(f->def)): Qnil);
++    rb_iv_set(obj, "name", f->name? rb_str_freeze(rb_mysql_enc_tainted_str_new2(f->name)): Qnil);
++    rb_iv_set(obj, "table", f->table? rb_str_freeze(rb_mysql_enc_tainted_str_new2(f->table)): Qnil);
++    rb_iv_set(obj, "def", f->def? rb_str_freeze(rb_mysql_enc_tainted_str_new2(f->def)): Qnil);
+     rb_iv_set(obj, "type", INT2NUM(f->type));
+     rb_iv_set(obj, "length", INT2NUM(f->length));
+     rb_iv_set(obj, "max_length", INT2NUM(f->max_length));
+@@ -286,7 +312,7 @@ static VALUE escape_string(VALUE klass,
+ {
+     VALUE ret;
+     Check_Type(str, T_STRING);
+-    ret = rb_str_new(0, (RSTRING_LEN(str))*2+1);
++    ret = rb_enc_str_new(0, (RSTRING_LEN(str))*2+1, DEFAULT_ENCODING);
+     rb_str_set_len(ret, mysql_escape_string(RSTRING_PTR(ret), RSTRING_PTR(str), RSTRING_LEN(str)));
+     return ret;
+ }
+@@ -294,7 +320,7 @@ static VALUE escape_string(VALUE klass,
+ /*	client_info()	*/
+ static VALUE client_info(VALUE klass)
+ {
+-    return rb_tainted_str_new2(mysql_get_client_info());
++    return rb_mysql_enc_tainted_str_new2(mysql_get_client_info());
+ }
+ 
+ #if MYSQL_VERSION_ID >= 32332
+@@ -430,7 +456,7 @@ static VALUE real_escape_string(VALUE ob
+     MYSQL* m = GetHandler(obj);
+     VALUE ret;
+     Check_Type(str, T_STRING);
+-    ret = rb_str_new(0, (RSTRING_LEN(str))*2+1);
++    ret = rb_enc_str_new(0, (RSTRING_LEN(str))*2+1, DEFAULT_ENCODING);
+     rb_str_set_len(ret, mysql_real_escape_string(m, RSTRING_PTR(ret), RSTRING_PTR(str), RSTRING_LEN(str)));
+     return ret;
+ }
+@@ -469,7 +495,7 @@ static VALUE change_user(int argc, VALUE
+ /*	character_set_name()	*/
+ static VALUE character_set_name(VALUE obj)
+ {
+-    return rb_tainted_str_new2(mysql_character_set_name(GetHandler(obj)));
++    return rb_mysql_enc_tainted_str_new2(mysql_character_set_name(GetHandler(obj)));
+ }
+ #endif
+ 
+@@ -534,7 +560,7 @@ static VALUE field_count(VALUE obj)
+ /*	host_info()	*/
+ static VALUE host_info(VALUE obj)
+ {
+-    return rb_tainted_str_new2(mysql_get_host_info(GetHandler(obj)));
++    return rb_mysql_enc_tainted_str_new2(mysql_get_host_info(GetHandler(obj)));
+ }
+ 
+ /*	proto_info()	*/
+@@ -546,14 +572,14 @@ static VALUE proto_info(VALUE obj)
+ /*	server_info()	*/
+ static VALUE server_info(VALUE obj)
+ {
+-    return rb_tainted_str_new2(mysql_get_server_info(GetHandler(obj)));
++    return rb_mysql_enc_tainted_str_new2(mysql_get_server_info(GetHandler(obj)));
+ }
+ 
+ /*	info()		*/
+ static VALUE info(VALUE obj)
+ {
+     const char* p = mysql_info(GetHandler(obj));
+-    return p? rb_tainted_str_new2(p): Qnil;
++    return p? rb_mysql_enc_tainted_str_new2(p): Qnil;
+ }
+ 
+ /*	insert_id()	*/
+@@ -588,7 +614,7 @@ static VALUE list_dbs(int argc, VALUE* a
+     n = mysql_num_rows(res);
+     ret = rb_ary_new2(n);
+     for (i=0; i<n; i++)
+-	rb_ary_store(ret, i, rb_tainted_str_new2(mysql_fetch_row(res)[0]));
++	rb_ary_store(ret, i, rb_mysql_enc_tainted_str_new2(mysql_fetch_row(res)[0]));
+     mysql_free_result(res);
+     return ret;
+ }
+@@ -633,7 +659,7 @@ static VALUE list_tables(int argc, VALUE
+     n = mysql_num_rows(res);
+     ret = rb_ary_new2(n);
+     for (i=0; i<n; i++)
+-	rb_ary_store(ret, i, rb_tainted_str_new2(mysql_fetch_row(res)[0]));
++	rb_ary_store(ret, i, rb_mysql_enc_tainted_str_new2(mysql_fetch_row(res)[0]));
+     mysql_free_result(res);
+     return ret;
+ }
+@@ -697,7 +723,7 @@ static VALUE my_stat(VALUE obj)
+     const char* s = mysql_stat(m);
+     if (s == NULL)
+ 	mysql_raise(m);
+-    return rb_tainted_str_new2(s);
++    return rb_mysql_enc_tainted_str_new2(s);
+ }
+ 
+ /*	store_result()	*/
+@@ -864,7 +890,7 @@ static VALUE set_server_option(VALUE obj
+ static VALUE sqlstate(VALUE obj)
+ {
+     MYSQL *m = GetHandler(obj);
+-    return rb_tainted_str_new2(mysql_sqlstate(m));
++    return rb_mysql_enc_tainted_str_new2(mysql_sqlstate(m));
+ }
+ #endif
+ 
+@@ -1029,7 +1055,7 @@ static VALUE fetch_row(VALUE obj)
+ 	return Qnil;
+     ary = rb_ary_new2(n);
+     for (i=0; i<n; i++)
+-	rb_ary_store(ary, i, row[i]? rb_tainted_str_new(row[i], lengths[i]): Qnil);
++	rb_ary_store(ary, i, row[i]? rb_mysql_enc_tainted_str_new(row[i], lengths[i]): Qnil);
+     return ary;
+ }
+ 
+@@ -1053,7 +1079,7 @@ static VALUE fetch_hash2(VALUE obj, VALU
+         if (colname == Qnil) {
+             colname = rb_ary_new2(n);
+             for (i=0; i<n; i++) {
+-                VALUE s = rb_tainted_str_new2(fields[i].name);
++                VALUE s = rb_mysql_enc_tainted_str_new2(fields[i].name);
+                 rb_obj_freeze(s);
+                 rb_ary_store(colname, i, s);
+             }
+@@ -1066,7 +1092,7 @@ static VALUE fetch_hash2(VALUE obj, VALU
+             colname = rb_ary_new2(n);
+             for (i=0; i<n; i++) {
+                 int len = strlen(fields[i].table)+strlen(fields[i].name)+1;
+-                VALUE s = rb_tainted_str_new(NULL, len);
++                VALUE s = rb_mysql_enc_tainted_str_new(NULL, len);
+                 snprintf(RSTRING_PTR(s), len+1, "%s.%s", fields[i].table, fields[i].name);
+                 rb_obj_freeze(s);
+                 rb_ary_store(colname, i, s);
+@@ -1076,7 +1102,7 @@ static VALUE fetch_hash2(VALUE obj, VALU
+         }
+     }
+     for (i=0; i<n; i++) {
+-        rb_hash_aset(hash, rb_ary_entry(colname, i), row[i]? rb_tainted_str_new(row[i], lengths[i]): Qnil);
++        rb_hash_aset(hash, rb_ary_entry(colname, i), row[i]? rb_mysql_enc_tainted_str_new(row[i], lengths[i]): Qnil);
+     }
+     return hash;
+ }
+@@ -1198,7 +1224,7 @@ static VALUE field_hash(VALUE obj)
+ static VALUE field_inspect(VALUE obj)
+ {
+     VALUE n = rb_iv_get(obj, "name");
+-    VALUE s = rb_str_new(0, RSTRING_LEN(n) + 16);
++    VALUE s = rb_enc_str_new(0, RSTRING_LEN(n) + 16, DEFAULT_ENCODING);
+     sprintf(RSTRING_PTR(s), "#<Mysql::Field:%s>", RSTRING_PTR(n));
+     return s;
+ }
+@@ -1257,7 +1283,7 @@ static void mysql_stmt_raise(MYSQL_STMT*
+ {
+     VALUE e = rb_exc_new2(eMysql, mysql_stmt_error(s));
+     rb_iv_set(e, "errno", INT2FIX(mysql_stmt_errno(s)));
+-    rb_iv_set(e, "sqlstate", rb_tainted_str_new2(mysql_stmt_sqlstate(s)));
++    rb_iv_set(e, "sqlstate", rb_mysql_enc_tainted_str_new2(mysql_stmt_sqlstate(s)));
+     rb_exc_raise(e);
+ }
+ 
+@@ -1573,7 +1599,7 @@ static VALUE stmt_fetch(VALUE obj)
+             case MYSQL_TYPE_NEWDECIMAL:
+             case MYSQL_TYPE_BIT:
+ #endif
+-                v = rb_tainted_str_new(s->result.bind[i].buffer, s->result.length[i]);
++                v = rb_mysql_enc_tainted_str_new(s->result.bind[i].buffer, s->result.length[i]);
+                 break;
+             default:
+                 rb_raise(rb_eTypeError, "unknown buffer_type: %d", s->result.bind[i].buffer_type);
+@@ -1762,7 +1788,7 @@ static VALUE stmt_send_long_data(VALUE o
+ static VALUE stmt_sqlstate(VALUE obj)
+ {
+     struct mysql_stmt* s = DATA_PTR(obj);
+-    return rb_tainted_str_new2(mysql_stmt_sqlstate(s->stmt));
++    return rb_mysql_enc_tainted_str_new2(mysql_stmt_sqlstate(s->stmt));
+ }
+ 
+ /*-------------------------------
+--- ruby-mysql-2.8.2+gem2deb.orig/test.rb
++++ ruby-mysql-2.8.2+gem2deb/test.rb
+@@ -2,7 +2,7 @@
+ # $Id: test.rb 250 2010-02-11 10:42:54Z tommy $
+ 
+ require "test/unit"
+-require "./mysql.o"
++require "mysql"
+ 
+ class TC_Mysql < Test::Unit::TestCase
+   def setup()
+@@ -1196,7 +1196,9 @@ class TC_MysqlStmt2 < Test::Unit::TestCa
+       @s.execute
+       assert_equal([nil], @s.fetch)
+       assert_equal([""], @s.fetch)
+-      assert_equal(["abc"], @s.fetch)
++      row = @s.fetch
++      assert_equal(Encoding.default_external, row[0].encoding) if RUBY_VERSION =~ /1.9/
++      assert_equal(["abc"], row)
+       assert_equal(["def"], @s.fetch)
+       assert_equal(["abc"], @s.fetch)
+       assert_equal(["def"], @s.fetch)
+@@ -1233,6 +1235,7 @@ class TC_MysqlStmt2 < Test::Unit::TestCa
+         case c
+         when 0
+           assert_equal([1,"abc",Mysql::Time.new(1970,12,24,23,59,05)], a)
++          assert_equal(Encoding.default_external, a[1].encoding) if RUBY_VERSION =~ /1.9/
+         when 1
+           assert_equal([2,"def",Mysql::Time.new(2112,9,3,12,34,56)], a)
+         when 2
+--- ruby-mysql-2.8.2+gem2deb.orig/extconf.rb
++++ ruby-mysql-2.8.2+gem2deb/extconf.rb
+@@ -68,4 +68,6 @@ File.open('error_const.h', 'w') do |f|
+   end
+ end
+ 
++$CPPFLAGS += " -DRUBY19" if RUBY_VERSION =~ /1.9/
++
+ create_makefile("mysql")
diff -Nru ruby-mysql-2.8.2+gem2deb/debian/patches/series ruby-mysql-2.8.2+gem2deb/debian/patches/series
--- ruby-mysql-2.8.2+gem2deb/debian/patches/series	1969-12-31 21:00:00.000000000 -0300
+++ ruby-mysql-2.8.2+gem2deb/debian/patches/series	2012-08-05 14:15:42.000000000 -0300
@@ -0,0 +1 @@
+add-basic-encoding-awareness-logic.patch

Attachment: signature.asc
Description: Digital signature


--- End Message ---
--- Begin Message ---
On Sat, 2012-08-11 at 22:33 -0300, Antonio Terceiro wrote:
> Please unblock package ruby-mysql
> 
> This version fixes one RC bug (#678515). The debdiff between the version
> in testing and this new version, that was just uploaded to unstable, is
> attached.

Unblocked; thanks.

Regards,

Adam

--- End Message ---

Reply via email to