Hello community,
here is the log from the commit of package yast2-core
checked in at Wed Jan 9 21:21:23 CET 2008.
--------
--- yast2-core/yast2-core.changes 2007-12-21 18:37:14.000000000 +0100
+++ /mounts/work_src_done/STABLE/yast2-core/yast2-core.changes 2008-01-09 14:56:05.876598000 +0100
@@ -1,0 +2,7 @@
+Wed Jan 9 14:52:29 CET 2008 - sh@suse.de
+
+- Fixed segfault upon shutting down UI
+ (observed mostly on single-CPU non-hyperthreading machines)
+- V 2.16.18
+
+-------------------------------------------------------------------
Old:
----
yast2-core-2.16.17.tar.bz2
New:
----
yast2-core-2.16.18.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-core.spec ++++++
--- /var/tmp/diff_new_pack.b13147/_old 2008-01-09 21:15:28.000000000 +0100
+++ /var/tmp/diff_new_pack.b13147/_new 2008-01-09 21:15:28.000000000 +0100
@@ -1,7 +1,7 @@
#
-# spec file for package yast2-core (Version 2.16.17)
+# spec file for package yast2-core (Version 2.16.18)
#
-# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
@@ -11,12 +11,12 @@
# norootforbuild
Name: yast2-core
-Version: 2.16.17
+Version: 2.16.18
Release: 1
License: GPL v2 or later
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-core-2.16.17.tar.bz2
+Source0: yast2-core-2.16.18.tar.bz2
Prefix: /usr
# obviously
BuildRequires: gcc-c++
@@ -86,7 +86,7 @@
Stanislav Visnovsky
%prep
-%setup -n yast2-core-2.16.17
+%setup -n yast2-core-2.16.18
%build
%{prefix}/bin/y2tool y2autoconf
@@ -163,6 +163,10 @@
%doc %{prefix}/share/doc/packages/yast2-core
/usr/share/YaST2/data/devtools/bin/generateYCPWrappers
%changelog
+* Wed Jan 09 2008 - sh@suse.de
+- Fixed segfault upon shutting down UI
+ (observed mostly on single-CPU non-hyperthreading machines)
+- V 2.16.18
* Fri Dec 21 2007 - coolo@suse.de
- support `CurrentItem to the timezone selector
- V 2.16.17
++++++ yast2-core-2.16.17.tar.bz2 -> yast2-core-2.16.18.tar.bz2 ++++++
++++ 46185 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/configure.in new/yast2-core-2.16.18/configure.in
--- old/yast2-core-2.16.17/configure.in 2007-11-23 11:06:45.000000000 +0100
+++ new/yast2-core-2.16.18/configure.in 2007-12-20 12:48:48.000000000 +0100
@@ -1,9 +1,9 @@
dnl configure.in for yast2-core
dnl
-dnl -- This file is generated by y2autoconf 2.16.2 - DO NOT EDIT! --
+dnl -- This file is generated by y2autoconf 2.16.3 - DO NOT EDIT! --
dnl (edit configure.in.in instead)
-AC_INIT(yast2-core, 2.16.7, http://bugs.opensuse.org/, yast2-core)
+AC_INIT(yast2-core, 2.16.15, http://bugs.opensuse.org/, yast2-core)
dnl Check for presence of file 'RPMNAME'
AC_CONFIG_SRCDIR([RPMNAME])
@@ -18,7 +18,7 @@
AM_INIT_AUTOMAKE(tar-ustar -Wno-portability)
dnl Important YaST2 variables
-VERSION="2.16.7"
+VERSION="2.16.15"
RPMNAME="yast2-core"
MAINTAINER="Martin Vidner "
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/doc/examples/RadioButtonGroup_Value.ycp new/yast2-core-2.16.18/libyui/doc/examples/RadioButtonGroup_Value.ycp
--- old/yast2-core-2.16.17/libyui/doc/examples/RadioButtonGroup_Value.ycp 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/doc/examples/RadioButtonGroup_Value.ycp 2008-01-08 11:34:10.000000000 +0100
@@ -0,0 +1,33 @@
+{
+ UI::OpenDialog(
+ `RadioButtonGroup(`id(`rb),
+ `VBox(
+ `Label("How do you want to crash?"),
+ `Left(`RadioButton(`id(0), "No&w")),
+ `Left(`RadioButton(`id(1), "&Every now and then" )),
+ `Left(`RadioButton(`id(2), "Every &five minutes", true)),
+ `Left(`RadioButton(`id(3), `opt(`boldFont), "Ne&ver", true )),
+ `HBox(
+ `PushButton(`id(`next), "&Next"),
+ `PushButton("&OK")
+ )
+ )
+ )
+ );
+
+ while (true)
+ {
+ any ret = UI::UserInput();
+ if (ret == `next)
+ {
+ integer current = (integer) UI::QueryWidget(`id(`rb), `Value);
+ current = (current + 1) % 4;
+ UI::ChangeWidget(`id(`rb), `CurrentButton, current);
+ }
+ else break;
+ }
+
+ UI::CloseDialog();
+}
+
+
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/doc/examples/radioButtonGroup.ycp new/yast2-core-2.16.18/libyui/doc/examples/radioButtonGroup.ycp
--- old/yast2-core-2.16.17/libyui/doc/examples/radioButtonGroup.ycp 2007-12-03 10:52:18.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/doc/examples/radioButtonGroup.ycp 1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-{
- textdomain "bogus";
-
- UI::OpenDialog(
- `RadioButtonGroup(`id (`rbg),
- `VBox(
- `RadioButton (`id ("users"), `opt(`notify), _("&Users")),
- `RadioButton (`id ("groups"), `opt(`notify), _("&Groups")),
- `Right (`Label (`id(`current_filter), _( "Filter" ) ))
- )
- )
- );
- UI::UserInput();
- string val = (string)UI::QueryWidget (`id(`rbg), `Value);
- y2internal ("val: %1", val);
- UI::CloseDialog();
-}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/doc/examples/Wizard3-es-2.ycp new/yast2-core-2.16.18/libyui/doc/examples/Wizard3-es-2.ycp
--- old/yast2-core-2.16.17/libyui/doc/examples/Wizard3-es-2.ycp 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/doc/examples/Wizard3-es-2.ycp 2007-12-11 16:20:07.000000000 +0100
@@ -0,0 +1,128 @@
+// Advanced example of using the Wizard widget.
+//
+// Note: YCP applications are discouraged from using the Wizard widget directly.
+// Use the Wizard module instead.
+
+{
+
+ list<map> base_installation_steps =
+ [
+ $[ "id": "language", "label": "Language" ],
+ $[ "id": "proposal", "label": "Installation Settings" ],
+ $[ "id": "do_resize", "label": "Perform Installation" ],
+ $[ "id": "prepdisk", "label": "Perform Installation" ],
+ $[ "id": "kickoff", "label": "Perform Installation" ],
+ $[ "id": "rpmcopy", "label": "Perform Installation" ],
+ $[ "id": "finish", "label": "Perform Installation" ]
+ ];
+
+ list<map> config_steps =
+ [
+ $[ "id": "continue_2" , "label": "Contraseña de root" ],
+ $[ "id": "continue_3" , "label": "Verifiacion de Instalacion" ],
+ $[ "id": "continue_4" , "label": "Verifiacion de Instalacion" ],
+ $[ "id": "continue_5" , "label": "Verifiacion de Instalacion" ],
+ $[ "id": "continue_6" , "label": "Nombre de host" ],
+ $[ "id": "continue_7" , "label": "Red" ],
+ $[ "id": "continue_8" , "label": "Red" ],
+ $[ "id": "continue_9" , "label": "Red" ],
+ $[ "id": "continue_10", "label": "Registración" ],
+ $[ "id": "continue_11", "label": "Registración" ],
+ $[ "id": "continue_12", "label": "Actualización en línea" ],
+ $[ "id": "continue_13", "label": "Actualización en línea" ],
+ $[ "id": "continue_14", "label": "Actualización en línea" ],
+ $[ "id": "continue_15", "label": "Actualización en línea" ],
+ $[ "id": "continue_16", "label": "Usuarios" ],
+ $[ "id": "continue_17", "label": "Usuarios" ],
+ $[ "id": "continue_18", "label": "Usuarios" ],
+ $[ "id": "continue_19", "label": "Notas de la versión" ],
+ $[ "id": "continue_20", "label": "Configuración del hardware" ],
+ $[ "id": "continue_21", "label": "Configuración del hardware" ],
+ $[ "id": "continue_22", "label": "Configuración del hardware" ]
+ ];
+
+ list<map> steps = flatten( [ base_installation_steps, config_steps ] );
+
+
+ define void show_step( integer no )
+ ``{
+ string current_id = lookup( steps[ no ]:nil, "id", "");
+
+ UI::ReplaceWidget(`id(`contents),
+ `VBox(
+ `Heading( "Current workflow step:" ),
+ `VSpacing(0.5),
+ `Label( current_id )
+ ) );
+
+ UI::WizardCommand(`SetCurrentStep( current_id ) );
+ };
+
+ if ( ! UI::HasSpecialWidget(`Wizard) )
+ {
+ y2error( "This works only with UIs that provide the wizard widget!" );
+ return;
+ }
+
+ string help_text =
+ "<p>This is a help text.</p>"
+ + "<p>It should be helpful.</p>"
+ + "<p>If it isn't helpful, it should rather not be called a <i>help text</i>.</p>";
+
+ UI::OpenDialog(`opt(`defaultsize ),
+ `Wizard(`opt(`stepsEnabled),
+ `back, "&Back",
+ `abort, "Ab&ort",
+ `next, "&Next" ) );
+
+ // UI::DumpWidgetTree();
+
+ UI::WizardCommand(`SetDialogIcon( "/usr/share/YaST2/theme/SuSELinux/icons/22x22/apps/user_add.png" ) );
+ UI::WizardCommand(`SetDialogHeading( "Welcome to the YaST2 installation" ) );
+ UI::WizardCommand(`SetHelpText( help_text ) );
+ UI::WizardCommand(`ShowReleaseNotesButton( "&Release Notes", "release_notes" ) );
+
+ UI::WizardCommand(`AddStepHeading( "Base Installation" ) );
+
+ foreach ( map step, base_installation_steps, ``{
+ UI::WizardCommand(`AddStep( step["label"]:"", step["id"]:"" ) );
+ });
+
+
+ UI::WizardCommand(`AddStepHeading( "Configuration" ) );
+
+ foreach ( map step, config_steps, ``{
+ UI::WizardCommand(`AddStep( step["label"]:"", step["id"]:"" ) );
+ });
+
+
+ integer current_step = 0;
+ show_step( 0 );
+
+ while( true )
+ {
+ symbol button = (symbol) UI::UserInput();
+
+ if ( button == `abort || button == `cancel )
+ break;
+
+ if ( button == `next || button == `back )
+ {
+ if ( button == `next && current_step+1 < size( steps ) )
+ {
+ current_step = current_step+1;
+
+ if ( current_step > 2 )
+ UI::WizardCommand(`HideReleaseNotesButton() );
+ }
+
+ if ( button == `back && current_step > 0 )
+ current_step = current_step-1;
+
+ show_step( current_step );
+ }
+ }
+
+ UI::CloseDialog();
+
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/doc/examples/Wizard3-es.ycp new/yast2-core-2.16.18/libyui/doc/examples/Wizard3-es.ycp
--- old/yast2-core-2.16.17/libyui/doc/examples/Wizard3-es.ycp 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/doc/examples/Wizard3-es.ycp 2007-12-11 16:33:38.000000000 +0100
@@ -0,0 +1,128 @@
+// Advanced example of using the Wizard widget.
+//
+// Note: YCP applications are discouraged from using the Wizard widget directly.
+// Use the Wizard module instead.
+
+{
+
+ list<map> base_installation_steps =
+ [
+ $[ "id": "language", "label": "Language" ],
+ $[ "id": "proposal", "label": "Installation Settings" ],
+ $[ "id": "do_resize", "label": "Perform Installation" ],
+ $[ "id": "prepdisk", "label": "Perform Installation" ],
+ $[ "id": "kickoff", "label": "Perform Installation" ],
+ $[ "id": "rpmcopy", "label": "Perform Installation" ],
+ $[ "id": "finish", "label": "Perform Installation" ]
+ ];
+
+ list<map> config_steps =
+ [
+ $[ "id": "continue_2" , "label": "Contraseña de root" ],
+ $[ "id": "continue_3" , "label": "Verifiación de Instalación" ],
+ $[ "id": "continue_4" , "label": "Verifiación de Instalación" ],
+ $[ "id": "continue_5" , "label": "Verifiación de Instalación" ],
+ $[ "id": "continue_6" , "label": "Nombre de host" ],
+ $[ "id": "continue_7" , "label": "Red" ],
+ $[ "id": "continue_8" , "label": "Red" ],
+ $[ "id": "continue_9" , "label": "Red" ],
+ $[ "id": "continue_10", "label": "Registración" ],
+ $[ "id": "continue_11", "label": "Registración" ],
+ $[ "id": "continue_12", "label": "Actualización en línea" ],
+ $[ "id": "continue_13", "label": "Actualización en línea" ],
+ $[ "id": "continue_14", "label": "Actualización en línea" ],
+ $[ "id": "continue_15", "label": "Actualización en línea" ],
+ $[ "id": "continue_16", "label": "Usuarios" ],
+ $[ "id": "continue_17", "label": "Usuarios" ],
+ $[ "id": "continue_18", "label": "Usuarios" ],
+ $[ "id": "continue_19", "label": "Notas de la versión" ],
+ $[ "id": "continue_20", "label": "Configuración del hardware" ],
+ $[ "id": "continue_21", "label": "Configuración del hardware" ],
+ $[ "id": "continue_22", "label": "Configuración del hardware" ]
+ ];
+
+ list<map> steps = flatten( [ base_installation_steps, config_steps ] );
+
+
+ define void show_step( integer no )
+ ``{
+ string current_id = lookup( steps[ no ]:nil, "id", "");
+
+ UI::ReplaceWidget(`id(`contents),
+ `VBox(
+ `Heading( "Current workflow step:" ),
+ `VSpacing(0.5),
+ `Label( current_id )
+ ) );
+
+ UI::WizardCommand(`SetCurrentStep( current_id ) );
+ };
+
+ if ( ! UI::HasSpecialWidget(`Wizard) )
+ {
+ y2error( "This works only with UIs that provide the wizard widget!" );
+ return;
+ }
+
+ string help_text =
+ "<p>This is a help text.</p>"
+ + "<p>It should be helpful.</p>"
+ + "<p>If it isn't helpful, it should rather not be called a <i>help text</i>.</p>";
+
+ UI::OpenDialog(`opt(`defaultsize ),
+ `Wizard(`opt(`stepsEnabled),
+ `back, "&Back",
+ `abort, "Ab&ort",
+ `next, "&Next" ) );
+
+ // UI::DumpWidgetTree();
+
+ UI::WizardCommand(`SetDialogIcon( "/usr/share/YaST2/theme/SuSELinux/icons/22x22/apps/user_add.png" ) );
+ UI::WizardCommand(`SetDialogHeading( "Welcome to the YaST2 installation" ) );
+ UI::WizardCommand(`SetHelpText( help_text ) );
+ UI::WizardCommand(`ShowReleaseNotesButton( "&Release Notes", "release_notes" ) );
+
+ UI::WizardCommand(`AddStepHeading( "Base Installation" ) );
+
+ foreach ( map step, base_installation_steps, ``{
+ UI::WizardCommand(`AddStep( step["label"]:"", step["id"]:"" ) );
+ });
+
+
+ UI::WizardCommand(`AddStepHeading( "Überraschung" ) );
+
+ foreach ( map step, config_steps, ``{
+ UI::WizardCommand(`AddStep( step["label"]:"", step["id"]:"" ) );
+ });
+
+
+ integer current_step = 0;
+ show_step( 0 );
+
+ while( true )
+ {
+ symbol button = (symbol) UI::UserInput();
+
+ if ( button == `abort || button == `cancel )
+ break;
+
+ if ( button == `next || button == `back )
+ {
+ if ( button == `next && current_step+1 < size( steps ) )
+ {
+ current_step = current_step+1;
+
+ if ( current_step > 2 )
+ UI::WizardCommand(`HideReleaseNotesButton() );
+ }
+
+ if ( button == `back && current_step > 0 )
+ current_step = current_step-1;
+
+ show_step( current_step );
+ }
+ }
+
+ UI::CloseDialog();
+
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/src/YUI_builtins.cc new/yast2-core-2.16.18/libyui/src/YUI_builtins.cc
--- old/yast2-core-2.16.17/libyui/src/YUI_builtins.cc 2007-12-18 17:12:25.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/src/YUI_builtins.cc 2008-01-09 13:15:01.000000000 +0100
@@ -719,7 +719,7 @@
*
* @param term options
* @param term widget
- * @return boolean
+ * @return boolean true if success, false if error
*
* @usage OpenDialog( `opt( `defaultsize ), `Label( "Hello, World!" ) )
*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/src/YUIComponent.cc new/yast2-core-2.16.18/libyui/src/YUIComponent.cc
--- old/yast2-core-2.16.17/libyui/src/YUIComponent.cc 2007-11-23 10:48:35.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/src/YUIComponent.cc 2008-01-09 14:43:11.000000000 +0100
@@ -52,14 +52,17 @@
}
y2debug ("Setting UI component to '%s'", name().c_str());
- _uiComponent = this;
+ _uiComponent = this;
}
YUIComponent::~YUIComponent()
{
if ( _ui )
+ {
+ _ui->shutdownThreads(); // cannot be called in the UI's destructor
delete _ui;
+ }
}
@@ -164,9 +167,11 @@
void YUIComponent::result( const YCPValue & /*result*/ )
{
if ( _ui )
+ {
+ _ui->shutdownThreads(); // cannot be called in the UI's destructor
delete _ui;
-
- _ui = 0;
+ _ui = 0;
+ }
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/src/YUI_core.cc new/yast2-core-2.16.18/libyui/src/YUI_core.cc
--- old/yast2-core-2.16.17/libyui/src/YUI_core.cc 2007-11-23 10:48:35.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/src/YUI_core.cc 2008-01-09 14:33:51.000000000 +0100
@@ -55,8 +55,9 @@
extern void *start_ui_thread( void * yui );
-YUI::YUI( bool with_threads )
- : with_threads( with_threads )
+YUI::YUI( bool withThreads )
+ : _withThreads( withThreads )
+ , _uiThread( 0 )
, _moduleName( "yast2" )
, _productName( "SUSE Linux" )
, macroRecorder (0)
@@ -70,13 +71,11 @@
YUI::~YUI()
{
- if ( with_threads )
+ if ( _withThreads && _uiThread )
{
- terminateUIThread();
- close( pipe_to_ui[0] );
- close( pipe_to_ui[1] );
- close( pipe_from_ui[0] );
- close( pipe_from_ui[1] );
+ y2error( "shutdownThreads() was never called!" );
+ y2error( "shutting down now - this might segfault" );
+ shutdownThreads();
}
if ( YDialog::openDialogsCount() > 0 )
@@ -156,7 +155,7 @@
// method. It must be called at the end of the constructor of the specific
// UI (the Qt UI or the NCurses UI).
- if ( with_threads )
+ if ( _withThreads )
{
if ( pipe( pipe_from_ui ) == 0 &&
pipe( pipe_to_ui ) == 0 )
@@ -168,7 +167,7 @@
if ( fcntl( pipe_to_ui[0], F_SETFL, arg | O_NONBLOCK ) < 0 )
{
y2error( "Couldn't set O_NONBLOCK: errno=%d: %m", errno );
- with_threads = false;
+ _withThreads = false;
close( pipe_to_ui[0] );
close( pipe_to_ui[1] );
close( pipe_from_ui[0] );
@@ -197,7 +196,7 @@
{
pthread_attr_t attr;
pthread_attr_init( & attr );
- pthread_create( & ui_thread, & attr, start_ui_thread, this );
+ pthread_create( & _uiThread, & attr, start_ui_thread, this );
}
@@ -206,11 +205,27 @@
y2debug( "Telling UI thread to shut down" );
terminate_ui_thread = true;
signalUIThread();
- pthread_join( ui_thread, 0 );
+ y2debug( "Waiting for UI thread to shut down" );
+ waitForUIThread();
+ pthread_join( _uiThread, 0 );
y2debug( "UI thread shut down correctly" );
}
+void YUI::shutdownThreads()
+{
+ if ( _uiThread )
+ {
+ terminateUIThread();
+ _uiThread = 0;
+ close( pipe_to_ui[0] );
+ close( pipe_to_ui[1] );
+ close( pipe_from_ui[0] );
+ close( pipe_from_ui[1] );
+ }
+}
+
+
extern YCPValue UIUserInput ();
extern YCPValue UITimeoutUserInput( const YCPInteger& timeout );
extern YCPValue UIWaitForEvent();
@@ -353,7 +368,7 @@
idleLoop ( pipe_to_ui[0] );
// The pipe is non-blocking, so we have to check if we really read a
- // signal byte. Although idleLoop already makes a select, this seems to
+ // signal byte. Although idleLoop already does a select(), this seems to
// be necessary. Anyway: Why do we set the pipe to non-blocking if we
// wait in idleLoop for it to become readable? It is needed in
// YUIQt::idleLoop for QSocketNotifier.
@@ -362,7 +377,12 @@
continue;
if ( terminate_ui_thread )
+ {
+ y2debug( "Final sync with YCP thread" );
+ signalYCPThread();
+ y2debug( "Shutting down UI main loop" );
return;
+ }
_builtinCallData.result = _builtinCallData.function->evaluateCall_int();
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/libyui/src/YUI.h new/yast2-core-2.16.18/libyui/src/YUI.h
--- old/yast2-core-2.16.17/libyui/src/YUI.h 2007-12-12 10:30:17.000000000 +0100
+++ new/yast2-core-2.16.18/libyui/src/YUI.h 2008-01-09 14:38:42.000000000 +0100
@@ -85,7 +85,7 @@
/**
* Constructor.
**/
- YUI( bool with_threads );
+ YUI( bool withThreads );
friend class Y2UIFunction;
@@ -97,6 +97,13 @@
virtual ~YUI();
/**
+ * Shut down multithreading. This needs to be called before the destructor
+ * if the UI was created with threads. If the UI was created without
+ * threads, this does nothing.
+ **/
+ void shutdownThreads();
+
+ /**
* Access the global UI.
**/
static YUI * ui();
@@ -254,7 +261,7 @@
/**
* Running with threads?
**/
- bool runningWithThreads() const { return with_threads; }
+ bool runningWithThreads() const { return _withThreads; }
/**
* Call a UI builtin function in the correct thread (the UI thread).
@@ -662,12 +669,12 @@
/**
* true if a seperate UI thread is created
**/
- bool with_threads;
+ bool _withThreads;
/**
* Handle to the ui thread.
**/
- pthread_t ui_thread;
+ pthread_t _uiThread;
/**
* Inter-thread communication between the YCP thread and the UI thread:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/missing new/yast2-core-2.16.18/missing
--- old/yast2-core-2.16.17/missing 2007-11-23 11:06:56.000000000 +0100
+++ new/yast2-core-2.16.18/missing 2007-12-20 12:49:07.000000000 +0100
@@ -1,9 +1,9 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2006-05-10.23
+scriptversion=2005-06-08.21
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard , 1996.
@@ -33,8 +33,6 @@
fi
run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
@@ -46,7 +44,7 @@
msg="missing on your system"
-case $1 in
+case "$1" in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
@@ -79,7 +77,6 @@
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
@@ -109,7 +106,7 @@
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
-case $1 in
+case "$1" in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
@@ -138,7 +135,7 @@
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
-case $1 in
+case "$1" in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
@@ -167,7 +164,7 @@
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
- case $f in
+ case "$f" in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
@@ -195,8 +192,8 @@
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
if test -f "$file"; then
touch $file
else
@@ -217,25 +214,25 @@
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
+ if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
- case $LASTARG in
+ case "$LASTARG" in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
+ if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
+ if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
- if test ! -f y.tab.h; then
+ if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
- if test ! -f y.tab.c; then
+ if [ ! -f y.tab.c ]; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
@@ -247,18 +244,18 @@
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
- if test $# -ne 1; then
+ if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
- case $LASTARG in
+ case "$LASTARG" in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
+ if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
- if test ! -f lex.yy.c; then
+ if [ ! -f lex.yy.c ]; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
@@ -270,9 +267,11 @@
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+ fi
+ if [ -f "$file" ]; then
touch $file
else
test -z "$file" || exec >$file
@@ -290,17 +289,11 @@
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
@@ -324,13 +317,13 @@
fi
firstarg="$1"
if shift; then
- case $firstarg in
+ case "$firstarg" in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
- case $firstarg in
+ case "$firstarg" in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/VERSION new/yast2-core-2.16.18/VERSION
--- old/yast2-core-2.16.17/VERSION 2007-12-21 18:29:24.000000000 +0100
+++ new/yast2-core-2.16.18/VERSION 2008-01-09 14:53:31.000000000 +0100
@@ -1 +1 @@
-2.16.17
+2.16.18
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-core-2.16.17/ylwrap new/yast2-core-2.16.18/ylwrap
--- old/yast2-core-2.16.17/ylwrap 2007-11-23 11:07:02.000000000 +0100
+++ new/yast2-core-2.16.18/ylwrap 1970-01-01 01:00:00.000000000 +0100
@@ -1,223 +0,0 @@
-#! /bin/sh
-# ylwrap - wrapper for lex/yacc invocations.
-
-scriptversion=2005-05-14.22
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
-#
-# Written by Tom Tromey .
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to or send patches to
-# .
-
-case "$1" in
- '')
- echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
- exit 1
- ;;
- --basedir)
- basedir=$2
- shift 2
- ;;
- -h|--h*)
- cat <<\EOF
-Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
-
-Wrapper for lex/yacc invocations, renaming files as desired.
-
- INPUT is the input file
- OUTPUT is one file PROG generates
- DESIRED is the file we actually want instead of OUTPUT
- PROGRAM is program to run
- ARGS are passed to PROG
-
-Any number of OUTPUT,DESIRED pairs may be used.
-
-Report bugs to .
-EOF
- exit $?
- ;;
- -v|--v*)
- echo "ylwrap $scriptversion"
- exit $?
- ;;
-esac
-
-
-# The input.
-input="$1"
-shift
-case "$input" in
- [\\/]* | ?:[\\/]*)
- # Absolute path; do nothing.
- ;;
- *)
- # Relative path. Make it absolute.
- input="`pwd`/$input"
- ;;
-esac
-
-pairlist=
-while test "$#" -ne 0; do
- if test "$1" = "--"; then
- shift
- break
- fi
- pairlist="$pairlist $1"
- shift
-done
-
-# The program to run.
-prog="$1"
-shift
-# Make any relative path in $prog absolute.
-case "$prog" in
- [\\/]* | ?:[\\/]*) ;;
- *[\\/]*) prog="`pwd`/$prog" ;;
-esac
-
-# FIXME: add hostname here for parallel makes that run commands on
-# other machines. But that might take us over the 14-char limit.
-dirname=ylwrap$$
-trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
-mkdir $dirname || exit 1
-
-cd $dirname
-
-case $# in
- 0) $prog "$input" ;;
- *) $prog "$@" "$input" ;;
-esac
-ret=$?
-
-if test $ret -eq 0; then
- set X $pairlist
- shift
- first=yes
- # Since DOS filename conventions don't allow two dots,
- # the DOS version of Bison writes out y_tab.c instead of y.tab.c
- # and y_tab.h instead of y.tab.h. Test to see if this is the case.
- y_tab_nodot="no"
- if test -f y_tab.c || test -f y_tab.h; then
- y_tab_nodot="yes"
- fi
-
- # The directory holding the input.
- input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
- # Quote $INPUT_DIR so we can use it in a regexp.
- # FIXME: really we should care about more than `.' and `\'.
- input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
-
- while test "$#" -ne 0; do
- from="$1"
- # Handle y_tab.c and y_tab.h output by DOS
- if test $y_tab_nodot = "yes"; then
- if test $from = "y.tab.c"; then
- from="y_tab.c"
- else
- if test $from = "y.tab.h"; then
- from="y_tab.h"
- fi
- fi
- fi
- if test -f "$from"; then
- # If $2 is an absolute path name, then just use that,
- # otherwise prepend `../'.
- case "$2" in
- [\\/]* | ?:[\\/]*) target="$2";;
- *) target="../$2";;
- esac
-
- # We do not want to overwrite a header file if it hasn't
- # changed. This avoid useless recompilations. However the
- # parser itself (the first file) should always be updated,
- # because it is the destination of the .y.c rule in the
- # Makefile. Divert the output of all other files to a temporary
- # file so we can compare them to existing versions.
- if test $first = no; then
- realtarget="$target"
- target="tmp-`echo $target | sed s/.*[\\/]//g`"
- fi
- # Edit out `#line' or `#' directives.
- #
- # We don't want the resulting debug information to point at
- # an absolute srcdir; it is better for it to just mention the
- # .y file with no path.
- #
- # We want to use the real output file name, not yy.lex.c for
- # instance.
- #
- # We want the include guards to be adjusted too.
- FROM=`echo "$from" | sed \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
- -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
- TARGET=`echo "$2" | sed \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
- -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
-
- sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
- -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
-
- # Check whether header files must be updated.
- if test $first = no; then
- if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
- echo "$2" is unchanged
- rm -f "$target"
- else
- echo updating "$2"
- mv -f "$target" "$realtarget"
- fi
- fi
- else
- # A missing file is only an error for the first file. This
- # is a blatant hack to let us support using "yacc -d". If -d
- # is not specified, we don't want an error when the header
- # file is "missing".
- if test $first = yes; then
- ret=1
- fi
- fi
- shift
- shift
- first=no
- done
-else
- ret=$?
-fi
-
-# Remove the directory.
-cd ..
-rm -rf $dirname
-
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org