Hello community,
here is the log from the commit of package yast2-ruby-bindings for
openSUSE:Factory checked in at 2015-10-20 16:20:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-ruby-bindings (Old)
and /work/SRC/openSUSE:Factory/.yast2-ruby-bindings.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-ruby-bindings"
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-ruby-bindings/yast2-ruby-bindings.changes
2015-08-10 09:09:37.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.yast2-ruby-bindings.new/yast2-ruby-bindings.changes
2015-10-20 16:20:35.000000000 +0200
@@ -1,0 +2,14 @@
+Mon Oct 5 12:04:35 UTC 2015 - [email protected]
+
+- Used rb_gc_register_address to fix 'method to_s called on
+ terminated object' during package installation (bsc#945299)
+- 3.1.40
+
+-------------------------------------------------------------------
+Wed Sep 30 07:44:18 UTC 2015 - [email protected]
+
+- Added a regression test for the fix of bnc#943757 implemented
+ in libyui-ncurses 2.47.3
+- 3.1.39
+
+-------------------------------------------------------------------
Old:
----
yast2-ruby-bindings-3.1.38.tar.bz2
New:
----
yast2-ruby-bindings-3.1.40.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-ruby-bindings.spec ++++++
--- /var/tmp/diff_new_pack.3NxzK2/_old 2015-10-20 16:20:36.000000000 +0200
+++ /var/tmp/diff_new_pack.3NxzK2/_new 2015-10-20 16:20:36.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-ruby-bindings
-Version: 3.1.38
+Version: 3.1.40
Release: 0
Url: https://github.com/yast/yast-ruby-bindings
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -42,6 +42,11 @@
BuildRequires: yast2-core-devel >= 2.24.0
Requires: yast2-ycp-ui-bindings >= 2.21.9
BuildRequires: yast2-ycp-ui-bindings-devel >= 2.21.9
+# The test suite includes a regression test (std_streams_spec.rb) for a
+# libyui-ncurses bug fixed in 2.47.3
+BuildRequires: libyui-ncurses >= 2.47.3
+# The mentioned test requires screen in order to be executed in headless
systems
+BuildRequires: screen
Requires: ruby
Summary: Ruby bindings for the YaST platform
License: GPL-2.0
++++++ yast2-ruby-bindings-3.1.38.tar.bz2 -> yast2-ruby-bindings-3.1.40.tar.bz2
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-ruby-bindings-3.1.38/.travis.yml
new/yast2-ruby-bindings-3.1.40/.travis.yml
--- old/yast2-ruby-bindings-3.1.38/.travis.yml 2015-08-04 18:05:11.000000000
+0200
+++ new/yast2-ruby-bindings-3.1.40/.travis.yml 2015-10-05 16:35:16.000000000
+0200
@@ -5,7 +5,7 @@
# disable rvm, use system Ruby
- rvm reset
- wget
https://raw.githubusercontent.com/yast/yast-devtools/master/travis-tools/travis_setup.sh
- - sh ./travis_setup.sh -p "docbook-xsl xsltproc yast2-core-dev
yast2-devtools libxcrypt-dev cmake yast2-ycp-ui-bindings-dev ruby2.1
ruby2.1-dev rake ruby-fast-gettext language-pack-en language-pack-cs" -g
"yast-rake rspec:3.3.0 rubocop:0.29.1"
+ - sh ./travis_setup.sh -p "docbook-xsl xsltproc yast2-core-dev
yast2-devtools libxcrypt-dev cmake yast2-ycp-ui-bindings-dev ruby2.1
ruby2.1-dev rake ruby-fast-gettext language-pack-en language-pack-cs screen" -g
"yast-rake rspec:3.3.0 rubocop:0.29.1"
script:
- rake check:syntax
- rubocop
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-ruby-bindings-3.1.38/package/yast2-ruby-bindings.changes
new/yast2-ruby-bindings-3.1.40/package/yast2-ruby-bindings.changes
--- old/yast2-ruby-bindings-3.1.38/package/yast2-ruby-bindings.changes
2015-08-04 18:05:11.000000000 +0200
+++ new/yast2-ruby-bindings-3.1.40/package/yast2-ruby-bindings.changes
2015-10-05 16:35:16.000000000 +0200
@@ -1,4 +1,18 @@
-------------------------------------------------------------------
+Mon Oct 5 12:04:35 UTC 2015 - [email protected]
+
+- Used rb_gc_register_address to fix 'method to_s called on
+ terminated object' during package installation (bsc#945299)
+- 3.1.40
+
+-------------------------------------------------------------------
+Wed Sep 30 07:44:18 UTC 2015 - [email protected]
+
+- Added a regression test for the fix of bnc#943757 implemented
+ in libyui-ncurses 2.47.3
+- 3.1.39
+
+-------------------------------------------------------------------
Tue Aug 4 15:53:33 UTC 2015 - [email protected]
- Applied the style guide, with Rubocop.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-ruby-bindings-3.1.38/package/yast2-ruby-bindings.spec
new/yast2-ruby-bindings-3.1.40/package/yast2-ruby-bindings.spec
--- old/yast2-ruby-bindings-3.1.38/package/yast2-ruby-bindings.spec
2015-08-04 18:05:11.000000000 +0200
+++ new/yast2-ruby-bindings-3.1.40/package/yast2-ruby-bindings.spec
2015-10-05 16:35:16.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-ruby-bindings
-Version: 3.1.38
+Version: 3.1.40
Url: https://github.com/yast/yast-ruby-bindings
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -42,6 +42,11 @@
BuildRequires: yast2-core-devel >= 2.24.0
Requires: yast2-ycp-ui-bindings >= 2.21.9
BuildRequires: yast2-ycp-ui-bindings-devel >= 2.21.9
+# The test suite includes a regression test (std_streams_spec.rb) for a
+# libyui-ncurses bug fixed in 2.47.3
+BuildRequires: libyui-ncurses >= 2.47.3
+# The mentioned test requires screen in order to be executed in headless
systems
+BuildRequires: screen
Requires: ruby
Summary: Ruby bindings for the YaST platform
License: GPL-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-ruby-bindings-3.1.38/src/binary/Y2RubyReference.cc
new/yast2-ruby-bindings-3.1.40/src/binary/Y2RubyReference.cc
--- old/yast2-ruby-bindings-3.1.38/src/binary/Y2RubyReference.cc
2015-08-04 18:05:11.000000000 +0200
+++ new/yast2-ruby-bindings-3.1.40/src/binary/Y2RubyReference.cc
2015-10-05 16:35:16.000000000 +0200
@@ -9,10 +9,16 @@
for (int i = 0; i < m_call.size(); ++i)
{
VALUE value = ycpvalue_2_rbvalue(m_call.value(i));
- RB_GC_GUARD(value);
params[i] = value;
+ // register parameters to avoid its garbage collecting during creation of
+ // other non trivial types. RB_GC_GUARD is not enough. (bnc#945299)
+ rb_gc_register_address(params + i);
}
YCPValue res = rbvalue_2_ycpvalue(rb_funcall3(object,
rb_intern("call"),m_call.size(), params));
+ for (int i = 0; i < m_call.size(); ++i)
+ {
+ rb_gc_unregister_address(params + i);
+ }
delete[] params;
return res;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-ruby-bindings-3.1.38/src/binary/YRuby.cc
new/yast2-ruby-bindings-3.1.40/src/binary/YRuby.cc
--- old/yast2-ruby-bindings-3.1.38/src/binary/YRuby.cc 2015-08-04
18:05:11.000000000 +0200
+++ new/yast2-ruby-bindings-3.1.40/src/binary/YRuby.cc 2015-10-05
16:35:16.000000000 +0200
@@ -190,14 +190,21 @@
YCPValue v = argList->value(i);
y2debug("Adding argument %d of type %s", i, v->valuetype_str());
VALUE vr = ycpvalue_2_rbvalue(v);
- RB_GC_GUARD(vr);
values[i+3] = vr;
+ // register parameters to avoid its garbage collecting during creation of
+ // other non trivial types. RB_GC_GUARD is not enough. (bnc#945299)
+ rb_gc_register_address(values + i + 3);
}
y2debug( "Will call function '%s' in module '%s' with '%d' arguments",
function.c_str(), module_name.c_str(), size-1);
int error;
VALUE result = rb_protect(protected_call, (VALUE)values, &error);
+ for (int i = 0 ; i < size; ++i )
+ {
+ rb_gc_unregister_address(values + i + 3);
+ }
+
if (error)
{
VALUE exception = rb_gv_get("$!"); /* get last exception */
@@ -227,8 +234,11 @@
VALUE wfm_module = y2ruby_nested_const_get("Yast::WFM");
VALUE client_path = rb_str_new2(path.c_str());
- RB_GC_GUARD(client_path);
+ // register parameters to avoid its garbage collecting during creation of
+ // other non trivial types. RB_GC_GUARD is not enough. (bnc#945299)
+ rb_gc_register_address(&client_path);
VALUE result = rb_funcall(wfm_module, rb_intern("run_client"), 1,
client_path);
+ rb_gc_unregister_address(&client_path);
return rbvalue_2_ycpvalue(result);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-ruby-bindings-3.1.38/tests/ruby/CMakeLists.txt
new/yast2-ruby-bindings-3.1.40/tests/ruby/CMakeLists.txt
--- old/yast2-ruby-bindings-3.1.38/tests/ruby/CMakeLists.txt 2015-08-04
18:05:11.000000000 +0200
+++ new/yast2-ruby-bindings-3.1.40/tests/ruby/CMakeLists.txt 2015-10-05
16:35:16.000000000 +0200
@@ -9,3 +9,5 @@
foreach(test ${Specs})
ADD_TEST(${test} rspec --format doc ${test})
endforeach(test)
+
+ADD_TEST("integration" ruby ${CMAKE_CURRENT_SOURCE_DIR}/integration/run.rb)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-ruby-bindings-3.1.38/tests/ruby/integration/run.rb
new/yast2-ruby-bindings-3.1.40/tests/ruby/integration/run.rb
--- old/yast2-ruby-bindings-3.1.38/tests/ruby/integration/run.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-ruby-bindings-3.1.40/tests/ruby/integration/run.rb
2015-10-05 16:35:16.000000000 +0200
@@ -0,0 +1,20 @@
+#!/usr/bin/env ruby
+
+# std_streams_spec.rb is used to verify that bnc#943757 is fixed in
+# libyui-ncurses >= 2.47.3. Thus, is an integration test for YaST+libyui
+#
+# It runs perfectly in a regular system by just calling
+# rspec std_streams_spec.rb
+# but headless systems like jenkins need this script to fake the screen
+
+test = File.dirname(__FILE__) + "/std_streams_spec.rb"
+cmd = "rspec #{test}"
+
+`screen -D -m sh -c '#{cmd}; echo \$? > /tmp/exit'`
+if File.read("/tmp/exit") != "0\n"
+ puts "Test failed: '#{cmd}'. Rerun manually to see the cause."
+ exit false
+else
+ puts "Test succeeded."
+ exit true
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-ruby-bindings-3.1.38/tests/ruby/integration/std_streams_spec.rb
new/yast2-ruby-bindings-3.1.40/tests/ruby/integration/std_streams_spec.rb
--- old/yast2-ruby-bindings-3.1.38/tests/ruby/integration/std_streams_spec.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-ruby-bindings-3.1.40/tests/ruby/integration/std_streams_spec.rb
2015-10-05 16:35:16.000000000 +0200
@@ -0,0 +1,40 @@
+#! /usr/bin/env rspec
+
+# We do not have a proper ncurses in travis at the moment
+exit 0 if ENV["TRAVIS"]
+
+require_relative "../test_helper"
+require "yast/ui_shortcuts"
+
+Yast.import "UI"
+
+def std_puts(message)
+ $stdout.puts "stdout: #{message}"
+ $stderr.puts "stderr: #{message}"
+end
+
+# Regression test for the fix of bnc#943757 implemented
+# in libyui-ncurses 2.47.3
+describe "streams redirection in libyui-ncurses" do
+ include Yast::UIShortcuts
+
+ around do |example|
+ Yast.ui_component = "ncurses"
+ Yast::UI.OpenUI
+ example.run
+ Yast::UI.CloseUI
+
+ # Having an expectation in the around block looks weird, but using around
+ # to execute OpenUI/CloseUI was needed to make the bug pop up.
+ #
+ # In addition to not crashing, these messages should be displayed when
+ # running RSpec, not sure if it's possible to check that.
+ expect { std_puts "tty is free again" }.to_not raise_error
+ end
+
+ it "does not fall apart when stderr is used" do
+ Yast::UI.OpenDialog(PushButton("Hello, World!"))
+ expect { std_puts "NCurses is using the tty" }.to_not raise_error
+ Yast::UI.CloseDialog
+ end
+end