openSUSE Commits
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
January 2016
- 1 participants
- 1523 discussions
Hello community,
here is the log from the commit of package gdouros-aegyptus-fonts for openSUSE:Factory checked in at 2016-01-21 23:42:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gdouros-aegyptus-fonts (Old)
and /work/SRC/openSUSE:Factory/.gdouros-aegyptus-fonts.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gdouros-aegyptus-fonts"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gdouros-aegyptus-fonts/gdouros-aegyptus-fonts.changes 2015-06-23 12:00:23.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gdouros-aegyptus-fonts.new/gdouros-aegyptus-fonts.changes 2016-01-22 01:07:37.000000000 +0100
@@ -1,0 +2,7 @@
+Sun Jan 17 13:58:49 UTC 2016 - aloisio(a)gmx.com
+
+- Update to version 6.00
+ * new pdf documentation
+ * refreshed README-SUSE from the website
+
+-------------------------------------------------------------------
Old:
----
aegyptus-fonts-5.03.tar.bz2
New:
----
aegyptus-fonts-6.00.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gdouros-aegyptus-fonts.spec ++++++
--- /var/tmp/diff_new_pack.qj63vd/_old 2016-01-22 01:07:40.000000000 +0100
+++ /var/tmp/diff_new_pack.qj63vd/_new 2016-01-22 01:07:40.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gdouros-aegyptus-fonts
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define fontname aegyptus-fonts
Name: gdouros-aegyptus-fonts
-Version: 5.03
+Version: 6.00
Release: 0
Summary: Fonts with Support for Ancient Egyptian Hieroglyphs
License: SUSE-Permissive
++++++ aegyptus-fonts-5.03.tar.bz2 -> aegyptus-fonts-6.00.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/gdouros-aegyptus-fonts/aegyptus-fonts-5.03.tar.bz2 /work/SRC/openSUSE:Factory/.gdouros-aegyptus-fonts.new/aegyptus-fonts-6.00.tar.bz2 differ: char 11, line 1
1
0
Hello community,
here is the log from the commit of package vifm for openSUSE:Factory checked in at 2016-01-21 23:42:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vifm (Old)
and /work/SRC/openSUSE:Factory/.vifm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vifm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/vifm/vifm.changes 2015-08-29 20:05:09.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.vifm.new/vifm.changes 2016-01-22 01:07:34.000000000 +0100
@@ -1,0 +2,18 @@
+Sun Jan 17 19:32:26 UTC 2016 - mvetter(a)suse.com
+
+- Update to version 0.8.1
+ * Added local options, which work until directory change.
+ * Added named bookmarks (paths are associated with tags).
+ * Added autocommands (with DirEnter event).
+ * Added ability to sort by regexp-extracted part of file name.
+ * Added builtin directory preview (similar to tree).
+ * Added a way to communicate menu contents to Vim quickfix.
+ * Added "more" mode that is used to handle status bar content that doesn't fit on the screen.
+ * IPC got new (safe) implementation with listing/targeting of active instances, it's enabled by default again.
+ * Updating local view settings from vifmrc now affects both panes (:windo is not necessary).
+ * More predictive cursor updates on directory reload.
+ * Improvements related to expression and command parsing.
+- Remove vifm_utils_nix_dynamic_page_size_for_powerpc.patch:
+ Got upstreamed
+
+-------------------------------------------------------------------
Old:
----
vifm-0.8.tar.bz2
vifm_utils_nix_dynamic_page_size_for_powerpc.patch
New:
----
vifm-0.8.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vifm.spec ++++++
--- /var/tmp/diff_new_pack.eZQFUJ/_old 2016-01-22 01:07:35.000000000 +0100
+++ /var/tmp/diff_new_pack.eZQFUJ/_new 2016-01-22 01:07:35.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package vifm
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: vifm
-Version: 0.8
+Version: 0.8.1
Release: 0
Summary: Ncurses based file manager with vi like keybindings
License: GPL-2.0+
@@ -37,7 +37,6 @@
%else
BuildRequires: xorg-x11-devel
%endif
-Patch1: vifm_utils_nix_dynamic_page_size_for_powerpc.patch
%description
Vifm is a ncurses based file manager with vi like keybindings that allow complete
@@ -47,7 +46,6 @@
%prep
%setup -q
-%patch1 -p1
%build
%configure \
++++++ vifm-0.8.tar.bz2 -> vifm-0.8.1.tar.bz2 ++++++
++++ 93304 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package SDL2_ttf for openSUSE:Factory checked in at 2016-01-21 23:42:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/SDL2_ttf (Old)
and /work/SRC/openSUSE:Factory/.SDL2_ttf.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "SDL2_ttf"
Changes:
--------
--- /work/SRC/openSUSE:Factory/SDL2_ttf/SDL2_ttf.changes 2015-01-08 23:03:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.SDL2_ttf.new/SDL2_ttf.changes 2016-01-22 01:07:30.000000000 +0100
@@ -1,0 +2,8 @@
+Sun Jan 10 17:23:29 UTC 2016 - mailaender(a)opensuse.org
+
+- Update to version 2.0.13
+ * Fixed bug rendering text starting with a glyph with negative starting offset
+ * Fixed regression loading non-scalable fonts
+ * TTF_GetFontKerningSize() gets kerning between two characters, not two glyph indices
+
+-------------------------------------------------------------------
Old:
----
SDL2_ttf-2.0.12.tar.gz
New:
----
SDL2_ttf-2.0.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ SDL2_ttf.spec ++++++
--- /var/tmp/diff_new_pack.KqgRKs/_old 2016-01-22 01:07:32.000000000 +0100
+++ /var/tmp/diff_new_pack.KqgRKs/_new 2016-01-22 01:07:32.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package SDL2_ttf
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
Name: SDL2_ttf
%define lname libSDL2_ttf-2_0-0
-Version: 2.0.12
+Version: 2.0.13
Release: 0
Summary: SDL2 TrueType library
License: Zlib
@@ -28,6 +28,7 @@
#Hg-Clone: http://hg.libsdl.org/SDL_ttf/
Source: http://libsdl.org/projects/SDL_ttf/release/%name-%version.tar.gz
Source2: baselibs.conf
+BuildRequires: dos2unix
BuildRequires: pkg-config
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(sdl2)
@@ -38,7 +39,7 @@
SDL applications.
%package -n %lname
-Summary: Simple DirectMedia Layer 2 – Truetype Library
+Summary: Simple DirectMedia Layer 2 – Truetype Library
Group: System/Libraries
Provides: SDL2_ttf = %version
@@ -58,6 +59,7 @@
%prep
%setup -q
+dos2unix *.txt
%build
%configure --disable-static
++++++ SDL2_ttf-2.0.12.tar.gz -> SDL2_ttf-2.0.13.tar.gz ++++++
++++ 27442 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package SDL2_image for openSUSE:Factory checked in at 2016-01-21 23:42:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/SDL2_image (Old)
and /work/SRC/openSUSE:Factory/.SDL2_image.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "SDL2_image"
Changes:
--------
--- /work/SRC/openSUSE:Factory/SDL2_image/SDL2_image.changes 2015-01-08 23:03:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.SDL2_image.new/SDL2_image.changes 2016-01-22 01:07:28.000000000 +0100
@@ -1,0 +2,10 @@
+Sun Jan 10 17:13:52 UTC 2016 - mailaender(a)opensuse.org
+
+- Update to version 2.0.1
+ * Fixed support for transparency in XPM files
+ * Fixed memory leak in webp image loading
+ * Fixed loading BMP files with large BITMAPINFOHEADER structures
+ * Fixed building with libpng 1.4
+- Removed bigendian_undefined_s.patch
+
+-------------------------------------------------------------------
Old:
----
SDL2_image-2.0.0.tar.gz
bigendian_undefined_s.patch
New:
----
SDL2_image-2.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ SDL2_image.spec ++++++
--- /var/tmp/diff_new_pack.ih4OJq/_old 2016-01-22 01:07:30.000000000 +0100
+++ /var/tmp/diff_new_pack.ih4OJq/_new 2016-01-22 01:07:30.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package SDL2_image
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
Name: SDL2_image
%define lname libSDL2_image-2_0-0
-Version: 2.0.0
+Version: 2.0.1
Release: 0
Summary: SDL2 image loading library
License: Zlib
@@ -28,7 +28,7 @@
#Hg-Clone: http://hg.libsdl.org/SDL_image/
Source: http://libsdl.org/projects/SDL_image/release/%name-%version.tar.gz
Source2: baselibs.conf
-Patch1: bigendian_undefined_s.patch
+BuildRequires: dos2unix
BuildRequires: libjpeg-devel
BuildRequires: libtiff-devel
BuildRequires: pkg-config
@@ -43,7 +43,7 @@
TIFF and WEBP formats.
%package -n %lname
-Summary: Simple DirectMedia Layer 2 – Image Loading Library
+Summary: Simple DirectMedia Layer 2 – Image Loading Library
Group: System/Libraries
Provides: SDL2_image = %version-%release
@@ -65,7 +65,7 @@
%prep
%setup -q
-%patch -P 1 -p1
+dos2unix *.txt
rm -rf external
%build
++++++ SDL2_image-2.0.0.tar.gz -> SDL2_image-2.0.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/SDL2_image/SDL2_image-2.0.0.tar.gz /work/SRC/openSUSE:Factory/.SDL2_image.new/SDL2_image-2.0.1.tar.gz differ: char 4, line 1
1
0
Hello community,
here is the log from the commit of package SDL2_mixer for openSUSE:Factory checked in at 2016-01-21 23:42:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/SDL2_mixer (Old)
and /work/SRC/openSUSE:Factory/.SDL2_mixer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "SDL2_mixer"
Changes:
--------
--- /work/SRC/openSUSE:Factory/SDL2_mixer/SDL2_mixer.changes 2015-01-08 23:03:31.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.SDL2_mixer.new/SDL2_mixer.changes 2016-01-22 01:07:25.000000000 +0100
@@ -1,0 +2,8 @@
+Sun Jan 10 17:06:57 UTC 2016 - mailaender(a)opensuse.org
+
+- update to version 2.0.1
+ * Added support for 'smpl' format loop points in music WAV files
+ * Fixed floating point exception in Mix_Volume()
+ * Added support for loading MP3 files as sound chunks
+
+-------------------------------------------------------------------
Old:
----
SDL2_mixer-2.0.0.tar.gz
New:
----
SDL2_mixer-2.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ SDL2_mixer.spec ++++++
--- /var/tmp/diff_new_pack.iM0xAI/_old 2016-01-22 01:07:27.000000000 +0100
+++ /var/tmp/diff_new_pack.iM0xAI/_new 2016-01-22 01:07:27.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package SDL2_mixer
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
Name: SDL2_mixer
%define lname libSDL2_mixer-2_0-0
-Version: 2.0.0
+Version: 2.0.1
Release: 0
Summary: SDL2 sound mixer library
License: Zlib
@@ -28,6 +28,7 @@
#Hg-Clone: http://hg.libsdl.org/SDL_mixer/
Source: http://libsdl.org/projects/SDL_mixer/release/%name-%version.tar.gz
Source1: baselibs.conf
+BuildRequires: dos2unix
BuildRequires: pkg-config
BuildRequires: pkgconfig(flac)
BuildRequires: pkgconfig(fluidsynth)
@@ -35,6 +36,7 @@
BuildRequires: pkgconfig(libmodplug) >= 0.8.8
BuildRequires: pkgconfig(sdl2)
BuildRequires: pkgconfig(vorbis)
+Recommends: timidity
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -65,6 +67,7 @@
%prep
%setup -q
+dos2unix *.txt
rm -rf external
%build
++++++ SDL2_mixer-2.0.0.tar.gz -> SDL2_mixer-2.0.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/SDL2_mixer/SDL2_mixer-2.0.0.tar.gz /work/SRC/openSUSE:Factory/.SDL2_mixer.new/SDL2_mixer-2.0.1.tar.gz differ: char 4, line 1
1
0
Hello community,
here is the log from the commit of package tuned for openSUSE:Factory checked in at 2016-01-21 23:42:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tuned (Old)
and /work/SRC/openSUSE:Factory/.tuned.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tuned"
Changes:
--------
--- /work/SRC/openSUSE:Factory/tuned/tuned.changes 2015-10-06 13:24:53.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.tuned.new/tuned.changes 2016-01-22 01:07:22.000000000 +0100
@@ -1,0 +2,31 @@
+Sun Jan 17 09:21:58 UTC 2016 - mpluskal(a)suse.com
+
+- Update to 2.6.0
+ * plugin_cpu: do not show error if cpupower or
+ x86_energy_perf_policy are missing
+ * plugin_sysctl: fixed quoting of sysctl values
+ * tuned-adm: added log file location hint to verify command output
+ * libexec: fixed listdir and isdir in defirqaffinity.py
+ * plugin_cpu: save and restore only intel pstate attributes that
+ were changed
+ * functions: fixed sysfs save to work with options
+ * plugins: added scsi_host plugin
+ * tuned-adm: fixed restart attempt if tuned is not running
+ * spec: fixed post scriptlet to work without grub
+ * tuned-profiles-nfv: fix find-lapictscdeadline-optimal.sh for
+ CPUS where ns > 6500
+ * functions: fixed restore_logs_syncing to preserve SELinux
+ context on rsyslog.conf
+ * realtime: set unboud workqueues cpumask
+ * spec: correctly remove tuned footprint from /etc/default/grub
+ * gui: fixed creation of new profile
+ * profiles: removed nohz_full from the realtime profile
+ * profiles: Added nohz_full and nohz=on to realtime guest/host
+ profiles
+ * profiles: fixed lapic_timer_adv_ns cache
+ * plugin_sysctl: pass verification even if the option doesn't
+ exist
+ * added support for 'summary' and 'description' of profiles,
+ extended D-Bus API for better Cockpit support
+
+-------------------------------------------------------------------
Old:
----
tuned-2.5.1.tar.bz2
New:
----
tuned-2.6.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tuned.spec ++++++
--- /var/tmp/diff_new_pack.B9uuxI/_old 2016-01-22 01:07:24.000000000 +0100
+++ /var/tmp/diff_new_pack.B9uuxI/_new 2016-01-22 01:07:24.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package tuned
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{!?_tmpfilesdir:%global _tmpfilesdir %{_libexecdir}/tmpfiles.d}
Name: tuned
-Version: 2.5.1
+Version: 2.6.0
Release: 0
Summary: A dynamic adaptive system tuning daemon
License: GPL-2.0+
++++++ fix-allow-receive_sender-default.patch ++++++
--- /var/tmp/diff_new_pack.B9uuxI/_old 2016-01-22 01:07:24.000000000 +0100
+++ /var/tmp/diff_new_pack.B9uuxI/_new 2016-01-22 01:07:24.000000000 +0100
@@ -1,7 +1,7 @@
-Index: tuned-2.5.1/dbus.conf
+Index: tuned-2.6.0/dbus.conf
===================================================================
---- tuned-2.5.1.orig/dbus.conf
-+++ tuned-2.5.1/dbus.conf
+--- tuned-2.6.0.orig/dbus.conf
++++ tuned-2.6.0/dbus.conf
@@ -9,7 +9,6 @@
<busconfig>
<policy context="default">
++++++ tuned-2.4.0-use_cpupower_for_intel_perf_bias.patch ++++++
--- /var/tmp/diff_new_pack.B9uuxI/_old 2016-01-22 01:07:24.000000000 +0100
+++ /var/tmp/diff_new_pack.B9uuxI/_new 2016-01-22 01:07:24.000000000 +0100
@@ -1,8 +1,8 @@
-Index: tuned-2.5.1/tuned/plugins/plugin_cpu.py
+Index: tuned-2.6.0/tuned/plugins/plugin_cpu.py
===================================================================
---- tuned-2.5.1.orig/tuned/plugins/plugin_cpu.py
-+++ tuned-2.5.1/tuned/plugins/plugin_cpu.py
-@@ -108,7 +108,8 @@ class CPULatencyPlugin(base.Plugin):
+--- tuned-2.6.0.orig/tuned/plugins/plugin_cpu.py
++++ tuned-2.6.0/tuned/plugins/plugin_cpu.py
+@@ -109,7 +109,8 @@ class CPULatencyPlugin(base.Plugin):
# Check for cpupower, use workaround if not available
self._check_cpupower()
# Check for x86_energy_perf_policy, ignore if not available / supported
@@ -12,7 +12,7 @@
# Check for intel_pstate
self._check_intel_pstate()
else:
-@@ -234,7 +235,17 @@ class CPULatencyPlugin(base.Plugin):
+@@ -237,7 +238,17 @@ class CPULatencyPlugin(base.Plugin):
if not self._is_cpu_online(device):
log.debug("%s is not online, skipping" % device)
return None
@@ -31,7 +31,7 @@
if not sim:
cpu_id = device.lstrip("cpu")
log.info("setting energy_perf_bias '%s' on cpu '%s'" % (energy_perf_bias, device))
-@@ -262,14 +273,21 @@ class CPULatencyPlugin(base.Plugin):
+@@ -265,14 +276,21 @@ class CPULatencyPlugin(base.Plugin):
if not self._is_cpu_online(device):
log.debug("%s is not online, skipping" % device)
return None
++++++ tuned-2.5.1.tar.bz2 -> tuned-2.6.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/libexec/defirqaffinity.py new/tuned-2.6.0/libexec/defirqaffinity.py
--- old/tuned-2.5.1/libexec/defirqaffinity.py 2015-07-01 16:21:17.000000000 +0200
+++ new/tuned-2.6.0/libexec/defirqaffinity.py 2015-08-21 12:09:16.000000000 +0200
@@ -1,3 +1,5 @@
+#!/usr/bin/python
+
# Helper script for realtime profiles provided by RT
import os
@@ -57,7 +59,7 @@
sys.exit(1)
# now verify each /proc/irq/$num/smp_affinity
- interruptdirs = [ f for f in listdir(irqpath) if isdir(join(irqpath,f)) ]
+ interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(join(irqpath,f)) ]
# IRQ 2 - cascaded signals from IRQs 8-15 (any devices configured to use IRQ 2 will actually be using IRQ 9)
interruptdirs.remove("2")
# IRQ 0 - system timer (cannot be changed)
@@ -103,7 +105,7 @@
# now adjust each /proc/irq/$num/smp_affinity
-interruptdirs = [ f for f in listdir(irqpath) if isdir(join(irqpath,f)) ]
+interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(join(irqpath,f)) ]
# IRQ 2 - cascaded signals from IRQs 8-15 (any devices configured to use IRQ 2 will actually be using IRQ 9)
interruptdirs.remove("2")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/atomic-guest/tuned.conf new/tuned-2.6.0/profiles/atomic-guest/tuned.conf
--- old/tuned-2.5.1/profiles/atomic-guest/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/atomic-guest/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize virtual guests based on the Atomic variant
include=virtual-guest
[selinux]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/atomic-host/tuned.conf new/tuned-2.6.0/profiles/atomic-host/tuned.conf
--- old/tuned-2.5.1/profiles/atomic-host/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/atomic-host/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize bare metal systems running the Atomic variant
include=throughput-performance
[selinux]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/balanced/tuned.conf new/tuned-2.6.0/profiles/balanced/tuned.conf
--- old/tuned-2.5.1/profiles/balanced/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/balanced/tuned.conf 2016-01-05 10:33:56.000000000 +0100
@@ -2,6 +2,9 @@
# tuned configuration
#
+[main]
+summary=General non-specialized tuned profile
+
[cpu]
governor=conservative
energy_perf_bias=normal
@@ -15,4 +18,6 @@
[disk]
# Comma separated list of devices, all devices if commented out.
# devices=sda
+
+[scsi_host]
alpm=medium_power
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/default/tuned.conf new/tuned-2.6.0/profiles/default/tuned.conf
--- old/tuned-2.5.1/profiles/default/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/default/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -2,6 +2,9 @@
# tuned configuration
#
+[main]
+summary=Legacy default tuned profile
+
[cpu]
[disk]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/desktop/tuned.conf new/tuned-2.6.0/profiles/desktop/tuned.conf
--- old/tuned-2.5.1/profiles/desktop/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/desktop/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optmize for the desktop use-case
include=balanced
[sysctl]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/desktop-powersave/tuned.conf new/tuned-2.6.0/profiles/desktop-powersave/tuned.conf
--- old/tuned-2.5.1/profiles/desktop-powersave/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/desktop-powersave/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optmize for the desktop use-case with power saving.
include=server-powersave
[video]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/enterprise-storage/tuned.conf new/tuned-2.6.0/profiles/enterprise-storage/tuned.conf
--- old/tuned-2.5.1/profiles/enterprise-storage/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/enterprise-storage/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,4 +3,5 @@
#
[main]
+summary=Legacy profile for RHEL6. For RHEL7, please use throughput-performance profile.
include=throughput-performance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/functions new/tuned-2.6.0/profiles/functions
--- old/tuned-2.5.1/profiles/functions 2015-05-19 15:47:23.000000000 +0200
+++ new/tuned-2.6.0/profiles/functions 2015-10-06 10:55:01.000000000 +0200
@@ -21,11 +21,22 @@
[ "$2" -a -e "${STORAGE}" ] && echo "$2" > "${STORAGE}/${1}${STORAGE_SUFFIX}"
}
+# Parse sysfs value, i.e. for "val1 [val2] val3" return "val2"
+# $0 SYSFS_NAME
+parse_sys() {
+ local V1 V2
+ [ -r "$1" ] || return
+ V1=`cat "$1"`
+ V2="${V1##*[}"
+ V2="${V2%%]*}"
+ echo "${V2:-$V1}"
+}
+
# Save sysfs value
# $0 STORAGE_NAME SYSFS_NAME
save_sys() {
[ "$#" -ne 2 ] && return
- [ -r "$2" -a ! -e "${STORAGE}/${1}${STORAGE_SUFFIX}" ] && cat "$2" > "${STORAGE}/${1}${STORAGE_SUFFIX}"
+ [ -r "$2" -a ! -e "${STORAGE}/${1}${STORAGE_SUFFIX}" ] && parse_sys "$2" > "${STORAGE}/${1}${STORAGE_SUFFIX}"
}
# Set sysfs value
@@ -105,7 +116,7 @@
# $0 DEVICES [ELEVATOR]
restore_elevator() {
re_elevator="$2"
- [ "$re_elevator" ] || re_elevator = cfq
+ [ "$re_elevator" ] || re_elevator=cfq
_set_elevator_helper restore_sys "$1" "$re_elevator"
}
@@ -440,7 +451,7 @@
}
restore_logs_syncing() {
- mv $RSYSLOG_SAVE $RSYSLOG_CFG
+ mv -Z $RSYSLOG_SAVE $RSYSLOG_CFG || mv $RSYSLOG_SAVE $RSYSLOG_CFG
}
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/laptop-ac-powersave/tuned.conf new/tuned-2.6.0/profiles/laptop-ac-powersave/tuned.conf
--- old/tuned-2.5.1/profiles/laptop-ac-powersave/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/laptop-ac-powersave/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for laptop with power savings
include=desktop-powersave
[script]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/laptop-battery-powersave/tuned.conf new/tuned-2.6.0/profiles/laptop-battery-powersave/tuned.conf
--- old/tuned-2.5.1/profiles/laptop-battery-powersave/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/laptop-battery-powersave/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,4 +3,5 @@
#
[main]
+summary=Optimize laptop profile with more aggressive power saving
include=powersave
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/latency-performance/tuned.conf new/tuned-2.6.0/profiles/latency-performance/tuned.conf
--- old/tuned-2.5.1/profiles/latency-performance/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/latency-performance/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -2,6 +2,9 @@
# tuned configuration
#
+[main]
+summary=Optimize for deterministic performance at the cost of increased power consumption
+
[cpu]
force_latency=1
governor=performance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/network-latency/tuned.conf new/tuned-2.6.0/profiles/network-latency/tuned.conf
--- old/tuned-2.5.1/profiles/network-latency/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/network-latency/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
include=latency-performance
[vm]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/network-throughput/tuned.conf new/tuned-2.6.0/profiles/network-throughput/tuned.conf
--- old/tuned-2.5.1/profiles/network-throughput/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/network-throughput/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for streaming network throughput. Generally only necessary on older CPUs or 40G+ networks.
include=throughput-performance
[sysctl]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/oracle/tuned.conf new/tuned-2.6.0/profiles/oracle/tuned.conf
--- old/tuned-2.5.1/profiles/oracle/tuned.conf 2015-06-16 10:51:15.000000000 +0200
+++ new/tuned-2.6.0/profiles/oracle/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for Oracle RDBMS
include=throughput-performance
[sysctl]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/powersave/tuned.conf new/tuned-2.6.0/profiles/powersave/tuned.conf
--- old/tuned-2.5.1/profiles/powersave/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/powersave/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -2,6 +2,9 @@
# tuned configuration
#
+[main]
+summary=Optimize for low power consumption
+
[cpu]
governor=ondemand
energy_perf_bias=powersave
@@ -19,12 +22,14 @@
[disk]
# Comma separated list of devices, all devices if commented out.
# devices=sda
-alpm=min_power
[net]
# Comma separated list of devices, all devices if commented out.
# devices=eth0
+[scsi_host]
+alpm=min_power
+
[sysctl]
vm.laptop_mode=5
vm.dirty_writeback_centisecs=1500
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/realtime/tuned.conf new/tuned-2.6.0/profiles/realtime/tuned.conf
--- old/tuned-2.5.1/profiles/realtime/tuned.conf 2015-06-23 09:15:44.000000000 +0200
+++ new/tuned-2.6.0/profiles/realtime/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -4,6 +4,7 @@
# https://docs.redhat.com
[main]
+summary=Optimize for realtime workloads
include = network-latency
[variables]
@@ -20,6 +21,7 @@
[sysfs]
/sys/bus/workqueue/devices/writeback/cpumask = ${not_isolated_cpumask}
+/sys/devices/virtual/workqueue/cpumask = ${not_isolated_cpumask}
/sys/devices/system/machinecheck/machinecheck*/ignore_ce = 1
[bootloader]
@@ -27,7 +29,7 @@
# NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22
# NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23
-cmdline=isolcpus=${isolated_cores} nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup
+cmdline=isolcpus=${isolated_cores} intel_pstate=disable nosoftlockup
[script]
script = script.sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/realtime-virtual-guest/tuned.conf new/tuned-2.6.0/profiles/realtime-virtual-guest/tuned.conf
--- old/tuned-2.5.1/profiles/realtime-virtual-guest/tuned.conf 2015-07-01 16:25:50.000000000 +0200
+++ new/tuned-2.6.0/profiles/realtime-virtual-guest/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for realtime workloads running within a KVM guest
include=realtime
[variables]
@@ -12,3 +13,6 @@
[script]
script=script.sh
+
+[bootloader]
+cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh new/tuned-2.6.0/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh
--- old/tuned-2.5.1/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh 2015-06-18 14:12:07.000000000 +0200
+++ new/tuned-2.6.0/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh 2015-10-02 12:03:31.000000000 +0200
@@ -20,5 +20,11 @@
fi
prev_value=$a
done
+# if still decreasing, then use highest ns value
+if [ $value -le 99 ]; then
+ echo -n "optimal value for lapic_timer_advance_ns is: "
+ awk "NR==$(($i - 1))" $1 | cut -f 1 -d ":"
+ exit 0
+fi
echo optimal not found
exit 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/realtime-virtual-host/script.sh new/tuned-2.6.0/profiles/realtime-virtual-host/script.sh
--- old/tuned-2.5.1/profiles/realtime-virtual-host/script.sh 2015-07-24 11:06:29.000000000 +0200
+++ new/tuned-2.6.0/profiles/realtime-virtual-host/script.sh 2015-11-16 17:25:58.000000000 +0100
@@ -27,7 +27,7 @@
curmodel=`cat /proc/cpuinfo | grep "model name" | cut -f 2 -d ":" | uniq`
genmodel=`cat lapic_timer_adv_ns.cpumodel`
- if [ "$cpumodel" != "$genmodel" ]; then
+ if [ "$curmodel" != "$genmodel" ]; then
rm -f lapic_timer_adv_ns
rm -f lapic_timer_adv_ns.cpumodel
fi
@@ -43,7 +43,7 @@
if [ $? -eq 0 ]; then
echo `cat $tempdir/opt.out | cut -f 2 -d ":"` > ./lapic_timer_adv_ns
curmodel=`cat /proc/cpuinfo | grep "model name" | cut -f 2 -d ":" | uniq`
- echo $curmodel > lapic_timer_adv_ns.cpumodel
+ echo "$curmodel" > lapic_timer_adv_ns.cpumodel
fi
fi
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/realtime-virtual-host/tuned.conf new/tuned-2.6.0/profiles/realtime-virtual-host/tuned.conf
--- old/tuned-2.5.1/profiles/realtime-virtual-host/tuned.conf 2015-07-01 16:24:07.000000000 +0200
+++ new/tuned-2.6.0/profiles/realtime-virtual-host/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -20,6 +20,7 @@
[main]
+summary=Optimize for KVM guests running realtime workloads
include=realtime
[variables]
@@ -40,3 +41,6 @@
[script]
script=script.sh
+
+[bootloader]
+cmdline=isolcpus=${isolated_cores} nohz=on nohz_full=${isolated_cores} intel_pstate=disable nosoftlockup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/sap-hana/tuned.conf new/tuned-2.6.0/profiles/sap-hana/tuned.conf
--- old/tuned-2.5.1/profiles/sap-hana/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/sap-hana/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for SAP
include=throughput-performance
[cpu]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/sap-hana-vmware/tuned.conf new/tuned-2.6.0/profiles/sap-hana-vmware/tuned.conf
--- old/tuned-2.5.1/profiles/sap-hana-vmware/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/sap-hana-vmware/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for SAP running inside a VMware guest
include=throughput-performance
[cpu]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/sap-netweaver/tuned.conf new/tuned-2.6.0/profiles/sap-netweaver/tuned.conf
--- old/tuned-2.5.1/profiles/sap-netweaver/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/sap-netweaver/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for SAP NetWeaver
include=throughput-performance
[sysctl]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/server-powersave/tuned.conf new/tuned-2.6.0/profiles/server-powersave/tuned.conf
--- old/tuned-2.5.1/profiles/server-powersave/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/server-powersave/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -2,7 +2,12 @@
# tuned configuration
#
+[main]
+summary=Optimize for server power savings
+
[cpu]
[disk]
+
+[scsi_host]
alpm=min_power
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/spindown-disk/tuned.conf new/tuned-2.6.0/profiles/spindown-disk/tuned.conf
--- old/tuned-2.5.1/profiles/spindown-disk/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/spindown-disk/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -16,11 +16,16 @@
# Bluetooth will be switch off.
# Wifi will be switch into power safe mode.
+[main]
+summary=Optimize for power saving by spinning-down rotational disks
+
[disk]
-alpm=medium_power
apm=128
spindown=6
+[scsi_host]
+alpm=medium_power
+
[sysctl]
vm.dirty_writeback_centisecs=6000
vm.dirty_expire_centisecs=9000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/throughput-performance/tuned.conf new/tuned-2.6.0/profiles/throughput-performance/tuned.conf
--- old/tuned-2.5.1/profiles/throughput-performance/tuned.conf 2015-06-26 12:12:24.000000000 +0200
+++ new/tuned-2.6.0/profiles/throughput-performance/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -2,6 +2,9 @@
# tuned configuration
#
+[main]
+summary=Broadly applicable tuning that provides excellent performance across a variety of common server workloads. This is the default profile for RHEL7.
+
[cpu]
governor=performance
energy_perf_bias=performance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/virtual-guest/tuned.conf new/tuned-2.6.0/profiles/virtual-guest/tuned.conf
--- old/tuned-2.5.1/profiles/virtual-guest/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/virtual-guest/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for running inside a virtual guest.
include=throughput-performance
[sysctl]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/profiles/virtual-host/tuned.conf new/tuned-2.6.0/profiles/virtual-host/tuned.conf
--- old/tuned-2.5.1/profiles/virtual-host/tuned.conf 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/profiles/virtual-host/tuned.conf 2015-12-18 17:21:00.000000000 +0100
@@ -3,6 +3,7 @@
#
[main]
+summary=Optimize for running KVM guests
include=throughput-performance
[sysctl]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/admin/admin.py new/tuned-2.6.0/tuned/admin/admin.py
--- old/tuned-2.5.1/tuned/admin/admin.py 2015-07-10 16:41:03.000000000 +0200
+++ new/tuned-2.6.0/tuned/admin/admin.py 2016-01-05 11:15:40.000000000 +0100
@@ -11,6 +11,7 @@
self._controller = controller
self._debug = debug
self._cmd = commands(debug)
+ self._profiles_locator = profiles_locator(consts.LOAD_DIRECTORIES)
def _error(self, message):
print >>sys.stderr, message
@@ -28,18 +29,27 @@
no_dbus = self._controller is None
if not no_dbus:
try:
- profile_names = self._controller.profiles()
+ profile_names = self._controller.profiles2()
except TunedAdminDBusException as e:
- self._error(e)
- no_dbus = True
+ # fallback to older API
+ try:
+ profile_names = self._controller.profiles()
+ except TunedAdminDBusException as e:
+ self._error(e)
+ no_dbus = True
+ profile_names = map(lambda profile:(profile, ""), profile_names)
if no_dbus:
- profile_names = profiles_locator(consts.LOAD_DIRECTORIES).get_known_names()
+ profile_names = self._profiles_locator.get_known_names_summary()
print "Available profiles:"
for profile in profile_names:
- print "- %s" % profile
+ if profile[1] is not None and profile[1] != "":
+ print self._cmd.align_str("- %s" % profile[0], 30, "- %s" % profile[1])
+ else:
+ print "- %s" % profile[0]
self.active()
- def active(self):
+ def _get_active_profile(self):
+ profile_name = None
no_dbus = self._controller is None
if not no_dbus:
try:
@@ -49,7 +59,39 @@
no_dbus = True
if no_dbus:
profile_name = str.strip(self._cmd.read_file(consts.ACTIVE_PROFILE_FILE, None))
- if profile_name is not None and profile_name != "":
+ if profile_name == "":
+ profile_name = None
+ return profile_name
+
+ def profile_info(self, profile = ""):
+ no_dbus = self._controller is None
+ if profile == "":
+ profile = self._get_active_profile()
+ if not no_dbus:
+ try:
+ ret = self._controller.profile_info(profile)
+ except TunedAdminDBusException as e:
+ self._error(e)
+ no_dbus = True
+ if no_dbus:
+ ret = self._profiles_locator.get_profile_attrs(profile, [consts.PROFILE_ATTR_SUMMARY, consts.PROFILE_ATTR_DESCRIPTION], ["", ""])
+ if ret[0] == True:
+ print "Profile name:"
+ print ret[1]
+ print
+ print "Profile summary:"
+ print ret[2]
+ print
+ print "Profile description:"
+ print ret[3]
+ return True
+ else:
+ print "Unable to get information about profile '%s'" % profile
+ return False
+
+ def active(self):
+ profile_name = self._get_active_profile()
+ if profile_name is not None:
if self._controller is not None and self._tuned_is_running():
print "Current active profile: %s" % profile_name
else:
@@ -73,11 +115,11 @@
self._error(e)
no_dbus = True
if no_dbus:
- if profile_name in profiles_locator(consts.LOAD_DIRECTORIES).get_known_names():
+ if profile_name in self._profiles_locator.get_known_names():
if self._cmd.write_to_file(consts.ACTIVE_PROFILE_FILE, profile_name):
print "Trying to (re)start tuned..."
(ret, out) = self._cmd.execute(["service", "tuned", "restart"])
- if retcode == 0:
+ if ret == 0:
print "Tuned (re)started, changes applied."
else:
print "Tuned (re)start failed, you need to (re)start tuned by hand for changes to apply."
@@ -125,8 +167,9 @@
print "Verfication succeeded, current system settings match the preset profile."
else:
print "Verification failed, current system settings differ from the preset profile."
- print "See tuned.log for details. You can mostly fix this by Tuned restart, e.g.:"
+ print "You can mostly fix this by Tuned restart, e.g.:"
print " service tuned restart"
+ print "See tuned log file ('%s') for details." % consts.LOG_FILE
return ret
def off(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/admin/dbus_controller.py new/tuned-2.6.0/tuned/admin/dbus_controller.py
--- old/tuned-2.5.1/tuned/admin/dbus_controller.py 2015-05-18 18:46:29.000000000 +0200
+++ new/tuned-2.6.0/tuned/admin/dbus_controller.py 2016-01-04 18:05:52.000000000 +0100
@@ -44,6 +44,12 @@
def profiles(self):
return self._call("profiles")
+ def profiles2(self):
+ return self._call("profiles2")
+
+ def profile_info(self, profile_name):
+ return self._call("profile_info", profile_name)
+
def active_profile(self):
return self._call("active_profile")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/consts.py new/tuned-2.6.0/tuned/consts.py
--- old/tuned-2.5.1/tuned/consts.py 2015-07-02 14:37:48.000000000 +0200
+++ new/tuned-2.6.0/tuned/consts.py 2015-12-22 16:55:11.000000000 +0100
@@ -1,5 +1,6 @@
GLOBAL_CONFIG_FILE = "/etc/tuned/tuned-main.conf"
ACTIVE_PROFILE_FILE = "/etc/tuned/active_profile"
+PROFILE_FILE = "tuned.conf"
AUTODETECT_FILE = "recommend.conf"
DAEMONIZE_PARENT_TIMEOUT = 5
DBUS_BUS = "com.redhat.tuned"
@@ -56,6 +57,10 @@
# recommend command availability
CFG_DEF_RECOMMEND_COMMAND = True
+# profile attributes which can be specified in the main section
+PROFILE_ATTR_SUMMARY = "summary"
+PROFILE_ATTR_DESCRIPTION = "description"
+
STR_VERIFY_PROFILE_DEVICE_VALUE_OK = "verify: passed: device %s: %s = %s"
STR_VERIFY_PROFILE_VALUE_OK = "verify: passed: %s = %s"
STR_VERIFY_PROFILE_OK = "verify: passed: %s"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/daemon/controller.py new/tuned-2.6.0/tuned/daemon/controller.py
--- old/tuned-2.5.1/tuned/daemon/controller.py 2015-07-02 16:57:20.000000000 +0200
+++ new/tuned-2.6.0/tuned/daemon/controller.py 2016-01-05 11:15:16.000000000 +0100
@@ -106,6 +106,16 @@
def profiles(self):
return self._daemon.profile_loader.profile_locator.get_known_names()
+ @exports.export("", "a(ss)")
+ def profiles2(self):
+ return self._daemon.profile_loader.profile_locator.get_known_names_summary()
+
+ @exports.export("s", "(bsss)")
+ def profile_info(self, profile_name):
+ if profile_name is None or profile_name == "":
+ profile_name = self.active_profile()
+ return tuple(self._daemon.profile_loader.profile_locator.get_profile_attrs(profile_name, [consts.PROFILE_ATTR_SUMMARY, consts.PROFILE_ATTR_DESCRIPTION], [""]))
+
@exports.export("", "s")
def recommend_profile(self):
return self._cmd.recommend_profile(hardcoded = not self._global_config.get_bool(consts.CFG_RECOMMEND_COMMAND, consts.CFG_DEF_RECOMMEND_COMMAND))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/gtk/gui_profile_loader.py new/tuned-2.6.0/tuned/gtk/gui_profile_loader.py
--- old/tuned-2.5.1/tuned/gtk/gui_profile_loader.py 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/tuned/gtk/gui_profile_loader.py 2015-10-27 17:54:50.000000000 +0100
@@ -47,7 +47,7 @@
def get_raw_profile(self, profile_name):
file = self._locate_profile_path(profile_name) + '/' \
- + profile_name + '/' + 'tuned.conf'
+ + profile_name + '/' + tuned.consts.PROFILE_FILE
with open(file, 'r') as f:
return f.read()
@@ -56,7 +56,7 @@
profilePath = self._locate_profile_path(profile_name)
if profilePath == tuned.consts.LOAD_DIRECTORIES[1]:
- file = profilePath + '/' + profile_name + '/' + 'tuned.conf'
+ file = profilePath + '/' + profile_name + '/' + tuned.consts.PROFILE_FILE
with open(file, 'w') as f:
f.write(config)
else:
@@ -65,7 +65,7 @@
+ ' and can not be storet do this location')
def load_profile_config(self, profile_name, path):
- conf_path = path + '/' + profile_name + '/tuned.conf'
+ conf_path = path + '/' + profile_name + '/' + tuned.consts.PROFILE_FILE
profile_config = configobj.ConfigObj(conf_path)
return profile_config
@@ -99,7 +99,7 @@
def save_profile(self, profile):
path = tuned.consts.LOAD_DIRECTORIES[1] + '/' + profile.name
config = configobj.ConfigObj()
- config.filename = path + tuned.consts.CONF_PROFILE_FILE
+ config.filename = path + '/' + tuned.consts.PROFILE_FILE
config.initial_comment = ('#', 'tuned configuration', '#')
try:
@@ -146,7 +146,7 @@
self.remove_profile(old_profile_name, is_admin=is_admin)
config = configobj.ConfigObj()
- config.filename = path + '/tuned.conf'
+ config.filename = path + '/' + tuned.consts.PROFILE_FILE
config.initial_comment = ('#', 'tuned configuration', '#')
try:
config['main'] = profile.options
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/plugins/base.py new/tuned-2.6.0/tuned/plugins/base.py
--- old/tuned-2.5.1/tuned/plugins/base.py 2015-06-18 12:22:03.000000000 +0200
+++ new/tuned-2.6.0/tuned/plugins/base.py 2015-08-19 14:06:12.000000000 +0200
@@ -3,6 +3,7 @@
import tuned.profiles.variables
import tuned.logs
import collections
+from tuned.utils.commands import commands
log = tuned.logs.get()
@@ -35,6 +36,8 @@
self._options_used_by_dynamic = self._get_config_options_used_by_dynamic()
+ self._cmd = commands()
+
def cleanup(self):
self.destroy_instances()
@@ -415,10 +418,10 @@
command["set"](new_value, sim = False)
def _norm_value(self, value):
- v = str(value)
+ v = self._cmd.unquote(str(value))
if re.match(r'\s*(0+,)+[\da-fA-F]*\s*$', v):
return re.sub(r'^\s*(0+,)+', "", v)
- return value
+ return v
def _verify_value(self, name, new_value, current_value, device = None):
if new_value is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/plugins/plugin_bootloader.py new/tuned-2.6.0/tuned/plugins/plugin_bootloader.py
--- old/tuned-2.5.1/tuned/plugins/plugin_bootloader.py 2015-07-24 13:47:54.000000000 +0200
+++ new/tuned-2.6.0/tuned/plugins/plugin_bootloader.py 2015-08-19 13:41:06.000000000 +0200
@@ -105,9 +105,6 @@
self._grub2_default_env_patch()
return True
- def _unquote(self, v):
- return re.sub("^\"(.*)\"$", r"\1", v)
-
@command_custom("grub2_cfg_file")
def _grub2_cfg_file(self, enabling, value, verify):
# nothing to verify
@@ -118,7 +115,7 @@
@command_custom("cmdline", per_device = False, priority = 10)
def _cmdline(self, enabling, value, verify):
- v = self._variables.expand(self._unquote(value))
+ v = self._variables.expand(self._cmd.unquote(value))
if verify:
cmdline = self._cmd.read_file("/proc/cmdline")
if len(cmdline) == 0:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/plugins/plugin_cpu.py new/tuned-2.6.0/tuned/plugins/plugin_cpu.py
--- old/tuned-2.5.1/tuned/plugins/plugin_cpu.py 2015-06-10 14:27:06.000000000 +0200
+++ new/tuned-2.6.0/tuned/plugins/plugin_cpu.py 2015-08-21 14:36:49.000000000 +0200
@@ -5,6 +5,7 @@
import os
import struct
+import errno
log = tuned.logs.get()
@@ -52,19 +53,19 @@
}
def _check_cpupower(self):
- if self._cmd.execute(["cpupower", "frequency-info"])[0] == 0:
+ if self._cmd.execute(["cpupower", "frequency-info"], no_errors = [errno.ENOENT])[0] == 0:
self._has_cpupower = True
else:
self._has_cpupower = False
- log.warning("using sysfs fallback, is cpupower installed?")
+ log.warning("unable to run cpupower tool, using sysfs fallback, is cpupower installed?")
def _check_energy_perf_bias(self):
self._has_energy_perf_bias = False
- retcode = self._cmd.execute(["x86_energy_perf_policy", "-r"])[0]
+ retcode = self._cmd.execute(["x86_energy_perf_policy", "-r"], no_errors = [errno.ENOENT])[0]
if retcode == 0:
self._has_energy_perf_bias = True
elif retcode == -1:
- log.warning("error executing x86_energy_perf_policy tool, ignoring CPU energy performance bias, is the tool installed?")
+ log.warning("unable to run x86_energy_perf_policy tool, ignoring CPU energy performance bias, is the tool installed?")
else:
log.warning("your CPU doesn't support MSR_IA32_ENERGY_PERF_BIAS, ignoring CPU energy performance bias")
@@ -123,12 +124,21 @@
if instance._load_monitor is not None:
self._monitors_repository.delete(instance._load_monitor)
- def _instance_apply_static(self, instance):
- if instance._first_instance and self._has_intel_pstate:
- self._min_perf_pct_save = self._get_intel_pstate_attr("min_perf_pct")
- self._max_perf_pct_save = self._get_intel_pstate_attr("max_perf_pct")
- self._no_turbo_save = self._get_intel_pstate_attr("no_turbo")
+ def _get_intel_pstate_attr(self, attr):
+ return self._cmd.read_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, None).strip()
+
+ def _set_intel_pstate_attr(self, attr, val):
+ if val is not None:
+ self._cmd.write_to_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, val)
+
+ def _getset_intel_pstate_attr(self, attr, value):
+ if value is None:
+ return None
+ v = self._get_intel_pstate_attr(attr)
+ self._set_intel_pstate_attr(attr, value)
+ return v
+ def _instance_apply_static(self, instance):
super(self.__class__, self)._instance_apply_static(instance)
if not instance._first_instance:
@@ -138,9 +148,9 @@
if force_latency_value is not None:
self._set_latency(force_latency_value)
if self._has_intel_pstate:
- self._set_intel_pstate_attr("min_perf_pct", instance.options["min_perf_pct"])
- self._set_intel_pstate_attr("max_perf_pct", instance.options["max_perf_pct"])
- self._set_intel_pstate_attr("no_turbo", instance.options["no_turbo"])
+ self._min_perf_pct_save = self._getset_intel_pstate_attr("min_perf_pct", instance.options["min_perf_pct"])
+ self._max_perf_pct_save = self._getset_intel_pstate_attr("max_perf_pct", instance.options["max_perf_pct"])
+ self._no_turbo_save = self._getset_intel_pstate_attr("no_turbo", instance.options["no_turbo"])
def _instance_unapply_static(self, instance, profile_switch = False):
super(self.__class__, self)._instance_unapply_static(instance, profile_switch)
@@ -167,13 +177,6 @@
def _instance_unapply_dynamic(self, instance, device):
pass
- def _get_intel_pstate_attr(self, attr):
- return self._cmd.read_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, None).strip()
-
- def _set_intel_pstate_attr(self, attr, val):
- if val is not None:
- self._cmd.write_to_file("/sys/devices/system/cpu/intel_pstate/%s" % attr, val)
-
def _set_latency(self, latency):
latency = int(latency)
if self._latency != latency:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/plugins/plugin_disk.py new/tuned-2.6.0/tuned/plugins/plugin_disk.py
--- old/tuned-2.5.1/tuned/plugins/plugin_disk.py 2015-06-25 11:17:50.000000000 +0200
+++ new/tuned-2.6.0/tuned/plugins/plugin_disk.py 2015-08-24 14:23:22.000000000 +0200
@@ -1,5 +1,4 @@
import errno
-import tuned.consts as consts
import hotplug
from decorators import *
import tuned.logs
@@ -65,7 +64,6 @@
return {
"dynamic" : True, # FIXME: do we want this default?
"elevator" : None,
- "alpm" : None,
"apm" : None,
"spindown" : None,
"readahead" : None,
@@ -217,39 +215,6 @@
# noop deadline [cfq]
return self._cmd.get_active_option(self._cmd.read_file(sys_file))
- def _alpm_policy_files(self):
- policy_files = []
- for host in os.listdir("/sys/class/scsi_host/"):
- port_cmd_path = os.path.join("/sys/class/scsi_host/", host, "ahci_port_cmd")
- try:
- port_cmd = open(port_cmd_path).read().strip()
- except (OSError,IOError) as e:
- log.error("Reading %s error: %s" % (port_cmd_path, e))
- continue
- try:
- port_cmd_int = int("0x" + port_cmd, 16)
- except ValueError:
- log.error("Unexpected value in %s" % (port_cmd_path))
- continue
-
- policy_file = os.path.join("/sys/class/scsi_host/", host, "link_power_management_policy")
- policy_files.append(policy_file)
-
- return policy_files
-
- @command_set("alpm")
- def _set_alpm(self, policy, sim):
- if not sim:
- for policy_file in self._alpm_policy_files():
- self._cmd.write_to_file(policy_file, policy)
- return policy
-
- @command_get("alpm")
- def _get_alpm(self):
- for policy_file in self._alpm_policy_files():
- return self._cmd.read_file(policy_file).strip()
- return None
-
@command_set("apm", per_device=True)
def _set_apm(self, value, device, sim):
if self._apm_errcnt < consts.ERROR_THRESHOLD:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/plugins/plugin_scsi_host.py new/tuned-2.6.0/tuned/plugins/plugin_scsi_host.py
--- old/tuned-2.5.1/tuned/plugins/plugin_scsi_host.py 1970-01-01 01:00:00.000000000 +0100
+++ new/tuned-2.6.0/tuned/plugins/plugin_scsi_host.py 2015-08-24 16:16:23.000000000 +0200
@@ -0,0 +1,83 @@
+import errno
+import hotplug
+from decorators import *
+import tuned.logs
+import tuned.consts as consts
+from tuned.utils.commands import commands
+import os
+import re
+
+log = tuned.logs.get()
+
+class DiskPlugin(hotplug.Plugin):
+ """
+ Plugin for tuning options of SCSI hosts.
+ """
+
+ def __init__(self, *args, **kwargs):
+ super(self.__class__, self).__init__(*args, **kwargs)
+
+ self._cmd = commands()
+
+ def _init_devices(self):
+ self._devices = set()
+ for device in self._hardware_inventory.get_devices("scsi"):
+ if self._device_is_supported(device):
+ self._devices.add(device.sys_name)
+
+ self._assigned_devices = set()
+ self._free_devices = self._devices.copy()
+
+ def _device_is_supported(cls, device):
+ return device.device_type == "scsi_host"
+
+ def _hardware_events_init(self):
+ self._hardware_inventory.subscribe(self, "scsi", self._hardware_events_callback)
+
+ def _hardware_events_cleanup(self):
+ self._hardware_inventory.unsubscribe(self)
+
+ def _hardware_events_callback(self, event, device):
+ if self._device_is_supported(device):
+ super(self.__class__, self)._hardware_events_callback(event, device)
+
+ def _added_device_apply_tuning(self, instance, device_name):
+ super(self.__class__, self)._added_device_apply_tuning(instance, device_name)
+
+ def _removed_device_unapply_tuning(self, instance, device_name):
+ super(self.__class__, self)._removed_device_unapply_tuning(instance, device_name)
+
+ @classmethod
+ def _get_config_options(cls):
+ return {
+ "alpm" : None,
+ }
+
+ def _instance_init(self, instance):
+ instance._has_static_tuning = True
+ instance._has_dynamic_tuning = False
+
+ def _instance_cleanup(self, instance):
+ pass
+
+ def _get_alpm_policy_file(self, device):
+ return os.path.join("/sys/class/scsi_host/", str(device), "link_power_management_policy")
+
+ @command_set("alpm", per_device = True)
+ def _set_alpm(self, policy, device, sim):
+ if policy is None:
+ return None
+ policy_file = self._get_alpm_policy_file(device)
+ if not sim:
+ if os.path.exists(policy_file):
+ self._cmd.write_to_file(policy_file, policy)
+ else:
+ log.warn("ALPM control file ('%s') not found, skipping ALPM setting for '%s'" % (policy_file, str(device)))
+ return None
+ return policy
+
+ @command_get("alpm")
+ def _get_alpm(self, device):
+ policy_file = self._get_alpm_policy_file(device)
+ policy = self._cmd.read_file(policy_file).strip()
+ return policy if policy != "" else None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/plugins/plugin_sysctl.py new/tuned-2.6.0/tuned/plugins/plugin_sysctl.py
--- old/tuned-2.5.1/tuned/plugins/plugin_sysctl.py 2015-06-01 19:08:23.000000000 +0200
+++ new/tuned-2.6.0/tuned/plugins/plugin_sysctl.py 2015-11-16 18:20:53.000000000 +0100
@@ -43,7 +43,7 @@
original_value = self._read_sysctl(option)
if original_value != None:
instance._sysctl_original[option] = original_value
- self._write_sysctl(option, self._variables.expand(value))
+ self._write_sysctl(option, self._variables.expand(self._cmd.unquote(value)))
self._storage.set("options", instance._sysctl_original)
@@ -51,8 +51,12 @@
ret = True
for option, value in instance._sysctl.iteritems():
curr_val = self._read_sysctl(option)
- if self._verify_value(option, self._cmd.remove_ws(self._variables.expand(value)), curr_val) == False:
- ret = False
+ if curr_val is None:
+ log.warn("verify: option '%s' is None, option is probably unavailable/unsupported on your system, skipping it",
+ str(option))
+ else:
+ if self._verify_value(option, self._cmd.remove_ws(self._variables.expand(value)), curr_val) == False:
+ ret = False
return ret
def _instance_unapply_static(self, instance, profile_switch = False):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/profiles/locator.py new/tuned-2.6.0/tuned/profiles/locator.py
--- old/tuned-2.5.1/tuned/profiles/locator.py 2015-05-04 11:06:33.000000000 +0200
+++ new/tuned-2.6.0/tuned/profiles/locator.py 2016-01-05 11:23:07.000000000 +0100
@@ -1,4 +1,6 @@
import os
+import tuned.consts as consts
+from configobj import ConfigObj, ConfigObjError
class Locator(object):
"""
@@ -23,7 +25,8 @@
def get_config(self, profile_name, skip_files=None):
for dir_name in reversed(self._load_directories):
- config_file = self._get_config_filename(dir_name, profile_name)
+ # basename is protection not to get out of the path
+ config_file = self._get_config_filename(dir_name, os.path.basename(profile_name))
if skip_files is not None and config_file in skip_files:
continue
@@ -33,7 +36,57 @@
return None
- def get_known_names(self):
+ def check_profile_name_format(self, profile_name):
+ return profile_name is not None and profile_name != "" and "/" not in profile_name
+
+ def parse_config(self, profile_name):
+ if not self.check_profile_name_format(profile_name):
+ return None
+ config_file = self.get_config(profile_name)
+ if config_file is None:
+ return None
+ try:
+ return ConfigObj(config_file, list_values = False, interpolation = False)
+ except (IOError, OSError, ConfigObjError) as e:
+ return None
+
+ # Get profile attributes (e.g. summary, description), attrs is list of requested attributes,
+ # if it is not list it is converted to list, defvals is list of default values to return if
+ # attribute is not found, it is also converted to list if it is not list.
+ # Returns list of the following format [status, profile_name, attr1_val, attr2_val, ...],
+ # status is boolean.
+ def get_profile_attrs(self, profile_name, attrs, defvals = None):
+ # check types
+ try:
+ attrs_len = len(attrs)
+ except TypeError:
+ attrs = [attrs]
+ attrs_len = 1
+ try:
+ defvals_len = len(defvals)
+ except TypeError:
+ defvals = [defvals]
+ defvals_len = 1
+ # Extend defvals if needed, last value is used for extension
+ if defvals_len < attrs_len:
+ defvals = defvals + ([defvals[-1]] * (attrs_len - defvals_len))
+ config = self.parse_config(profile_name)
+ if config is None:
+ return [False, "", "", ""]
+ if config.has_key("main"):
+ d = config["main"]
+ else:
+ d = dict()
+ vals = [True, profile_name]
+ for (attr, defval) in zip(attrs, defvals):
+ if attr == "" or attr is None:
+ vals[0] = False
+ vals = vals + [""]
+ else:
+ vals = vals + [d.get(attr, defval)]
+ return vals
+
+ def list_profiles(self):
profiles = set()
for dir_name in self._load_directories:
try:
@@ -43,5 +96,10 @@
profiles.add(profile_name)
except OSError:
pass
+ return profiles
+
+ def get_known_names(self):
+ return sorted(self.list_profiles())
- return sorted(list(profiles))
+ def get_known_names_summary(self):
+ return map(lambda profile: (profile, self.get_profile_attrs(profile, [consts.PROFILE_ATTR_SUMMARY], [""])[2]), sorted(self.list_profiles()))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/utils/commands.py new/tuned-2.6.0/tuned/utils/commands.py
--- old/tuned-2.5.1/tuned/utils/commands.py 2015-07-31 18:24:47.000000000 +0200
+++ new/tuned-2.6.0/tuned/utils/commands.py 2016-01-04 18:22:35.000000000 +0100
@@ -30,6 +30,13 @@
def remove_ws(self, s):
return re.sub('\s+', ' ', s).strip()
+ def unquote(self, v):
+ return re.sub("^\"(.*)\"$", r"\1", v)
+
+ # add spaces to align s2 to pos, returns resulting string: s1 + spaces + s2
+ def align_str(self, s1, pos, s2):
+ return s1 + " " * (pos - len(s1)) + s2
+
# convert dictionary 'd' to flat list and return it
# it uses sort on the dictionary items to return consistent results
# for directories with different inserte/delete history
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned/version.py new/tuned-2.6.0/tuned/version.py
--- old/tuned-2.5.1/tuned/version.py 2015-08-04 09:00:32.000000000 +0200
+++ new/tuned-2.6.0/tuned/version.py 2016-01-05 16:06:46.000000000 +0100
@@ -1,3 +1,3 @@
TUNED_VERSION_MAJOR = 2
-TUNED_VERSION_MINOR = 5
-TUNED_VERSION_PATCH = 1
+TUNED_VERSION_MINOR = 6
+TUNED_VERSION_PATCH = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned-adm.py new/tuned-2.6.0/tuned-adm.py
--- old/tuned-2.5.1/tuned-adm.py 2015-07-02 14:37:32.000000000 +0200
+++ new/tuned-2.6.0/tuned-adm.py 2016-01-04 16:46:19.000000000 +0100
@@ -47,6 +47,10 @@
parser_profile.set_defaults(action="profile")
parser_profile.add_argument("profiles", metavar="profile", type=str, nargs="+", help="profile name")
+ parser_profile_info = subparsers.add_parser("profile_info", help="show information/description of given profile or current profile if no profile is specified")
+ parser_profile_info.set_defaults(action="profile_info")
+ parser_profile_info.add_argument("profile", metavar="profile", type=str, nargs="?", default="", help="profile name, current profile if not specified")
+
if config.get(consts.CFG_RECOMMEND_COMMAND, consts.CFG_DEF_RECOMMEND_COMMAND):
parser_off = subparsers.add_parser("recommend", help="recommend profile")
parser_off.set_defaults(action="recommend_profile")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tuned-2.5.1/tuned.spec new/tuned-2.6.0/tuned.spec
--- old/tuned-2.5.1/tuned.spec 2015-08-04 09:09:11.000000000 +0200
+++ new/tuned-2.6.0/tuned.spec 2016-01-05 16:06:36.000000000 +0100
@@ -10,7 +10,7 @@
Summary: A dynamic adaptive system tuning daemon
Name: tuned
-Version: 2.5.1
+Version: 2.6.0
Release: 1%{?with_snapshot:.%{git_suffix}}%{?dist}
License: GPLv2+
Source: https://fedorahosted.org/releases/t/u/tuned/tuned-%{version}.tar.bz2
@@ -106,7 +106,8 @@
%package profiles-nfv
Summary: Additional tuned profile(s) targeted to Network Function Virtualization (NFV)
-Requires: %{name} = %{version}-%{release}, %{name}-profiles-realtime = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-profiles-realtime = %{version}-%{release}
Requires: tuna, qemu-kvm-tools-rhev
%description profiles-nfv
@@ -146,8 +147,10 @@
sed -i 's|.*/\([^/]\+\)/[^\.]\+\.conf|\1|' /etc/tuned/active_profile
# convert GRUB_CMDLINE_LINUX to GRUB_CMDLINE_LINUX_DEFAULT
-sed -i 's/GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX \\$tuned_params"/GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \\$tuned_params"/' \
- %{_sysconfdir}/default/grub
+if [ -r "%{_sysconfdir}/default/grub" ]; then
+ sed -i 's/GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX \\$tuned_params"/GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \\$tuned_params"/' \
+ %{_sysconfdir}/default/grub
+fi
%preun
@@ -162,7 +165,9 @@
if [ "$1" == 0 ]; then
rm -f %{_sysconfdir}/grub.d/00_tuned || :
# unpatch /etc/default/grub
- sed -i '/GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \\$tuned_params"/d' %{_sysconfdir}/default/grub
+ if [ -r "%{_sysconfdir}/default/grub" ]; then
+ sed -i '/GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT:+$GRUB_CMDLINE_LINUX_DEFAULT }\\$tuned_params"/d' %{_sysconfdir}/default/grub
+ fi
fi
@@ -182,10 +187,9 @@
%files
%defattr(-,root,root,-)
-%doc AUTHORS
-%doc COPYING
-%doc README
-%doc doc/TIPS.txt
+%exclude %{docdir}/README.utils
+%exclude %{docdir}/README.scomes
+%doc %{docdir}
%{_datadir}/bash-completion/completions/tuned-adm
%exclude %{python_sitelib}/tuned/gtk
%{python_sitelib}/tuned
@@ -300,6 +304,44 @@
%{_mandir}/man7/tuned-profiles-compat.7*
%changelog
+* Tue Jan 5 2016 Jaroslav Škarvada <jskarvad(a)redhat.com> - 2.6.0-1
+- new-release
+ - plugin_cpu: do not show error if cpupower or x86_energy_perf_policy are missing
+ - plugin_sysctl: fixed quoting of sysctl values
+ resolves: rhbz#1254538
+ - tuned-adm: added log file location hint to verify command output
+ - libexec: fixed listdir and isdir in defirqaffinity.py
+ resolves: rhbz#1252160
+ - plugin_cpu: save and restore only intel pstate attributes that were changed
+ resolves: rhbz#1252156
+ - functions: fixed sysfs save to work with options
+ resolves: rhbz#1251507
+ - plugins: added scsi_host plugin
+ - tuned-adm: fixed restart attempt if tuned is not running
+ - spec: fixed post scriptlet to work without grub
+ resolves: rhbz#1265654
+ - tuned-profiles-nfv: fix find-lapictscdeadline-optimal.sh for CPUS where ns > 6500
+ resolves: rhbz#1267284
+ - functions: fixed restore_logs_syncing to preserve SELinux context on rsyslog.conf
+ resolves: rhbz#1268901
+ - realtime: set unboud workqueues cpumask
+ resolves: rhbz#1259043
+ - spec: correctly remove tuned footprint from /etc/default/grub
+ resolves: rhbz#1268845
+ - gui: fixed creation of new profile
+ resolves: rhbz#1274609
+ - profiles: removed nohz_full from the realtime profile
+ resolves: rhbz#1274486
+ - profiles: Added nohz_full and nohz=on to realtime guest/host profiles
+ resolves: rhbz#1274445
+ - profiles: fixed lapic_timer_adv_ns cache
+ resolves: rhbz#1259452
+ - plugin_sysctl: pass verification even if the option doesn't exist
+ related: rhbz#1252153
+ - added support for 'summary' and 'description' of profiles,
+ extended D-Bus API for Cockpit
+ related: rhbz#1228356
+
* Tue Aug 4 2015 Jaroslav Škarvada <jskarvad(a)redhat.com> - 2.5.1-1
- new-release
related: rhbz#1155052
1
0
Hello community,
here is the log from the commit of package oidentd for openSUSE:Factory checked in at 2016-01-21 23:42:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/oidentd (Old)
and /work/SRC/openSUSE:Factory/.oidentd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "oidentd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/oidentd/oidentd.changes 2015-11-10 10:04:21.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.oidentd.new/oidentd.changes 2016-01-22 01:07:21.000000000 +0100
@@ -1,0 +2,7 @@
+Sat Jan 9 14:47:57 UTC 2016 - p.drouand(a)gmail.com
+
+- Rename oidentd@.service to oidentd.service and hardcode variables;
+ (boo#953608)
+- Add back support for sysconfig in the service file
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ oidentd.spec ++++++
--- /var/tmp/diff_new_pack.04skW8/_old 2016-01-22 01:07:22.000000000 +0100
+++ /var/tmp/diff_new_pack.04skW8/_new 2016-01-22 01:07:22.000000000 +0100
@@ -64,59 +64,61 @@
%install
make DESTDIR=%{buildroot} install
mkdir -p %{buildroot}/%{_sysconfdir} \
+ %{buildroot}%{_var}/adm/fillup-templates \
%if %{with systemd}
%{buildroot}%{_unitdir}
%else
- %{buildroot}%{_sysconfdir}/init.d \
- %{buildroot}%{_var}/adm/fillup-templates
+ %{buildroot}%{_sysconfdir}/init.d
%endif
touch %{buildroot}/%{_sysconfdir}/oidentd.conf
touch %{buildroot}/%{_sysconfdir}/oidentd_masq.conf
+cp -p %{S:1} %{buildroot}%{_var}/adm/fillup-templates
%if %{with systemd}
-install -p -m 0644 %{SOURCE3} %{buildroot}/%{_unitdir}/oidentd@.service
+install -p -m 0644 %{SOURCE3} %{buildroot}/%{_unitdir}/oidentd.service
install -p -m 0644 %{SOURCE4} %{buildroot}/%{_unitdir}/oidentd.socket
ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rc%{name}
%else
install -p -m 0755 %{S:2} %{buildroot}%{_sysconfdir}/init.d/oidentd
ln -fs %{_sysconfdir}/init.d/oidentd %{buildroot}%{_sbindir}/rcoidentd
-cp -p %{S:1} %{buildroot}%{_var}/adm/fillup-templates
%endif
-%pre
%if %{with systemd}
-%service_add_pre oidentd@.service oidentd.socket
+%pre
+%service_add_pre oidentd.service oidentd.socket
%endif
%post
%if %{with systemd}
-%service_add_post oidentd@.service oidentd.socket
+%service_add_post oidentd.service oidentd.socket
+%{fillup_only}
%else
%{fillup_and_insserv}
%endif
-%preun
%if %{with systemd}
-%service_del_preun oidentd@.service oidentd.socket
+%preun
+%service_del_preun oidentd.service oidentd.socket
%endif
%postun
%if %{with systemd}
-%service_del_postun oidentd@.service oidentd.socket
+%service_del_postun oidentd.service oidentd.socket
%else
%{restart_on_update}
%{insserv_cleanup}
%endif
+
%files
%defattr(-,root,root)
%config(noreplace) %ghost %{_sysconfdir}/oidentd.conf
%config(noreplace) %ghost %{_sysconfdir}/oidentd_masq.conf
%if %{with systemd}
-%{_unitdir}/oidentd@.service
+%{_unitdir}/oidentd.service
%{_unitdir}/oidentd.socket
%else
%config %{_sysconfdir}/init.d/oidentd
-%{_var}/adm/fillup-templates/sysconfig.oidentd
%endif
+%{_var}/adm/fillup-templates/sysconfig.oidentd
%{_sbindir}/oidentd
%{_sbindir}/rcoidentd
%{_mandir}/man5/oidentd.conf.5.gz
++++++ oidentd.service ++++++
--- /var/tmp/diff_new_pack.04skW8/_old 2016-01-22 01:07:22.000000000 +0100
+++ /var/tmp/diff_new_pack.04skW8/_new 2016-01-22 01:07:22.000000000 +0100
@@ -1,8 +1,11 @@
[Unit]
-Description=Ident (RFC 1413) per-connection server
+Description=RFC 1413 identification server
+Documentation=man:oidentd(8) man:oidentd.conf(5) man:oidentd_masq.conf(5)
[Service]
-ExecStart=/usr/bin/oidentd -I -u nobody -g nobody
-ExecReload=/bin/kill -HUP $MAINPID
+Type=simple
+PrivateDevices=true
+EnvironmentFile=/etc/sysconfig/oidentd
+ExecStart=/usr/sbin/oidentd -I -u nobody -g nobody --foreground --nosyslog $OIDENTD_OPTIONS
StandardInput=socket
StandardError=syslog
1
0
Hello community,
here is the log from the commit of package pure-ftpd for openSUSE:Factory checked in at 2016-01-21 23:42:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pure-ftpd (Old)
and /work/SRC/openSUSE:Factory/.pure-ftpd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pure-ftpd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/pure-ftpd/pure-ftpd.changes 2015-06-06 09:54:27.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pure-ftpd.new/pure-ftpd.changes 2016-01-22 01:07:18.000000000 +0100
@@ -1,0 +2,32 @@
+Sat Jan 16 13:41:42 UTC 2016 - mpluskal(a)suse.com
+
+- Add gpg signature
+
+-------------------------------------------------------------------
+Fri Jan 8 10:58:04 UTC 2016 - tchvatal(a)suse.com
+
+- Version update to 1.0.42:
+ - Compilation fix for OpenBSD and Bitrig when Pure-FTPd is not
+ compiled with libsodium.
+ - The connection is now dropped if HTTP commands are received.
+ - LDAP force_default_gid and force_default_uid now work as documented.
+ - The ONLY_ACCEPT_REUSED_SSL_SESSIONS switch (introduced in Pure-FTPd
+ 1.0.22 circa 2009, but disabled back then due to client compatibility
+ concerns) is now on by default, except in broken clients compatibility mode.
+ - libmariadb is looked for in addition to libmysqlclient
+ - MySQL: my_make_scrambled_password() is not always an exported
+ symbol any more, so pure-ftpd now ships a reimplementation.
+ - openssl/ec.h is not available on some Linux distributions that
+ disable EC in OpenSSL. This is being tested by autoconf.
+ - New command-line switch: -2/--certfile= to set the path to the
+ certificate file when using TLS.
+ - Support for TCP_FASTOPEN added on Linux
+ - The LDAP configuration file didn't allow a default gid without also
+ defining a default uid. This is no longer the case.
+ - OpenBSD's glob() left the glob_t structure uninitialized if the
+ pattern was larger than PATH_MAX, causing globfree() to free() an
+ unwanted pointer. The bug was introduced in Pure-FTPd 1.0.34.
+- Refresh patch:
+ * pure-ftpd-1.0.20_config.patch
+
+-------------------------------------------------------------------
Old:
----
pure-ftpd-1.0.39.tar.gz
New:
----
pure-ftpd-1.0.42.tar.gz
pure-ftpd-1.0.42.tar.gz.sig
pure-ftpd.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pure-ftpd.spec ++++++
--- /var/tmp/diff_new_pack.XDsreM/_old 2016-01-22 01:07:20.000000000 +0100
+++ /var/tmp/diff_new_pack.XDsreM/_new 2016-01-22 01:07:20.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package pure-ftpd
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,19 +17,21 @@
Name: pure-ftpd
-Version: 1.0.39
+Version: 1.0.42
Release: 0
Summary: A Lightweight, Fast, and Secure FTP Server
License: BSD-3-Clause
Group: Productivity/Networking/Ftp/Servers
Url: http://www.pureftpd.org
-Source: ftp://ftp.pureftpd.org/pub/%{name}/releases/%{name}-%{version}.tar.gz
-Source1: %{name}.init
-Source2: %{name}.pamd
-Source3: %{name}.xinetd
-Source4: %{name}.xml
-Source5: %{name}.firewall
-Source6: %{name}.service
+Source0: ftp://ftp.pureftpd.org/pub/%{name}/releases/%{name}-%{version}.tar.gz
+Source1: ftp://ftp.pureftpd.org/pub/%{name}/releases/%{name}-%{version}.tar.gz.sig
+Source2: %{name}.keyring
+Source3: %{name}.init
+Source4: %{name}.pamd
+Source5: %{name}.xinetd
+Source6: %{name}.xml
+Source7: %{name}.firewall
+Source8: %{name}.service
# PATCH-FEATURE-OPENSUSE %{name}-1.0.20_config.patch -- Custom service configs.
Patch0: %{name}-1.0.20_config.patch
# PATCH-FEATURE-OPENSUSE %{name}-1.0.20_doc.patch -- Adjust command paths on documentation.
@@ -124,20 +126,20 @@
install -m 0644 configuration-file/pure-ftpd.conf \
%{buildroot}%{_sysconfdir}/%{name}
-install -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/pam.d/pure-ftpd
-install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/xinetd.d/pure-ftpd
+install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/pam.d/pure-ftpd
+install -m 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/xinetd.d/pure-ftpd
install -m 0644 pureftpd.schema %{buildroot}%{_sysconfdir}/openldap/schema/
install -d %{buildroot}%{_datadir}/omc/svcinfo.d/
-install -m 0644 %{SOURCE4} %{buildroot}%{_datadir}/omc/svcinfo.d/
+install -m 0644 %{SOURCE6} %{buildroot}%{_datadir}/omc/svcinfo.d/
install -d %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/
-install -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{name}
+install -m 644 %{SOURCE7} %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{name}
%if 0%{?suse_version} > 1140
-install -D -m0644 %{SOURCE6} %{buildroot}%{_unitdir}/%{name}.service
+install -D -m0644 %{SOURCE8} %{buildroot}%{_unitdir}/%{name}.service
ln -sf service %{buildroot}%{_sbindir}/rc%{name}
%else
-install -D -m 0755 %{SOURCE1} %{buildroot}%{_initddir}/%{name}
+install -D -m 0755 %{SOURCE3} %{buildroot}%{_initddir}/%{name}
mkdir -p %{buildroot}%{_sbindir}
ln -sf %{_initddir}/%{name} %{buildroot}%{_sbindir}/rc%{name}
%endif
++++++ pure-ftpd-1.0.20_config.patch ++++++
--- /var/tmp/diff_new_pack.XDsreM/_old 2016-01-22 01:07:21.000000000 +0100
+++ /var/tmp/diff_new_pack.XDsreM/_new 2016-01-22 01:07:21.000000000 +0100
@@ -155,7 +155,7 @@
-@@ -453,3 +469,4 @@ CustomerProof yes
+@@ -459,3 +475,4 @@ CustomerProof yes
# FileSystemCharset big5
# ClientCharset big5
@@ -164,27 +164,21 @@
===================================================================
--- pureftpd-mysql.conf.orig
+++ pureftpd-mysql.conf
-@@ -19,17 +19,18 @@
-
- # Optional : define the location of mysql.sock if the server runs on this host.
-
--MYSQLSocket /tmp/mysql.sock
-+MYSQLSocket /var/lib/mysql/mysql.sock
+@@ -23,13 +23,13 @@ MYSQLSocket /var/run/mysqld/mysqld.s
# Mandatory : user to bind the server as.
-
-MYSQLUser root
--
-+#
+# using the Database root user is always a bad idea.
-+#
+MYSQLUser ftpd
- # Mandatory : user password. You must have a password.
+ # Mandatory : user password. You must have a password.
+-
-MYSQLPassword rootpw
-+MYSQLPassword ftpdpw
++# using the Database root user is always a bad idea.
++MYSQLPassword ftpdpassword
# Mandatory : database to open.
++++++ pure-ftpd-1.0.39.tar.gz -> pure-ftpd-1.0.42.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/ChangeLog new/pure-ftpd-1.0.42/ChangeLog
--- old/pure-ftpd-1.0.39/ChangeLog 2015-05-31 17:05:50.000000000 +0200
+++ new/pure-ftpd-1.0.42/ChangeLog 2015-07-26 17:45:02.000000000 +0200
@@ -1,4 +1,30 @@
+* Version 1.0.42:
+ - Compilation fix for OpenBSD and Bitrig when Pure-FTPd is not
+compiled with libsodium.
+ - The connection is now dropped if HTTP commands are received.
+ - LDAP force_default_gid and force_default_uid now work as documented.
+ - The ONLY_ACCEPT_REUSED_SSL_SESSIONS switch (introduced in Pure-FTPd
+1.0.22 circa 2009, but disabled back then due to client compatibility
+concerns) is now on by default, except in broken clients compatibility mode.
+
+* Version 1.0.41:
+ - libmariadb is looked for in addition to libmysqlclient
+ - MySQL: my_make_scrambled_password() is not always an exported
+symbol any more, so pure-ftpd now ships a reimplementation.
+ - openssl/ec.h is not available on some Linux distributions that
+disable EC in OpenSSL. This is being tested by autoconf.
+ - New command-line switch: -2/--certfile= to set the path to the
+certificate file when using TLS.
+
+* Version 1.0.40:
+ - Support for TCP_FASTOPEN added on Linux
+ - The LDAP configuration file didn't allow a default gid without also
+defining a default uid. This is no longer the case.
+ - OpenBSD's glob() left the glob_t structure uninitialized if the
+pattern was larger than PATH_MAX, causing globfree() to free() an
+unwanted pointer. The bug was introduced in Pure-FTPd 1.0.34.
+
* Version 1.0.39:
- Explicitly include openssl/ec.h for OpenSSL 0.9.8 (CentOS 5)
- Retry if SSL_shutdown() returns -1 and SSL_ERROR_WANT_(READ|WRITE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/NEWS new/pure-ftpd-1.0.42/NEWS
--- old/pure-ftpd-1.0.39/NEWS 2015-05-31 17:22:35.000000000 +0200
+++ new/pure-ftpd-1.0.42/NEWS 2015-07-26 17:29:55.000000000 +0200
@@ -1,4 +1,29 @@
+* Version 1.0.42:
+ - Compilation fix for OpenBSD and Bitrig when Pure-FTPd is not
+compiled with libsodium.
+ - The connection is now dropped if HTTP commands are received.
+ - LDAP force_default_gid and force_default_uid now work as documented.
+ - The ONLY_ACCEPT_REUSED_SSL_SESSIONS switch (introduced in Pure-FTPd
+1.0.22 circa 2009, but disabled back then due to client compatibility
+concerns) is now on by default, except in broken clients compatibility mode.
+
+* Version 1.0.41:
+ - MariaDB and MySQL 5.5+ are now fully supported
+ - MySQL <= 4.0.0 is not supported any more
+ - Some Linux distributions ship a version of OpenSSH without support
+for ECC. Pure-FTPd can now be compiled on these.
+ - New command-line switch: -2/--certfile= to set the path to the
+certificate file when using TLS.
+
+* Version 1.0.40:
+ - Support for TCP_FASTOPEN added on Linux
+ - The LDAP configuration file didn't allow a default gid without also
+defining a default uid. This is no longer the case.
+ - The process handling a user session could be crashed by trying to
+match a file pattern longer than the maximum length for a path. This
+has been fixed. Upgrading is recommended.
+
* Version 1.0.39:
- Compilation fix for ancient versions of OpenSSL.
- TLS sockets shutdown fixed in order to prevent incomplete transfers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/README new/pure-ftpd-1.0.42/README
--- old/pure-ftpd-1.0.39/README 2015-05-31 17:16:46.000000000 +0200
+++ new/pure-ftpd-1.0.42/README 2015-07-26 16:56:42.000000000 +0200
@@ -1,6 +1,6 @@
.:. PURE-FTPD .:.
- Documentation for version 1.0.39
+ Documentation for version 1.0.42
------------------------ BLURB ------------------------
@@ -568,10 +568,8 @@
**** Usage with TCPserver ****
-TCPServer is part of the ucspi-tcp package by Dan Bernstein. It's less
-bloated than inetd, less D.O.S.-prone and has interesting filtering
-abilities. The simplest way of running Pure-FTPd with TCPserver is the
-following command:
+TCPServer is part of the ucspi-tcp package by Dan Bernstein.
+The simplest way of running Pure-FTPd with TCPserver is the following command:
tcpserver -DHRl0 0 21 /usr/local/bin/pure-ftpd &
@@ -653,11 +651,13 @@
- '-1': log the PID of each session in syslog output.
+- '-2 <file>': when using TLS, set the path to the certificate file.
+
- '-4': only listen to IPv4 connections.
- '-6': don't listen to IPv4, only listen to IPv6.
-- '-a <gid>': Authenticated users will be granted access to their home
+- '-a <gid>': authenticated users will be granted access to their home
directory and nothing else (chroot) . This is especially useful for users
without shell access, for instance, WWW-hosting services shared by several
customers. Only member of group number <gid> will have unrestricted access
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/README.LDAP new/pure-ftpd-1.0.42/README.LDAP
--- old/pure-ftpd-1.0.39/README.LDAP 2015-05-22 15:49:14.000000000 +0200
+++ new/pure-ftpd-1.0.42/README.LDAP 2015-07-09 20:05:24.000000000 +0200
@@ -129,10 +129,10 @@
Then, you have to run the pure-ftpd command with '-l ldap:' (it's an 'ell'
not a 'one') followed by the path of that configuration file. Here's an
-example with tcpserver:
+example:
-tcpserver -DHRl0 0 21 /usr/local/bin/pure-ftpd -l ldap:/etc/pureftpd-ldap.conf &
+pure-ftpd -l ldap:/etc/pureftpd-ldap.conf -B
You can mix different authentication methods. For instance, if you want to
use system (/etc/passwd) accounts when an account is not found in a LDAP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/README.MySQL new/pure-ftpd-1.0.42/README.MySQL
--- old/pure-ftpd-1.0.39/README.MySQL 2015-05-22 15:57:09.000000000 +0200
+++ new/pure-ftpd-1.0.42/README.MySQL 2015-07-09 20:05:24.000000000 +0200
@@ -1,21 +1,18 @@
-If you never heard about MySQL before, *DON'T* enable MySQL support in
-Pure-FTPd. MySQL is useless if you don't have to manage many shared
-accounts. But well... if you want to learn about MySQL anyway, here's a good
-starting point: http://www.mysql.com/ .
-
- ------------------------ MYSQL SUPPORT ------------------------
+ ------------------------ MYSQL/MARIADB SUPPORT ------------------------
When MySQL is enabled, all account info is fetched from a central MySQL
-database.
+or MariaDB database.
-To compile the server with MySQL support, you first have to build and
-install the MySQL client libraries. MySQL is freely available from
-http://www.mysql.com/ and binary packages are included in many major
+To compile the server with MySQL/MariaDB support, you first have to build and
+install the MySQL client libraries. MariaDB is freely available from
+https://mariadb.org/ and binary packages are included in many major
distributions. But if you choose a binary form, don't forget to also install
-the development packages if they are available separately.
+the development packages if they are available separately. For example, on
+Debian/Ubuntu systems, the package to install is called
+libmariadb-client-lgpl-dev.
Then, configure Pure-FTPd with --with-mysql and your favorite extra gadgets:
@@ -70,12 +67,11 @@
Save the configuration file anywhere. Let's say /etc/pureftpd-mysql.conf .
Then, you have to run the pure-ftpd command with '-l mysql:' (it's an 'ell'
-not a 'one') followed by the path of that configuration file. Here's an
-example with tcpserver:
-
+not a 'one') followed by the path of that configuration file.
-tcpserver -DHRl0 0 21 /usr/local/bin/pure-ftpd -l mysql:/etc/pureftpd-mysql.conf &
+Example:
+pure-ftpd -l mysql:/etc/pureftpd-mysql.conf -B
You can mix different authentication methods. For instance, if you want to
use system (/etc/passwd) accounts when an account is not found in a MySQL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/README.PGSQL new/pure-ftpd-1.0.42/README.PGSQL
--- old/pure-ftpd-1.0.39/README.PGSQL 2015-05-22 15:54:34.000000000 +0200
+++ new/pure-ftpd-1.0.42/README.PGSQL 2015-07-09 20:05:24.000000000 +0200
@@ -64,10 +64,9 @@
Then, you have to run the pure-ftpd command with '-l pgsql:' (it's an 'ell'
not a 'one') followed by the path of that configuration file. Here's an
-example with tcpserver:
+example:
-
-tcpserver -DHRl0 0 21 /usr/local/bin/pure-ftpd -l pgsql:/etc/pureftpd-pgsql.conf &
+pure-ftpd -l pgsql:/etc/pureftpd-pgsql.conf -B
You can mix different authentication methods. For instance, if you want to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/config.h.in new/pure-ftpd-1.0.42/config.h.in
--- old/pure-ftpd-1.0.39/config.h.in 2015-05-31 17:17:45.000000000 +0200
+++ new/pure-ftpd-1.0.42/config.h.in 2015-07-26 16:58:14.000000000 +0200
@@ -196,6 +196,9 @@
/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM
+/* Define to 1 if you have the `mariadb' library (-lmariadb). */
+#undef HAVE_LIBMARIADB
+
/* Define to 1 if you have the `mysqlclient' library (-lmysqlclient). */
#undef HAVE_LIBMYSQLCLIENT
@@ -236,6 +239,9 @@
/* Define to 1 if you have the `madvise' function. */
#undef HAVE_MADVISE
+/* Define to 1 if you have the `make_scrambled_password' function. */
+#undef HAVE_MAKE_SCRAMBLED_PASSWORD
+
/* Define to 1 if you have the `mapviewoffile' function. */
#undef HAVE_MAPVIEWOFFILE
@@ -257,9 +263,6 @@
/* Define to 1 if you have the `munmap' function. */
#undef HAVE_MUNMAP
-/* Define to 1 if you have the `mysql_real_escape_string' function. */
-#undef HAVE_MYSQL_REAL_ESCAPE_STRING
-
/* Define to 1 if you have the `my_make_scrambled_password' function. */
#undef HAVE_MY_MAKE_SCRAMBLED_PASSWORD
@@ -278,6 +281,9 @@
/* obsolete pam */
#undef HAVE_OLD_PAM
+/* Define to 1 if you have the <openssl/ec.h> header file. */
+#undef HAVE_OPENSSL_EC_H
+
/* Define to 1 if you have the <openssl/ssl.h> header file. */
#undef HAVE_OPENSSL_SSL_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/configuration-file/pure-config.pl.in new/pure-ftpd-1.0.42/configuration-file/pure-config.pl.in
--- old/pure-ftpd-1.0.39/configuration-file/pure-config.pl.in 2015-02-21 18:49:11.000000000 +0100
+++ new/pure-ftpd-1.0.42/configuration-file/pure-config.pl.in 2015-07-09 20:05:24.000000000 +0200
@@ -60,6 +60,7 @@
AltLog => "-O",
PIDFile => "-g",
TLSCipherSuite => "-J",
+ CertFile => "-2",
);
my %numeric_switch_for = (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/configuration-file/pure-config.py.in new/pure-ftpd-1.0.42/configuration-file/pure-config.py.in
--- old/pure-ftpd-1.0.39/configuration-file/pure-config.py.in 2015-02-21 18:52:10.000000000 +0100
+++ new/pure-ftpd-1.0.42/configuration-file/pure-config.py.in 2015-07-09 20:05:24.000000000 +0200
@@ -114,6 +114,7 @@
["PIDFile\s+(\S+)", "-g", None ],
["TLSCipherSuite\s+(\S+)", "-J", None ],
["PerUserLimits\s+([:0-9]+)", "-y", None ],
+ ["CertFile\s+(\S+)", "-2", None ],
["TLS\s+(\d)", "-Y", None ])
for option in option_tuple:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/configuration-file/pure-ftpd.conf.in new/pure-ftpd-1.0.42/configuration-file/pure-ftpd.conf.in
--- old/pure-ftpd-1.0.39/configuration-file/pure-ftpd.conf.in 2015-02-21 19:56:05.000000000 +0100
+++ new/pure-ftpd-1.0.42/configuration-file/pure-ftpd.conf.in 2015-07-09 20:05:24.000000000 +0200
@@ -427,13 +427,19 @@
# Prefix with -C: in order to require valid client certificates.
# If -C: is used, make sure that clients' public keys are installed
# on the server.
-# SSL is disabled by default. TLS 1.0, 1.1 and 1.2 are availale by
+# SSL is disabled by default. TLS 1.0, 1.1 and 1.2 are available by
# default.
# TLSCipherSuite HIGH
+# Certificate file, for TLS
+
+# CertFile /etc/ssl/private/pure-ftpd.pem
+
+
+
# Listen only to IPv4 addresses in standalone mode (ie. disable IPv6)
# By default, both IPv4 and IPv6 are enabled.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/configure new/pure-ftpd-1.0.42/configure
--- old/pure-ftpd-1.0.39/configure 2015-05-31 17:16:55.000000000 +0200
+++ new/pure-ftpd-1.0.42/configure 2015-07-26 16:57:30.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pure-ftpd 1.0.39.
+# Generated by GNU Autoconf 2.69 for pure-ftpd 1.0.42.
#
# Report bugs to <bugs at pureftpd dot org>.
#
@@ -580,8 +580,8 @@
# Identity of this package.
PACKAGE_NAME='pure-ftpd'
PACKAGE_TARNAME='pure-ftpd'
-PACKAGE_VERSION='1.0.39'
-PACKAGE_STRING='pure-ftpd 1.0.39'
+PACKAGE_VERSION='1.0.42'
+PACKAGE_STRING='pure-ftpd 1.0.42'
PACKAGE_BUGREPORT='bugs at pureftpd dot org'
PACKAGE_URL=''
@@ -1337,7 +1337,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures pure-ftpd 1.0.39 to adapt to many kinds of systems.
+\`configure' configures pure-ftpd 1.0.42 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1403,7 +1403,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pure-ftpd 1.0.39:";;
+ short | recursive ) echo "Configuration of pure-ftpd 1.0.42:";;
esac
cat <<\_ACEOF
@@ -1567,7 +1567,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pure-ftpd configure 1.0.39
+pure-ftpd configure 1.0.42
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2276,7 +2276,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by pure-ftpd $as_me 1.0.39, which was
+It was created by pure-ftpd $as_me 1.0.42, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3148,7 +3148,7 @@
# Define the identity of the package.
PACKAGE='pure-ftpd'
- VERSION='1.0.39'
+ VERSION='1.0.42'
cat >>confdefs.h <<_ACEOF
@@ -7406,12 +7406,13 @@
done
-for ac_header in openssl/ssl.h
+for ac_header in openssl/ssl.h openssl/ec.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default"
-if test "x$ac_cv_header_openssl_ssl_h" = xyes; then :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENSSL_SSL_H 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
@@ -13303,8 +13304,8 @@
LDFLAGS="$LDFLAGS -L${withval}/lib -L${withval}/lib/mysql -L${withval}/mysql/lib"
CPPFLAGS="$CPPFLAGS -I${withval}/include -I${withval}/include/mysql -I${withval}/mysql/include"
else
- CFLAGS="$CFLAGS `mysql_config --cflags`"
- LDFLAGS="$LDFLAGS `mysql_config --libs`"
+ CFLAGS="$CFLAGS `mariadb_config --cflags 2> /dev/null || mysql_config --cflags`"
+ LDFLAGS="$LDFLAGS `mariadb_config --libs 2> /dev/null || mysql_config --libs`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for floor in -lm" >&5
$as_echo_n "checking for floor in -lm... " >&6; }
@@ -13400,7 +13401,57 @@
$as_echo "#define WITH_MYSQL /**/" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mysql_init in -lmysqlclient" >&5
+ ac_fn_c_check_func "$LINENO" "mysql_init" "ac_cv_func_mysql_init"
+if test "x$ac_cv_func_mysql_init" = xyes; then :
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mysql_init in -lmariadb" >&5
+$as_echo_n "checking for mysql_init in -lmariadb... " >&6; }
+if ${ac_cv_lib_mariadb_mysql_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmariadb $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char mysql_init ();
+int
+main ()
+{
+return mysql_init ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_mariadb_mysql_init=yes
+else
+ ac_cv_lib_mariadb_mysql_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mariadb_mysql_init" >&5
+$as_echo "$ac_cv_lib_mariadb_mysql_init" >&6; }
+if test "x$ac_cv_lib_mariadb_mysql_init" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBMARIADB 1
+_ACEOF
+
+ LIBS="-lmariadb $LIBS"
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mysql_init in -lmysqlclient" >&5
$as_echo_n "checking for mysql_init in -lmysqlclient... " >&6; }
if ${ac_cv_lib_mysqlclient_mysql_init+:} false; then :
$as_echo_n "(cached) " >&6
@@ -13447,6 +13498,12 @@
as_fn_error $? "libmysqlclient is needed for MySQL support" "$LINENO" 5
fi
+
+fi
+
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mysql clients can run" >&5
$as_echo_n "checking whether mysql clients can run... " >&6; }
if test "$cross_compiling" = yes; then :
@@ -13482,7 +13539,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- for ac_func in mysql_real_escape_string my_make_scrambled_password
+ for ac_func in my_make_scrambled_password make_scrambled_password
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -14535,7 +14592,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by pure-ftpd $as_me 1.0.39, which was
+This file was extended by pure-ftpd $as_me 1.0.42, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14601,7 +14658,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-pure-ftpd config.status 1.0.39
+pure-ftpd config.status 1.0.42
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/configure.ac new/pure-ftpd-1.0.42/configure.ac
--- old/pure-ftpd-1.0.39/configure.ac 2015-05-31 17:16:42.000000000 +0200
+++ new/pure-ftpd-1.0.42/configure.ac 2015-07-26 16:56:36.000000000 +0200
@@ -1,7 +1,7 @@
dnl AM_ACLOCAL_INCLUDE(m4)
AC_PREREQ(2.65)
-AC_INIT([pure-ftpd],[1.0.39],[bugs at pureftpd dot org])
+AC_INIT([pure-ftpd],[1.0.42],[bugs at pureftpd dot org])
AC_CONFIG_SRCDIR(src/ftpd.c)
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar])
@@ -142,7 +142,7 @@
AC_CHECK_HEADERS(windows.h io.h)
AC_CHECK_HEADERS(crypt.h)
AC_CHECK_HEADERS(utime.h)
-AC_CHECK_HEADERS(openssl/ssl.h)
+AC_CHECK_HEADERS(openssl/ssl.h openssl/ec.h)
AC_CHECK_HEADERS(CoreFoundation/CoreFoundation.h)
AC_CHECK_HEADERS(iconv.h)
AC_SYS_POSIX_TERMIOS
@@ -1290,15 +1290,19 @@
LDFLAGS="$LDFLAGS -L${withval}/lib -L${withval}/lib/mysql -L${withval}/mysql/lib"
CPPFLAGS="$CPPFLAGS -I${withval}/include -I${withval}/include/mysql -I${withval}/mysql/include"
else
- CFLAGS="$CFLAGS `mysql_config --cflags`"
- LDFLAGS="$LDFLAGS `mysql_config --libs`"
+ CFLAGS="$CFLAGS `mariadb_config --cflags 2> /dev/null || mysql_config --cflags`"
+ LDFLAGS="$LDFLAGS `mariadb_config --libs 2> /dev/null || mysql_config --libs`"
fi
AC_CHECK_LIB(m, floor)
AC_CHECK_LIB(z, gzclose)
with_mysql="yes"
AC_DEFINE(WITH_MYSQL,,[with mysql])
- AC_CHECK_LIB(mysqlclient, mysql_init, ,
- [AC_MSG_ERROR(libmysqlclient is needed for MySQL support)])
+ AC_CHECK_FUNC(mysql_init, , [
+ AC_CHECK_LIB(mariadb, mysql_init, , [
+ AC_CHECK_LIB(mysqlclient, mysql_init, ,
+ [AC_MSG_ERROR(libmysqlclient is needed for MySQL support)])
+ ])
+ ])
AC_MSG_CHECKING(whether mysql clients can run)
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
@@ -1313,7 +1317,7 @@
AC_MSG_ERROR(Your MySQL client libraries aren't properly installed)
],[])
AC_MSG_RESULT(yes)
- AC_CHECK_FUNCS(mysql_real_escape_string my_make_scrambled_password)
+ AC_CHECK_FUNCS(my_make_scrambled_password make_scrambled_password)
fi ])
AC_ARG_WITH(pgsql,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/man/pure-ftpd.8.in new/pure-ftpd-1.0.42/man/pure-ftpd.8.in
--- old/pure-ftpd-1.0.39/man/pure-ftpd.8.in 2015-02-21 21:47:13.000000000 +0100
+++ new/pure-ftpd-1.0.42/man/pure-ftpd.8.in 2015-07-09 20:05:24.000000000 +0200
@@ -9,7 +9,7 @@
pure\-ftpd \- simple File Transfer Protocol server
.SH "SYNOPSIS"
-.B pure\-ftpd [\-0] [\-1] [\-4] [\-6] [\-a gid] [\-A] [\-b] [\-B] [\-c clients] [\-C cnx/ip] [\-d [\-d]] [\-D] [\-e] [\-E] [\-f facility] [\-F fortunes file] [\-g pidfile] [\-G] [\-H] [\-i] [\-I] [\-j] [\-J ciphers] [\-k percentage] [\-K] [\-l authentication[:config file]] [\-L max files:max depth] [\-m maxload] [\-M] [\-n maxfiles:maxsize] [\-N] [\-o] [\-O format:log file] [\-p first:last] [\-P ip address or host name] [\-q upload:download ratio] [\-Q upload:download ratio] [\-r] [\-R] [\-s] [\-S [address,][port]] [\-t upload bandwidth:download bandwidth] [\-T upload bandwidth:download bandwidth] [\-u uid] [\-U umask files:umask dirs] [\-v bonjour name] [\-V ip address] [\-w] [\-W] [\-x] [\-X] [\-y max user sessions:max anon sessions] [\-Y tls behavior] [\-z] [\-Z]
+.B pure\-ftpd [\-0] [\-1] [\-2] [\-4] [\-6] [\-a gid] [\-A] [\-b] [\-B] [\-c clients] [\-C cnx/ip] [\-d [\-d]] [\-D] [\-e] [\-E] [\-f facility] [\-F fortunes file] [\-g pidfile] [\-G] [\-H] [\-i] [\-I] [\-j] [\-J ciphers] [\-k percentage] [\-K] [\-l authentication[:config file]] [\-L max files:max depth] [\-m maxload] [\-M] [\-n maxfiles:maxsize] [\-N] [\-o] [\-O format:log file] [\-p first:last] [\-P ip address or host name] [\-q upload:download ratio] [\-Q upload:download ratio] [\-r] [\-R] [\-s] [\-S [address,][port]] [\-t upload bandwidth:download bandwidth] [\-T upload bandwidth:download bandwidth] [\-u uid] [\-U umask files:umask dirs] [\-v bonjour name] [\-V ip address] [\-w] [\-W] [\-x] [\-X] [\-y max user sessions:max anon sessions] [\-Y tls behavior] [\-z] [\-Z]
.br
Alternative style :
@@ -18,6 +18,8 @@
.br
\-1 \-\-logpid
.br
+\-2 \-\-certfile
+.br
\-4 \-\-ipv4only
.br
\-6 \-\-ipv6only
@@ -153,6 +155,9 @@
.B none
is set.
.TP
+.B \-2 file
+When using TLS, set the path to the certificate file.
+.TP
.B \-4
Listen only to IPv4 connections.
.TP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/pam/pure-ftpd new/pure-ftpd-1.0.42/pam/pure-ftpd
--- old/pure-ftpd-1.0.39/pam/pure-ftpd 2011-09-07 07:02:03.000000000 +0200
+++ new/pure-ftpd-1.0.42/pam/pure-ftpd 2015-06-14 00:11:14.000000000 +0200
@@ -4,7 +4,6 @@
# Install it in /etc/pam.d/pure-ftpd or add to /etc/pam.conf
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
-auth required pam_stack.so service=system-auth
auth required pam_shells.so
auth required pam_nologin.so
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/pureftpd-mysql.conf new/pure-ftpd-1.0.42/pureftpd-mysql.conf
--- old/pure-ftpd-1.0.39/pureftpd-mysql.conf 2015-05-21 12:18:58.000000000 +0200
+++ new/pure-ftpd-1.0.42/pureftpd-mysql.conf 2015-07-09 20:05:24.000000000 +0200
@@ -19,7 +19,7 @@
# Optional : define the location of mysql.sock if the server runs on this host.
-MYSQLSocket /tmp/mysql.sock
+MYSQLSocket /var/run/mysqld/mysqld.sock
# Mandatory : user to bind the server as.
@@ -39,9 +39,9 @@
# Mandatory : how passwords are stored
# Valid values are : "cleartext", "scrypt", "crypt", "sha1", "md5", "password" and "any"
-# ("password" = MySQL password() function)
+# ("password" = MySQL password() function, which is sha1(sha1(password)))
-MYSQLCrypt cleartext
+MYSQLCrypt scrypt
# In the following directives, parts of the strings are replaced at
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/pureftpd-pgsql.conf new/pure-ftpd-1.0.42/pureftpd-pgsql.conf
--- old/pure-ftpd-1.0.39/pureftpd-pgsql.conf 2015-05-22 16:24:23.000000000 +0200
+++ new/pure-ftpd-1.0.42/pureftpd-pgsql.conf 2015-07-09 20:05:24.000000000 +0200
@@ -37,7 +37,7 @@
# Mandatory : how passwords are stored
# Valid values are : "cleartext", "scrypt", "crypt", "md5", "sha1" and "any"
-PGSQLCrypt cleartext
+PGSQLCrypt scrypt
# In the following directives, parts of the strings are replaced at
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/alt_arc4random.c new/pure-ftpd-1.0.42/src/alt_arc4random.c
--- old/pure-ftpd-1.0.39/src/alt_arc4random.c 2015-05-21 14:52:56.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/alt_arc4random.c 2015-06-14 00:11:14.000000000 +0200
@@ -145,6 +145,7 @@
pure_memzero(rs_buf, RSBUFSZ);
rs_count = 1600000;
+ rs_stir_pid = getpid();
}
static inline void
@@ -152,9 +153,10 @@
{
pid_t pid = getpid();
- if (rs_count <= len || !rs_initialized || rs_stir_pid != pid) {
- rs_stir_pid = pid;
+ if (rs_count <= len || !rs_initialized) {
_rs_stir();
+ } else if (rs_stir_pid != pid) {
+ abort();
} else {
rs_count -= len;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/bsd-glob.c new/pure-ftpd-1.0.42/src/bsd-glob.c
--- old/pure-ftpd-1.0.39/src/bsd-glob.c 2015-02-17 19:12:44.000000000 +0100
+++ new/pure-ftpd-1.0.42/src/bsd-glob.c 2015-06-14 01:12:09.000000000 +0200
@@ -151,9 +151,6 @@
Char *bufnext, *bufend, patbuf[PATH_MAX];
struct glob_lim limit = { 0, 0, 0 };
- if (strlen(pattern) >= PATH_MAX) {
- return GLOB_NOMATCH;
- }
pglob->gl_maxdepth = maxdepth;
pglob->gl_maxfiles = maxfiles;
patnext = (unsigned char *) pattern;
@@ -174,6 +171,9 @@
pglob->gl_pathc >= INT_MAX - pglob->gl_offs - 1) {
return GLOB_NOSPACE;
}
+ if (strlen(pattern) >= PATH_MAX) {
+ return GLOB_NOMATCH;
+ }
bufnext = patbuf;
bufend = bufnext + PATH_MAX - 1;
if (flags & GLOB_NOESCAPE) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/crypto.c new/pure-ftpd-1.0.42/src/crypto.c
--- old/pure-ftpd-1.0.39/src/crypto.c 2015-05-22 17:22:36.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/crypto.c 2015-07-09 20:05:24.000000000 +0200
@@ -27,14 +27,14 @@
*/
#ifdef HAVE_LIBSODIUM
-static char *hexify(char * const result, const unsigned char *digest,
- const size_t size_result, size_t size_digest)
+char *hexify(char * const result, const unsigned char *digest,
+ const size_t size_result, size_t size_digest)
{
return sodium_bin2hex(result, size_result, digest, size_digest);
}
#else
-static char *hexify(char * const result, const unsigned char *digest,
- const size_t size_result, size_t size_digest)
+char *hexify(char * const result, const unsigned char *digest,
+ const size_t size_result, size_t size_digest)
{
static const char * const hexchars = "0123456789abcdef";
char *result_pnt = result;
@@ -57,101 +57,115 @@
/* Encode a buffer to Base64 */
-static char *base64ify(char * const result, const unsigned char *digest,
- const size_t size_result, size_t size_digest)
+char *base64ify(char * const b64, const unsigned char *bin,
+ size_t b64_maxlen, size_t bin_len)
{
- static const char * const b64chars =
+#define B64_PAD '='
+
+ static const char b64chars[64] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- char *result_pnt = result;
+ char *b64_w = b64;
- if (size_result < (((size_digest + 2U) / 3U) * 4U + 1U)) {
+ if (b64_maxlen < (((bin_len + 2U) / 3U) * 4U + 1U)) {
return NULL;
}
- while (size_digest > (size_t) 2U) {
- const unsigned char t0 = (unsigned char) *digest++;
- const unsigned char t1 = (unsigned char) *digest++;
- const unsigned char t2 = (unsigned char) *digest++;
-
- *result_pnt++ = b64chars[(t0 >> 2) & 63];
- *result_pnt++ = b64chars[((t0 << 4) & 48) | ((t1 >> 4) & 15)];
- *result_pnt++ = b64chars[((t1 << 2) & 60) | ((t2 >> 6) & 3)];
- *result_pnt++ = b64chars[t2 & 63];
- size_digest -= (size_t) 3U;
- }
- if (size_digest > (size_t) 0U) {
- const unsigned char t0 = (unsigned char) digest[0];
-
- *result_pnt++ = b64chars[(t0 >> 2) & 63];
- if (size_digest == 1U) {
- *result_pnt++ = b64chars[((t0 << 4) & 48)];
- *result_pnt++ = '=';
+ while (bin_len > (size_t) 2U) {
+ const unsigned char t0 = (unsigned char) *bin++;
+ const unsigned char t1 = (unsigned char) *bin++;
+ const unsigned char t2 = (unsigned char) *bin++;
+
+ *b64_w++ = b64chars[(t0 >> 2) & 63];
+ *b64_w++ = b64chars[((t0 << 4) & 48) | ((t1 >> 4) & 15)];
+ *b64_w++ = b64chars[((t1 << 2) & 60) | ((t2 >> 6) & 3)];
+ *b64_w++ = b64chars[t2 & 63];
+ bin_len -= (size_t) 3U;
+ }
+ if (bin_len > (size_t) 0U) {
+ const unsigned char t0 = (unsigned char) bin[0];
+
+ *b64_w++ = b64chars[(t0 >> 2) & 63];
+ if (bin_len == 1U) {
+ *b64_w++ = b64chars[((t0 << 4) & 48)];
+ *b64_w++ = B64_PAD;
} else {
- const unsigned char t1 = (unsigned char) digest[1];
+ const unsigned char t1 = (unsigned char) bin[1];
- *result_pnt++ = b64chars[((t0 << 4) & 48) | ((t1 >> 4) & 15)];
- *result_pnt++ = b64chars[((t1 << 2) & 60)];
+ *b64_w++ = b64chars[((t0 << 4) & 48) | ((t1 >> 4) & 15)];
+ *b64_w++ = b64chars[((t1 << 2) & 60)];
}
- *result_pnt++ = '=';
+ *b64_w++ = B64_PAD;
}
- *result_pnt = 0;
+ *b64_w = 0;
- return result;
+ return b64;
}
/* Decode a Base64 encoded string */
-static char *debase64ify(char * const result, const unsigned char *encoded,
- const size_t size_result, size_t size_encoded,
- size_t *size_decoded)
-{
- const unsigned char rev64chars[] = {
- 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U,
- 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U,
- 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 63U, 52U, 53U,
- 54U, 55U, 56U, 57U, 58U, 59U, 60U, 61U, 0U, 0U, 0U, 255U, 0U, 0U, 0U,
- 0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U,
- 16U, 17U, 18U, 19U, 20U, 21U, 22U, 23U, 24U, 25U, 0U, 0U, 0U, 0U, 0U,
- 0U, 26U, 27U, 28U, 29U, 30U, 31U, 32U, 33U, 34U, 35U, 36U, 37U, 38U,
- 39U, 40U, 41U, 42U, 43U, 44U, 45U, 46U, 47U, 48U, 49U, 50U, 51U
+static unsigned char *
+debase64ify(unsigned char * const bin, const char *b64,
+ size_t bin_maxlen, size_t b64_len, size_t * const bin_len_p)
+{
+#define REV64_EOT 128U
+#define REV64_NONE 64U
+#define REV64_PAD '='
+
+ static const unsigned char rev64chars[256] = {
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, 62U, REV64_NONE, REV64_NONE, REV64_NONE, 63U, 52U, 53U, 54U, 55U, 56U, 57U, 58U, 59U, 60U, 61U, REV64_NONE, REV64_NONE, REV64_NONE, REV64_EOT, REV64_NONE, REV64_NONE, REV64_NONE, 0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U,
+ 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, 16U, 17U, 18U, 19U, 20U, 21U, 22U, 23U, 24U, 25U, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, 26U, 27U, 28U, 29U, 30U, 31U, 32U, 33U, 34U, 35U, 36U, 37U, 38U, 39U, 40U, 41U, 42U,
+ 43U, 44U, 45U, 46U, 47U, 48U, 49U, 50U, 51U, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE,
+ REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE, REV64_NONE
};
- size_t ch = size_encoded;
- char *result_pnt = result;
- int extra = 0;
-
- if (size_result < (((size_encoded + 3U) / 4U) * 3U + 1U)) {
+ const unsigned char *b64_u = (const unsigned char *) b64;
+ unsigned char *bin_w = bin;
+ unsigned char mask;
+ unsigned char t0, t1, t2, t3;
+ uint32_t t;
+ size_t i;
+
+ if (b64_len % 4U != 0U || (i = b64_len / 4U) <= 0U ||
+ bin_maxlen < i * 3U -
+ (b64_u[b64_len - 1U] == REV64_PAD) - (b64_u[b64_len - 2U] == REV64_PAD)) {
return NULL;
}
- while (ch > (size_t) 0U) {
- if (encoded[--ch] > 'z') {
- return NULL;
- }
- }
- while (size_encoded > (size_t) 3U) {
- const unsigned char t1 = rev64chars[encoded[1]];
- const unsigned char t2 = rev64chars[encoded[2]];
- const unsigned char t3 = rev64chars[encoded[3]];
- /*
- * I'm very proud : bit shifts and masks were done without writing
- * down anything on a piece of paper, and the first try worked :)
- */
- *result_pnt++ = (char) ((rev64chars[encoded[0]] << 2) | ((t1 & 48) >> 4));
- *result_pnt++ = (char) (((t1 & 15) << 4) | ((t2 & 60) >> 2));
- *result_pnt++ = (char) (((t2 & 3) << 6) | t3);
- if (t3 == 255U) {
- if (t2 == 255U) {
- extra = 2;
- } else {
- extra = 1;
+ while (i-- > 0U) {
+ t0 = rev64chars[*b64++];
+ t1 = rev64chars[*b64++];
+ t2 = rev64chars[*b64++];
+ t3 = rev64chars[*b64++];
+ t = ((uint32_t) t3) | ((uint32_t) t2 << 6) |
+ ((uint32_t) t1 << 12) | ((uint32_t) t0 << 18);
+ mask = t0 | t1 | t2 | t3;
+ if ((mask & (REV64_NONE | REV64_EOT)) != 0U) {
+ if ((mask & REV64_NONE) != 0U || i > 0U) {
+ return NULL;
}
break;
}
- encoded += 4;
- size_encoded -= (size_t) 4U;
+ *bin_w++ = (unsigned char) (t >> 16);
+ *bin_w++ = (unsigned char) (t >> 8);
+ *bin_w++ = (unsigned char) t;
}
- *size_decoded = (size_t) (result_pnt - result) - extra;
- *result_pnt = 0;
-
- return result;
+ if ((mask & REV64_EOT) != 0U) {
+ if (((t0 | t1) & REV64_EOT) != 0U || t3 != REV64_EOT) {
+ return NULL;
+ }
+ *bin_w++ = (unsigned char) (t >> 16);
+ if (t2 != REV64_EOT) {
+ *bin_w++ = (unsigned char) (t >> 8);
+ }
+ }
+ if (bin_len_p != NULL) {
+ *bin_len_p = (size_t) (bin_w - bin);
+ }
+ return bin;
}
/* Compute a simple hex SHA1 digest of a C-string */
@@ -210,8 +224,8 @@
size_t sizeof_hash_and_salt;
static char decoded[512];
- if (debase64ify(decoded, (const unsigned char *) stored,
- sizeof decoded, strlen(stored), &decoded_len) == NULL) {
+ if (debase64ify(decoded, stored, sizeof decoded,
+ strlen(stored), &decoded_len) == NULL) {
return NULL; /* huge salt, better abort */
}
if (decoded_len < sizeof digest) {
@@ -256,8 +270,8 @@
size_t sizeof_hash_and_salt;
static char decoded[512];
- if (debase64ify(decoded, (const unsigned char *) stored,
- sizeof decoded, strlen(stored), &decoded_len) == NULL) {
+ if (debase64ify(decoded, stored, sizeof decoded,
+ strlen(stored), &decoded_len) == NULL) {
return NULL; /* huge salt, better abort */
}
if (decoded_len < sizeof digest) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/crypto.h new/pure-ftpd-1.0.42/src/crypto.h
--- old/pure-ftpd-1.0.39/src/crypto.h 2015-02-17 19:12:45.000000000 +0100
+++ new/pure-ftpd-1.0.42/src/crypto.h 2015-07-09 20:05:24.000000000 +0200
@@ -1,6 +1,8 @@
#ifndef __CRYPTO_H__
#define __CRYPTO_H__ 1
+#include <stdlib.h>
+
#if SIZEOF_SHORT == 4
typedef short crypto_int4;
typedef unsigned short crypto_uint4;
@@ -27,5 +29,7 @@
char *crypto_hash_ssha1(const char *string, const char *stored);
char *crypto_hash_md5(const char *string, const int hex);
char *crypto_hash_smd5(const char *string, const char *stored);
+char *hexify(char * const result, const unsigned char *digest,
+ const size_t size_result, size_t size_digest);
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/ftp_parser.c new/pure-ftpd-1.0.42/src/ftp_parser.c
--- old/pure-ftpd-1.0.39/src/ftp_parser.c 2015-02-22 00:44:45.000000000 +0100
+++ new/pure-ftpd-1.0.42/src/ftp_parser.c 2015-07-26 16:54:55.000000000 +0200
@@ -692,6 +692,14 @@
} else if (!strcmp(cmd, "abor")) {
addreply_noformat(226, MSG_ABOR_SUCCESS);
#ifndef MINIMAL
+ } else if (!strcmp(cmd, "connect") ||
+ !strcmp(cmd, "delete") ||
+ !strcmp(cmd, "get") ||
+ !strcmp(cmd, "head") ||
+ !strcmp(cmd, "options") ||
+ !strcmp(cmd, "post") ||
+ !strcmp(cmd, "put")) {
+ die(500, LOG_INFO, "HTTP command: [%s]", cmd);
} else if (!strcmp(cmd, "site")) {
if ((sitearg = arg) != NULL) {
while (*sitearg != 0 && !isspace((unsigned char) *sitearg)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/ftpd.c new/pure-ftpd-1.0.42/src/ftpd.c
--- old/pure-ftpd-1.0.39/src/ftpd.c 2015-05-21 12:40:08.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/ftpd.c 2015-07-09 20:05:24.000000000 +0200
@@ -335,6 +335,7 @@
client_fflush();
}
if (len > replybuf_left) {
+ va_end(va);
abort();
}
memcpy(replybuf_pos, buf, len);
@@ -624,6 +625,7 @@
char line[MAX_SYSLOG_LINE];
if (no_syslog != 0) {
+ va_end(va);
return;
}
va_start(va, format);
@@ -5420,6 +5422,13 @@
strerror(old_errno));
return;
}
+# ifdef TCP_FASTOPEN
+ {
+ int tfo = maxusers > 0U ? 3U + maxusers / 8U : DEFAULT_BACKLOG;
+ setsockopt(listenfd, IPPROTO_TCP, TCP_FASTOPEN,
+ (void *) &tfo, sizeof tfo);
+ }
+# endif
if (bind(listenfd, res->ai_addr, (socklen_t) res->ai_addrlen) != 0 ||
listen(listenfd, maxusers > 0U ?
3U + maxusers / 8U : DEFAULT_BACKLOG) != 0) {
@@ -5443,6 +5452,13 @@
(void) setsockopt(listenfd6, IPPROTO_IPV6, IPV6_V6ONLY,
(char *) &on, sizeof on);
# endif
+# ifdef TCP_FASTOPEN
+ {
+ int tfo = maxusers > 0U ? 3U + maxusers / 8U : DEFAULT_BACKLOG;
+ setsockopt(listenfd6, IPPROTO_TCP, TCP_FASTOPEN,
+ (void *) &tfo, sizeof tfo);
+ }
+# endif
if (bind(listenfd6, res6->ai_addr,
(socklen_t) res6->ai_addrlen) != 0 ||
listen(listenfd6, maxusers > 0U ?
@@ -5782,6 +5798,11 @@
}
#endif
#ifdef WITH_TLS
+ case '2':
+ if ((cert_file = strdup(optarg)) == NULL) {
+ die_mem();
+ }
+ break;
case 'Y': {
if ((enforce_tls_auth = atoi(optarg)) < 0 || enforce_tls_auth > 3) {
die(421, LOG_ERR, MSG_CONF_ERR ": TLS");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/ftpd_p.h new/pure-ftpd-1.0.42/src/ftpd_p.h
--- old/pure-ftpd-1.0.39/src/ftpd_p.h 2015-02-17 19:12:45.000000000 +0100
+++ new/pure-ftpd-1.0.42/src/ftpd_p.h 2015-07-09 20:05:24.000000000 +0200
@@ -104,7 +104,7 @@
"y:"
#endif
#ifdef WITH_TLS
- "Y:J:"
+ "2:Y:J:"
#endif
"zZ";
@@ -112,12 +112,15 @@
static struct option long_options[] = {
{ "notruncate", 0, NULL, '0' },
{ "logpid", 0, NULL, '1' },
+# ifdef WITH_TLS
+ { "certfile", 1, NULL, '2' },
+# endif
{ "ipv4only", 0, NULL, '4' },
{ "ipv6only", 0, NULL, '6' },
-#ifdef WITH_RFC2640
+# ifdef WITH_RFC2640
{ "fscharset", 1, NULL, '8' },
{ "clientcharset", 1, NULL, '9' },
-#endif
+# endif
{ "chrooteveryone", 0, NULL, 'A' },
{ "trustedgid", 1, NULL, 'a' },
{ "brokenclientscompatibility", 0, NULL, 'b' },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/globals.h new/pure-ftpd-1.0.42/src/globals.h
--- old/pure-ftpd-1.0.39/src/globals.h 2015-05-20 15:36:20.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/globals.h 2015-07-09 20:05:24.000000000 +0200
@@ -166,6 +166,7 @@
GLOBAL(const char *tlsciphersuite, TLS_DEFAULT_CIPHER_SUITE);
GLOBAL0(signed char ssl_disabled);
GLOBAL0(signed char ssl_verify_client_cert);
+GLOBAL(const char *cert_file, TLS_CERTIFICATE_FILE);
#endif
GLOBAL0(char *atomic_prefix);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/log_ldap.c new/pure-ftpd-1.0.42/src/log_ldap.c
--- old/pure-ftpd-1.0.39/src/log_ldap.c 2015-05-21 15:45:55.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/log_ldap.c 2015-07-26 16:45:36.000000000 +0200
@@ -441,7 +441,9 @@
goto error;
}
/* only force the uid if default_uid has been set */
- if (!force_default_uid && default_uid > 0) {
+ if (force_default_uid != 0 && default_uid > (uid_t) 0) {
+ pwret.pw_uid = default_uid;
+ } else {
if ((pw_uid_s = pw_ldap_getvalue(ld, res, LDAP_FTPUID)) == NULL ||
*pw_uid_s == 0 ||
(pwret.pw_uid = (uid_t) strtoul(pw_uid_s, NULL, 10)) <= (uid_t) 0) {
@@ -453,13 +455,13 @@
pwret.pw_uid = default_uid;
}
}
- } else {
- pwret.pw_uid = default_uid;
}
free((void *) pw_uid_s);
pw_uid_s = NULL;
/* only force the gid if default_gid has been set */
- if (!force_default_gid && default_uid > 0) {
+ if (force_default_gid != 0 && default_gid > (gid_t) 0) {
+ pwret.pw_gid = default_gid;
+ } else {
if ((pw_gid_s = pw_ldap_getvalue(ld, res, LDAP_FTPGID)) == NULL ||
*pw_gid_s == 0 ||
(pwret.pw_gid = (gid_t) strtoul(pw_gid_s, NULL, 10)) <= (gid_t) 0) {
@@ -471,8 +473,6 @@
pwret.pw_gid = default_gid;
}
}
- } else {
- pwret.pw_gid = default_gid;
}
free((void *) pw_gid_s);
pw_gid_s = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/log_mysql.c new/pure-ftpd-1.0.42/src/log_mysql.c
--- old/pure-ftpd-1.0.39/src/log_mysql.c 2015-05-21 12:52:57.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/log_mysql.c 2015-07-09 20:05:24.000000000 +0200
@@ -8,6 +8,7 @@
# include "log_mysql.h"
# include "messages.h"
# include "crypto.h"
+# include "crypto-sha1.h"
# include "alt_arc4random.h"
# include "utils.h"
@@ -47,23 +48,28 @@
size_t from_len;
size_t to_len;
char *to;
- unsigned long tolen;
+ unsigned long escaped_len;
unsigned int t;
- unsigned char t1, t2;
+ unsigned char t1, t2, t3, t4;
if (from == NULL) {
return NULL;
}
from_len = strlen(from);
to_len = from_len * 2U + (size_t) 1U;
- if ((to = malloc(to_len + (size_t) 2U)) == NULL) {
+ if ((to = malloc(to_len + (size_t) 4U)) == NULL) {
return NULL;
}
t = zrand();
t1 = t & 0xff;
t2 = (t >> 8) & 0xff;
+ t = zrand();
+ t3 = t & 0xff;
+ t4 = (t >> 8) & 0xff;
to[to_len] = (char) t1;
to[to_len + 1] = (char) t2;
+ to[to_len + 2] = (char) t3;
+ to[to_len + 3] = (char) t4;
/*
* I really hate giving a buffer without any size to a 3rd party function.
* The "to" buffer is allocated on the heap, not on the stack, if
@@ -73,20 +79,17 @@
* possible instead of doing anything with the heap. We'll end up with
* a segmentation violation, but without any possible exploit.
*/
-#ifdef HAVE_MYSQL_REAL_ESCAPE_STRING
- tolen = mysql_real_escape_string(id_sql_server, to, from, from_len);
-#else
- /* MySQL 3 is obsolete. */
- tolen = mysql_escape_string(to, from, from_len);
-#endif
- if (tolen >= to_len ||
+ escaped_len = mysql_real_escape_string(id_sql_server, to, from, from_len);
+ if (escaped_len >= to_len ||
(unsigned char) to[to_len] != t1 ||
- (unsigned char) to[to_len + 1] != t2) {
+ (unsigned char) to[to_len + 1] != t2 ||
+ (unsigned char) to[to_len + 2] != t3 ||
+ (unsigned char) to[to_len + 3] != t4) {
for (;;) {
*to++ = 0;
}
}
- to[tolen] = 0;
+ to[escaped_len] = 0;
return to;
}
@@ -455,31 +458,35 @@
}
}
if (crypto_mysql != 0) {
-#if MYSQL_VERSION_ID < 40100 || defined(USE_OLD_MYSQL_SCRAMBLING)
- unsigned long hash_res[2];
- char scrambled_password[MYSQL_CRYPT_LEN];
-
-# if MYSQL_VERSION_ID < 40100
- hash_password(hash_res, password);
-# else
- hash_password(hash_res, password, strlen(password));
-# endif
- snprintf(scrambled_password, sizeof scrambled_password, "%08lx%08lx",
- hash_res[0], hash_res[1]);
-#else
char scrambled_password[42]; /* 2 * 20 (sha1 hash size) + 2 */
-# if MYSQL_VERSION_ID >= 40100 && MYSQL_VERSION_ID < 40101
- make_scrambled_password(scrambled_password, password, 1, NULL);
-# else
-# ifdef HAVE_MY_MAKE_SCRAMBLED_PASSWORD
+# ifdef HAVE_MY_MAKE_SCRAMBLED_PASSWORD
my_make_scrambled_password(scrambled_password, password,
strlen(password));
-# else
+# elif defined(HAVE_MAKE_SCRAMBLED_PASSWORD)
make_scrambled_password(scrambled_password, password);
-# endif
+# else
+ {
+ SHA1_CTX ctx;
+ unsigned char h0[20], h1[20];
+ char *p;
+
+ SHA1Init(&ctx);
+ SHA1Update(&ctx, password, strlen(password));
+ SHA1Final(h0, &ctx);
+ SHA1Init(&ctx);
+ SHA1Update(&ctx, h0, sizeof h0);
+ pure_memzero(h0, sizeof h0);
+ SHA1Final(h1, &ctx);
+ *scrambled_password = '*';
+ hexify(scrambled_password + 1U, h1,
+ (sizeof scrambled_password) - 1U, sizeof h1);
+ *(p = scrambled_password) = '*';
+ while (*p++ != 0) {
+ *p = (char) toupper((unsigned char) *p);
+ }
+ }
# endif
-#endif
if (pure_strcmp(scrambled_password, spwd) == 0) {
goto auth_ok;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/ls.c new/pure-ftpd-1.0.42/src/ls.c
--- old/pure-ftpd-1.0.39/src/ls.c 2015-02-22 13:23:59.000000000 +0100
+++ new/pure-ftpd-1.0.42/src/ls.c 2015-06-14 00:11:14.000000000 +0200
@@ -924,6 +924,7 @@
/* Expand ~ here if needed */
alarm(GLOB_TIMEOUT);
+ memset(&g, 0, sizeof g);
a = sglob(arg,
opt_a ? (GLOB_PERIOD | GLOB_LIMIT) : GLOB_LIMIT,
NULL, &g, max_ls_files + 2, max_ls_depth * 2);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/tls.c new/pure-ftpd-1.0.42/src/tls.c
--- old/pure-ftpd-1.0.39/src/tls.c 2015-05-28 17:04:12.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/tls.c 2015-07-26 17:30:24.000000000 +0200
@@ -25,12 +25,11 @@
# endif
/*
- * Unfortunately disabled by default, because it looks like a lot of clients
- * don't support this properly yet.
- * Feel free to enable it if none of your customers complains.
+ * Enabled by default since pure-ftpd 1.0.42, except in broken clients
+ * compatibility mode.
*/
# ifndef ONLY_ACCEPT_REUSED_SSL_SESSIONS
-# define ONLY_ACCEPT_REUSED_SSL_SESSIONS 0
+# define ONLY_ACCEPT_REUSED_SSL_SESSIONS 1
# endif
static void tls_error(const int line, int err)
@@ -40,8 +39,7 @@
}
if (err != 0) {
logfile(LOG_ERR, "TLS [%s](%d): %s",
- TLS_CERTIFICATE_FILE, line,
- ERR_error_string(err, NULL));
+ cert_file, line, ERR_error_string(err, NULL));
}
_EXIT(EXIT_FAILURE);
}
@@ -224,12 +222,11 @@
_EXIT(EXIT_FAILURE);
}
}
- if (SSL_CTX_use_certificate_chain_file(tls_ctx,
- TLS_CERTIFICATE_FILE) != 1) {
+ if (SSL_CTX_use_certificate_chain_file(tls_ctx, cert_file) != 1) {
die(421, LOG_ERR,
- MSG_FILE_DOESNT_EXIST ": [%s]", TLS_CERTIFICATE_FILE);
+ MSG_FILE_DOESNT_EXIST ": [%s]", cert_file);
}
- if (SSL_CTX_use_PrivateKey_file(tls_ctx, TLS_CERTIFICATE_FILE,
+ if (SSL_CTX_use_PrivateKey_file(tls_ctx, cert_file,
SSL_FILETYPE_PEM) != 1) {
tls_error(__LINE__, 0);
}
@@ -258,8 +255,7 @@
if (ssl_verify_client_cert) {
SSL_CTX_set_verify(tls_ctx, SSL_VERIFY_FAIL_IF_NO_PEER_CERT |
SSL_VERIFY_PEER, NULL);
- if (SSL_CTX_load_verify_locations(tls_ctx,
- TLS_CERTIFICATE_FILE, NULL) != 1) {
+ if (SSL_CTX_load_verify_locations(tls_ctx, cert_file, NULL) != 1) {
tls_error(__LINE__, 0);
}
}
@@ -354,7 +350,7 @@
break;
}
# if ONLY_ACCEPT_REUSED_SSL_SESSIONS
- if (SSL_session_reused(tls_data_cnx) == 0) {
+ if (broken_client_compat == 0 && SSL_session_reused(tls_data_cnx) == 0) {
tls_error(__LINE__, 0);
}
# endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/tls.h new/pure-ftpd-1.0.42/src/tls.h
--- old/pure-ftpd-1.0.39/src/tls.h 2015-05-31 16:43:23.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/tls.h 2015-07-09 20:05:24.000000000 +0200
@@ -6,7 +6,9 @@
# include <openssl/ssl.h>
# include <openssl/err.h>
# include <openssl/rand.h>
-# include <openssl/ec.h>
+# ifdef HAVE_OPENSSL_EC_H
+# include <openssl/ec.h>
+# endif
int tls_init_library(void);
void tls_free_library(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/utils.c new/pure-ftpd-1.0.42/src/utils.c
--- old/pure-ftpd-1.0.39/src/utils.c 2015-05-21 22:00:09.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/utils.c 2015-07-09 20:05:24.000000000 +0200
@@ -25,8 +25,8 @@
while (i < len) {
pnt_[i++] = 0U;
}
-}
# endif
+}
int pure_memcmp(const void * const b1_, const void * const b2_, size_t len)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pure-ftpd-1.0.39/src/utils.h new/pure-ftpd-1.0.42/src/utils.h
--- old/pure-ftpd-1.0.39/src/utils.h 2015-05-21 22:00:14.000000000 +0200
+++ new/pure-ftpd-1.0.42/src/utils.h 2015-06-14 00:11:14.000000000 +0200
@@ -8,7 +8,7 @@
#else
void pure_memzero(void * const pnt, const size_t len);
int pure_memcmp(const void * const b1_, const void * const b2_, size_t len);
-int pure_strcmp(const char * const s1, const char * const s2);
#endif
+int pure_strcmp(const char * const s1, const char * const s2);
#endif
1
0
Hello community,
here is the log from the commit of package perl-Net-XMPP for openSUSE:Factory checked in at 2016-01-21 23:42:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Net-XMPP (Old)
and /work/SRC/openSUSE:Factory/.perl-Net-XMPP.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Net-XMPP"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Net-XMPP/perl-Net-XMPP.changes 2011-11-21 12:44:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-Net-XMPP.new/perl-Net-XMPP.changes 2016-01-22 01:07:14.000000000 +0100
@@ -1,0 +2,69 @@
+Tue Jan 12 10:37:06 UTC 2016 - bwiedemann(a)suse.com
+
+- skip tests that need network
+- add cpanspec.yml
+
+-------------------------------------------------------------------
+Wed Apr 15 14:47:31 UTC 2015 - coolo(a)suse.com
+
+- updated to 1.05
+ see /usr/share/doc/packages/perl-Net-XMPP/CHANGES
+
+ 1.05 2014-12-22
+ ====
+ - Update CHANGES file
+
+ 1.04 2014-12-22
+ ====
+ - Increase XML::Stream dependency to 1.24
+
+ 1.03 2014-12-22
+ ====
+ - Roll-up of all 1.02_* changes
+ - Update bug tracker location
+ - RT#94649 use Digest::SHA (from Debian package maintainers)
+ - RT#94650 spelling corrections (from Debian package maintainers)
+
+ 1.02_05 2014-12-17
+ ====
+ - Correct incorrectly tagged 1.02_04 (errantly tagged as 1.23_04)
+ - Remove extraneous tag 1.02_1 (1.02_01 points to the same content)
+
+ 1.02_04 2011-07-19
+ ===
+ - Remove outdated Test::More/Test::Builder (szabgab)
+ - Address more memory leaks in Net::XMPP::Connection, Net::XMPP::Protocol and Net::XMPP::Roster (szabgab)
+ - Fix crash connecting to Google Talk (szabgab)
+ - Add Google Talk-specific test (szabgab)
+ - Add memory leak tests (szabgab)
+ - Correct behavior of Net::XMPP::Debug when level >= 0 (szabgab)
+ - Correct documentation with regard to debug settings (szabgab)
+ - Correct required version of Perl (szabgab)
+ - Removed specific XML::Stream version require (szabgab)
+
+ 1.02_03 2011-06-23
+ ===
+ - RT#61611 Correct comparison operator
+ - Fixed memory leak in Net::XMPP::Connection (szabgab)
+ - RT#52549 unindented POD so that it reformats properly (szabgab)
+ - Replace indirect object notation with direct invocation notation (szabgab)
+
+ 1.02_02 2010-09-24
+ ===
+ - Increase XML::Stream dependency to 1.23_04
+
+ 1.02_01 2010-09-22
+ ===
+ - New maintainer: DAPATRICK
+ - RT#15736 Replace print statements to debug logging
+ - RT#51156 Correct typo in documentation
+ - RT#54521 Note dependency on XML::Stream 1.23
+ - RT#37129, RT#18539 Support for virtual domains
+ - RT#57887 Use each required module explicitly
+ - RT#61453 Pass ssl_verify and ssl_ca_path
+ - RT#61453 Improve undef/null ssl param handling
+ - RT#61144 Appropriately handle non-object jid
+ - RT#37030 Clarify license as LGPL 2.1
+ - RT#58333 Check definedness of hash key before use
+
+-------------------------------------------------------------------
Old:
----
Net-XMPP-1.02.tar.gz
New:
----
Net-XMPP-1.05.tar.gz
cpanspec.yml
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Net-XMPP.spec ++++++
--- /var/tmp/diff_new_pack.HI99K4/_old 2016-01-22 01:07:16.000000000 +0100
+++ /var/tmp/diff_new_pack.HI99K4/_new 2016-01-22 01:07:16.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package perl-Net-XMPP
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -15,64 +15,68 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-# norootforbuild
-
Name: perl-Net-XMPP
+Version: 1.05
+Release: 0
%define cpan_name Net-XMPP
Summary: XMPP Perl Library
-Version: 1.02
-Release: 125
License: LGPL-2.1+
Group: Development/Libraries/Perl
Url: http://search.cpan.org/dist/Net-XMPP/
-#Source: http://www.cpan.org/modules/by-module/Net/Net-XMPP-%{version}.tar.gz
-Source: %{cpan_name}-%{version}.tar.gz
+Source0: http://www.cpan.org/authors/id/D/DA/DAPATRICK/%{cpan_name}-%{version}.tar.gz
+Source1: cpanspec.yml
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%{perl_requires}
BuildRequires: perl
-BuildRequires: perl(Module::Build)
BuildRequires: perl-macros
-BuildRequires: perl(Digest::SHA1) >= 1.02
-BuildRequires: perl(XML::Stream) >= 1.22
-#
-Requires: perl(Digest::SHA1) >= 1.02
-Requires: perl(XML::Stream) >= 1.22
+BuildRequires: perl(Authen::SASL) >= 2.12
+BuildRequires: perl(Digest::SHA)
+BuildRequires: perl(LWP::Online) >= 1.07
+BuildRequires: perl(Module::Build) >= 0.360300
+BuildRequires: perl(Test::More) >= 0.92
+BuildRequires: perl(XML::Stream) >= 1.24
+BuildRequires: perl(YAML::Tiny) >= 1.41
+Requires: perl(Authen::SASL) >= 2.12
+Requires: perl(Digest::SHA)
+Requires: perl(XML::Stream) >= 1.24
+%{perl_requires}
%description
-Net::XMPP is a convenient tool to use for any perl script that would
-like to utilize the XMPP Instant Messaging protocol. While not a
-client in and of itself, it provides all of the necessary back-end
-functions to make a CGI client or command-line perl client feasible and
-easy to use. Net::XMPP is a wrapper around the rest of the official
-Net::XMPP::xxxxxx packages.
-
-Authors:
---------
- Ryan Eatmon <reatmon(a)jabber.org>
+Net::XMPP is a convenient tool to use for any perl script that would like
+to utilize the XMPP Instant Messaging protocol. While not a client in and
+of itself, it provides all of the necessary back-end functions to make a
+CGI client or command-line perl client feasible and easy to use. Net::XMPP
+is a wrapper around the rest of the official Net::XMPP::xxxxxx packages.
+
+There is are example scripts in the example directory that provide you with
+examples of very simple XMPP programs.
+
+NOTE: The parser that the XML::Stream::Parser manpage provides, as are most
+Perl parsers, is synchronous. If you are in the middle of parsing a packet
+and call a user defined callback, the Parser is blocked until your callback
+finishes. This means you cannot be operating on a packet, send out another
+packet and wait for a response to that packet. It will never get to you.
+Threading might solve this, but as of this writing threading in Perl is not
+quite up to par yet. This issue will be revisted in the future.
%prep
%setup -q -n %{cpan_name}-%{version}
-#rpmlint: wrong-file-end-of-line-encoding
-%{__perl} -p -i -e "s|\r\n|\n|" stderr
%build
%{__perl} Build.PL installdirs=vendor
-./Build
+./Build build flags=%{?_smp_mflags}
%check
+rm t/gtalk.t # skip tests that need network
./Build test
%install
-./Build install destdir=$RPM_BUILD_ROOT create_packlist=0
+./Build install destdir=%{buildroot} create_packlist=0
%perl_gen_filelist
-%clean
-%{__rm} -rf $RPM_BUILD_ROOT
-
%files -f %{name}.files
-%defattr(-,root,root,-)
-%doc CHANGES examples LICENSE.LGPL README stderr
+%defattr(-,root,root,755)
+%doc CHANGES examples LICENSE README
%changelog
++++++ Net-XMPP-1.02.tar.gz -> Net-XMPP-1.05.tar.gz ++++++
++++ 9587 lines of diff (skipped)
++++++ cpanspec.yml ++++++
---
#description_paragraphs: 3
#no_testing: broken upstream
#sources:
# - source1
# - source2
#patches:
# foo.patch: -p1
# bar.patch:
#preamble: |-
# BuildRequires: gcc-c++
#post_prep: |-
# hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s, *,,g'`
# sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL
#post_install: |-
# sed on %{name}.files
#license: SUSE-NonFree
#skip_noarch: 1
#custom_build: -
#./Build build flags=%{?_smp_mflags} --myflag
custom_test: |-
rm t/gtalk.t # skip tests that need network
./Build test
1
0
Hello community,
here is the log from the commit of package qxmledit for openSUSE:Factory checked in at 2016-01-21 23:42:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qxmledit (Old)
and /work/SRC/openSUSE:Factory/.qxmledit.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qxmledit"
Changes:
--------
--- /work/SRC/openSUSE:Factory/qxmledit/qxmledit.changes 2015-12-23 08:50:04.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.qxmledit.new/qxmledit.changes 2016-01-22 01:07:11.000000000 +0100
@@ -1,0 +2,12 @@
+Fri Jan 8 17:40:28 UTC 2016 - lazy.kent(a)opensuse.org
+
+- Update to 0.9.2.
+ * After a search operation the menu status is evaluated.
+ * Fixed a regression on "New".
+ * The search panel on session data is now opening on request.
+ * New close window menu item.
+ * Project option to disable precompiled headers.
+ * New flags for fill data.
+ * Clone elements tool.
+
+-------------------------------------------------------------------
Old:
----
qxmledit-0.9.1-src.tgz
New:
----
qxmledit-0.9.2-src.tgz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qxmledit.spec ++++++
--- /var/tmp/diff_new_pack.qFXL27/_old 2016-01-22 01:07:14.000000000 +0100
+++ /var/tmp/diff_new_pack.qFXL27/_new 2016-01-22 01:07:14.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package qxmledit
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define major 0
Name: qxmledit
-Version: 0.9.1
+Version: 0.9.2
Release: 0
Summary: Simple XML Editor and XSD Viewer
License: LGPL-2.0+ and LGPL-3.0+
++++++ qxmledit-0.9.1-src.tgz -> qxmledit-0.9.2-src.tgz ++++++
/work/SRC/openSUSE:Factory/qxmledit/qxmledit-0.9.1-src.tgz /work/SRC/openSUSE:Factory/.qxmledit.new/qxmledit-0.9.2-src.tgz differ: char 131, line 1
1
0