Hello community, here is the log from the commit of package yast2 for openSUSE:Leap:15.2 checked in at 2020-02-27 06:41:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/yast2 (Old) and /work/SRC/openSUSE:Leap:15.2/.yast2.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2" Thu Feb 27 06:41:16 2020 rev:174 rq:779091 version:4.2.67 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/yast2/yast2.changes 2020-02-21 23:49:57.276638367 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.yast2.new.26092/yast2.changes 2020-02-27 06:41:17.605583373 +0100 @@ -1,0 +2,14 @@ +Mon Feb 24 15:02:15 CET 2020 - sch...@suse.de + +- Creating an own Augeas instance for each parsed sysctl file + (bsc#1151649). +- 4.2.67 + +------------------------------------------------------------------- +Mon Feb 17 17:59:07 UTC 2020 - sch...@suse.de + +- SysctlConfig class: Handle sysctl entries in different + directories (bsc#1151649). +- 4.2.66 + +------------------------------------------------------------------- Old: ---- yast2-4.2.65.tar.bz2 New: ---- yast2-4.2.67.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2.spec ++++++ --- /var/tmp/diff_new_pack.HiYOEC/_old 2020-02-27 06:41:18.069584339 +0100 +++ /var/tmp/diff_new_pack.HiYOEC/_new 2020-02-27 06:41:18.073584348 +0100 @@ -17,7 +17,7 @@ Name: yast2 -Version: 4.2.65 +Version: 4.2.67 Release: 0 Summary: YaST2 Main Package License: GPL-2.0-only ++++++ yast2-4.2.65.tar.bz2 -> yast2-4.2.67.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/src/lib/cfa/conflict_report.rb new/yast2-4.2.67/library/general/src/lib/cfa/conflict_report.rb --- old/yast2-4.2.65/library/general/src/lib/cfa/conflict_report.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/src/lib/cfa/conflict_report.rb 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1,50 @@ +# Copyright (c) [2020] 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 SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require "yast" + +Yast.import "Report" + +module CFA + # Class for showing conflicts. + class ConfictReport + include Yast::Logger + include Yast::I18n + extend Yast::I18n + + # Popup which shows the conflicting files and their attributes. + # + # @param conflicts [Hash<String, Array<String>>] conflicting filepath with the + # corresponding array of entry names. + def self.report(conflicts) + textdomain "base" + return if !conflicts || conflicts.empty? + + text = "" + text << _("Changed values have conflicts with:<br><br>") + conflicts.each do |filename, conflict| + text << _("File: %s<br>") % filename + text << _("Conflicting entries: %s<br>") % conflict.join(", ") + text << "<br>" + end + text << _("You will have to adapt these entries manually in order to set your changes.") + Yast::Report.LongWarning(text) + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/src/lib/cfa/sysctl.rb new/yast2-4.2.67/library/general/src/lib/cfa/sysctl.rb --- old/yast2-4.2.65/library/general/src/lib/cfa/sysctl.rb 2020-02-17 18:24:24.000000000 +0100 +++ new/yast2-4.2.67/library/general/src/lib/cfa/sysctl.rb 2020-02-25 10:03:16.000000000 +0100 @@ -1,4 +1,4 @@ -# Copyright (c) [2019] SUSE LLC +# Copyright (c) [2019-2020] SUSE LLC # # All Rights Reserved. # @@ -42,16 +42,24 @@ # sysctl.load # sysctl.raw_forward_ipv6 #=> "0" # sysctl.raw_forward_ipv6 = "1" - # sysctl.forward_ipv6? #=> true + # + # NOTE: This class only handles "/etc/sysctl.d/70-yast.conf" and /etc/sysctl.conf. + # But sysctl values will also be handled by other files/directories. This will be + # managed by class SysctlConfig. So please use SysctlConfig in order to read/write + # sysctl values. class Sysctl < BaseModel include Yast::Logger Yast.import "Stage" - PARSER = AugeasParser.new("sysctl.lns") PATH = "/etc/sysctl.d/70-yast.conf".freeze class << self + def known_attributes + # Returning all attributes + ATTRIBUTES.keys + end + # Modifies default CFA methods to handle boolean values # # When getting or setting the value, a boolean value will be expected. Under the hood, it will @@ -91,17 +99,28 @@ disable_ipv6: "net.ipv6.conf.all.disable_ipv6" }.freeze + BOOLEAN_ATTRIBUTES = [ + :forward_ipv4, :forward_ipv6, :tcp_syncookies, :disable_ipv6, + :ipv4_forwarding_default, :ipv4_forwarding_all, :ipv6_forwarding_default, + :ipv6_forwarding_all + ].freeze + attributes(ATTRIBUTES) + attr_reader :file_path + # Keys that are handled by this class KNOWN_KEYS = ATTRIBUTES.values.uniq.freeze - boolean_attr :forward_ipv4, :forward_ipv6, :tcp_syncookies, :disable_ipv6, - :ipv4_forwarding_default, :ipv4_forwarding_all, :ipv6_forwarding_default, - :ipv6_forwarding_all + boolean_attr(*BOOLEAN_ATTRIBUTES) + + def initialize(file_handler: Yast::TargetFile, file_path: PATH) + super(AugeasParser.new("sysctl.lns"), file_path, file_handler: file_handler) + end - def initialize(file_handler: Yast::TargetFile) - super(PARSER, PATH, file_handler: file_handler) + def empty? + # FIXME: AugeasTree should implement #empty? + data.data.empty? end # Loads sysctl content @@ -138,8 +157,37 @@ clean_old_values if !Yast::Stage.initial end + def present?(attr) + !send(method_name(attr)).nil? + end + + # Returns the list of attributes + # + # @return [Array<Symbol>] List of attribute names + # @see #present? + def present_attributes + self.class.known_attributes.select { |a| present?(a) } + end + + # Determines the list of conflicting attributes for two files + # + # Two attributes are conflicting when both of them are defined with + # different values. + # + # @param other [BaseModel] The file to compare with + # @return [Array<Symbol>] List of conflicting attributes + def conflicts(other) + conflicting_attrs = present_attributes & other.present_attributes + conflicting_attrs.reject { |a| public_send(a) == other.public_send(a) } + end + private + def method_name(attr) + raw_method = "raw_#{attr}" + respond_to?(raw_method) ? raw_method : attr + end + # Path to the agent to handle the +/etc/sysctl.conf+ file SYSCTL_AGENT_PATH = Yast::Path.new(".etc.sysctl_conf") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/src/lib/cfa/sysctl_config.rb new/yast2-4.2.67/library/general/src/lib/cfa/sysctl_config.rb --- old/yast2-4.2.65/library/general/src/lib/cfa/sysctl_config.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/src/lib/cfa/sysctl_config.rb 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1,201 @@ +# Copyright (c) [2019-2020] 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 SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require "yast" +require "yast2/execute" +require "cfa/sysctl" +require "cfa/conflict_report" + +Yast.import "FileUtils" + +module CFA + # CFA based API to adjust the sysctl tool configuration + # + # This class does not modify the running kernel configuration. It just writes + # the desired values into the configuration file ({PATH}). + # Despite the class Sysctl this class also takes care about entries in + # /run/sysctl.d, + # /etc/sysctl.d + # /usr/local/lib/sysctl.d + # /usr/lib/sysctl.d + # /lib/sysctl.d + # /etc/sysctl.conf + # and inform the user if his settings will be overruled by setting in + # other files. + # + # @example Enabling IPv4 forwarding + # sysctl = SysctlConfig.new + # sysctl.forward_ipv4 = true + # sysctl.save + # + # Although in the previous example we enabled the IPv4 forwarding using by + # setting +forward_ipv4+ to true. However, under the hood, the kernel maps + # boolean values to "1" or "0". If you want to access to that raw value, + # you can prepend "raw_" to the method's name. + # + # @example Accessing the raw value of a setting + # sysctl = SysctlConfig.new + # sysctl.load + # sysctl.raw_forward_ipv6 #=> "0" + # sysctl.raw_forward_ipv6 = "1" + class SysctlConfig + include Yast::Logger + + PATHS = [ + "/run/sysctl.d", + "/etc/sysctl.d", + "/usr/local/lib/sysctl.d", + "/usr/lib/sysctl.d", + "/lib/sysctl.d", + "/etc/sysctl.conf" + ].freeze + private_constant :PATHS + + YAST_CONFIG_PATH = Sysctl::PATH + private_constant :YAST_CONFIG_PATH + + class << self + def define_attr(attr) + define_method attr do + file = files.reverse.find do |f| + f.present?(attr) + end + return file.public_send(attr) if file + + yast_config_file.public_send(attr) + end + + define_method "#{attr}=" do |value| + yast_config_file.public_send("#{attr}=", value) + end + end + end + + Sysctl.known_attributes.each { |a| define_attr(a) } + + def load + files.each(&:load) + end + + # Saving all sysctl settings + # + def save + yast_config_file&.save + end + + # Whether there is a conflict with given attributes + # + # @param only [Array<Symbol>] attributes to check + # @param show_information [Boolean] showing a popup if it is conflicting + # @return [Boolean] true if any conflict is found; false otherwise + def conflict?(only: [], show_information: true) + return false if yast_config_file.empty? + + conflicting_attrs = Sysctl::ATTRIBUTES.keys + conflicting_attrs &= only unless only.empty? + conflicts = {} + higher_precedence_files.each do |file| + # Checking all "higher" files if their values overrule the current + # YAST settings. + conflict_values = yast_config_file.conflicts(file) & conflicting_attrs + conflicts[file.file_path] = conflict_values unless conflict_values.empty? + end + + # Transform into real tags + conflicts.each do |file, tags| + conflicts[file] = tags.map { |t| Sysctl::ATTRIBUTES[t.to_sym] } + end + + if !conflicts.empty? + log.warn("It could be that #{YAST_CONFIG_PATH} will not be written.") + log.warn("There are conflicts in sysctl files: #{conflicts}.") + ConfictReport.report(conflicts) if show_information + end + + !conflicts.empty? + end + + def files + @files ||= config_paths.map { |file| Sysctl.new(file_path: file) } + end + + private + + def yast_config_file + @yast_config_file ||= files.find { |f| f.file_path == YAST_CONFIG_PATH } + end + + def lower_precedence_files + @lower_precedence_files ||= files[0...yast_config_file_idx] + end + + def higher_precedence_files + @higher_precedence_files ||= files[(yast_config_file_idx + 1)..-1] + end + + def config_paths + paths = PATHS.each_with_object([YAST_CONFIG_PATH]) do |path, all| + all.concat(file_paths_in(path)) + end + + paths.uniq! { |f| File.basename(f) } + # Sort files lexicographic + paths.sort_by! { |f| File.basename(f) } + + # Prepend the kernel configuration file + paths.unshift(boot_config_path) unless boot_config_path.empty? + + paths + end + + def file_paths_in(path) + if Yast::FileUtils.IsFile(path) + [path] + elsif Yast::FileUtils.IsDirectory(path) + Yast::SCR.Read(Yast::Path.new(".target.dir"), path).map { |file| File.join(path, file) } + else + log.debug("Ignoring not valid path: #{path}") + + [] + end + end + + def boot_config_path + return @boot_config_path if @boot_config_path + + @boot_config_path = if !kernel_version.empty? + "/boot/sysctl.conf-#{kernel_version}" + else + "" + end + end + + def boot_config_file + @boot_config_file ||= files.find { |f| f.file_path == boot_config_path } + end + + def kernel_version + @kernel_version ||= Yast::Execute.on_target.stdout("/usr/bin/uname", "-r").to_s.chomp + end + + def yast_config_file_idx + @yast_config_file_idx ||= files.find_index { |f| f == yast_config_file } + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/test/cfa/sysctl_config_test.rb new/yast2-4.2.67/library/general/test/cfa/sysctl_config_test.rb --- old/yast2-4.2.65/library/general/test/cfa/sysctl_config_test.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/test/cfa/sysctl_config_test.rb 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1,217 @@ +#!/usr/bin/env rspec + +# Copyright (c) [2019] 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 SUSE LLC. +# +# To contact SUSE LLC about this file by physical or electronic mail, you may +# find current contact information at www.suse.com. + +require_relative "../test_helper" +require "cfa/sysctl_config" +require "cfa/sysctl" + +describe CFA::SysctlConfig do + subject(:config) { described_class.new } + + around do |example| + change_scr_root(File.join(GENERAL_DATA_PATH, "sysctl-full"), &example) + end + + describe "#load" do + let(:execute_object) { Yast::Execute.new } + + before do + allow(Yast::Execute).to receive(:on_target).and_return(execute_object) + allow(execute_object).to receive(:stdout).with("/usr/bin/uname", "-r").and_return("5.3.7-1-default") + end + + it "reads settings from files in all directories" do + files = [ + "/boot/sysctl.conf-5.3.7-1-default", + "/run/sysctl.d/05-syn_cookies.conf", + "/etc/sysctl.d/50-overriden.conf", + "/etc/sysctl.d/70-yast.conf", + "/usr/local/lib/sysctl.d/10-lib.conf", + "/usr/lib/sysctl.d/15-lib.conf", + "/lib/sysctl.d/20-lib.conf", + "/etc/sysctl.conf" + ] + files.each do |name| + expect(CFA::Sysctl).to receive(:new).with(file_path: name).and_call_original + end + + config.load + end + + it "settings for the given kernel are read from /boot" do + config.load + expect(config.kernel_sysrq).to eq("1") + end + + context "when two files have the same name" do + it "only reads the first one" do + expect(CFA::Sysctl).to_not receive(:new).with(file_path: "/lib/sysctl.d/50-overriden.conf") + allow(CFA::Sysctl).to receive(:new).and_call_original + config.load + end + end + end + + describe "#files" do + let(:execute_object) { Yast::Execute.new } + + context "when a specific kernel flavor configuration is found" do + before do + allow(Yast::Execute).to receive(:on_target).and_return(execute_object) + allow(execute_object).to receive(:stdout).with("/usr/bin/uname", "-r").and_return("5.3.7-1-default") + end + + it "includes it in the first position" do + expect(config.files[0].file_path).to eq("/boot/sysctl.conf-5.3.7-1-default") + end + + it "does not include other kernel configurations" do + expect(config.files.map(&:file_path)).to_not include(/5.3.6-1-default/) + end + + it "includes the other configuration files lexicographically ordered" do + expect(config.files[1..-1].map(&:file_path)).to eq([ + "/run/sysctl.d/05-syn_cookies.conf", "/usr/local/lib/sysctl.d/10-lib.conf", + "/usr/lib/sysctl.d/15-lib.conf", "/lib/sysctl.d/20-lib.conf", + "/etc/sysctl.d/50-overriden.conf", "/etc/sysctl.d/70-yast.conf", "/etc/sysctl.conf" + ]) + end + end + + context "when no specific kernel configurations are found" do + before do + allow(Yast::Execute).to receive(:on_target).and_return(execute_object) + allow(execute_object).to receive(:stdout).with("/usr/bin/uname", "-r").and_return("") + end + + it "does not include /boot" do + expect(config.files.map(&:file_path)).to_not include(/\/boot/) + end + + it "includes configuration files lexicographically ordered" do + expect(config.files.map(&:file_path)).to eq([ + "/run/sysctl.d/05-syn_cookies.conf", "/usr/local/lib/sysctl.d/10-lib.conf", + "/usr/lib/sysctl.d/15-lib.conf", "/lib/sysctl.d/20-lib.conf", + "/etc/sysctl.d/50-overriden.conf", "/etc/sysctl.d/70-yast.conf", "/etc/sysctl.conf" + ]) + end + end + + it "does not include ignored configuration files (same name, less precedense location)" do + expect(config.files.map(&:file_path)).to_not include("/etc/system.d/sync_cookies.conf") + end + end + + describe "#forward_ipv4" do + before do + config.load + end + + it "returns the forward_ipv4 value with highest precedence" do + expect(config.forward_ipv4).to eq(true) + end + + context "when the value is not present" do + it "returns the default from the main file" do + expect(config.forward_ipv6).to eq(false) + end + end + end + + describe "#forward_ipv4=" do + before do + config.load + end + + it "changes the value" do + expect { config.forward_ipv4 = false }.to change { config.forward_ipv4 }.from(true).to(false) + end + end + + describe "#conflict_files" do + context "when YaST configuration file is empty" do + it "returns false" do + expect(config.conflict?).to eq(false) + end + end + + context "when YaST configuration file is present" do + before do + config.load + file.tcp_syncookies = tcp_syncookies + end + + let(:file) { config.files.find { |f| f.file_path == CFA::Sysctl::PATH } } + let(:tcp_syncookies) { true } + + context "and no specific attributes are given" do + it "checks all known attributes" do + expect(file).to receive(:present?).exactly(CFA::Sysctl.known_attributes.count).times + config.conflict? + end + end + + context "and specific attributes is given" do + context "attribute will be not found" do + it "returns false" do + expect(config.conflict?(only: [:not_valid])).to eq(false) + end + end + + context "attribute is valid" do + context "when some main file value is overriden" do + let(:tcp_syncookies) { false } + + it "returns true" do + expect(config.conflict?(only: [:tcp_syncookies])) + .to eq(true) + end + end + + context "when no value is overriden" do + let(:tcp_syncookies) { true } + + it "returns false" do + expect(config.conflict?(only: [:tcp_syncookies])) + .to eq(false) + end + end + end + end + + context "when some main file value is overriden" do + let(:tcp_syncookies) { false } + + it "returns true" do + expect(config.conflict?).to eq(true) + end + end + + context "when no value is overriden" do + let(:tcp_syncookies) { true } + + it "returns false" do + expect(config.conflict?).to eq(false) + end + end + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/test/cfa/sysctl_test.rb new/yast2-4.2.67/library/general/test/cfa/sysctl_test.rb --- old/yast2-4.2.65/library/general/test/cfa/sysctl_test.rb 2020-02-17 18:24:24.000000000 +0100 +++ new/yast2-4.2.67/library/general/test/cfa/sysctl_test.rb 2020-02-25 10:03:16.000000000 +0100 @@ -44,6 +44,13 @@ sysctl.load end + describe "#initialize" do + it "creates an own Augeas instance" do + expect(::CFA::AugeasParser).to receive(:new).with("sysctl.lns").and_call_original + CFA::Sysctl.new(file_handler: file_handler) + end + end + describe "#raw_forward_ipv4" do it "returns IPv4 forwarding raw value" do expect(sysctl.raw_forward_ipv4).to eq("1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.6-1-default new/yast2-4.2.67/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.6-1-default --- old/yast2-4.2.65/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.6-1-default 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.6-1-default 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1,16 @@ +# Generated file - do not edit. +# Disable the hung task timer by default. (bnc#552820) +kernel.hung_task_timeout_secs = 0 + +# Increase defaults for IPC (bnc#146656) +kernel.msgmax = 65536 +kernel.msgmnb = 65536 +# Increase defaults for IPC (bnc#146656) (64-bit, 4k pages) +kernel.shmmax = 0xffffffffffffffff +# SHMALL = SHMMAX/PAGE_SIZE*(SHMMNI/16) +kernel.shmall = 0x0fffffffffffff00 +# The desktop workload is sensitive to latency, so start writeout earlier +# (bnc#552883) +vm.dirty_ratio=20 + +kernel.sysrq = 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.7-1-default new/yast2-4.2.67/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.7-1-default --- old/yast2-4.2.65/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.7-1-default 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/test/data/sysctl-full/boot/sysctl.conf-5.3.7-1-default 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1,16 @@ +# Generated file - do not edit. +# Disable the hung task timer by default. (bnc#552820) +kernel.hung_task_timeout_secs = 0 + +# Increase defaults for IPC (bnc#146656) +kernel.msgmax = 65536 +kernel.msgmnb = 65536 +# Increase defaults for IPC (bnc#146656) (64-bit, 4k pages) +kernel.shmmax = 0xffffffffffffffff +# SHMALL = SHMMAX/PAGE_SIZE*(SHMMNI/16) +kernel.shmall = 0x0fffffffffffff00 +# The desktop workload is sensitive to latency, so start writeout earlier +# (bnc#552883) +vm.dirty_ratio=20 + +kernel.sysrq = 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/test/data/sysctl-full/etc/sysctl.conf new/yast2-4.2.67/library/general/test/data/sysctl-full/etc/sysctl.conf --- old/yast2-4.2.65/library/general/test/data/sysctl-full/etc/sysctl.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/test/data/sysctl-full/etc/sysctl.conf 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1 @@ +net.ipv4.tcp_syncookies=1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/test/data/sysctl-full/etc/sysctl.d/70-yast.conf new/yast2-4.2.67/library/general/test/data/sysctl-full/etc/sysctl.d/70-yast.conf --- old/yast2-4.2.65/library/general/test/data/sysctl-full/etc/sysctl.d/70-yast.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/test/data/sysctl-full/etc/sysctl.d/70-yast.conf 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1 @@ +net.ipv4.ip_forward=1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/library/general/test/data/sysctl-full/run/sysctl.d/05-syn_cookies.conf new/yast2-4.2.67/library/general/test/data/sysctl-full/run/sysctl.d/05-syn_cookies.conf --- old/yast2-4.2.65/library/general/test/data/sysctl-full/run/sysctl.d/05-syn_cookies.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-4.2.67/library/general/test/data/sysctl-full/run/sysctl.d/05-syn_cookies.conf 2020-02-25 10:03:16.000000000 +0100 @@ -0,0 +1,2 @@ +net.ipv4.tcp_syncookies=1 +net.ipv4.ip_forward=0 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/package/yast2.changes new/yast2-4.2.67/package/yast2.changes --- old/yast2-4.2.65/package/yast2.changes 2020-02-17 18:24:24.000000000 +0100 +++ new/yast2-4.2.67/package/yast2.changes 2020-02-25 10:03:16.000000000 +0100 @@ -1,4 +1,18 @@ ------------------------------------------------------------------- +Mon Feb 24 15:02:15 CET 2020 - sch...@suse.de + +- Creating an own Augeas instance for each parsed sysctl file + (bsc#1151649). +- 4.2.67 + +------------------------------------------------------------------- +Mon Feb 17 17:59:07 UTC 2020 - sch...@suse.de + +- SysctlConfig class: Handle sysctl entries in different + directories (bsc#1151649). +- 4.2.66 + +------------------------------------------------------------------- Mon Feb 17 16:59:07 UTC 2020 - Stefan Hundhammer <shundham...@suse.com> - Fixed user-visible messages (bsc#1084015) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.65/package/yast2.spec new/yast2-4.2.67/package/yast2.spec --- old/yast2-4.2.65/package/yast2.spec 2020-02-17 18:24:24.000000000 +0100 +++ new/yast2-4.2.67/package/yast2.spec 2020-02-25 10:03:16.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2 -Version: 4.2.65 +Version: 4.2.67 Release: 0 Summary: YaST2 Main Package License: GPL-2.0-only