Hello community,

here is the log from the commit of package yast2 for openSUSE:Factory checked 
in at 2013-11-07 09:15:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2 (Old)
 and      /work/SRC/openSUSE:Factory/.yast2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2/yast2.changes      2013-10-25 
11:37:59.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.yast2.new/yast2.changes 2013-11-07 
09:15:07.000000000 +0100
@@ -1,0 +2,22 @@
+Mon Nov  4 16:56:18 CET 2013 - [email protected]
+
+- Removed obsolete clients: password, remotechooser, remoteinstall
+  (gh#yast/yast-yast2#100)
+
+-------------------------------------------------------------------
+Fri Nov  1 14:54:16 CET 2013 - [email protected]
+
+- Removed checking for a fallback control file, that file is always
+  outdated and cannot work for all products
+  (gh#yast/yast-installation#86)
+- 3.1.3
+
+-------------------------------------------------------------------
+Thu Oct 31 21:50:05 CET 2013 - [email protected]
+
+- Configuration of Kernel modules loaded on boot has been moved
+  to /etc/modules-load.d/*.conf files. Adapted Kernel library
+  internal handling (bnc#838185).
+- 3.1.2
+
+-------------------------------------------------------------------

Old:
----
  yast2-3.1.2.tar.bz2

New:
----
  yast2-3.1.3.tar.bz2

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

Other differences:
------------------
++++++ yast2.spec ++++++
--- /var/tmp/diff_new_pack.fculeO/_old  2013-11-07 09:15:08.000000000 +0100
+++ /var/tmp/diff_new_pack.fculeO/_new  2013-11-07 09:15:08.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           yast2
-Version:        3.1.2
+Version:        3.1.3
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -36,6 +36,7 @@
 BuildRequires:  yast2-ycp-ui-bindings >= 2.18.4
 
 # Needed for tests
+BuildRequires:  grep
 BuildRequires:  rubygem-rspec
 
 # for symlinking yardoc duplicates

++++++ yast2-3.1.2.tar.bz2 -> yast2-3.1.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/.yardopts new/yast2-3.1.3/.yardopts
--- old/yast2-3.1.2/.yardopts   1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.3/.yardopts   2013-11-04 18:12:02.000000000 +0100
@@ -0,0 +1 @@
+--no-private --markup markdown --protected library/*/src/**/*.rb --readme 
README.md --output-dir ./doc/autodocs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/CONTRIBUTING.md 
new/yast2-3.1.3/CONTRIBUTING.md
--- old/yast2-3.1.2/CONTRIBUTING.md     1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.3/CONTRIBUTING.md     2013-11-04 18:12:02.000000000 +0100
@@ -0,0 +1,87 @@
+YaST Contribution Guidelines
+============================
+
+YaST is an open source project and as such it welcomes all kinds of
+contributions. If you decide to contribute, please follow these guidelines to
+ensure the process is effective and pleasant both for you and YaST maintainers.
+
+There are two main forms of contribution: reporting bugs and performing code
+changes.
+
+Bug Reports
+-----------
+
+If you find a problem, please report it either using
+[Bugzilla](https://bugzilla.novell.com/enter_bug.cgi?format=guided&product=openSUSE+Factory&component=YaST2)
+or [GitHub issues](../../issues). (For Bugzilla, use the [simplified
+registration](https://secure-www.novell.com/selfreg/jsp/createSimpleAccount.jsp)
+if you don't have an account yet.)
+
+If you find a problem, please report it either using
+[Bugzilla](https://bugzilla.novell.com/) or GitHub issues. We can't guarantee
+that every bug will be fixed, but we'll try.
+
+When creating a bug report, please follow our [bug reporting
+guidelines](http://en.opensuse.org/openSUSE:Report_a_YaST_bug).
+
+Code Changes
+------------
+
+We welcome all kinds of code contributions, from simple bug fixes to 
significant
+refactorings and implementation of new features. However, before making any
+non-trivial contribution, get in touch with us first — this can prevent wasted
+effort on both sides. Also, have a look at our [development
+documentation](http://en.opensuse.org/openSUSE:YaST_development).
+
+To send us your code change, use GitHub pull requests. The workflow is as
+follows:
+
+  1. Fork the project.
+
+  2. Create a topic branch based on `master`.
+
+  3. Implement your change, including tests (if possible). Make sure you adhere
+     to the [Ruby style
+     guide](https://github.com/SUSE/style-guides/blob/master/Ruby.md).
+
+  4. Make sure your change didn't break anything by building the RPM package
+     (`rake osc:build`). The build process includes running the full testsuite.
+
+  5. Publish the branch and create a pull request.
+
+  6. YaST developers will review your change and possibly point out issues.
+     Adapt the code under their guidance until they are all resolved.
+
+  7. Finally, the pull request will get merged or rejected.
+
+See also [GitHub's guide on
+contributing](https://help.github.com/articles/fork-a-repo).
+
+If you want to do multiple unrelated changes, use separate branches and pull
+requests.
+
+Do not change the `VERSION` and `*.changes` files as this could lead to
+conflicts.
+
+### Commits
+
+Each commit in the pull request should do only one thing, which is clearly
+described by its commit message. Especially avoid mixing formatting changes and
+functional changes into one commit. When writing commit messages, adhere to
+[widely used
+conventions](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
+
+If your commit is related to a bug in Buzgilla or an issue on GitHub, make sure
+you mention it in the commit message for cross-reference. Use format like
+bnc#775814 or gh#yast/yast-foo#42. See also [GitHub
+autolinking](https://help.github.com/articles/github-flavored-markdown#references)
+and [openSUSE abbreviation
+reference](http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines#Current_set_of_abbreviations).
+
+Additional Information
+----------------------
+
+If you have any question, feel free to ask at the [development mailing
+list](http://lists.opensuse.org/yast-devel/) or at the
+[#yast](http://webchat.freenode.net/?channels=%23yast) IRC channel on freenode.
+We'll do our best to provide a timely and accurate answer.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/VERSION new/yast2-3.1.3/VERSION
--- old/yast2-3.1.2/VERSION     2013-10-22 15:58:03.000000000 +0200
+++ new/yast2-3.1.3/VERSION     2013-11-04 18:12:02.000000000 +0100
@@ -1 +1 @@
-3.1.2
+3.1.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/control/src/modules/ProductControl.rb 
new/yast2-3.1.3/library/control/src/modules/ProductControl.rb
--- old/yast2-3.1.2/library/control/src/modules/ProductControl.rb       
2013-10-22 15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/control/src/modules/ProductControl.rb       
2013-11-04 18:12:03.000000000 +0100
@@ -80,17 +80,14 @@
 
       # The custom control file location, usually copied from
       # the root of the CD to the installation directory by linuxrc
-      @default_control_file = "/control.xml"
+      @installation_control_file = "/control.xml"
 
       # The file above get saved into the installed system for later
       # processing
       @saved_control_file = Ops.add(Directory.etcdir, "/control.xml")
 
-      # The packaged file which contains all default worklfows
-      @packaged_control_file = "/usr/share/YaST2/control/control.xml"
-
       # The control file we are using for this session.
-      @current_control_file = ""
+      @current_control_file = nil
 
 
       # Current Wizard Step
@@ -1327,37 +1324,32 @@
     # Initialize Product Control
     # @return [Boolean] True on success
     def Init
-      ret = false
-      @current_control_file = ""
-      order = [
-        @y2update_control_file, # /y2update/control.xml
-        @default_control_file, # /control.xml
-        @saved_control_file, # /etc/YaST2/control.xml
-        @packaged_control_file
-      ] # /usr/share/YaST2/control/control.xml
+      # Ordered list
+      control_file_candidates = [
+        @y2update_control_file,     # /y2update/control.xml
+        @installation_control_file, # /control.xml
+        @saved_control_file,        # /etc/YaST2/control.xml
+      ]
 
-      if @custom_control_file != ""
-        order = Builtins.prepend(order, @custom_control_file)
+      if @custom_control_file.nil?
+        Bultins.y2error("Incorrectly set custom control file: 
#{@custom_control_file}")
+        return false
       end
 
-      Builtins.y2milestone("Candidates: %1", order)
-      Builtins.foreach(order) do |control_file|
-        if FileUtils.Exists(control_file) && @current_control_file == ""
-          @current_control_file = control_file
-          raise Break
-        end
-      end
+      control_file_candidates.unshift(@custom_control_file) if 
!@custom_control_file.empty?
 
-      if @current_control_file == ""
-        Builtins.y2error("No control file found")
+      Builtins.y2milestone("Candidates: #{control_file_candidates.inspect}")
+      @current_control_file = control_file_candidates.find { |f| 
FileUtils.Exists(f) }
 
+      if @current_control_file.nil?
+        Builtins.y2error("No control file found within 
#{control_file_candidates.inspect}")
         return false
       end
 
-      Builtins.y2milestone("Reading control file: %1", @current_control_file)
+      Builtins.y2milestone("Reading control file: #{@current_control_file}")
       ReadControlFile(@current_control_file)
 
-      @current_control_file != ""
+      true
     end
 
     # Re-translate static part of wizard dialog and other predefined messages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/general/src/Makefile.am 
new/yast2-3.1.3/library/general/src/Makefile.am
--- old/yast2-3.1.2/library/general/src/Makefile.am     2013-10-22 
15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/general/src/Makefile.am     2013-11-04 
18:12:03.000000000 +0100
@@ -36,11 +36,6 @@
   modules/MailTable.pm \
   modules/MailTableInclude.pm
 
-client_DATA = \
-  clients/remoteinstall.rb \
-  clients/remotechooser.rb \
-  clients/password.rb
-
 scrconf_DATA = \
   scrconf/content.scr \
   scrconf/cfg_hotplug.scr \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/general/src/clients/password.rb 
new/yast2-3.1.3/library/general/src/clients/password.rb
--- old/yast2-3.1.2/library/general/src/clients/password.rb     2013-10-22 
15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/general/src/clients/password.rb     1970-01-01 
01:00:00.000000000 +0100
@@ -1,64 +0,0 @@
-# encoding: utf-8
-
-# ***************************************************************************
-#
-# Copyright (c) 2002 - 2012 Novell, Inc.
-# All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# 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, contact Novell, Inc.
-#
-# To contact Novell about this file by physical or electronic mail,
-# you may find current contact information at www.novell.com
-#
-# ***************************************************************************
-# File:        clients/password.ycp
-# Package:     yast2
-# Summary:     Ask user for password
-# Authors:     Michal Svec <[email protected]>
-#
-# $Id$
-#
-# Return the password, if user entered one.
-# Return nil, if user canceled or closed the window.
-module Yast
-  class PasswordClient < Client
-    def main
-      Yast.import "UI"
-
-      textdomain "base"
-      Yast.import "Label"
-
-      @contents = VBox(
-        # TextEntry label
-        Password(Id(:pw), _("&Enter Password:")),
-        HBox(
-          PushButton(Id(:ok), Opt(:hstretch, :default), Label.OKButton),
-          PushButton(Id(:cancel), Opt(:hstretch), Label.CancelButton)
-        )
-      )
-
-      UI.OpenDialog(@contents)
-      UI.SetFocus(Id(:pw))
-      @ret = nil
-      if UI.UserInput == :ok
-        @ret = Convert.to_string(UI.QueryWidget(Id(:pw), :Value))
-      end
-      UI.CloseDialog
-      @ret 
-
-      # EOF
-    end
-  end
-end
-
-Yast::PasswordClient.new.main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/general/src/clients/remotechooser.rb 
new/yast2-3.1.3/library/general/src/clients/remotechooser.rb
--- old/yast2-3.1.2/library/general/src/clients/remotechooser.rb        
2013-10-22 15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/general/src/clients/remotechooser.rb        
1970-01-01 01:00:00.000000000 +0100
@@ -1,190 +0,0 @@
-# encoding: utf-8
-
-# ***************************************************************************
-#
-# Copyright (c) 2002 - 2012 Novell, Inc.
-# All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# 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, contact Novell, Inc.
-#
-# To contact Novell about this file by physical or electronic mail,
-# you may find current contact information at www.novell.com
-#
-# ***************************************************************************
-# File:        clients/remotechooser.ycp
-# Package:     yast2
-# Summary:     Remote administration client
-# Authors:     Michal Svec <[email protected]>
-#
-# $Id$
-module Yast
-  class RemotechooserClient < Client
-    def main
-      Yast.import "UI"
-
-      textdomain "base"
-      Yast.import "Label"
-
-      @host = "localhost"
-      @user = ""
-      @modul = "menu"
-      @protocol = "ssh"
-
-      @hosts = []
-
-
-      Builtins.y2milestone("----------------------------------------")
-      Builtins.y2milestone("Remote chooser module started")
-
-      # Label text
-      UI.OpenDialog(Label(_("Scanning for hosts in the local network...")))
-      @hosts = Builtins.sort(Convert.to_list(SCR.Read(path(".net.hostnames"))))
-      @hosts = [] if @hosts == nil
-      UI.CloseDialog
-
-      # Get the current user name
-      @output = Convert.to_map(
-        SCR.Execute(path(".target.bash_output"), "echo \"$USER\"")
-      )
-      @user = Ops.get(
-        Builtins.splitstring(Ops.get_string(@output, "stdout", ""), "\n"),
-        0,
-        ""
-      )
-
-      @ret = nil
-      while true
-        @ret = ChooseDialog()
-
-        if @ret == :abort || @ret == :cancel || @ret == :back
-          break
-        # Launch it
-        elsif @ret == :next
-          @launch = Ops.add(Ops.add(@protocol, "://"), @user)
-          if @protocol != "su" && @protocol != "sudo"
-            @launch = Ops.add(Ops.add(@launch, "@"), @host)
-          end
-          @launch = Ops.add(Ops.add(@launch, "/"), @modul)
-
-          Builtins.y2milestone("Launching %1", @launch)
-          WFM.CallFunction(@launch, [])
-          next
-        else
-          Builtins.y2error("Unexpected return code: %1", @ret)
-          next
-        end
-      end
-
-      Builtins.y2milestone("Remote chooser module finished")
-      Builtins.y2milestone("----------------------------------------") 
-
-      # EOF
-
-      nil
-    end
-
-    def ChooseDialog
-      # `Left(`HSquash(`RadioButtonGroup(`id(`protocol),
-      #          `VBox(
-      #              `Left(`RadioButton(`id("telnet"), "telnet", true)),
-      #              `Left(`RadioButton(`id("rlogin"), "rlogin")),
-      #              `Left(`RadioButton(`id("rsh"),    "rsh")),
-      #              `Left(`RadioButton(`id("ssh"),    "ssh")),
-      #              `Left(`RadioButton(`id("su"),     "su")),
-      #              `Left(`RadioButton(`id("sudo"),   "sudo"))))));
-
-      contents = VBox(
-        HSpacing(50),
-        HBox(
-          # SelectionBox label
-          SelectionBox(Id(:hosts), Opt(:notify), _("&Available Hosts:"), 
@hosts),
-          HSpacing(1.0),
-          VBox(
-            # TextEntry label
-            TextEntry(Id(:host), _("&Host:"), @host),
-            # TextEntry label
-            TextEntry(Id(:user), _("&User name:"), @user),
-            # TextEntry label
-            TextEntry(Id(:modul), _("&Module to Start:"), @modul),
-            # ComboBox label
-            Left(
-              ComboBox(
-                Id(:protocol),
-                _("Connection &Protocol:"),
-                [
-                  Item(Id("ssh"), "ssh", @protocol == "ssh"),
-                  Item(Id("rsh"), "rsh", @protocol == "rsh"),
-                  Item(Id("rlogin"), "rlogin", @protocol == "rlogin"),
-                  Item(Id("telnet"), "telnet", @protocol == "telnet"),
-                  Item(Id("sudo"), "sudo", @protocol == "sudo"),
-                  Item(Id("su"), "su", @protocol == "su")
-                ]
-              )
-            ),
-            # `VCenter(ProtocolSelection()),
-            VSpacing(1),
-            HBox(
-              # PushButton label
-              PushButton(Id(:next), Opt(:default), _("&Launch")),
-              HStretch(),
-              PushButton(Id(:cancel), Label.CancelButton)
-            )
-          )
-        )
-      )
-
-      UI.OpenDialog(contents)
-
-      ret = nil
-      while true
-        ret = UI.UserInput
-
-        if ret == :abort || ret == :cancel
-          # if(ReallyAbort()) break;
-          # else continue;
-          break
-        elsif ret == :hosts
-          UI.ChangeWidget(
-            Id(:host),
-            :Value,
-            UI.QueryWidget(Id(:hosts), :CurrentItem)
-          )
-          next
-        elsif ret == :back
-          break
-        elsif ret == :next
-          # FIXME check_*
-          break
-        else
-          Builtins.y2error("Unexpected return code: %1", ret)
-          next
-        end
-      end
-
-      if ret == :next
-        @protocol = Convert.to_string(UI.QueryWidget(Id(:protocol), :Value))
-        @modul = Convert.to_string(UI.QueryWidget(Id(:modul), :Value))
-        @user = Convert.to_string(UI.QueryWidget(Id(:user), :Value))
-        @host = Convert.to_string(UI.QueryWidget(Id(:host), :Value))
-
-        @host = "localhost" if @host == ""
-        @modul = "menu" if @modul == ""
-      end
-
-      UI.CloseDialog
-      deep_copy(ret)
-    end
-  end
-end
-
-Yast::RemotechooserClient.new.main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/general/src/clients/remoteinstall.rb 
new/yast2-3.1.3/library/general/src/clients/remoteinstall.rb
--- old/yast2-3.1.2/library/general/src/clients/remoteinstall.rb        
2013-10-22 15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/general/src/clients/remoteinstall.rb        
1970-01-01 01:00:00.000000000 +0100
@@ -1,119 +0,0 @@
-# encoding: utf-8
-
-# ***************************************************************************
-#
-# Copyright (c) 2002 - 2012 Novell, Inc.
-# All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# 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, contact Novell, Inc.
-#
-# To contact Novell about this file by physical or electronic mail,
-# you may find current contact information at www.novell.com
-#
-# ***************************************************************************
-# File:        clients/remoteinstall.ycp
-# Package:     yast2
-# Summary:     Remote installation client
-# Authors:     Michal Svec <[email protected]>
-#
-# $Id$
-module Yast
-  class RemoteinstallClient < Client
-    def main
-      Yast.import "UI"
-
-      textdomain "base"
-      Yast.import "Label"
-
-      Builtins.y2milestone("----------------------------------------")
-      Builtins.y2milestone("Remote installation module started")
-
-      @device = ""
-      # Initialize the serial device
-      @device = Convert.to_string(
-        SCR.Read(path(".sysconfig.mouse.MOUSEDEVICE"))
-      )
-      if @device == "/dev/ttyS0"
-        @device = "/dev/ttyS1"
-      else
-        @device = "/dev/ttyS0"
-      end
-      Builtins.y2debug("device=%1", @device)
-
-      # Dialog contents
-      @contents = HBox(
-        HSpacing(1),
-        VBox(
-          VSpacing(0.2),
-          # ComboBox label
-          ComboBox(
-            Id(:device),
-            Opt(:editable),
-            _("Select the Serial &Interface to Use:"),
-            [
-              Item(Id("/dev/ttyS0"), "/dev/ttyS0", @device == "/dev/ttyS0"),
-              Item(Id("/dev/ttyS1"), "/dev/ttyS1", @device == "/dev/ttyS1")
-            ]
-          ),
-          VSpacing(1),
-          HBox(
-            # PushButton label
-            PushButton(Id(:next), Opt(:default), _("&Launch")),
-            HStretch(),
-            PushButton(Id(:cancel), Label.CancelButton)
-          )
-        ),
-        HSpacing(1)
-      )
-
-      UI.OpenDialog(@contents)
-      UI.SetFocus(Id(:device))
-
-      # Main cycle
-      @ret = nil
-      while true
-        @ret = UI.UserInput
-
-        if @ret == :abort || @ret == :cancel || @ret == :back
-          # if(ReallyAbort()) break;
-          # else continue;
-          break
-        elsif @ret == :next
-          # FIXME check_* device!="" and device exists
-          break
-        else
-          Builtins.y2error("Unexpected return code: %1", @ret)
-          next
-        end
-      end
-
-      @device = Convert.to_string(UI.QueryWidget(Id(:device), :Value))
-      UI.CloseDialog
-
-      if @ret == :next
-        @modulename = Ops.add("serial(115200):", @device)
-        Builtins.y2debug("modulename=%1", @modulename)
-        WFM.CallFunction(@modulename, [])
-      end
-
-      Builtins.y2milestone("Remote installation module finished")
-      Builtins.y2milestone("----------------------------------------") 
-
-      # EOF
-
-      nil
-    end
-  end
-end
-
-Yast::RemoteinstallClient.new.main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/general/src/modules/Report.rb 
new/yast2-3.1.3/library/general/src/modules/Report.rb
--- old/yast2-3.1.2/library/general/src/modules/Report.rb       2013-10-22 
15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/general/src/modules/Report.rb       2013-11-04 
18:12:03.000000000 +0100
@@ -29,16 +29,20 @@
 #
 # $Id$
 #
-# Report module collects warnings and errors from modules in auto installation 
mode.
-# Collected messages can be displayed later.
 #
 require "yast"
 
 module Yast
+  # Report module is universal reporting module. It properly display messages
+  # in CLI, TUI, GUI or even in automatic installation. It also collects
+  # warnings and errors. Collected messages can be displayed later.
+  # @TODO not all methods respect all environment, feel free to open issue with
+  #   method that doesn't respect it.
   class ReportClass < Module
     def main
       textdomain "base"
 
+      Yast.import "Mode"
       Yast.import "Popup"
       Yast.import "Summary"
 
@@ -542,14 +546,19 @@
     end
 
 
-    # Store new error text
+    # Display and record error string.
+    #
+    # @note Displaying can be globally disabled using Display* methods.
     # @param [String] error_string error text, it can contain new line 
characters ("\n")
-    # @return [void]
+    # @return [nil]
     def Error(error_string)
       Builtins.y2error(1, "%1", error_string) if @log_errors
 
       if @display_errors
-        if Ops.greater_than(@timeout_errors, 0)
+        if Mode.commandline
+          Yast.import "CommandLine"
+          CommandLine.Print error_string
+        elsif Ops.greater_than(@timeout_errors, 0)
           Popup.TimedError(error_string, @timeout_errors)
         else
           Popup.Error(error_string)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/system/Makefile.am 
new/yast2-3.1.3/library/system/Makefile.am
--- old/yast2-3.1.2/library/system/Makefile.am  2013-10-22 15:58:03.000000000 
+0200
+++ new/yast2-3.1.3/library/system/Makefile.am  2013-11-04 18:12:03.000000000 
+0100
@@ -1,3 +1,3 @@
 # Makefile.am for yast2/library/system
 
-SUBDIRS = doc src testsuite
+SUBDIRS = doc src testsuite test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/system/src/modules/Kernel.rb 
new/yast2-3.1.3/library/system/src/modules/Kernel.rb
--- old/yast2-3.1.2/library/system/src/modules/Kernel.rb        2013-10-22 
15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/system/src/modules/Kernel.rb        2013-11-04 
18:12:03.000000000 +0100
@@ -38,6 +38,16 @@
 
 module Yast
   class KernelClass < Module
+
+    # default configuration file for Kernel modules loaded on boot
+    MODULES_CONF_FILE = "yast.conf"
+
+    # directory where configuration for Kernel modules loaded on boot is stored
+    MODULES_DIR = "/etc/modules-load.d/"
+
+    # SCR path for reading/writing Kernel modules
+    MODULES_SCR = Path.new(".kernel_modules_to_load")
+
     def main
       Yast.import "Pkg"
 
@@ -80,13 +90,9 @@
 
       # modules loaded on boot
 
-      # List of changes in /etc/sysconfig/kernel:MODULES_LOADED_ON_BOOT
-      # Needs to be stored as a list of changes due to the fact that some RPMs
-      # change the variable during installation
-      # list member is a map with keys "operation" (value "add" or "detete") 
and
-      # "name" (name of the module)
-      @kernel_modules_to_load = []
-
+      # Kernel modules configured to be loaded on boot
+      @modules_to_load = nil
+      @modules_to_load_old = nil
 
       # kernel was reinstalled
 
@@ -547,74 +553,78 @@
 
     # functions related to kernel's modules loaded on boot
 
+
+
+    # Resets the internal cache
+    def reset_modules_to_load
+      @modules_to_load = nil
+    end
+
+    # Returns hash of kernel modules to be loaded on boot
+    # - key is the config file
+    # - value is list of modules in that particular file
+    #
+    # @return [Hash] of modules
+    def modules_to_load
+      read_modules_to_load if @modules_to_load.nil?
+
+      @modules_to_load
+    end
+
+    # Returns whether the given kernel module is included in list of modules
+    # to be loaded on boot
+    #
+    # @param [String] kernel module
+    # @return [Boolean] whether the given module is in the list
+    def module_to_be_loaded?(kernel_module)
+      modules_to_load.values.any? {|m| m.include?(kernel_module)}
+    end
+
     # Add a kernel module to the list of modules to load after boot
     # @param string module name
-    # add the module name to sysconfig variable
     def AddModuleToLoad(name)
       Builtins.y2milestone("Adding module to be loaded at boot: %1", name)
-      @kernel_modules_to_load = Builtins.add(
-        @kernel_modules_to_load,
-        { "operation" => "add", "name" => name }
-      )
 
-      nil
+      unless module_to_be_loaded?(name)
+        @modules_to_load[MODULES_CONF_FILE] << name
+      end
     end
 
     # Remove a kernel module from the list of modules to load after boot
     # @param [String] name string the name of the module
     def RemoveModuleToLoad(name)
-      Builtins.y2milestone("Removing module to be loaded at boot: %1", name)
-      @kernel_modules_to_load = Builtins.add(
-        @kernel_modules_to_load,
-        { "operation" => "remove", "name" => name }
-      )
+      modules_to_load
 
-      nil
+      return true unless module_to_be_loaded?(name)
+
+      Builtins.y2milestone("Removing module to be loaded at boot: %1", name)
+      @modules_to_load.each do |key, val|
+        val.delete(name)
+      end
     end
 
     # SaveModuleToLoad ()
-    # save the sysconfig variable to the file
+    # save the sysconfig variable to /etc/modules-load.d/*.conf configuration 
files
     # @return [Boolean] true on success
     def SaveModulesToLoad
-      # if nothing changed, just return success
-      return true if Builtins.size(@kernel_modules_to_load) == 0
+      modules_to_load
+      success = true
 
-      # first read current status
-      modules_to_load_str = Convert.to_string(
-        SCR.Read(path(".sysconfig.kernel.MODULES_LOADED_ON_BOOT"))
-      )
-      modules_to_load_str = "" if modules_to_load_str == nil
-      modules_to_load = Builtins.splitstring(modules_to_load_str, " ")
-      modules_to_load = Builtins.filter(modules_to_load) { |s| s != "" }
-      Builtins.y2milestone(
-        "Read modules to be loaded at boot: %1",
-        modules_to_load
-      )
+      @modules_to_load.each do |file, modules|
+        # The content hasn't changed
+        next if (modules.sort == @modules_to_load_old[file].sort)
 
-      # apply operations on the list
-      Builtins.foreach(@kernel_modules_to_load) do |op_desc|
-        op = Ops.get(op_desc, "operation", "")
-        name = Ops.get(op_desc, "name", "")
-        if op == "remove"
-          modules_to_load = Builtins.filter(modules_to_load) { |m| m != name }
-        elsif op == "add"
-          if !Builtins.contains(modules_to_load, name)
-            modules_to_load = Builtins.add(modules_to_load, name)
-          end
+        if !register_modules_agent(file)
+          Builtins.y2error("Cannot register new SCR agent for #{file_path} 
file")
+          success = false
+          next
         end
+
+        SCR::Write(MODULES_SCR, modules)
+        SCR.UnregisterAgent(MODULES_SCR)
       end
 
-      # and sabe the list
-      Builtins.y2milestone(
-        "Saving modules to be loaded at boot: %1",
-        modules_to_load
-      )
-      modules_to_load_str = Builtins.mergestring(modules_to_load, " ")
-      SCR.Write(
-        path(".sysconfig.kernel.MODULES_LOADED_ON_BOOT"),
-        modules_to_load_str
-      )
-      SCR.Write(path(".sysconfig.kernel"), nil)
+      success
     end
 
     # kernel was reinstalled stuff
@@ -640,6 +650,65 @@
       @inform_about_kernel_change
     end
 
+  private
+
+    # Registers new SCR agent for a file given as parameter
+    #
+    # @param [String] file name in directory defined in MODULES_DIR
+    def register_modules_agent(file_name)
+      full_path = File.join(MODULES_DIR, file_name)
+
+      SCR::RegisterAgent(
+        MODULES_SCR,
+        term(
+          :ag_anyagent,
+          term(
+            :Description,
+
+            term(
+              :File,
+              full_path
+            ),
+
+            # Comments
+            "#\n",
+
+            # Read-only?
+            false,
+
+            term(
+              :List,
+              term(:String, "^\n"),
+              "\n"
+            )
+          )
+        )
+      )
+    end
+
+    # Loads the current configuration of Kernel modules
+    # to be loaded on boot to the internal cache
+    #
+    # @return [Hash] with the configuration
+    def read_modules_to_load
+      @modules_to_load = {MODULES_CONF_FILE => []}
+
+      SCR::Read(path(".target.dir"), MODULES_DIR).each do |file_name|
+        next unless file_name =~ /^.+\.conf$/
+
+        if !register_modules_agent(file_name)
+          Builtins.y2error("Cannot register new SCR agent for #{file_path} 
file")
+          next
+        end
+
+        @modules_to_load[file_name] = SCR::Read(MODULES_SCR)
+        SCR.UnregisterAgent(MODULES_SCR)
+      end
+
+      @modules_to_load_old = deep_copy(@modules_to_load)
+      @modules_to_load
+    end
+
     publish :function => :AddCmdLine, :type => "void (string, string)"
     publish :function => :GetVgaType, :type => "string ()"
     publish :function => :SetVgaType, :type => "void (string)"
@@ -654,12 +723,16 @@
     publish :function => :GetFinalKernel, :type => "string ()"
     publish :function => :ComputePackagesForBase, :type => "list <string> 
(string, boolean)"
     publish :function => :ComputePackages, :type => "list <string> ()"
-    publish :function => :AddModuleToLoad, :type => "void (string)"
-    publish :function => :RemoveModuleToLoad, :type => "void (string)"
-    publish :function => :SaveModulesToLoad, :type => "boolean ()"
     publish :function => :SetInformAboutKernelChange, :type => "void (boolean)"
     publish :function => :GetInformAboutKernelChange, :type => "boolean ()"
     publish :function => :InformAboutKernelChange, :type => "boolean ()"
+
+    # Handling for Kernel modules loaded on boot
+    publish :function => :AddModuleToLoad, :type => "void (string)"
+    publish :function => :RemoveModuleToLoad, :type => "void (string)"
+    publish :function => :SaveModulesToLoad, :type => "boolean ()"
+    publish :function => :reset_modules_to_load, :type => "void ()"
+    publish :function => :modules_to_load, :type => "map <string, list> ()"
   end
 
   Kernel = KernelClass.new
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/system/test/Makefile.am 
new/yast2-3.1.3/library/system/test/Makefile.am
--- old/yast2-3.1.2/library/system/test/Makefile.am     1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-3.1.3/library/system/test/Makefile.am     2013-11-04 
18:12:03.000000000 +0100
@@ -0,0 +1,7 @@
+TESTS = \
+  kernel_test.rb
+
+TEST_EXTENSIONS = .rb
+RB_LOG_COMPILER = rspec
+VERBOSE = 1
+EXTRA_DIST = $(TESTS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/system/test/data/modules.d/MODULES_LOADED_ON_BOOT.conf 
new/yast2-3.1.3/library/system/test/data/modules.d/MODULES_LOADED_ON_BOOT.conf
--- 
old/yast2-3.1.2/library/system/test/data/modules.d/MODULES_LOADED_ON_BOOT.conf  
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/yast2-3.1.3/library/system/test/data/modules.d/MODULES_LOADED_ON_BOOT.conf  
    2013-11-04 18:12:03.000000000 +0100
@@ -0,0 +1,10 @@
+#
+# These kernel modules will be loaded on boot
+# One module per line
+#
+
+# Some comment
+module-a
+
+# Another comment
+module-b
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/system/test/data/modules.d/not_a_conf_file 
new/yast2-3.1.3/library/system/test/data/modules.d/not_a_conf_file
--- old/yast2-3.1.2/library/system/test/data/modules.d/not_a_conf_file  
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.3/library/system/test/data/modules.d/not_a_conf_file  
2013-11-04 18:12:03.000000000 +0100
@@ -0,0 +1,4 @@
+Whatever is here
+must not be loaded
+as a kernel
+module
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/system/test/data/modules.d/user-added-1.conf 
new/yast2-3.1.3/library/system/test/data/modules.d/user-added-1.conf
--- old/yast2-3.1.2/library/system/test/data/modules.d/user-added-1.conf        
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.3/library/system/test/data/modules.d/user-added-1.conf        
2013-11-04 18:12:03.000000000 +0100
@@ -0,0 +1,7 @@
+user-module-1
+user-module-2
+
+# User comment
+# on several
+# lines
+user-module-3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/system/test/data/modules.d/user-added-2.conf 
new/yast2-3.1.3/library/system/test/data/modules.d/user-added-2.conf
--- old/yast2-3.1.2/library/system/test/data/modules.d/user-added-2.conf        
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.3/library/system/test/data/modules.d/user-added-2.conf        
2013-11-04 18:12:03.000000000 +0100
@@ -0,0 +1 @@
+user-module-4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/system/test/kernel_test.rb 
new/yast2-3.1.3/library/system/test/kernel_test.rb
--- old/yast2-3.1.2/library/system/test/kernel_test.rb  1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-3.1.3/library/system/test/kernel_test.rb  2013-11-04 
18:12:03.000000000 +0100
@@ -0,0 +1,116 @@
+#! /usr/bin/env rspec
+
+ENV["Y2DIR"] = File.expand_path("../../src", __FILE__)
+
+require "yast"
+require "tmpdir"
+
+include Yast
+
+Yast.import "Kernel"
+
+DEFAULT_DATA_DIR = File.join(File.expand_path(File.dirname(__FILE__)), 
"data/modules.d")
+
+describe "Kernel" do
+  before (:each) do
+    stub_const("Yast::KernelClass::MODULES_DIR", DEFAULT_DATA_DIR)
+    @default_modules = {
+      Yast::KernelClass::MODULES_CONF_FILE => [],
+      "MODULES_LOADED_ON_BOOT.conf"=>["module-a", "module-b"],
+      "user-added-1.conf" => ["user-module-1", "user-module-2", 
"user-module-3"],
+      "user-added-2.conf"=>["user-module-4"],
+    }
+    Yast::Kernel.reset_modules_to_load
+  end
+
+  describe "#modules_to_load" do
+    it "returns hash of modules to load" do
+      expect(Yast::Kernel.modules_to_load).to eq(@default_modules)
+    end
+  end
+
+  describe "#module_to_be_loaded?" do
+    it "tests whether module is loaded on boot" do
+      ["module-a", "module-b", "user-module-1", "user-module-2", 
"user-module-3", "user-module-4"].each do |kernel_module|
+        expect(Yast::Kernel.module_to_be_loaded?(kernel_module)).to be_true
+      end
+
+      ["module-c", "user-module-5"].each do |kernel_module|
+        expect(Yast::Kernel.module_to_be_loaded?(kernel_module)).to be_false
+      end
+    end
+  end
+
+  describe "#AddModuleToLoad" do
+    it "adds new module to be loaded on boot" do
+      new_module = "new-kernel-module"
+      expect(Yast::Kernel.module_to_be_loaded?(new_module)).to be_false
+      Yast::Kernel.AddModuleToLoad new_module
+      expect(Yast::Kernel.module_to_be_loaded?(new_module)).to be_true
+    end
+
+    it "adds module only once" do
+      new_module = "new-kernel-module"
+      Yast::Kernel.AddModuleToLoad new_module
+      Yast::Kernel.AddModuleToLoad new_module
+      expect(Yast::Kernel.modules_to_load.values.flatten.select{|m| m == 
new_module}.size).to eq(1)
+    end
+  end
+
+  describe "#RemoveModuleToLoad" do
+    it "removes module from list of modules to be loaded on boot" do
+      module_to_remove = "user-module-2"
+      expect(Yast::Kernel.module_to_be_loaded?(module_to_remove)).to be_true
+      Yast::Kernel.RemoveModuleToLoad module_to_remove
+      expect(Yast::Kernel.module_to_be_loaded?(module_to_remove)).to be_false
+    end
+
+    it "does not remove module which is not in list" do
+      module_to_remove = "not-in-list"
+      expect(Yast::Kernel.module_to_be_loaded?(module_to_remove)).to be_false
+      Yast::Kernel.RemoveModuleToLoad module_to_remove
+      expect(Yast::Kernel.module_to_be_loaded?(module_to_remove)).to be_false
+    end
+  end
+
+  describe "#SaveModulesToLoad" do
+    it "stores all modules to be loaded to configuration files" do
+      Dir.mktmpdir do |tmpdir|
+        FileUtils.cp_r(DEFAULT_DATA_DIR + "/.", tmpdir)
+
+        stub_const("Yast::KernelClass::MODULES_DIR", tmpdir)
+        Yast::Kernel.reset_modules_to_load
+
+        # Tests on the default data
+        ["module-a", "module-b", "user-module-1", "user-module-2", 
"user-module-3", "user-module-4"].each do |kernel_module|
+          expect(Yast::Kernel.module_to_be_loaded?(kernel_module)).to be_true
+        end
+
+        new_module = "new-kernel-module"
+        remove_module = "user-module-2"
+
+        # Modifying data
+        Yast::Kernel.AddModuleToLoad new_module
+        Yast::Kernel.RemoveModuleToLoad remove_module
+
+        expect(Yast::Kernel.SaveModulesToLoad).to be_true
+
+        # Tests on the stored modified data
+        Yast::Kernel.reset_modules_to_load
+        ["module-a", "module-b", "user-module-1", "user-module-3", 
"user-module-4", new_module].each do |kernel_module|
+          expect(Yast::Kernel.module_to_be_loaded?(kernel_module)).to be_true
+        end
+
+        expect(Yast::Kernel.module_to_be_loaded?(remove_module)).to be_false
+
+        # Tests directly on the system
+        number_of_nkm = `grep --count --no-filename #{new_module} #{tmpdir}/*`
+        expect(number_of_nkm.split.map(&:to_i).inject(:+)).to eq(1)
+
+        number_of_rkm = `grep --count --no-filename #{remove_module} 
#{tmpdir}/*`
+        expect(number_of_rkm.split.map(&:to_i).inject(:+)).to eq(0)
+      end
+    end
+  end
+
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.2/library/system/testsuite/tests/kernel.out 
new/yast2-3.1.3/library/system/testsuite/tests/kernel.out
--- old/yast2-3.1.2/library/system/testsuite/tests/kernel.out   2013-10-22 
15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/system/testsuite/tests/kernel.out   2013-11-04 
18:12:03.000000000 +0100
@@ -1,11 +1,4 @@
 Dump   ----------------------------------------
-Dump   Testing modules to load on boot behavior
-Return nil
-Return nil
-Read   .sysconfig.kernel.MODULES_LOADED_ON_BOOT "reiserfs xfs"
-Write  .sysconfig.kernel.MODULES_LOADED_ON_BOOT "xfs ext2" true
-Write  .sysconfig.kernel nil true
-Return true
 Return nil
 Return 
 Return ABC=213 DEF=324
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/library/system/testsuite/tests/kernel.rb 
new/yast2-3.1.3/library/system/testsuite/tests/kernel.rb
--- old/yast2-3.1.2/library/system/testsuite/tests/kernel.rb    2013-10-22 
15:58:03.000000000 +0200
+++ new/yast2-3.1.3/library/system/testsuite/tests/kernel.rb    2013-11-04 
18:12:03.000000000 +0100
@@ -78,14 +78,7 @@
 
       # test behavior of modules loaded on boot
       DUMP("----------------------------------------")
-      DUMP("Testing modules to load on boot behavior")
-      TEST(lambda { Kernel.AddModuleToLoad("ext2") }, [@READ, @WRITE, @EXEC], 
0)
-      TEST(lambda { Kernel.RemoveModuleToLoad("reiserfs") }, [
-        @READ,
-        @WRITE,
-        @EXEC
-      ], 0)
-      TEST(lambda { Kernel.SaveModulesToLoad }, [@READ, @WRITE, @EXEC], 0)
+
 
       TEST(lambda { Kernel.HidePasswords(nil) }, [@READ, @WRITE, @EXEC], 0)
       TEST(lambda { Kernel.HidePasswords("") }, [@READ, @WRITE, @EXEC], 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/package/yast2.changes 
new/yast2-3.1.3/package/yast2.changes
--- old/yast2-3.1.2/package/yast2.changes       2013-10-22 15:58:03.000000000 
+0200
+++ new/yast2-3.1.3/package/yast2.changes       2013-11-04 18:12:03.000000000 
+0100
@@ -1,4 +1,26 @@
 -------------------------------------------------------------------
+Mon Nov  4 16:56:18 CET 2013 - [email protected]
+
+- Removed obsolete clients: password, remotechooser, remoteinstall
+  (gh#yast/yast-yast2#100)
+
+-------------------------------------------------------------------
+Fri Nov  1 14:54:16 CET 2013 - [email protected]
+
+- Removed checking for a fallback control file, that file is always
+  outdated and cannot work for all products
+  (gh#yast/yast-installation#86)
+- 3.1.3
+
+-------------------------------------------------------------------
+Thu Oct 31 21:50:05 CET 2013 - [email protected]
+
+- Configuration of Kernel modules loaded on boot has been moved
+  to /etc/modules-load.d/*.conf files. Adapted Kernel library
+  internal handling (bnc#838185).
+- 3.1.2
+
+-------------------------------------------------------------------
 Tue Oct 22 11:17:25 UTC 2013 - [email protected]
 
 - bnc#846550
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.2/package/yast2.spec 
new/yast2-3.1.3/package/yast2.spec
--- old/yast2-3.1.2/package/yast2.spec  2013-10-22 15:58:03.000000000 +0200
+++ new/yast2-3.1.3/package/yast2.spec  2013-11-04 18:12:03.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           yast2
-Version:        3.1.1
+Version:        3.1.3
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -33,7 +33,7 @@
 BuildRequires:  yast2-core >= 2.18.12 yast2-pkg-bindings >= 2.20.3 
yast2-ycp-ui-bindings >= 2.18.4
 
 # Needed for tests
-BuildRequires:  rubygem-rspec
+BuildRequires:  rubygem-rspec grep
 
 # for symlinking yardoc duplicates
 BuildRequires:  fdupes

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to