Hello community,

here is the log from the commit of package yast2 for openSUSE:13.1 checked in 
at 2013-10-23 11:28:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1/yast2 (Old)
 and      /work/SRC/openSUSE:13.1/.yast2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2"

Changes:
--------
--- /work/SRC/openSUSE:13.1/yast2/yast2.changes 2013-09-27 19:30:45.000000000 
+0200
+++ /work/SRC/openSUSE:13.1/.yast2.new/yast2.changes    2013-10-23 
11:28:50.000000000 +0200
@@ -1,0 +2,21 @@
+Fri Oct 18 10:45:51 UTC 2013 - [email protected]
+
+- bnc#846550
+  - deleting aliases works even for devices with name according
+    new scheme
+- 3.0.10
+
+-------------------------------------------------------------------
+Tue Sep 24 10:03:12 UTC 2013 - [email protected]
+
+- allow nested ipv4 in ipv6 (BNC#828683)
+- 3.0.9
+
+-------------------------------------------------------------------
+Tue Sep  3 08:47:37 UTC 2013 - [email protected]
+
+- bnc#837517
+    - fixed misinterpreting IPv6 prefixes when converting to netmask
+- 3.0.8 
+
+-------------------------------------------------------------------

Old:
----
  yast2-3.0.7.tar.bz2

New:
----
  yast2-3.0.10.tar.bz2

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

Other differences:
------------------
++++++ yast2.spec ++++++
--- /var/tmp/diff_new_pack.SyzVdx/_old  2013-10-23 11:28:50.000000000 +0200
+++ /var/tmp/diff_new_pack.SyzVdx/_new  2013-10-23 11:28:50.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2
-Version:        3.0.7
+Version:        3.0.10
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ yast2-3.0.7.tar.bz2 -> yast2-3.0.10.tar.bz2 ++++++
++++ 24746 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-3.0.7/VERSION new/yast2-3.0.10/VERSION
--- old/yast2-3.0.7/VERSION     2013-08-30 15:01:51.000000000 +0200
+++ new/yast2-3.0.10/VERSION    2013-10-21 12:09:54.000000000 +0200
@@ -1 +1 @@
-3.0.7
+3.0.10
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-3.0.7/configure.ac new/yast2-3.0.10/configure.ac
--- old/yast2-3.0.7/configure.ac        2013-08-30 15:01:59.000000000 +0200
+++ new/yast2-3.0.10/configure.ac       2013-10-21 12:10:26.000000000 +0200
@@ -1,9 +1,9 @@
 dnl configure.ac for yast2
 dnl
-dnl -- This file is generated by y2autoconf 3.0.4 - DO NOT EDIT! --
+dnl -- This file is generated by y2autoconf 3.0.5 - DO NOT EDIT! --
 dnl    (edit configure.ac.in or configure.in.in instead)
 
-AC_INIT(yast2, 3.0.7, http://bugs.opensuse.org/, yast2)
+AC_INIT(yast2, 3.0.10, http://bugs.opensuse.org/, yast2)
 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="3.0.7"
+VERSION="3.0.10"
 RPMNAME="yast2"
 MAINTAINER="YaST2 Maintainers <[email protected]>"
 
@@ -274,6 +274,7 @@
 library/network/doc/Makefile
 library/network/src/Makefile
 library/network/testsuite/Makefile
+library/network/test/Makefile
 library/network/Makefile
 library/gpg/doc/autodocs/Makefile
 library/gpg/doc/Makefile
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-3.0.7/library/network/Makefile.am 
new/yast2-3.0.10/library/network/Makefile.am
--- old/yast2-3.0.7/library/network/Makefile.am 2013-08-01 09:09:58.000000000 
+0200
+++ new/yast2-3.0.10/library/network/Makefile.am        2013-10-21 
12:09:55.000000000 +0200
@@ -2,4 +2,4 @@
 # Makefile.am for yast2/library/network
 #
 
-SUBDIRS = doc src testsuite
+SUBDIRS = doc src testsuite test
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-3.0.7/library/network/src/modules/NetworkInterfaces.rb 
new/yast2-3.0.10/library/network/src/modules/NetworkInterfaces.rb
--- old/yast2-3.0.7/library/network/src/modules/NetworkInterfaces.rb    
2013-08-14 09:16:53.000000000 +0200
+++ new/yast2-3.0.10/library/network/src/modules/NetworkInterfaces.rb   
2013-10-21 12:09:55.000000000 +0200
@@ -35,6 +35,16 @@
 
 module Yast
   class NetworkInterfacesClass < Module
+
+    Yast.import "String"
+
+    # A single character used to separate alias id
+    ALIAS_SEPARATOR = "#"
+    TYPE_REGEX = "(ip6tnl|mip6mnha|[#{String.CAlpha}]+)"
+    ID_REGEX = "([^#{ALIAS_SEPARATOR}]*)"
+    ALIAS_REGEX = "(.*)"
+    DEVNAME_REGEX = "#{TYPE_REGEX}-?#{ID_REGEX}"
+
     def main
       textdomain "base"
 
@@ -42,9 +52,9 @@
       Yast.import "Map"
       Yast.import "Mode"
       Yast.import "Netmask"
-      Yast.import "String"
       Yast.import "TypeRepository"
       Yast.import "FileUtils"
+      Yast.import "IP"
 
       # False suppresses tones of logs 'NetworkInterfaces.ycp:ABC 
Check(eth,id-00:aa:bb:cc:dd:ee,)'
       @report_every_check =
@@ -139,46 +149,11 @@
 
       # -------------------- components of configuration names 
--------------------
 
-      # A single character used to separate alias id
-      @alias_separator = "#"
-
       # ifcfg name = type + id + alias_id
       # If id is numeric, it is not separated from type, otherwise separated 
by "-"
       # Id may be empty
       # Alias_id, if nonempty, is separated by alias_separator
-      @ifcfg_name_regex = Ops.add(
-        Ops.add(
-          Ops.add(
-            Ops.add(
-              Ops.add(
-                Ops.add(
-                  Ops.add(
-                    Ops.add(
-                      Ops.add(
-                        Ops.add(
-                          "^" +
-                            # ip6: #48696
-                            "(ip6tnl|mip6mnha|[",
-                          String.CAlpha
-                        ),
-                        "]+)"
-                      ),
-                      "-?"
-                    ),
-                    "([^"
-                  ),
-                  @alias_separator
-                ),
-                "]*)"
-              ),
-              @alias_separator
-            ),
-            "?"
-          ),
-          "(.*)"
-        ),
-        "$"
-      )
+      @ifcfg_name_regex = "^#{DEVNAME_REGEX}#{ALIAS_SEPARATOR}?#{ALIAS_REGEX}$"
 
       # Translates type code exposed by kernel in sysfs onto internaly used 
dev types.
       @TypeBySysfs = {
@@ -263,7 +238,7 @@
 
     def ifcfg_part(ifcfg, part)
       return "" if Builtins.regexpmatch(ifcfg, @ifcfg_name_regex) != true
-      ret = Builtins.regexpsub(ifcfg, @ifcfg_name_regex, Ops.add("\\", part))
+      ret = Builtins.regexpsub(ifcfg, @ifcfg_name_regex, "\\#{part}")
       ret == nil ? "" : ret
     end
 
@@ -271,7 +246,7 @@
     # @param [String] dev device
     # @return device type
     # @example device_type("eth1") -> "eth"
-    # @example device_type("eth-pcmcia-0") -> "eth-pcmcia"
+    # @example device_type("eth-pcmcia-0") -> "eth"
     def device_type(dev)
       ifcfg_part(dev, "1")
     end
@@ -469,7 +444,10 @@
     # @return device number
     # @example device_num("eth1") -> "1"
     # @example device_num("lo") -> ""
+    #
+    # Obsolete: It is incompatible with new device naming scheme.
     def device_num(dev)
+      Builtins.y2warning( "Do not use device_num.")
       ifcfg_part(dev, "2")
     end
 
@@ -506,6 +484,13 @@
       Builtins.sformat("%1-%2", typ, num)
     end
 
+    # Extracts device name from alias name
+    #
+    # alias_name := <device_name>{ALIAS_SEPARATOR}<alias_name>
+    def device_name_from_alias(alias_name)
+      alias_name.sub(/#{ALIAS_SEPARATOR}.*/, "")
+    end
+
     # Create a alias name from its type and numbers
     # @param [String] typ device type
     # @param [String] num device number
@@ -605,19 +590,30 @@
       deep_copy(ifcfg)
     end
 
-    # Canonicalize netmask data (#46885)
-    # Sysconfig allows:
-    # IPADDR=10.0.0.1/8
-    # IPADDR=10.0.0.1 PREFIXLEN=8
-    # IPADDR=10.0.0.1 NETMASK=255.0.0.0
-    # (IPADDR overrides PREFIXLEN, NETMASK used only if prefix length 
unspecified)
-    # If prefix length and NETMASK are unspecified, 32 is implied.
-    # Canonicalize it to
-    # IPADDR=10.0.0.1 PREFIXLEN= NETMASK=255.0.0.0
-    # @param [Hash{String => Object}] ifcfg a map containing IPADDR and 
possibly NETMASK, PREFIXLEN
-    # and possibly other fields
-    # @return the map with IPADDR, NETMASK adjusted; PREFIXLEN ""
-    # others unchanged. If IPADDR is empty, return the original.
+    #
+    # Canonicalize static ip configuration obtained from sysconfig. 
(suse#46885) 
+    # 
+    # Static ip configuration formats supported by sysconfig: 
+    # 1) IPADDR=10.0.0.1/8 
+    # 2) IPADDR=10.0.0.1 PREFIXLEN=8 
+    # 3) IPADDR=10.0.0.1 NETMASK=255.0.0.0 
+    # 
+    # Features: 
+    # - IPADDR (in form <ip>/<prefix>) overrides PREFIXLEN,  
+    # - NETMASK is used only if prefix length unspecified) 
+    # - If prefix length and NETMASK are unspecified, 32 is implied. 
+    # 
+    # Canonicalize it to: 
+    # - IPADDR="<ipv4>" PREFIXLEN="<prefix>" NETMASK="<netmask>") in case of 
IPv4 config
+    # E.g. IPADDR=10.0.0.1 PREFIXLEN=8 NETMASK=255.0.0.0 
+    # - IPADDR="<ipv6>" PREFIXLEN="<prefix>" NETMASK="") in case of IPv6 config
+    # E.g. IPADDR=2001:15c0:668e::5 PREFIXLEN=48 NETMASK=""
+    #
+    # @param ifcfg     a map with netconfig (ifcfg) configuration for a one 
device 
+    # @return          a map with IPADDR, NETMASK and PREFIXLEN adjusted if 
IPADDR is present. 
+    #                  Returns original ifcfg if IPADDR is not present. In 
case of error, 
+    #                  returns nil.
+    #                  
     def CanonicalizeIP(ifcfg)
       ifcfg = deep_copy(ifcfg)
       return nil if ifcfg == nil
@@ -628,8 +624,10 @@
       )
       ipaddr = Ops.get(ip_and_prefix, 0, "")
       return deep_copy(ifcfg) if ipaddr == "" # DHCP or inconsistent
+
       prefixlen = Ops.get(ip_and_prefix, 1, "")
       prefixlen = Ops.get_string(ifcfg, "PREFIXLEN", "") if prefixlen == ""
+
       if prefixlen == ""
         prefixlen = Builtins.tostring(
           Netmask.ToBits(Ops.get_string(ifcfg, "NETMASK", ""))
@@ -638,12 +636,14 @@
 
       # Now we have ipaddr and prefixlen
       # Let's compute the rest
-      netmask = Netmask.FromBits(Builtins.tointeger(prefixlen))
-      ret = deep_copy(ifcfg)
-      Ops.set(ret, "IPADDR", ipaddr)
-      Ops.set(ret, "PREFIXLEN", prefixlen)
-      Ops.set(ret, "NETMASK", netmask)
-      deep_copy(ret)
+      netmask = ""
+      netmask = Netmask.FromBits(Builtins.tointeger(prefixlen)) if IP.Check4( 
ipaddr)
+
+      Ops.set(ifcfg, "IPADDR", ipaddr)
+      Ops.set(ifcfg, "PREFIXLEN", prefixlen)
+      Ops.set(ifcfg, "NETMASK", netmask)
+
+      ifcfg
     end
 
     # Conceal secret information, such as WEP keys, so that the output
@@ -853,16 +853,15 @@
           Builtins.y2debug("deleting: %1", p)
           SCR.Write(p, nil)
         else
-          typ = device_type(d)
-          num = device_num(d)
-          dev = device_name(typ, num)
+          dev = device_name_from_alias(d)
+          typ = GetType(dev)
           base = Builtins.add(path(".network.value"), dev)
           # look in OriginalDevs because we need to catch all variables
           # of the alias
-          Builtins.foreach(
-            Ops.get_map(_OriginalDevs, [typ, dev, "_aliases", anum], {})
-          ) do |key, dummy|
-            p = Builtins.add(base, Ops.add(Ops.add(key, "_"), anum))
+
+          dev_aliases = _OriginalDevs[typ][dev]["_aliases"][anum] || {}
+          dev_aliases.keys.each do |key|
+            p = base + "#{key}_#{anum}"
             Builtins.y2debug("deleting: %1", p)
             SCR.Write(p, nil)
           end
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-3.0.7/library/network/test/Makefile.am 
new/yast2-3.0.10/library/network/test/Makefile.am
--- old/yast2-3.0.7/library/network/test/Makefile.am    1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-3.0.10/library/network/test/Makefile.am   2013-10-21 
12:09:55.000000000 +0200
@@ -0,0 +1,8 @@
+TESTS = \
+  load_ipv6_cfg_test.rb \
+  network_interfaces_helpers_test.rb
+
+TEST_EXTENSIONS = .rb
+RB_LOG_COMPILER = ruby
+VERBOSE = 1
+EXTRA_DIST = $(TESTS)
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-3.0.7/library/network/test/load_ipv6_cfg_test.rb 
new/yast2-3.0.10/library/network/test/load_ipv6_cfg_test.rb
--- old/yast2-3.0.7/library/network/test/load_ipv6_cfg_test.rb  1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-3.0.10/library/network/test/load_ipv6_cfg_test.rb 2013-10-21 
12:09:55.000000000 +0200
@@ -0,0 +1,33 @@
+#! /usr/bin/env ruby
+
+require "minitest/spec"
+require "minitest/autorun"
+
+require "yast"
+
+Yast.import "NetworkInterfaces"
+
+# mocked IPv6 relevant part of loaded ifcfg
+IPV6_IFCFG = [
+  {
+    :data => { "IPADDR" => "2001:15c0:668e::5", "PREFIXLEN" => "48" },
+    :expected => { "IPADDR" => "2001:15c0:668e::5", "PREFIXLEN" => "48", 
"NETMASK" => "" }
+  },
+  {
+    :data => { "IPADDR" => "2001:15c0:668e::5/48", "PREFIXLEN" => "" },
+    :expected => { "IPADDR" => "2001:15c0:668e::5", "PREFIXLEN" => "48", 
"NETMASK" => "" }
+  },
+  {
+    :data => { "IPADDR" => "2a00:8a00:6000:40::451", "PREFIXLEN" => "119" },
+    :expected => { "IPADDR" => "2a00:8a00:6000:40::451", "PREFIXLEN" => "119", 
"NETMASK" => "" }
+  }
+]
+
+describe "When reading devices configuration with IPv6 setup" do
+  it "Sets ipaddr, prefix and empty mask" do
+    IPV6_IFCFG.each do |ipv6_ifcfg|
+      canonical_ifcfg = Yast::NetworkInterfaces.CanonicalizeIP( ipv6_ifcfg[ 
:data])
+      canonical_ifcfg.must_equal( ipv6_ifcfg[ :expected])
+    end
+  end
+end
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-3.0.7/library/network/test/network_interfaces_helpers_test.rb 
new/yast2-3.0.10/library/network/test/network_interfaces_helpers_test.rb
--- old/yast2-3.0.7/library/network/test/network_interfaces_helpers_test.rb     
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.0.10/library/network/test/network_interfaces_helpers_test.rb    
2013-10-21 12:09:55.000000000 +0200
@@ -0,0 +1,70 @@
+#! /usr/bin/env ruby
+
+require "minitest/spec"
+require "minitest/autorun"
+
+require "yast"
+
+Yast.import("NetworkInterfaces")
+
+module Yast
+
+  describe NetworkInterfaces do
+
+    describe "Parsing device name" do
+
+      DEVICE_DESCS = [
+        { 
+          name: "",
+          alias_id: "",
+          type_by_regex: ""
+        },
+        {
+          name: "eth0",
+          alias_id: "",
+          type_by_regex: "eth"
+        },
+        {
+          name: "eth-pcmcia-0",
+          alias_id: "",
+          type_by_regex: "eth"
+        },
+        {
+          name: "enp0s3",
+          alias_id: "",
+          type_by_regex: "enp"
+        },
+        {
+          name: "eth0#1",
+          alias_id: "1",
+          type_by_regex: "eth"
+        },
+        {
+          name: "enp0s3#0",
+          alias_id: "0",
+          type_by_regex: "enp"
+        }
+      ]
+
+      DEVICE_DESCS.each do |device_desc|
+          
+        device_name = device_desc[:name]
+        alias_id = device_desc[:alias_id]
+        type_by_regex = device_desc[:type_by_regex]
+
+        describe '#alias_num' do
+
+          it "returns alias_id: <#{alias_id}> for name: <#{device_name}>" do
+            NetworkInterfaces.alias_num(device_name).must_equal alias_id
+          end
+        end
+    
+        describe "#device_type" do
+          it "returns type by regex: <#{type_by_regex}> for name: 
<#{device_name}>" do
+            NetworkInterfaces.device_type(device_name).must_equal type_by_regex
+          end
+        end
+      end
+    end
+  end
+end
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-3.0.7/library/network/testsuite/tests/NetworkInterfaces.out 
new/yast2-3.0.10/library/network/testsuite/tests/NetworkInterfaces.out
--- old/yast2-3.0.7/library/network/testsuite/tests/NetworkInterfaces.out       
2013-07-23 10:07:48.000000000 +0200
+++ new/yast2-3.0.10/library/network/testsuite/tests/NetworkInterfaces.out      
2013-10-21 12:09:55.000000000 +0200
@@ -32,5 +32,3 @@
 Return nil
 Return $[]
 Return $["IPADDR":"10.0.0.1", "NETMASK":"255.255.255.255", "PREFIXLEN":"32", 
"other":"data"]
-Return $["IPADDR":"2001:15c0:668e::5", "NETMASK":"", "PREFIXLEN":"48"]
-Return $["IPADDR":"2001:15c0:668e::5", "NETMASK":"", "PREFIXLEN":"48"]
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-3.0.7/library/network/testsuite/tests/NetworkInterfaces.rb 
new/yast2-3.0.10/library/network/testsuite/tests/NetworkInterfaces.rb
--- old/yast2-3.0.7/library/network/testsuite/tests/NetworkInterfaces.rb        
2013-07-30 14:09:40.000000000 +0200
+++ new/yast2-3.0.10/library/network/testsuite/tests/NetworkInterfaces.rb       
2013-10-21 12:09:55.000000000 +0200
@@ -80,9 +80,6 @@
         nil,
         {},
         { "IPADDR" => "10.0.0.1", "other" => "data" },
-        # IPv6
-        { "IPADDR" => "2001:15c0:668e::5", "PREFIXLEN" => "48" },
-        { "IPADDR" => "2001:15c0:668e::5/48", "PREFIXLEN" => "" }
       ]
       Builtins.foreach(@addresses) { |address| TEST(lambda do
         NetworkInterfaces.CanonicalizeIP(address)
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-3.0.7/library/types/src/modules/IP.rb 
new/yast2-3.0.10/library/types/src/modules/IP.rb
--- old/yast2-3.0.7/library/types/src/modules/IP.rb     2013-08-30 
15:01:51.000000000 +0200
+++ new/yast2-3.0.10/library/types/src/modules/IP.rb    2013-10-21 
12:09:54.000000000 +0200
@@ -81,21 +81,17 @@
     def Check6(ip)
       return false if ip == nil
 
-      # we need special regex because Resolv::IPv6::Regex support also directly
-      # mapped ipv4 to ipv6 which yast doesn't support
-      regexp = /
-        (?:#{Resolv::IPv6::Regex_8Hex}) |
-        (?:#{Resolv::IPv6::Regex_CompressedHex})
-      /xo
-      res = !regexp.match(ip).nil?
+      res = !Resolv::IPv6::Regex.match(ip).nil?
 
       # workaround for compressed address as it is hard to check correct number
       # in compressed ip using regexp only
       if res && ip.include?("::")
         prefix, suffix = ip.split("::")
         elements = prefix.split(":")
+        contain_ipv4 = ip.include? "."
         elements += suffix.split(":") if suffix
-        return elements.size < 8
+        max_elements = contain_ipv4 ? 6 : 7
+        return elements.size <= max_elements
       end
 
       return res
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-3.0.7/library/types/src/modules/Netmask.rb 
new/yast2-3.0.10/library/types/src/modules/Netmask.rb
--- old/yast2-3.0.7/library/types/src/modules/Netmask.rb        2013-07-30 
14:09:40.000000000 +0200
+++ new/yast2-3.0.10/library/types/src/modules/Netmask.rb       2013-10-21 
12:09:54.000000000 +0200
@@ -108,10 +108,16 @@
       Check4(netmask) || Check6(netmask)
     end
 
-    # Convert netmask in bits form (20) to netmask string (255.255.240.0)
-    # @param [Fixnum] bits number of bits in netmask
-    # @return netmask string
+    #
+    # Convert netmask in bits form (20) to IPv4 netmask string (255.255.240.0) 
+    #
+    # @param bits  number of bits in netmask 
+    # @return      netmask string or empty string in case of invalid bits 
(e.g. 
+    #              when prefix is incompatible with IPv4)
+    #
     def FromBits(bits)
+      return "" unless bits.between?( 0, 32)
+
       b = Ops.divide(bits, 8)
       d = Ops.modulo(bits, 8)
 
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-3.0.7/library/types/test/Makefile.am 
new/yast2-3.0.10/library/types/test/Makefile.am
--- old/yast2-3.0.7/library/types/test/Makefile.am      2013-08-30 
15:01:51.000000000 +0200
+++ new/yast2-3.0.10/library/types/test/Makefile.am     2013-10-21 
12:09:54.000000000 +0200
@@ -1,4 +1,4 @@
-TESTS = ip_test.rb
+TESTS = ipv4_netmask_test.rb
 TEST_EXTENSIONS = .rb
 RB_LOG_COMPILER = ruby
 VERBOSE = 1
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-3.0.7/library/types/test/ip_test.rb 
new/yast2-3.0.10/library/types/test/ip_test.rb
--- old/yast2-3.0.7/library/types/test/ip_test.rb       2013-08-30 
15:01:51.000000000 +0200
+++ new/yast2-3.0.10/library/types/test/ip_test.rb      1970-01-01 
01:00:00.000000000 +0100
@@ -1,188 +0,0 @@
-#! /usr/bin/env ruby
-ENV["Y2DIR"] = File.expand_path("../../src", __FILE__)
-
-require "minitest/autorun"
-require "yast"
-
-Yast.import "IP"
-
-describe Yast::IP do
-  before do
-    @object = Yast::IPClass.new
-    @object.main
-  end
-
-  describe "when asked for validation string for IPv4" do
-    it "must return translated text" do
-      @object.Valid4.must_match /^A valid/
-    end
-  end
-
-  describe "when told to check IPv4" do
-    valid_ip4s = [
-      "0.0.0.0",
-      "127.0.0.1",
-      "255.255.255.255",
-      "10.11.12.13",
-    ]
-    valid_ip4s.each do |valid_ip4|
-      it "return true for valid IPv4 '#{valid_ip4}'" do
-        @object.Check4(valid_ip4).must_equal true
-      end
-    end
-
-    invalid_ip4s = [
-      "0.0.0",
-      "127.0.0.1.1",
-      "256.255.255.255",
-      "01.01.012.013",
-      "10,11.12.13",
-    ]
-    invalid_ip4s.each do |invalid_ip4|
-      it "return false for invalid IPv4 '#{invalid_ip4}'" do
-        @object.Check4(invalid_ip4).must_equal false
-      end
-    end
-
-    it "return false for empty argument" do
-      @object.Check4("").must_equal false
-    end
-
-    it "return false for nil argument" do
-      @object.Check4(nil).must_equal false
-    end
-  end
-
-  describe "when told to check IPv6" do
-
-    valid_ip6s = [
-      "1:2:3:4:5:6:7:8",
-      "::3:4:5:6:7:8",
-      "1:2:3:4:5:6::",
-      "1:2:3::5:6:7:8",
-      "1:2:3:4:5:6::8",
-      "a:FF:b:c:d:d:e:e",
-      "fe80::200:1cff:feb5:5433",
-      "0::",
-      "0000::",
-      "0:1::",
-      "1:0::",
-      "1:0::0"
-    ]
-    valid_ip6s.each do |valid_ip6|
-      it "return true for valid IPv6 '#{valid_ip6}'" do
-        @object.Check6(valid_ip6).must_equal true
-      end
-    end
-
-    invalid_ip6s = [
-      "1::3:4:5:6::8",
-      "1:2:3:4:5:6:7:8:9",
-      "1:2:3:4::5:6:7:8:9",
-      ":2:3:4:5:6:7:8",
-      "1:2:3:4:5:6:7:",
-      "g:FF:b:c:d:d:e:e",
-      "127.0.0.1",
-      "1:2:3:4:5:6:127.0.0.1", # FIXME old yast doesn't support direct mapping 
IPv4 to IPv6
-    ]
-    invalid_ip6s.each do |invalid_ip6|
-      it "return false for invalid IPv6 '#{invalid_ip6}" do
-          @object.Check6(invalid_ip6).must_equal false
-      end
-    end
-
-    it "return false for empty argument" do
-      @object.Check6("").must_equal false
-    end
-
-    it "return false for nil argument" do
-      @object.Check6(nil).must_equal false
-    end
-  end
-
-  describe "when told to compute integer value" do
-    it "return value for valid ipv4" do
-      result_map = {
-        "0.0.0.0"        => 0,
-        "127.0.0.1"      => 2130706433,
-        "192.168.110.23" => 3232263703,
-        "10.20.1.29"     => 169083165
-      }
-      result_map.each_pair do |k,v|
-        @object.ToInteger(k).must_equal v
-      end
-    end
-
-    it "return nil if value is not valid ipv4" do
-      @object.ToInteger("blabla").must_equal nil
-    end
-  end
-
-  describe "when told to create ipv4 string from integer" do
-    it "it return ipv4" do
-      result_map = {
-        "0.0.0.0"        => 0,
-        "127.0.0.1"      => 2130706433,
-        "192.168.110.23" => 3232263703,
-        "10.20.1.29"     => 169083165
-      }
-      result_map.each_pair do |k,v|
-        @object.ToString(v).must_equal k
-      end
-    end
-  end
-
-  describe "when told to create string with hex value of ipv4 string" do
-    it "return value for valid ipv4" do
-      result_map = {
-        "0.0.0.0"         => "00000000",
-        "10.10.0.1"       => "0A0A0001",
-        "192.168.1.1"     => "C0A80101",
-        "255.255.255.255" => "FFFFFFFF"
-      }
-      result_map.each_pair do |k,v|
-        @object.ToHex(k).must_equal v
-      end
-    end
-
-    it "return nil if value is not valid ipv4" do
-      @object.ToHex("blabla").must_equal nil
-    end
-  end
-
-  describe "when told to convert IPv4 address into bits" do
-    it "return value for proper ipv4" do
-      result_map = {
-        "80.25.135.2"    => "01010000000110011000011100000010",
-        "172.24.233.211" => "10101100000110001110100111010011"
-      }
-      result_map.each_pair do |k,v|
-        @object.IPv4ToBits(k).must_equal v
-      end
-    end
-
-    it "return nil if value is not valid ipv4" do
-      @object.IPv4ToBits("blabla").must_equal nil
-    end
-  end
-
-  describe "when told to convert bits to IPv4 address" do
-    it "return value for string" do
-      result_map = {
-        "80.25.135.2"    => "01010000000110011000011100000010",
-        "172.24.233.211" => "10101100000110001110100111010011"
-      }
-      result_map.each_pair do |k,v|
-        @object.BitsToIPv4(v).must_equal k
-      end
-    end
-
-    it "return nil if size of string is not 32" do
-      @object.BitsToIPv4("101").must_equal nil
-    end
-
-    it "return nil if value is not valid string with 0 or 1" do
-      @object.BitsToIPv4("blabla").must_equal nil
-    end
-  end
-end
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-3.0.7/library/types/test/ipv4_netmask_test.rb 
new/yast2-3.0.10/library/types/test/ipv4_netmask_test.rb
--- old/yast2-3.0.7/library/types/test/ipv4_netmask_test.rb     1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-3.0.10/library/types/test/ipv4_netmask_test.rb    2013-10-21 
12:09:54.000000000 +0200
@@ -0,0 +1,26 @@
+#! /usr/bin/env ruby
+
+require "minitest/spec"
+require "minitest/autorun"
+
+require "yast"
+
+Yast.import "Netmask"
+
+describe "When creating netmask from prefixlen" do
+  it "returns valid netmask for prefix shorter than 32 bits" do
+    0.upto 32 do |prefix_len|
+      Yast::Netmask.FromBits( prefix_len).wont_be_empty
+    end
+  end
+
+  it "returns empty netmask for prefix longer than 32 bits" do
+    33.upto 128 do |prefix_len| 
+      Yast::Netmask.FromBits( prefix_len).must_be_empty
+    end
+  end
+
+  it "returns empty netmask for incorrect prefix length" do
+    Yast::Netmask.FromBits( -1).must_be_empty
+  end
+end
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-3.0.7/missing new/yast2-3.0.10/missing
--- old/yast2-3.0.7/missing     2013-08-30 15:02:04.000000000 +0200
+++ new/yast2-3.0.10/missing    2013-10-21 12:10:29.000000000 +0200
@@ -1,10 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-01-06.18; # UTC
+scriptversion=2012-06-26.16; # UTC
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <[email protected]>, 1996.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <[email protected]>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -29,61 +29,33 @@
   exit 1
 fi
 
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, 'missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file 'aclocal.m4'
-  autoconf     touch file 'configure'
-  autoheader   touch file 'config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all 'Makefile.in' files
-  bison        create 'y.tab.[ch]', if possible, from existing .[ch]
-  flex         create 'lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create 'lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  yacc         create 'y.tab.[ch]', if possible, from existing .[ch]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
 
 Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
 'g' are ignored when checking the name.
@@ -98,228 +70,141 @@
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown '$1' option"
+    echo 1>&2 "$0: unknown '$1' option"
     echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
 
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running '$TOOL --version' or '$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acinclude.m4' or '${configure_ac}'.  You might want
-         to install the Automake and Perl packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified '${configure_ac}'.  You might want to install the
-         Autoconf and GNU m4 packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acconfig.h' or '${configure_ac}'.  You might want
-         to install the Autoconf and GNU m4 packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' 
${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
 
-  automake*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
-         You might want to install the Automake and Perl packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: '$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get '$1' as part of Autoconf from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo "#! /bin/sh"
-       echo "# Created by GNU Automake missing as a replacement of"
-       echo "#  $ $@"
-       echo "exit 0"
-       chmod +x $file
-       exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: '$1' $msg.  You should only need it if
-         you modified a '.y' file.  You may need the Bison package
-         in order for those modifications to take effect.  You can get
-         Bison from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f y.tab.h; then
-       echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.l' file.  You may need the Flex package
-         in order for those modifications to take effect.  You can get
-         Flex from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f lex.yy.c; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        Help2man package in order for those modifications to take
-        effect.  You can get Help2man from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.texi' or '.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy 'make' (AIX,
-         DU, IRIX).  You might want to install the Texinfo package or
-         the GNU make package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-       /^@setfilename/{
-         s/.* \([^ ]*\) *$/\1/
-         p
-         q
-       }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: '$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the 'README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing '$1' program."
-    exit 1
-    ;;
-esac
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-exit 0
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'automa4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
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-3.0.7/test-driver new/yast2-3.0.10/test-driver
--- old/yast2-3.0.7/test-driver 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.0.10/test-driver        2013-10-21 12:10:31.000000000 +0200
@@ -0,0 +1,127 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <[email protected]> or send patches to
+# <[email protected]>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='' # Red.
+  grn='' # Green.
+  lgn='' # Light green.
+  blu='' # Blue.
+  mgn='' # Magenta.
+  std=''     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:

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

Reply via email to