Hello community,
here is the log from the commit of package yast2 for openSUSE:Factory checked in at 2015-06-03 08:28:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 2015-05-26 13:28:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.yast2.new/yast2.changes 2015-06-03 08:28:52.000000000 +0200
@@ -1,0 +2,19 @@
+Tue Jun 2 11:26:50 UTC 2015 - jreidinger@suse.com
+
+- reduce count of extending inst-sys with snapper for snapshotting
+ (fate#317973)
+- 3.1.128
+
+-------------------------------------------------------------------
+Mon Jun 1 16:23:37 CEST 2015 - locilka@suse.com
+
+- Added Linuxrc.value_for (fate#317973)
+- 3.1.127
+
+-------------------------------------------------------------------
+Wed May 27 14:36:47 UTC 2015 - jreidinger@suse.com
+
+- Add persistent storage for fs pre snapshots (fate#317973)
+- 3.1.126
+
+-------------------------------------------------------------------
Old:
----
yast2-3.1.125.tar.bz2
New:
----
yast2-3.1.128.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2.spec ++++++
--- /var/tmp/diff_new_pack.UT2zHK/_old 2015-06-03 08:28:53.000000000 +0200
+++ /var/tmp/diff_new_pack.UT2zHK/_new 2015-06-03 08:28:53.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2
-Version: 3.1.125
+Version: 3.1.128
Release: 0
Url: https://github.com/yast/yast-yast2
@@ -44,8 +44,8 @@
# For running RSpec tests during build
BuildRequires: rubygem(rspec)
-# To have specific RSpec extensions available
-BuildRequires: yast2-ruby-bindings >= 3.1.26
+# To have scr_chrooted? call available
+BuildRequires: yast2-ruby-bindings >= 3.1.33
# pre-requires for filling the sysconfig template (sysconfig.yast2)
PreReq: %fillup_prereq
@@ -128,7 +128,7 @@
Provides: yast2-network:/usr/share/YaST2/modules/Internet.ycp
Provides: yast2-packager:/usr/lib/YaST2/servers_non_y2/ag_anyxml
-Requires: yast2-ruby-bindings >= 1.0.0
+Requires: yast2-ruby-bindings >= 3.1.33
Summary: YaST2 - Main Package
License: GPL-2.0
++++++ yast2-3.1.125.tar.bz2 -> yast2-3.1.128.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/general/src/modules/Linuxrc.rb new/yast2-3.1.128/library/general/src/modules/Linuxrc.rb
--- old/yast2-3.1.125/library/general/src/modules/Linuxrc.rb 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/library/general/src/modules/Linuxrc.rb 2015-06-02 14:31:10.000000000 +0200
@@ -211,6 +211,29 @@
true
end
+ # Returns value of a given Linxurc key/feature defined on commandline
+ # and written into install.inf
+ #
+ # @param [String] key
+ # @return [String, nil] value of a given key or `nil` if not found
+ def value_for(feature_key)
+ ReadInstallInf()
+ feature_key = polish(feature_key)
+
+ # at first check the keys in install.inf
+ install_inf_key, install_inf_val = @install_inf.find { |k, _v| polish(k) == feature_key }
+ return install_inf_val if install_inf_key
+
+ # then check the command line
+ ret = nil
+ @install_inf.fetch("Cmdline", "").split.each do |cmdline_entry|
+ key, val = cmdline_entry.split("=", 2)
+ ret = val if polish(key) == feature_key
+ end
+
+ ret
+ end
+
publish function: :ResetInstallInf, type: "void ()"
publish function: :InstallInf, type: "string (string)"
publish function: :manual, type: "boolean ()"
@@ -224,6 +247,17 @@
publish function: :WriteYaSTInf, type: "void (map )"
publish function: :SaveInstallInf, type: "boolean (string)"
publish function: :keys, type: "list <string> ()"
+ publish function: :value_for, type: "string (string)"
+
+ private
+
+ # Removes characters ignored by Linuxrc and turns all to downcase
+ #
+ # @param [String]
+ # @return [String]
+ def polish(key)
+ key.downcase.tr("-_\\.", "")
+ end
end
Linuxrc = LinuxrcClass.new
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/general/test/linuxrc_test.rb new/yast2-3.1.128/library/general/test/linuxrc_test.rb
--- old/yast2-3.1.125/library/general/test/linuxrc_test.rb 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/library/general/test/linuxrc_test.rb 2015-06-02 14:31:10.000000000 +0200
@@ -187,4 +187,47 @@
expect(subject.keys.sort).to eq(DEFAULT_INSTALL_INF.keys.sort)
end
end
+
+ describe "#value_for" do
+ context "when key is defined in install.inf (Linuxrc commandline)" do
+ it "returns value for given key" do
+ load_install_inf(
+ "test_1" => "123",
+ "T-E-S-T-2" => "456",
+ "TeSt3" => "678",
+ "Cmdline" => "test4=890 test5=10,11,12"
+ )
+
+ expect(subject.value_for("test_1")).to eq("123")
+ expect(subject.value_for("TEsT2")).to eq("456")
+ expect(subject.value_for("T_e_St_3")).to eq("678")
+ expect(subject.value_for("T.e.s.t-4")).to eq("890")
+ expect(subject.value_for("test5")).to eq("10,11,12")
+ end
+
+ it "parses commandline with '=' in the value" do
+ url = "http://example.com?bar=42"
+ load_install_inf(
+ "Cmdline" => "test6=#{url}"
+ )
+
+ expect(subject.value_for("test_6")).to eq(url)
+ end
+
+ it "returns the last matching value from command line" do
+ load_install_inf(
+ "Cmdline" => "test7=foo test.7=bar test__7=baz"
+ )
+
+ expect(subject.value_for("test_7")).to eq("baz")
+ end
+ end
+
+ context "when key is not defined in install.inf (Linuxrc commandline)" do
+ it "returns nil" do
+ load_install_inf
+ expect(subject.value_for("this-key-is-not-defined")).to eq(nil)
+ end
+ end
+ end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/system/src/Makefile.am new/yast2-3.1.128/library/system/src/Makefile.am
--- old/yast2-3.1.125/library/system/src/Makefile.am 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/library/system/src/Makefile.am 2015-06-02 14:31:10.000000000 +0200
@@ -30,7 +30,8 @@
ylibdir = @ylibdir@/yast2
ylib_DATA = \
lib/yast2/hw_detection.rb \
- lib/yast2/fs_snapshot.rb
+ lib/yast2/fs_snapshot.rb \
+ lib/yast2/fs_snapshot_store.rb
EXTRA_DIST = $(module_DATA) $(client_DATA) $(ynclude_DATA) $(scrconf_DATA) $(desktop_DATA) $(ylib_DATA)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/system/src/lib/yast2/fs_snapshot.rb new/yast2-3.1.128/library/system/src/lib/yast2/fs_snapshot.rb
--- old/yast2-3.1.125/library/system/src/lib/yast2/fs_snapshot.rb 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/library/system/src/lib/yast2/fs_snapshot.rb 2015-06-02 14:31:10.000000000 +0200
@@ -58,9 +58,9 @@
class FsSnapshot
include Yast::Logger
- FIND_CONFIG_CMD = "/usr/bin/snapper --no-dbus list-configs | grep \"^root \" >/dev/null"
- CREATE_SNAPSHOT_CMD = "/usr/lib/snapper/installation-helper --step 5 --snapshot-type %s --description \"%s\""
- LIST_SNAPSHOTS_CMD = "LANG=en_US.UTF-8 /usr/bin/snapper --no-dbus list"
+ FIND_CONFIG_CMD = "/usr/bin/snapper --no-dbus --root=%{root} list-configs | grep \"^root \" >/dev/null"
+ CREATE_SNAPSHOT_CMD = "/usr/lib/snapper/installation-helper --step 5 --root-prefix=%{root} --snapshot-type %{snapshot_type} --description \"%{description}\""
+ LIST_SNAPSHOTS_CMD = "LANG=en_US.UTF-8 /usr/bin/snapper --no-dbus --root=%{root} list"
VALID_LINE_REGEX = /\A\w+\s+\| \d+/
attr_reader :number, :snapshot_type, :previous_number, :timestamp, :user,
@@ -70,9 +70,16 @@
#
# @return [true,false] true if it's configured; false otherwise.
def self.configured?
- out = Yast::SCR.Execute(Yast::Path.new(".target.bash_output"), FIND_CONFIG_CMD)
+ return @configured unless @configured.nil?
+
+ out = with_snapper do
+ Yast::SCR.Execute(Yast::Path.new(".target.bash_output"),
+ format(FIND_CONFIG_CMD, root: target_root)
+ )
+ end
+
log.info("Checking if Snapper is configured: \"#{FIND_CONFIG_CMD}\" returned: #{out}")
- out["exit"] == 0
+ @configured = out["exit"] == 0
end
# Creates a new 'single' snapshot
@@ -127,9 +134,17 @@
def self.create(snapshot_type, description, previous = nil)
raise SnapperNotConfigured unless configured?
- cmd = format(CREATE_SNAPSHOT_CMD, snapshot_type, description)
- cmd << format(" --pre-num %s", previous.number) if previous
- out = Yast::SCR.Execute(Yast::Path.new(".target.bash_output"), cmd)
+ cmd = format(CREATE_SNAPSHOT_CMD,
+ root: target_root,
+ snapshot_type: snapshot_type,
+ description: description
+ )
+ cmd << " --pre-num #{previous.number}" if previous
+
+ out = with_snapper do
+ Yast::SCR.Execute(Yast::Path.new(".target.bash_output"), cmd)
+ end
+
if out["exit"] == 0
find(out["stdout"].to_i) # The CREATE_SNAPSHOT_CMD returns the number of the new snapshot.
else
@@ -139,6 +154,36 @@
end
private_class_method :create
+ # detects if module runs in initial stage before scr is switched to target system
+ def self.non_switched_installation?
+ Yast.import "Stage"
+ return false unless Yast::Stage.initial
+
+ !Yast::WFM.scr_chrooted?
+ end
+ private_class_method :non_switched_installation?
+
+ # ensures that for local SCR snapper is available in insts-sys
+ def self.with_snapper(&block)
+ return block.call unless non_switched_installation?
+
+ Yast.import "InstExtensionImage"
+ Yast::InstExtensionImage.with_extension("snapper") do
+ block.call
+ end
+ end
+ private_class_method :with_snapper
+
+ # Gets target directory on which should snapper operate
+ def self.target_root
+ return "/" unless non_switched_installation?
+
+ Yast.import "Installation"
+
+ Yast::Installation.destdir
+ end
+ private_class_method :target_root
+
# Returns all snapshots
#
# It raises an exception if Snapper is not configured.
@@ -147,11 +192,17 @@
def self.all
raise SnapperNotConfigured unless configured?
- out = Yast::SCR.Execute(Yast::Path.new(".target.bash_output"), LIST_SNAPSHOTS_CMD)
+ out = with_snapper do
+ Yast::SCR.Execute(
+ Yast::Path.new(".target.bash_output"),
+ format(LIST_SNAPSHOTS_CMD, root: target_root)
+ )
+ end
lines = out["stdout"].lines.grep(VALID_LINE_REGEX) # relevant lines from output.
log.info("Retrieving snapshots list: #{LIST_SNAPSHOTS_CMD} returned: #{out}")
- lines.map do |line|
+ lines.each_with_object([]) do |line, snapshots|
data = line.split("|").map(&:strip)
+ next if data[1] == "0" # Ignores 'current' snapshot (id = 0) because it's not a real snapshot
begin
timestamp = DateTime.parse(data[3])
rescue ArgumentError
@@ -159,8 +210,8 @@
timestamp = nil
end
previous_number = data[2] == "" ? nil : data[2].to_i
- new(data[1].to_i, data[0].to_sym, previous_number, timestamp, data[4],
- data[5].to_sym, data[6])
+ snapshots << new(data[1].to_i, data[0].to_sym, previous_number, timestamp,
+ data[4], data[5].to_sym, data[6])
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/system/src/lib/yast2/fs_snapshot_store.rb new/yast2-3.1.128/library/system/src/lib/yast2/fs_snapshot_store.rb
--- old/yast2-3.1.125/library/system/src/lib/yast2/fs_snapshot_store.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.128/library/system/src/lib/yast2/fs_snapshot_store.rb 2015-06-02 14:31:10.000000000 +0200
@@ -0,0 +1,80 @@
+# encoding: utf-8
+
+# ***************************************************************************
+#
+# Copyright (c) 2015 SUSE LLC
+# 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
+#
+# ***************************************************************************
+
+require "yast"
+
+module Yast2
+ # Goal of this module is to provide easy to use api to store id of pre
+ # snapshots, so post snapshots can be then easy to make.
+ module FsSnapshotStore
+ # Stores pre snapshot with given id and purpose
+ # @param[String] purpose of snapshot like "upgrade"
+ # @raise[RuntimeError] if writing to file failed
+ def self.save(purpose, snapshot_id)
+ result = Yast::SCR.Write(
+ Yast::Path.new(".target.string"),
+ snapshot_path(purpose),
+ snapshot_id.to_s
+ )
+
+ raise "Failed to write Pre Snapshot id for #{purpose} to store. See logs." unless result
+ end
+
+ # Loads id of pre snapshot for given purpose
+ # @param[String] purpose of snapshot like "upgrade"
+ # @raise[RuntimeError] if writing to file failed
+ # @return[Fixnum]
+ def self.load(purpose)
+ content = Yast::SCR.Read(
+ Yast::Path.new(".target.string"),
+ snapshot_path(purpose)
+ )
+
+ if !content || content !~ /^\d+$/
+ raise "Failed to read Pre Snapshot id for #{purpose} from store. See logs."
+ end
+
+ content.to_i
+ end
+
+ # Cleans store content of given purpose
+ def self.clean(purpose)
+ Yast::SCR.Execute(Yast::Path.new(".target.remove"), snapshot_path(purpose))
+ end
+
+ # Path where is stored given purpose
+ def self.snapshot_path(purpose)
+ path = "/var/lib/YaST2/pre_snapshot_#{purpose}.id"
+
+ Yast.import "Stage"
+ if Yast::Stage.initial && !Yast::WFM.scr_chrooted?
+ Yast.import "Installation"
+ path = ::File.join(Yast::Installation.destdir, path)
+ end
+
+ path
+ end
+ private_class_method :snapshot_path
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/system/test/Makefile.am new/yast2-3.1.128/library/system/test/Makefile.am
--- old/yast2-3.1.125/library/system/test/Makefile.am 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/library/system/test/Makefile.am 2015-06-02 14:31:10.000000000 +0200
@@ -1,7 +1,8 @@
TESTS = \
kernel_test.rb \
hw_detection_test.rb \
- fs_snapshot_test.rb
+ fs_snapshot_test.rb \
+ fs_snapshot_store_test.rb
TEST_EXTENSIONS = .rb
RB_LOG_COMPILER = rspec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/system/test/fs_snapshot_store_test.rb new/yast2-3.1.128/library/system/test/fs_snapshot_store_test.rb
--- old/yast2-3.1.125/library/system/test/fs_snapshot_store_test.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.128/library/system/test/fs_snapshot_store_test.rb 2015-06-02 14:31:10.000000000 +0200
@@ -0,0 +1,85 @@
+#!/usr/bin/env rspec
+
+require_relative "test_helper"
+require "yast2/fs_snapshot_store"
+
+describe Yast2::FsSnapshotStore do
+ describe ".save" do
+ it "stores snapshot id to file identified by purpose" do
+ expect(Yast::SCR).to receive(:Write).with(
+ path(".target.string"),
+ "/var/lib/YaST2/pre_snapshot_test.id",
+ "42"
+ ).and_return(true)
+
+ described_class.save("test", 42)
+ end
+
+ it "raises exception if writing failed" do
+ expect(Yast::SCR).to receive(:Write).with(
+ path(".target.string"),
+ "/var/lib/YaST2/pre_snapshot_test.id",
+ "42"
+ ).and_return(nil)
+
+ expect { described_class.save("test", 42) }.to raise_error(/Failed to write/)
+ end
+ end
+
+ describe ".load" do
+ it "loads snapshot id from file identified by purpose" do
+ expect(Yast::SCR).to receive(:Read).with(
+ path(".target.string"),
+ "/var/lib/YaST2/pre_snapshot_test.id"
+ ).and_return("42\n")
+
+ expect(described_class.load("test")).to eq 42
+ end
+
+ it "raises exception if reading failed" do
+ expect(Yast::SCR).to receive(:Read).with(
+ path(".target.string"),
+ "/var/lib/YaST2/pre_snapshot_test.id"
+ ).and_return(nil)
+
+ expect { described_class.load("test") }.to raise_error(/Failed to read/)
+ end
+
+ it "raises exception if file content is not number" do
+ expect(Yast::SCR).to receive(:Read).with(
+ path(".target.string"),
+ "/var/lib/YaST2/pre_snapshot_test.id"
+ ).and_return("blabla\n")
+
+ expect { described_class.load("test") }.to raise_error(/Failed to read/)
+ end
+ end
+
+ describe "clean" do
+ it "cleans file storing snapshot id" do
+ expect(Yast::SCR).to receive(:Execute).with(
+ path(".target.remove"),
+ "/var/lib/YaST2/pre_snapshot_test.id"
+ )
+
+ described_class.clean("test")
+ end
+ end
+
+ context "in initial stage before SCR switched" do
+ it "use path on mounted target system" do
+ Yast.import "Installation"
+ Yast::Installation.destdir = "/mnt"
+
+ Yast.import "Stage"
+ allow(Yast::Stage).to receive(:initial).and_return(true)
+
+ expect(Yast::SCR).to receive(:Execute).with(
+ path(".target.remove"),
+ "/mnt/var/lib/YaST2/pre_snapshot_test.id"
+ )
+
+ described_class.clean("test")
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/library/system/test/fs_snapshot_test.rb new/yast2-3.1.128/library/system/test/fs_snapshot_test.rb
--- old/yast2-3.1.125/library/system/test/fs_snapshot_test.rb 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/library/system/test/fs_snapshot_test.rb 2015-06-02 14:31:10.000000000 +0200
@@ -8,8 +8,14 @@
described_class.log
end
- FIND_CONFIG = "/usr/bin/snapper --no-dbus list-configs | grep \"^root \" >/dev/null"
- LIST_SNAPSHOTS = "LANG=en_US.UTF-8 /usr/bin/snapper --no-dbus list"
+ FIND_CONFIG = "/usr/bin/snapper --no-dbus --root=/ list-configs | grep \"^root \" >/dev/null"
+ FIND_IN_ROOT_CONFIG = "/usr/bin/snapper --no-dbus --root=/mnt list-configs | grep \"^root \" >/dev/null"
+ LIST_SNAPSHOTS = "LANG=en_US.UTF-8 /usr/bin/snapper --no-dbus --root=/ list"
+
+ before do
+ # reset configured cache
+ described_class.instance_variable_set("@configured", nil)
+ end
describe ".configured?" do
before do
@@ -34,11 +40,47 @@
expect(described_class.configured?).to eq(true)
end
end
+
+ context "in initial stage before scr switched" do
+ let(:find_code) { 0 }
+ before do
+ Yast.import "Installation"
+ Yast::Installation.destdir = "/mnt"
+
+ Yast.import "Stage"
+ allow(Yast::Stage).to receive(:initial).and_return true
+
+ allow(Yast::SCR).to receive(:Execute)
+ .with(path(".target.bash_output"), FIND_IN_ROOT_CONFIG)
+ .and_return("stdout" => "", "exit" => 0)
+
+ Yast.import "InstExtensionImage"
+ allow(Yast::InstExtensionImage).to receive(:with_extension) do |&block|
+ block.call
+ end
+ end
+
+ it "ensures snapper is available" do
+ expect(Yast::InstExtensionImage).to receive(:with_extension) do |&block|
+ block.call
+ end
+
+ described_class.configured?
+ end
+
+ it "detects snapper configuration in installation target dir" do
+ expect(Yast::SCR).to receive(:Execute)
+ .with(path(".target.bash_output"), FIND_IN_ROOT_CONFIG)
+ .and_return("stdout" => "", "exit" => 0)
+
+ expect(described_class.configured?).to eq(true)
+ end
+ end
end
describe ".create_single" do
CREATE_SINGLE_SNAPSHOT = "/usr/lib/snapper/installation-helper --step 5 "\
- "--snapshot-type single --description \"some-description\""
+ "--root-prefix=/ --snapshot-type single --description \"some-description\""
before do
allow(Yast2::FsSnapshot).to receive(:configured?).and_return(configured)
@@ -88,7 +130,7 @@
describe ".create_pre" do
CREATE_PRE_SNAPSHOT = "/usr/lib/snapper/installation-helper --step 5 "\
- "--snapshot-type pre --description \"some-description\""
+ "--root-prefix=/ --snapshot-type pre --description \"some-description\""
before do
allow(Yast2::FsSnapshot).to receive(:configured?).and_return(configured)
@@ -138,7 +180,8 @@
describe ".create_post" do
CREATE_POST_SNAPSHOT = "/usr/lib/snapper/installation-helper --step 5 "\
- "--snapshot-type post --description \"some-description\" --pre-num 2"
+ "--root-prefix=/ --snapshot-type post --description \"some-description\" "\
+ "--pre-num 2"
before do
allow(Yast2::FsSnapshot).to receive(:configured?).and_return(configured)
@@ -226,7 +269,7 @@
expect(logger).to receive(:info).with(/Retrieving snapshots list/)
snapshots = described_class.all
expect(snapshots).to be_kind_of(Array)
- expect(snapshots.size).to eq(5)
+ expect(snapshots.size).to eq(4)
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/package/yast2.changes new/yast2-3.1.128/package/yast2.changes
--- old/yast2-3.1.125/package/yast2.changes 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/package/yast2.changes 2015-06-02 14:31:10.000000000 +0200
@@ -1,4 +1,23 @@
-------------------------------------------------------------------
+Tue Jun 2 11:26:50 UTC 2015 - jreidinger@suse.com
+
+- reduce count of extending inst-sys with snapper for snapshotting
+ (fate#317973)
+- 3.1.128
+
+-------------------------------------------------------------------
+Mon Jun 1 16:23:37 CEST 2015 - locilka@suse.com
+
+- Added Linuxrc.value_for (fate#317973)
+- 3.1.127
+
+-------------------------------------------------------------------
+Wed May 27 14:36:47 UTC 2015 - jreidinger@suse.com
+
+- Add persistent storage for fs pre snapshots (fate#317973)
+- 3.1.126
+
+-------------------------------------------------------------------
Mon May 25 14:04:51 CEST 2015 - locilka@suse.com
- Fixed proposal to open fallback ports for services (bsc#916376)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-3.1.125/package/yast2.spec new/yast2-3.1.128/package/yast2.spec
--- old/yast2-3.1.125/package/yast2.spec 2015-05-25 15:36:08.000000000 +0200
+++ new/yast2-3.1.128/package/yast2.spec 2015-06-02 14:31:10.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2
-Version: 3.1.125
+Version: 3.1.128
Release: 0
URL: https://github.com/yast/yast-yast2
@@ -41,8 +41,8 @@
# For running RSpec tests during build
BuildRequires: rubygem(rspec)
-# To have specific RSpec extensions available
-BuildRequires: yast2-ruby-bindings >= 3.1.26
+# To have scr_chrooted? call available
+BuildRequires: yast2-ruby-bindings >= 3.1.33
# pre-requires for filling the sysconfig template (sysconfig.yast2)
PreReq: %fillup_prereq
@@ -117,7 +117,7 @@
Provides: yast2-dns-server:/usr/share/YaST2/modules/DnsServerAPI.pm
Provides: yast2-mail-aliases
-Requires: yast2-ruby-bindings >= 1.0.0
+Requires: yast2-ruby-bindings >= 3.1.33
Summary: YaST2 - Main Package