Hello community,

here is the log from the commit of package yast2-wagon for openSUSE:Factory
checked in at Sun Feb 20 19:51:26 CET 2011.



--------
--- yast2-wagon/yast2-wagon.changes     2011-01-05 11:04:29.000000000 +0100
+++ /mounts/work_src_done/STABLE/yast2-wagon/yast2-wagon.changes        
2011-02-18 14:39:36.000000000 +0100
@@ -1,0 +2,7 @@
+Fri Feb 18 14:22:27 CET 2011 - loci...@suse.cz
+
+- yast2-wagon control files have been moved to separate packages
+  yast2-wagon-control-SLE and yast2-wagon-control-openSUSE.
+- 2.20.3
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  yast2-wagon-2.20.2.tar.bz2

New:
----
  yast2-wagon-2.20.3.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-wagon.spec ++++++
--- /var/tmp/diff_new_pack.fwybGc/_old  2011-02-20 19:51:25.000000000 +0100
+++ /var/tmp/diff_new_pack.fwybGc/_new  2011-02-20 19:51:25.000000000 +0100
@@ -1,5 +1,5 @@
 #
-# spec file for package yast2-wagon (Version 2.20.2)
+# spec file for package yast2-wagon
 #
 # Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
@@ -19,11 +19,11 @@
 
 
 Name:           yast2-wagon
-Version:        2.20.2
+Version:        2.20.3
 Release:        1
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-Source0:        yast2-wagon-2.20.2.tar.bz2
+Source0:        yast2-wagon-2.20.3.tar.bz2
 
 Prefix:         /usr
 
@@ -41,9 +41,6 @@
 # Counting packages directly in packages proposal (BNC #573482)
 Requires:       yast2-update >= 2.18.7
 
-# Prevent from crashes (BNC #551613)
-Requires:       yast2-registration >= 2.18.0
-
 BuildRequires:  perl-XML-Writer update-desktop-files yast2 yast2-devtools 
yast2-testsuite yast2-update
 
 # xmllint
@@ -52,12 +49,15 @@
 # control.rng
 BuildRequires:  yast2-installation >= 2.17.44
 
-Provides:       
yast2-online-update-frontend:/usr/share/applications/YaST2/cd_update.desktop
+Provides:       
yast2-online-update-frontend:%{_datadir}/applications/YaST2/cd_update.desktop
 
 # See BNC #613820, Comment #22
 Conflicts:      yast2-perl-bindings < 2.19.0
 Conflicts:      yast2-storage < 2.19.0
 
+# Requires a control file
+Requires:       wagon-control-file
+
 BuildArch:      noarch
 
 Summary:        YaST2 - Migration Tool for Service Packs
@@ -68,7 +68,7 @@
 through command line tools.
 
 %prep
-%setup -n yast2-wagon-2.20.2
+%setup -n yast2-wagon-2.20.3
 
 %build
 %{prefix}/bin/y2tool y2autoconf
@@ -92,8 +92,13 @@
     %suse_update_desktop_file -d ycc_${d%.desktop} ${d%.desktop}
 done
 
+xmllint --noout --relaxng %{_datadir}/YaST2/control/control.rng 
%{buildroot}%{_datadir}/YaST2/control/*.xml
+# ghost file
+touch %{buildroot}%{_datadir}/YaST2/control/online_migration.xml
+
 %clean
 rm -rf "$RPM_BUILD_ROOT"
+rm -rf %{buildroot}%%{_datadir}/YaST2/control/online_migration.xml
 
 %files
 %defattr(-,root,root)
@@ -101,8 +106,72 @@
 /usr/share/YaST2/clients/*.ycp
 /usr/share/YaST2/modules/*.ycp
 /usr/share/YaST2/modules/*.ybc
-%dir /usr/share/YaST2/control
 %{prefix}/share/applications/YaST2/*.desktop
-/usr/share/YaST2/control/*.xml
 %doc %{prefix}/share/doc/packages/yast2-wagon
+%dir /usr/share/YaST2/include/wagon
+/usr/share/YaST2/include/wagon/*.ycp
+%exclude %{_datadir}/YaST2/control
+%exclude %{_datadir}/YaST2/control/*.xml
+
+#
+# yast2-wagon-control-openSUSE
+#
+
+%package control-openSUSE
+
+# Generic 'provides'
+Provides:       wagon-control-file
+
+Group:          System/YaST
+License:        GPLv2+
+
+Conflicts:      otherproviders(wagon-control-file)
+Supplements:    packageand(yast2-wagon:branding-openSUSE)
+
+Summary:        YaST Wagon control file for openSUSE
+
+%description control-openSUSE
+YaST Wagon control file for openSUSE
+
+%post control-openSUSE
+ln -sf online_migration-SLE.xml %{_datadir}/YaST2/control/online_migration.xml
+
+%files control-openSUSE
+%defattr(-,root,root)
+%dir %{_datadir}/YaST2/control
+%{_datadir}/YaST2/control/online_migration-openSUSE.xml
+%ghost %{_datadir}/YaST2/control/online_migration.xml
+
+#
+# yast2-wagon-control-SLE
+#
+
+%package control-SLE
+
+# Generic 'provides'
+Provides:       wagon-control-file
+
+Group:          System/YaST
+License:        GPLv2+
+
+# Prevent from crashes (BNC #551613)
+Requires:       yast2-registration >= 2.18.0
+
+Conflicts:      otherproviders(wagon-control-file)
+Supplements:    packageand(yast2-wagon:branding-SLE)
+
+Summary:        YaST Wagon control file for SLE
+
+%description control-SLE
+YaST Wagon control file for SLE
+
+%post control-SLE
+ln -sf online_migration-SLE.xml %{_datadir}/YaST2/control/online_migration.xml
+
+%files control-SLE
+%defattr(-,root,root)
+%dir %{_datadir}/YaST2/control
+%{_datadir}/YaST2/control/online_migration-SLE.xml
+%ghost %{_datadir}/YaST2/control/online_migration.xml
+
 %changelog

++++++ yast2-wagon-2.20.2.tar.bz2 -> yast2-wagon-2.20.3.tar.bz2 ++++++
++++ 1854 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-wagon-2.20.2/VERSION new/yast2-wagon-2.20.3/VERSION
--- old/yast2-wagon-2.20.2/VERSION      2011-01-05 10:59:53.000000000 +0100
+++ new/yast2-wagon-2.20.3/VERSION      2011-02-18 14:37:28.000000000 +0100
@@ -1 +1 @@
-2.20.2
+2.20.3
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-wagon-2.20.2/configure.in new/yast2-wagon-2.20.3/configure.in
--- old/yast2-wagon-2.20.2/configure.in 2011-01-05 11:01:31.000000000 +0100
+++ new/yast2-wagon-2.20.3/configure.in 2011-02-18 16:26:58.000000000 +0100
@@ -3,7 +3,7 @@
 dnl -- This file is generated by y2autoconf 2.18.11 - DO NOT EDIT! --
 dnl    (edit configure.in.in instead)
 
-AC_INIT(yast2-wagon, 2.20.2, http://bugs.opensuse.org/, yast2-wagon)
+AC_INIT(yast2-wagon, 2.20.3, http://bugs.opensuse.org/, yast2-wagon)
 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.20.2"
+VERSION="2.20.3"
 RPMNAME="yast2-wagon"
 MAINTAINER="Lukas Ocilka <loci...@suse.cz>"
 
@@ -163,6 +163,7 @@
 src/modules/Makefile
 src/clients/Makefile
 src/config/Makefile
+src/include/Makefile
 src/Makefile
 testsuite/Makefile)
 AC_OUTPUT
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-wagon-2.20.2/src/Makefile.am new/yast2-wagon-2.20.3/src/Makefile.am
--- old/yast2-wagon-2.20.2/src/Makefile.am      2010-03-18 14:57:59.000000000 
+0100
+++ new/yast2-wagon-2.20.3/src/Makefile.am      2011-02-18 16:26:53.000000000 
+0100
@@ -2,5 +2,5 @@
 # Makefile.am for wagon/src
 #
 
-SUBDIRS = modules clients config
+SUBDIRS = modules clients config include
 
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-wagon-2.20.2/src/clients/wagon.ycp 
new/yast2-wagon-2.20.3/src/clients/wagon.ycp
--- old/yast2-wagon-2.20.2/src/clients/wagon.ycp        2011-01-03 
15:54:38.000000000 +0100
+++ new/yast2-wagon-2.20.3/src/clients/wagon.ycp        2011-02-18 
16:19:28.000000000 +0100
@@ -28,6 +28,7 @@
     import "PackageCallbacks";
     import "Report";
     import "FileUtils";
+    import "Popup";
 
     include "wagon/common_func.ycp";
 
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-wagon-2.20.2/src/config/online_migration-SLE.xml 
new/yast2-wagon-2.20.3/src/config/online_migration-SLE.xml
--- old/yast2-wagon-2.20.2/src/config/online_migration-SLE.xml  1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-wagon-2.20.3/src/config/online_migration-SLE.xml  2011-02-18 
13:30:13.000000000 +0100
@@ -0,0 +1,329 @@
+<?xml version="1.0"?>
+<!--
+    Use /usr/share/YaST2/control/control.rng for control file validation,
+    e.g., xmllint -noout -relaxng /usr/share/YaST2/control/control.rng 
${XML_FILE}
+-->
+<productDefines  xmlns="http://www.suse.com/1.0/yast2ns";
+    xmlns:config="http://www.suse.com/1.0/configns";>
+
+<!-- This workflow is part of the yast2-wagon package -->
+
+<!-- 
+Work around for the text domain 
+textdomain="online-migration"
+-->
+    <textdomain>online-migration</textdomain>
+
+    <globals>
+       <!-- Change to 'true' to debug the workflow steps -->
+       <debug_workflow config:type="boolean">false</debug_workflow>
+
+       <default_subworkflow>manual</default_subworkflow>
+
+       <subworkflows config:type="list">
+           <!--
+               Simple workflow: Used when WAGON is called from applet
+           -->
+           <subworkflow>
+               <name>running_by_applet</name>
+               <modules config:type="list">
+                   <module>welcome</module>
+                   <module>update_online_mechanism</module>
+                   <module>install_migration_products</module>
+                   <module>suse_register_workflow</module>
+                   <module>wagon_modify_repositories</module>
+                   <module>prepare_progress</module>
+                   <module>point_of_no_return</module>
+                   <module>wagon_kickoff</module>
+                   <module>wagon_rpmcopy</module>
+                   <module>suseconfig_after_update</module>
+                   <module>restart_yast_before_registration</module>
+                   <module>suse_register_after_update</module>
+                   <module>finished</module>
+               </modules>
+               <proposals config:type="list">
+                   <proposal>wagon_proposal</proposal>
+               </proposals>
+           </subworkflow>
+
+           <!--
+               Manual workflow: Used when calling WAGON manually (Control 
center, ...)
+               without params. It's later switched to one of 'custom_url' or 
'suse_register'
+               workflows, so it actually contains both.
+           -->
+           <subworkflow>
+               <name>manual</name>
+               <modules config:type="list">
+                   <module>welcome</module>
+                   <module>update_online_mechanism</module>
+                   <module>install_migration_products</module>
+                   <!-- Workflow is tuned after this module -->
+                   <module>update_url_dialog</module>
+                   <module>suse_register_workflow</module>
+                   <module>wagon_manual_url_repositories</module>
+                   <module>wagon_modify_repositories</module>
+                   <module>wagon_check_repositories</module>
+                   <module>prepare_progress</module>
+                   <module>point_of_no_return</module>
+                   <module>wagon_kickoff</module>
+                   <module>wagon_rpmcopy</module>
+                   <module>suseconfig_after_update</module>
+                   <module>restart_yast_before_registration</module>
+                   <module>suse_register_after_update</module>
+                   <module>finished</module>
+               </modules>
+               <proposals config:type="list">
+                   <proposal>wagon_proposal</proposal>
+               </proposals>
+           </subworkflow>
+
+           <!--
+               PatchCD workflow: 'Custom URL' used directly
+           -->
+           <subworkflow>
+               <name>PatchCD</name>
+               <modules config:type="list">
+                   <module>welcome</module>
+                   <module>wagon_custom_url</module>
+                   <module>wagon_selfupdate_from_url</module>
+                   <module>prepare_progress</module>
+                   <module>point_of_no_return</module>
+                   <module>wagon_kickoff</module>
+                   <module>wagon_rpmcopy</module>
+                   <module>suseconfig_after_update</module>
+                   <module>restart_yast_before_registration</module>
+                   <module>suse_register_after_update</module>
+                   <module>finished</module>
+               </modules>
+               <proposals config:type="list">
+                   <proposal>wagon_proposal</proposal>
+               </proposals>
+           </subworkflow>
+       </subworkflows>
+    </globals>
+
+    <software>
+       <!--
+           Packages that affect the package manager.
+           If no patches are selected in the wagon self-update
+           packages are used as a fallback.
+       -->
+       <packages_affecting_pkg_manager config:type="list">
+           <package>yast2-wagon</package>
+           <package>yast2-online-update</package>
+           <package>yast2-pkg-bindings</package>
+           <package>yast2-update</package>
+           <package>libzypp</package>
+       </packages_affecting_pkg_manager>
+    </software>
+
+    <proposals config:type="list">
+       <proposal>
+           <label>Distribution Upgrade Settings</label>
+           <mode>update</mode>
+           <stage>normal</stage>
+           <name>wagon_proposal</name>
+           <unique_id>wagon_proposal</unique_id>
+           <enable_skip>no</enable_skip>
+
+           <proposal_modules config:type="list">
+               <proposal_module>add-on</proposal_module>
+               <proposal_module>wagon_update</proposal_module>
+               <proposal_module>packages</proposal_module>
+               <proposal_module>backup</proposal_module>
+           </proposal_modules>
+       </proposal>
+    </proposals>
+
+    <workflows config:type="list">
+
+       <workflow>
+           <defaults>
+               <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+           </defaults>
+
+           <label>Online Migration</label>
+           <!-- Mode: update, Stage: normal -->
+           <mode>update</mode>
+           <stage>normal</stage>
+
+           <modules config:type="list">
+               <module>
+                   <heading>yes</heading>
+                   <label>Preparation</label>
+               </module>
+
+               <!-- A welcome screen that informs user what is it all about. 
-->
+               <module>
+                   <label>Welcome</label>
+                   <name>welcome</name>
+                   <execute>welcome_in_wagon</execute>
+                   <enable_back>no</enable_back>
+               </module>
+
+               <!-- Update itself -->
+               <module>
+                   <label>Renew Update Stack</label>
+                   <name>update_online_mechanism</name>
+                   <execute>wagon_selfupdate</execute>
+               </module>
+
+               <!-- Add new 'migration-products' -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>install_migration_products</name>
+                   <execute>wagon_migration_products</execute>
+               </module>
+
+               <!-- Offer several possibilities how to set update repository 
URL -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>update_url_dialog</name>
+                   <execute>wagon_update_url</execute>
+               </module>
+
+               <!--
+                   Option A:
+                   (*) Automatically selected when running via applet
+                   (*) Offered in wagon_update_url if not running via applet
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>suse_register_workflow</name>
+                   <execute>wagon_registration_handler</execute>
+                   <!-- BNC #576553: By default, do not set any optional data 
-->
+                   <arguments>
+                       <suse_register_defaults>none</suse_register_defaults>
+                   </arguments>
+               </module>
+
+               <!--
+                   Option B:
+                   (*) Offered in wagon_update_url if not running via applet
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_manual_url_repositories</name>
+                   <execute>wagon_repositories_handler</execute>
+               </module>
+
+               <!--
+                   Used by PatchCD
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_selfupdate_from_url</name>
+                   <execute>wagon_selfupdate</execute>
+               </module>
+
+               <!--
+                   Used by PatchCD
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_custom_url</name>
+                   <execute>wagon_custom_url</execute>
+               </module>
+
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_modify_repositories</name>
+                   <execute>wagon_modify_repositories</execute>
+               </module>
+
+               <!--
+                   Used only if user decides to check repositories manually
+                   Option comes from 'update_url_dialog'
+                   BNC #579905
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_check_repositories</name>
+                   <execute>wagon_repositories_handler</execute>
+               </module>
+
+               <module>
+                   <heading>yes</heading>
+                   <label>Migration</label>
+               </module>
+
+               <!--
+                   Use migration URL to Update/Upgrade the running system
+                   This will replace the 'migration-product' with 'new-product'
+               -->
+               <module>
+                   <label>Update</label>
+                   <name>wagon_proposal</name>
+                   <execute>inst_proposal</execute>
+                   <proposal>wagon_proposal</proposal>
+               </module>
+
+               <!-- Download slideshow, count download sizes, ... -->
+               <module>
+                   <label>Update</label>
+                   <name>prepare_progress</name>
+                   <execute>inst_prepareprogress</execute>
+               </module>
+
+               <!-- From this point, some possibilities are simply 
'impossible' ;) -->
+               <module>
+                   <label>Update</label>
+                   <name>point_of_no_return</name>
+                   <execute>wagon_point_of_no_return</execute>
+               </module>
+
+               <module>
+                   <label>Update</label>
+                   <name>wagon_kickoff</name>
+                   <execute>inst_kickoff</execute>
+               </module>
+
+               <!-- Upgrade the packages -->
+               <module>
+                   <label>Update</label>
+                   <name>wagon_rpmcopy</name>
+                   <execute>inst_rpmcopy</execute>
+               </module>
+
+               <module>
+                   <label>Update</label>
+                   <name>suseconfig_after_update</name>
+                   <execute>inst_suseconfig</execute>
+               </module>
+
+               <!--
+                   BNC #587506: Restart YaST before registration is called to 
prevent
+                   from crashes caused by backward-incompatible changes in 
(Perl)
+                   libraries used by registration.
+               -->
+               <module>
+                   <label>Registration</label>
+                   <name>restart_yast_before_registration</name>
+                   <execute>wagon_restart_yast</execute>
+               </module>
+
+               <!-- Register the 'new-product' -->
+               <module>
+                   <label>Registration</label>
+                   <name>suse_register_after_update</name>
+                   <execute>wagon_registration_handler</execute>
+                   <!-- BNC #576553: By default, do not set any optional data 
-->
+                   <arguments>
+                       
<suse_register_defaults>selected</suse_register_defaults>
+                   </arguments>
+               </module>
+
+               <!-- Congratulate, Inform user to reboot etc. -->
+               <module>
+                   <label>Finished</label>
+                   <name>finished</name>
+                   <execute>wagon_congratulate</execute>
+               </module>
+           </modules>
+       </workflow>
+
+    </workflows>
+
+</productDefines>
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-wagon-2.20.2/src/config/online_migration-openSUSE.xml 
new/yast2-wagon-2.20.3/src/config/online_migration-openSUSE.xml
--- old/yast2-wagon-2.20.2/src/config/online_migration-openSUSE.xml     
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-wagon-2.20.3/src/config/online_migration-openSUSE.xml     
2011-02-18 13:39:00.000000000 +0100
@@ -0,0 +1,265 @@
+<?xml version="1.0"?>
+<!--
+    Use /usr/share/YaST2/control/control.rng for control file validation,
+    e.g., xmllint -noout -relaxng /usr/share/YaST2/control/control.rng 
${XML_FILE}
+-->
+<productDefines  xmlns="http://www.suse.com/1.0/yast2ns";
+    xmlns:config="http://www.suse.com/1.0/configns";>
+
+<!-- This workflow is part of the yast2-wagon package -->
+
+<!-- 
+Work around for the text domain 
+textdomain="online-migration"
+-->
+    <textdomain>online-migration</textdomain>
+
+    <globals>
+       <!-- Change to 'true' to debug the workflow steps -->
+       <debug_workflow config:type="boolean">false</debug_workflow>
+
+       <default_subworkflow>manual</default_subworkflow>
+
+       <subworkflows config:type="list">
+           <!--
+               Simple workflow: Used when WAGON is called from applet
+           -->
+           <subworkflow>
+               <name>running_by_applet</name>
+               <modules config:type="list">
+                   <module>welcome</module>
+                   <module>update_online_mechanism</module>
+                   <module>install_migration_products</module>
+                   <module>wagon_modify_repositories</module>
+                   <module>prepare_progress</module>
+                   <module>point_of_no_return</module>
+                   <module>wagon_kickoff</module>
+                   <module>wagon_rpmcopy</module>
+                   <module>suseconfig_after_update</module>
+                   <module>finished</module>
+               </modules>
+               <proposals config:type="list">
+                   <proposal>wagon_proposal</proposal>
+               </proposals>
+           </subworkflow>
+
+           <subworkflow>
+               <name>manual</name>
+               <modules config:type="list">
+                   <module>welcome</module>
+                   <module>update_online_mechanism</module>
+                   <module>install_migration_products</module>
+                   <module>wagon_manual_url_repositories</module>
+                   <module>wagon_modify_repositories</module>
+                   <module>wagon_check_repositories</module>
+                   <module>prepare_progress</module>
+                   <module>point_of_no_return</module>
+                   <module>wagon_kickoff</module>
+                   <module>wagon_rpmcopy</module>
+                   <module>suseconfig_after_update</module>
+                   <module>finished</module>
+               </modules>
+               <proposals config:type="list">
+                   <proposal>wagon_proposal</proposal>
+               </proposals>
+           </subworkflow>
+
+           <!--
+               PatchCD workflow: 'Custom URL' used directly
+           -->
+           <subworkflow>
+               <name>PatchCD</name>
+               <modules config:type="list">
+                   <module>welcome</module>
+                   <module>wagon_custom_url</module>
+                   <module>wagon_selfupdate_from_url</module>
+                   <module>prepare_progress</module>
+                   <module>point_of_no_return</module>
+                   <module>wagon_kickoff</module>
+                   <module>wagon_rpmcopy</module>
+                   <module>suseconfig_after_update</module>
+                   <module>finished</module>
+               </modules>
+               <proposals config:type="list">
+                   <proposal>wagon_proposal</proposal>
+               </proposals>
+           </subworkflow>
+       </subworkflows>
+    </globals>
+
+    <software>
+       <!--
+           Packages that affect the package manager.
+           If no patches are selected in the wagon self-update
+           packages are used as a fallback.
+       -->
+       <packages_affecting_pkg_manager config:type="list">
+           <package>yast2-wagon</package>
+           <package>yast2-online-update</package>
+           <package>yast2-pkg-bindings</package>
+           <package>yast2-update</package>
+           <package>libzypp</package>
+       </packages_affecting_pkg_manager>
+    </software>
+
+    <proposals config:type="list">
+       <proposal>
+           <label>Distribution Upgrade Settings</label>
+           <mode>update</mode>
+           <stage>normal</stage>
+           <name>wagon_proposal</name>
+           <unique_id>wagon_proposal</unique_id>
+           <enable_skip>no</enable_skip>
+
+           <proposal_modules config:type="list">
+               <proposal_module>add-on</proposal_module>
+               <proposal_module>wagon_update</proposal_module>
+               <proposal_module>packages</proposal_module>
+               <proposal_module>backup</proposal_module>
+           </proposal_modules>
+       </proposal>
+    </proposals>
+
+    <workflows config:type="list">
+
+       <workflow>
+           <defaults>
+               <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+           </defaults>
+
+           <label>Online Migration</label>
+           <!-- Mode: update, Stage: normal -->
+           <mode>update</mode>
+           <stage>normal</stage>
+
+           <modules config:type="list">
+               <module>
+                   <heading>yes</heading>
+                   <label>Preparation</label>
+               </module>
+
+               <!-- A welcome screen that informs user what is it all about. 
-->
+               <module>
+                   <label>Welcome</label>
+                   <name>welcome</name>
+                   <execute>welcome_in_wagon</execute>
+                   <enable_back>no</enable_back>
+               </module>
+
+               <!-- Update itself -->
+               <module>
+                   <label>Renew Update Stack</label>
+                   <name>update_online_mechanism</name>
+                   <execute>wagon_selfupdate</execute>
+               </module>
+
+               <!-- Add new 'migration-products' -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>install_migration_products</name>
+                   <execute>wagon_migration_products</execute>
+               </module>
+
+               <!--
+                   Option B:
+                   (*) Offered in wagon_update_url if not running via applet
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_manual_url_repositories</name>
+                   <execute>wagon_repositories_handler</execute>
+               </module>
+
+               <!--
+                   Used by PatchCD
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_selfupdate_from_url</name>
+                   <execute>wagon_selfupdate</execute>
+               </module>
+
+               <!--
+                   Used by PatchCD
+               -->
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_custom_url</name>
+                   <execute>wagon_custom_url</execute>
+               </module>
+
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_modify_repositories</name>
+                   <execute>wagon_modify_repositories</execute>
+               </module>
+
+               <module>
+                   <label>Migration Configuration</label>
+                   <name>wagon_check_repositories</name>
+                   <execute>wagon_repositories_handler</execute>
+               </module>
+
+               <module>
+                   <heading>yes</heading>
+                   <label>Migration</label>
+               </module>
+
+               <!--
+                   Use migration URL to Update/Upgrade the running system
+                   This will replace the 'migration-product' with 'new-product'
+               -->
+               <module>
+                   <label>Update</label>
+                   <name>wagon_proposal</name>
+                   <execute>inst_proposal</execute>
+                   <proposal>wagon_proposal</proposal>
+               </module>
+
+               <!-- Download slideshow, count download sizes, ... -->
+               <module>
+                   <label>Update</label>
+                   <name>prepare_progress</name>
+                   <execute>inst_prepareprogress</execute>
+               </module>
+
+               <!-- From this point, some possibilities are simply 
'impossible' ;) -->
+               <module>
+                   <label>Update</label>
+                   <name>point_of_no_return</name>
+                   <execute>wagon_point_of_no_return</execute>
+               </module>
+
+               <module>
+                   <label>Update</label>
+                   <name>wagon_kickoff</name>
+                   <execute>inst_kickoff</execute>
+               </module>
+
+               <!-- Upgrade the packages -->
+               <module>
+                   <label>Update</label>
+                   <name>wagon_rpmcopy</name>
+                   <execute>inst_rpmcopy</execute>
+               </module>
+
+               <module>
+                   <label>Update</label>
+                   <name>suseconfig_after_update</name>
+                   <execute>inst_suseconfig</execute>
+               </module>
+
+               <!-- Congratulate, Inform user to reboot etc. -->
+               <module>
+                   <label>Finished</label>
+                   <name>finished</name>
+                   <execute>wagon_congratulate</execute>
+               </module>
+           </modules>
+       </workflow>
+
+    </workflows>
+
+</productDefines>
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-wagon-2.20.2/src/config/online_migration.xml 
new/yast2-wagon-2.20.3/src/config/online_migration.xml
--- old/yast2-wagon-2.20.2/src/config/online_migration.xml      2010-03-18 
14:57:59.000000000 +0100
+++ new/yast2-wagon-2.20.3/src/config/online_migration.xml      1970-01-01 
01:00:00.000000000 +0100
@@ -1,329 +0,0 @@
-<?xml version="1.0"?>
-<!--
-    Use /usr/share/YaST2/control/control.rng for control file validation,
-    e.g., xmllint -noout -relaxng /usr/share/YaST2/control/control.rng 
${XML_FILE}
--->
-<productDefines  xmlns="http://www.suse.com/1.0/yast2ns";
-    xmlns:config="http://www.suse.com/1.0/configns";>
-
-<!-- This workflow is part of the yast2-wagon package -->
-
-<!-- 
-Work around for the text domain 
-textdomain="online-migration"
--->
-    <textdomain>online-migration</textdomain>
-
-    <globals>
-       <!-- Change to 'true' to debug the workflow steps -->
-       <debug_workflow config:type="boolean">false</debug_workflow>
-
-       <default_subworkflow>manual</default_subworkflow>
-
-       <subworkflows config:type="list">
-           <!--
-               Simple workflow: Used when WAGON is called from applet
-           -->
-           <subworkflow>
-               <name>running_by_applet</name>
-               <modules config:type="list">
-                   <module>welcome</module>
-                   <module>update_online_mechanism</module>
-                   <module>install_migration_products</module>
-                   <module>suse_register_workflow</module>
-                   <module>wagon_modify_repositories</module>
-                   <module>prepare_progress</module>
-                   <module>point_of_no_return</module>
-                   <module>wagon_kickoff</module>
-                   <module>wagon_rpmcopy</module>
-                   <module>suseconfig_after_update</module>
-                   <module>restart_yast_before_registration</module>
-                   <module>suse_register_after_update</module>
-                   <module>finished</module>
-               </modules>
-               <proposals config:type="list">
-                   <proposal>wagon_proposal</proposal>
-               </proposals>
-           </subworkflow>
-
-           <!--
-               Manual workflow: Used when calling WAGON manually (Control 
center, ...)
-               without params. It's later switched to one of 'custom_url' or 
'suse_register'
-               workflows, so it actually contains both.
-           -->
-           <subworkflow>
-               <name>manual</name>
-               <modules config:type="list">
-                   <module>welcome</module>
-                   <module>update_online_mechanism</module>
-                   <module>install_migration_products</module>
-                   <!-- Workflow is tuned after this module -->
-                   <module>update_url_dialog</module>
-                   <module>suse_register_workflow</module>
-                   <module>wagon_manual_url_repositories</module>
-                   <module>wagon_modify_repositories</module>
-                   <module>wagon_check_repositories</module>
-                   <module>prepare_progress</module>
-                   <module>point_of_no_return</module>
-                   <module>wagon_kickoff</module>
-                   <module>wagon_rpmcopy</module>
-                   <module>suseconfig_after_update</module>
-                   <module>restart_yast_before_registration</module>
-                   <module>suse_register_after_update</module>
-                   <module>finished</module>
-               </modules>
-               <proposals config:type="list">
-                   <proposal>wagon_proposal</proposal>
-               </proposals>
-           </subworkflow>
-
-           <!--
-               PatchCD workflow: 'Custom URL' used directly
-           -->
-           <subworkflow>
-               <name>PatchCD</name>
-               <modules config:type="list">
-                   <module>welcome</module>
-                   <module>wagon_custom_url</module>
-                   <module>wagon_selfupdate_from_url</module>
-                   <module>prepare_progress</module>
-                   <module>point_of_no_return</module>
-                   <module>wagon_kickoff</module>
-                   <module>wagon_rpmcopy</module>
-                   <module>suseconfig_after_update</module>
-                   <module>restart_yast_before_registration</module>
-                   <module>suse_register_after_update</module>
-                   <module>finished</module>
-               </modules>
-               <proposals config:type="list">
-                   <proposal>wagon_proposal</proposal>
-               </proposals>
-           </subworkflow>
-       </subworkflows>
-    </globals>
-
-    <software>
-       <!--
-           Packages that affect the package manager.
-           If no patches are selected in the wagon self-update
-           packages are used as a fallback.
-       -->
-       <packages_affecting_pkg_manager config:type="list">
-           <package>yast2-wagon</package>
-           <package>yast2-online-update</package>
-           <package>yast2-pkg-bindings</package>
-           <package>yast2-update</package>
-           <package>libzypp</package>
-       </packages_affecting_pkg_manager>
-    </software>
-
-    <proposals config:type="list">
-       <proposal>
-           <label>Distribution Upgrade Settings</label>
-           <mode>update</mode>
-           <stage>normal</stage>
-           <name>wagon_proposal</name>
-           <unique_id>wagon_proposal</unique_id>
-           <enable_skip>no</enable_skip>
-
-           <proposal_modules config:type="list">
-               <proposal_module>add-on</proposal_module>
-               <proposal_module>wagon_update</proposal_module>
-               <proposal_module>packages</proposal_module>
-               <proposal_module>backup</proposal_module>
-           </proposal_modules>
-       </proposal>
-    </proposals>
-
-    <workflows config:type="list">
-
-       <workflow>
-           <defaults>
-               <archs>all</archs>
-               <enable_back>yes</enable_back>
-               <enable_next>yes</enable_next>
-           </defaults>
-
-           <label>Online Migration</label>
-           <!-- Mode: update, Stage: normal -->
-           <mode>update</mode>
-           <stage>normal</stage>
-
-           <modules config:type="list">
-               <module>
-                   <heading>yes</heading>
-                   <label>Preparation</label>
-               </module>
-
-               <!-- A welcome screen that informs user what is it all about. 
-->
-               <module>
-                   <label>Welcome</label>
-                   <name>welcome</name>
-                   <execute>welcome_in_wagon</execute>
-                   <enable_back>no</enable_back>
-               </module>
-
-               <!-- Update itself -->
-               <module>
-                   <label>Renew Update Stack</label>
-                   <name>update_online_mechanism</name>
-                   <execute>wagon_selfupdate</execute>
-               </module>
-
-               <!-- Add new 'migration-products' -->
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>install_migration_products</name>
-                   <execute>wagon_migration_products</execute>
-               </module>
-
-               <!-- Offer several possibilities how to set update repository 
URL -->
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>update_url_dialog</name>
-                   <execute>wagon_update_url</execute>
-               </module>
-
-               <!--
-                   Option A:
-                   (*) Automatically selected when running via applet
-                   (*) Offered in wagon_update_url if not running via applet
-               -->
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>suse_register_workflow</name>
-                   <execute>wagon_registration_handler</execute>
-                   <!-- BNC #576553: By default, do not set any optional data 
-->
-                   <arguments>
-                       <suse_register_defaults>none</suse_register_defaults>
-                   </arguments>
-               </module>
-
-               <!--
-                   Option B:
-                   (*) Offered in wagon_update_url if not running via applet
-               -->
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>wagon_manual_url_repositories</name>
-                   <execute>wagon_repositories_handler</execute>
-               </module>
-
-               <!--
-                   Used by PatchCD
-               -->
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>wagon_selfupdate_from_url</name>
-                   <execute>wagon_selfupdate</execute>
-               </module>
-
-               <!--
-                   Used by PatchCD
-               -->
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>wagon_custom_url</name>
-                   <execute>wagon_custom_url</execute>
-               </module>
-
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>wagon_modify_repositories</name>
-                   <execute>wagon_modify_repositories</execute>
-               </module>
-
-               <!--
-                   Used only if user decides to check repositories manually
-                   Option comes from 'update_url_dialog'
-                   BNC #579905
-               -->
-               <module>
-                   <label>Migration Configuration</label>
-                   <name>wagon_check_repositories</name>
-                   <execute>wagon_repositories_handler</execute>
-               </module>
-
-               <module>
-                   <heading>yes</heading>
-                   <label>Migration</label>
-               </module>
-
-               <!--
-                   Use migration URL to Update/Upgrade the running system
-                   This will replace the 'migration-product' with 'new-product'
-               -->
-               <module>
-                   <label>Update</label>
-                   <name>wagon_proposal</name>
-                   <execute>inst_proposal</execute>
-                   <proposal>wagon_proposal</proposal>
-               </module>
-
-               <!-- Download slideshow, count download sizes, ... -->
-               <module>
-                   <label>Update</label>
-                   <name>prepare_progress</name>
-                   <execute>inst_prepareprogress</execute>
-               </module>
-
-               <!-- From this point, some possibilities are simply 
'impossible' ;) -->
-               <module>
-                   <label>Update</label>
-                   <name>point_of_no_return</name>
-                   <execute>wagon_point_of_no_return</execute>
-               </module>
-
-               <module>
-                   <label>Update</label>
-                   <name>wagon_kickoff</name>
-                   <execute>inst_kickoff</execute>
-               </module>
-
-               <!-- Upgrade the packages -->
-               <module>
-                   <label>Update</label>
-                   <name>wagon_rpmcopy</name>
-                   <execute>inst_rpmcopy</execute>
-               </module>
-
-               <module>
-                   <label>Update</label>
-                   <name>suseconfig_after_update</name>
-                   <execute>inst_suseconfig</execute>
-               </module>
-
-               <!--
-                   BNC #587506: Restart YaST before registration is called to 
prevent
-                   from crashes caused by backward-incompatible changes in 
(Perl)
-                   libraries used by registration.
-               -->
-               <module>
-                   <label>Registration</label>
-                   <name>restart_yast_before_registration</name>
-                   <execute>wagon_restart_yast</execute>
-               </module>
-
-               <!-- Register the 'new-product' -->
-               <module>
-                   <label>Registration</label>
-                   <name>suse_register_after_update</name>
-                   <execute>wagon_registration_handler</execute>
-                   <!-- BNC #576553: By default, do not set any optional data 
-->
-                   <arguments>
-                       
<suse_register_defaults>selected</suse_register_defaults>
-                   </arguments>
-               </module>
-
-               <!-- Congratulate, Inform user to reboot etc. -->
-               <module>
-                   <label>Finished</label>
-                   <name>finished</name>
-                   <execute>wagon_congratulate</execute>
-               </module>
-           </modules>
-       </workflow>
-
-    </workflows>
-
-</productDefines>
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-wagon-2.20.2/src/include/Makefile.am 
new/yast2-wagon-2.20.3/src/include/Makefile.am
--- old/yast2-wagon-2.20.2/src/include/Makefile.am      1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-wagon-2.20.3/src/include/Makefile.am      2010-03-18 
14:57:59.000000000 +0100
@@ -0,0 +1,13 @@
+#
+# Makefile.am for wagon/src/include
+#
+
+yncludedir = @yncludedir@/wagon
+
+ynclude_DATA = $(wildcard *.ycp)
+
+YCPCFLAGS = -M ../modules
+
+EXTRA_DIST = $(ynclude_DATA)
+
+include $(top_srcdir)/Makefile.am.common
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-wagon-2.20.2/src/include/common_func.ycp 
new/yast2-wagon-2.20.3/src/include/common_func.ycp
--- old/yast2-wagon-2.20.2/src/include/common_func.ycp  1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-wagon-2.20.3/src/include/common_func.ycp  2010-03-18 
14:57:59.000000000 +0100
@@ -0,0 +1,242 @@
+/**
+ * File:
+ *     include/wagon/common_func.ycp
+ *
+ * Module:
+ *     Wagon
+ *
+ * Authors:
+ *     Lukas Ocilka <loci...@suse.cz>
+ *
+ * Summary:
+ *     Online Migration Tool
+ *
+ * $Id$
+ *
+ */
+
+{
+    textdomain "wagon";
+
+    import "Label";
+    import "Popup";
+    import "PackagesUI";
+    import "Wagon";
+    import "Wizard";
+    import "GetInstArgs";
+    import "Report";
+    import "Directory";
+    import "FileUtils";
+
+    string solver_testcase_dir = sformat ("%1/wagon_solver_testcase", 
Directory::logdir);
+
+    boolean SolverRunWithFeedback () {
+       UI::OpenDialog (`Label (_("Solving the package dependencies...")));
+
+       boolean ret = Pkg::PkgSolve (true);
+
+       // BNC #582046: Store a solver testcase in case of solver issue
+       if (ret != true) {
+           y2warning ("Solver failed, storing solver testcase to %1", 
solver_testcase_dir);
+
+           if (FileUtils::Exists (solver_testcase_dir)) {
+               y2warning ("Directory %1 exists, removing first", 
solver_testcase_dir);
+               SCR::Execute (.target.bash, sformat ("rm -rf %1", 
solver_testcase_dir));
+           }
+
+           Pkg::CreateSolverTestCase (solver_testcase_dir);
+           y2milestone ("Done");
+       }
+
+       UI::CloseDialog();
+
+       return ret;
+    }
+
+    symbol SolveDependencies () {
+       symbol ret = `auto;
+
+       boolean solved = nil;
+
+       while (solved != true) {
+           // Trying to solve automatically
+           solved = SolverRunWithFeedback();
+           symbol ret_sel = nil;
+
+           // PkgSolve didn't report any problem
+           if (solved == true) {
+               y2milestone ("Solved automatically");
+               ret = `auto;
+           // There are some issues in selecting the patches
+           } else {
+               y2milestone ("Cannot be solved automatically");
+               while (true) {
+                   // Try to solve them manually
+                   ret_sel = PackagesUI::RunPackageSelector 
($["mode":`summaryMode]);
+
+                   // Cannot or don't want to accept the proposal
+                   if (ret_sel == `cancel) {
+                       // Confirmed
+                       if (Popup::AnyQuestion (
+                           // TRANSLATORS: headline
+                           _("Aborting the Upgrade"),
+                           // TRANSLATORS: pop-up question
+                           _("Cannot continue without installing the required 
patches.
+Are sure you want to abort the upgrade process?"),
+                           _("Abort Upgrade"),
+                           Label::NoButton(),
+                           `yes_button
+                       )) {
+                           ret = `abort;
+                           break;
+                       // Try again
+                       } else {
+                           continue;
+                       }
+                   // Solved manually
+                   } else if (ret_sel == `accept) {
+                       ret = `auto;
+                       solved = true;
+                       break;
+                   }
+               }
+           }
+
+           if (ret == `abort) {
+               solved = nil;
+               y2warning ("Aborting...");
+               break;
+           }
+
+           if (! Wagon::AcceptLicenses()) {
+               y2warning ("Some license(s) have been rejected, running solver 
again");
+               solved = nil;
+           }
+       }
+
+       return ret;
+    }
+
+    void ResetPackager () {
+       Wizard::SetContents (
+           _("Reseting Package Manager"),
+           `Label(_("Reseting package manager...")),
+           "",
+           false, true
+       );
+
+       y2milestone ("Reseting Pkg");
+       Pkg::PkgApplReset();
+       Pkg::PkgReset();
+
+       symbol status = nil;
+       string name = nil;
+
+       y2milestone ("Neutralizing all resolvables");
+       foreach (symbol resolvable, [`pattern, `patch, `package, `product, 
`srcpackage], {
+           Pkg::ResolvableNeutral ("" /* all */, resolvable, true /* force */);
+       });
+
+       y2milestone ("Running solver");
+       Pkg::PkgSolve (true);
+
+       Pkg::TargetFinish();
+       Pkg::SourceFinishAll();
+
+       Wagon::InitPkg();
+       Pkg::PkgSolve (true);
+    }
+
+    integer FindRepoIdByAlias (string repo_alias) {
+       integer repo_id = nil;
+
+       map one_repo = $[];
+
+       foreach (integer repo_id_to_check, Pkg::SourceGetCurrent (false /* all 
repos */), {
+           one_repo = Pkg::SourceGeneralData (repo_id_to_check);
+
+           if (one_repo["alias"]:"" == repo_alias) {
+               repo_id = repo_id_to_check;
+               break;
+           }
+       });
+
+       return repo_id;
+    }
+
+    /**
+     * During the first (migration) registration, it's not needed to include
+     * the optional data as it is also faster but after the migration, it's
+     * better to to include them.
+     * @see #BNC 576553
+     */
+    void AdjustSuseRegisterDefaults () {
+       map argmap = GetInstArgs::argmap();
+
+       if (argmap["suse_register_defaults"]:"" == "none") {
+           y2milestone (
+               "suse_register: no optional data selected by default 
(%1/%2/%3)",
+               SCR::Write (.sysconfig.suse_register.SUBMIT_OPTIONAL, "false"),
+               SCR::Write (.sysconfig.suse_register.SUBMIT_HWDATA, "false"),
+               SCR::Write (.sysconfig.suse_register, nil)
+           );
+       } else if (argmap["suse_register_defaults"]:"" == "selected") {
+           y2milestone (
+               "suse_register: all optional data selected by default 
(%1/%2/%3)",
+               SCR::Write (.sysconfig.suse_register.SUBMIT_OPTIONAL, "true"),
+               SCR::Write (.sysconfig.suse_register.SUBMIT_HWDATA, "true"),
+               SCR::Write (.sysconfig.suse_register, nil)
+           );
+       } else {
+           y2warning ("Undefined how to handled suse_register optional data");
+       }
+    }
+
+    // Full paths to product files
+    map <string, string> checked_product_files = $[];
+
+    /**
+     * Finds a package that provides the required product
+     * defined by parameter.
+     *
+     * @return string product_package
+     */
+    string GetProductPackageName (map <string, any> product) {
+        product = Wagon::MinimizeProductMap (product);
+        string product_file = product["product_file"]:"";
+
+        // undefined product file
+        if (product_file == nil || product_file == "") {
+            y2error ("Cannot remove product: %1, no product file defined", 
product);
+            Report::Error (sformat(_("Cannot remove product %1"), 
product["name"]:_("Unknown product")));
+            return "";
+        }
+
+        // unify the product file path
+        if (! regexpmatch (product_file, "^/etc/products\\.d/.+"))
+            product_file = sformat ("/etc/products.d/%1", product_file);
+
+        // use a cached value
+        if (haskey (checked_product_files, product_file)) {
+            if (checked_product_files[product_file]:"" == "") {
+                return "";
+            } else {
+                return checked_product_files[product_file]:"";
+            }
+        }
+
+        string package_name = Wagon::GetFileOwner (product_file);
+
+        // no package owns the file
+        if (package_name == nil || package_name == "") {
+            y2error ("Cannot find out file owner %1", product_file);
+            Report::Error (sformat(_("Cannot find out owner of product %1"), 
product["name"]:_("Unknown product")));
+            return "";
+        }
+
+        // cache the value
+        checked_product_files[product_file] = package_name;
+
+        return package_name;
+    }
+}


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to