openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
Hello community,
here is the log from the commit of package python3-pep8 for openSUSE:Factory checked in at 2016-01-21 23:42:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pep8 (Old)
and /work/SRC/openSUSE:Factory/.python3-pep8.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pep8"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pep8/python3-pep8.changes 2015-10-28 17:30:56.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pep8.new/python3-pep8.changes 2016-01-22 01:07:06.000000000 +0100
@@ -1,0 +2,39 @@
+Wed Jan 13 09:35:26 UTC 2016 - toddrme2178(a)gmail.com
+
+- Implement update-alternatives
+
+-------------------------------------------------------------------
+Wed Jan 13 09:19:24 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to 1.7.0
+ + Announcements:
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+ + Changes:
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+ + Bugs:
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
+-------------------------------------------------------------------
+Tue Jan 12 22:19:15 UTC 2016 - arun(a)gmx.de
+
+- specfile:
+ * updated url
+
+- update to version 1.7.0:
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
+-------------------------------------------------------------------
Old:
----
pep8-1.6.2.tar.gz
New:
----
pep8-1.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pep8.spec ++++++
--- /var/tmp/diff_new_pack.jX4MaV/_old 2016-01-22 01:07:08.000000000 +0100
+++ /var/tmp/diff_new_pack.jX4MaV/_new 2016-01-22 01:07:08.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-pep8
#
-# 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,9 +17,9 @@
Name: python3-pep8
-Version: 1.6.2
+Version: 1.7.0
Release: 0
-Url: http://github.com/jcrocholl/pep8
+Url: https://github.com/pycqa/pep8
Summary: Python style guide checker
License: MIT
Group: Development/Languages/Python
@@ -30,6 +30,8 @@
BuildRequires: python3-2to3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
BuildArch: noarch
%description
@@ -45,9 +47,24 @@
%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
-mv %{buildroot}%{_bindir}/pep8 %{buildroot}%{_bindir}/pep8-python%{py3_ver}
-rm -rf %{buildroot}%{python3_sitelib}/__pycache__/
-%fdupes %{buildroot}%{python_sitelib}
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+mv %{buildroot}%{_bindir}/pep8 %{buildroot}%{_bindir}/pep8-%{py3_ver}
+ln -s -f %{_sysconfdir}/alternatives/pep8 %{buildroot}%{_bindir}/pep8
+# create a dummy target for /etc/alternatives/pep8
+touch %{buildroot}%{_sysconfdir}/alternatives/pep8
+
+%fdupes %{buildroot}%{python3_sitelib}
+
+%post
+"%_sbindir/update-alternatives" \
+ --install %{_bindir}/pep8 pep8 %{_bindir}/pep8-%{py3_ver} 30
+
+%postun
+if [ $1 -eq 0 ] ; then
+ "%_sbindir/update-alternatives" --remove pep8 %{_bindir}/pep8-%{py3_ver}
+fi
%check
python3 setup.py test
@@ -55,8 +72,11 @@
%files
%defattr(-,root,root)
%doc CHANGES.txt README.rst
-%{_bindir}/pep8-python%{py3_ver}
+%{_bindir}/pep8
+%{_bindir}/pep8-%{py3_ver}
+%ghost %{_sysconfdir}/alternatives/pep8
%{python3_sitelib}/pep8.py*
-%{python3_sitelib}/pep8-%{version}-py%{py3_ver}.egg-info/
+%{python3_sitelib}/pep8-%{version}-py%{py3_ver}.egg-info
+%{python3_sitelib}/__pycache__/pep8.*.pyc
%changelog
++++++ pep8-1.6.2.tar.gz -> pep8-1.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/CHANGES.txt new/pep8-1.7.0/CHANGES.txt
--- old/pep8-1.6.2/CHANGES.txt 2015-02-15 23:06:06.000000000 +0100
+++ new/pep8-1.7.0/CHANGES.txt 2016-01-12 19:40:45.000000000 +0100
@@ -2,6 +2,27 @@
=========
+1.7.0 (2016-01-12)
+------------------
+
+Announcements:
+
+* Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+
+Changes:
+
+* Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+* Added support for Python 3.5. (Issue #420 & #459)
+* Added support for multi-line config_file option parsing. (Issue #429)
+* Improved parameter parsing. (Issues #420 & #456)
+
+Bugs:
+
+* Fixed BytesWarning on Python 3. (Issue #459)
+
1.6.2 (2015-02-15)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/CONTRIBUTING.rst new/pep8-1.7.0/CONTRIBUTING.rst
--- old/pep8-1.6.2/CONTRIBUTING.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/pep8-1.7.0/CONTRIBUTING.rst 2016-01-02 20:54:54.000000000 +0100
@@ -0,0 +1,4 @@
+Contributing to ``pep8``
+========================
+
+Please see the `developer notes <https://pep8.readthedocs.org/en/latest/developer.html>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/PKG-INFO new/pep8-1.7.0/PKG-INFO
--- old/pep8-1.6.2/PKG-INFO 2015-02-15 23:07:16.000000000 +0100
+++ new/pep8-1.7.0/PKG-INFO 2016-01-12 19:42:59.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pep8
-Version: 1.6.2
+Version: 1.7.0
Summary: Python style guide checker
Home-page: http://pep8.readthedocs.org/
Author: Johann C. Rocholl
@@ -86,8 +86,8 @@
Links
-----
- .. image:: https://api.travis-ci.org/jcrocholl/pep8.png?branch=master
- :target: https://travis-ci.org/jcrocholl/pep8
+ .. image:: https://api.travis-ci.org/PyCQA/pep8.png?branch=master
+ :target: https://travis-ci.org/PyCQA/pep8
:alt: Build status
.. image:: https://pypip.in/wheel/pep8/badge.png?branch=master
@@ -96,13 +96,34 @@
* `Read the documentation <http://pep8.readthedocs.org/>`_
- * `Fork me on GitHub <http://github.com/jcrocholl/pep8>`_
+ * `Fork me on GitHub <http://github.com/PyCQA/pep8>`_
Changelog
=========
+ 1.7.0 (2016-01-12)
+ ------------------
+
+ Announcements:
+
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+
+ Changes:
+
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+
+ Bugs:
+
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
1.6.2 (2015-02-15)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/README.rst new/pep8-1.7.0/README.rst
--- old/pep8-1.6.2/README.rst 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/README.rst 2015-09-07 08:38:04.000000000 +0200
@@ -78,8 +78,8 @@
Links
-----
-.. image:: https://api.travis-ci.org/jcrocholl/pep8.png?branch=master
- :target: https://travis-ci.org/jcrocholl/pep8
+.. image:: https://api.travis-ci.org/PyCQA/pep8.png?branch=master
+ :target: https://travis-ci.org/PyCQA/pep8
:alt: Build status
.. image:: https://pypip.in/wheel/pep8/badge.png?branch=master
@@ -88,4 +88,4 @@
* `Read the documentation <http://pep8.readthedocs.org/>`_
-* `Fork me on GitHub <http://github.com/jcrocholl/pep8>`_
+* `Fork me on GitHub <http://github.com/PyCQA/pep8>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/advanced.rst new/pep8-1.7.0/docs/advanced.rst
--- old/pep8-1.6.2/docs/advanced.rst 2014-12-07 05:52:39.000000000 +0100
+++ new/pep8-1.7.0/docs/advanced.rst 2015-09-08 00:50:03.000000000 +0200
@@ -42,7 +42,7 @@
----------------
Another example is related to the `feature request #143
-<https://github.com/jcrocholl/pep8/issues/143>`_: skip a number of lines
+<https://github.com/pycqa/pep8/issues/143>`_: skip a number of lines
at the beginning and the end of a file. This use case is easy to implement
through a custom wrapper for the PEP 8 library::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/conf.py new/pep8-1.7.0/docs/conf.py
--- old/pep8-1.6.2/docs/conf.py 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/docs/conf.py 2016-01-02 20:56:25.000000000 +0100
@@ -46,7 +46,7 @@
# General information about the project.
project = u'pep8'
authors = u'Johann C. Rocholl, Florent Xicluna, Ian Lee'
-copyright = u'2006-2014, %s' % (authors)
+copyright = u'2006-2016, %s' % (authors)
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -99,7 +99,11 @@
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
-html_theme = 'default'
+on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
+if not on_rtd: # only import and set the theme if we're building docs locally
+ import sphinx_rtd_theme
+ html_theme = 'sphinx_rtd_theme'
+ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/developer.rst new/pep8-1.7.0/docs/developer.rst
--- old/pep8-1.6.2/docs/developer.rst 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/docs/developer.rst 2016-01-02 20:54:54.000000000 +0100
@@ -11,13 +11,28 @@
The source code is currently `available on GitHub`_ under the terms and
conditions of the :ref:`Expat license <license>`. Fork away!
-* `Source code <https://github.com/jcrocholl/pep8>`_ and
- `issue tracker <https://github.com/jcrocholl/pep8/issues>`_ on GitHub.
-* `Continuous tests <http://travis-ci.org/jcrocholl/pep8>`_ against Python
+* `Source code <https://github.com/pycqa/pep8>`_ and
+ `issue tracker <https://github.com/pycqa/pep8/issues>`_ on GitHub.
+* `Continuous tests <http://travis-ci.org/pycqa/pep8>`_ against Python
2.6 through 3.4 and PyPy, on `Travis-CI platform
<http://about.travis-ci.org/>`_.
-.. _available on GitHub: https://github.com/jcrocholl/pep8
+.. _available on GitHub: https://github.com/pycqa/pep8
+
+
+Direction
+~~~~~~~~~
+
+Some high-level aims and directions to bear in mind for contributions:
+
+* ``pep8`` is intended to be as fast as possible.
+ Using the ``ast`` module defeats that purpose.
+ The `pep8-naming <https://github.com/flintwork/pep8-naming>`_ plugin exists for this sort of functionality.
+* If you want to provide extensibility / plugins,
+ please see `flake8 <https://gitlab.com/pycqa/flake8>`_ -
+ ``pep8`` doesn't want or need a plugin architecture.
+* Python 2.6 support is still deemed important.
+* ``pep8`` aims to have no external dependencies.
Contribute
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/index.rst new/pep8-1.7.0/docs/index.rst
--- old/pep8-1.6.2/docs/index.rst 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/docs/index.rst 2015-09-08 00:50:03.000000000 +0200
@@ -22,7 +22,7 @@
developer
* Online documentation: http://pep8.readthedocs.org/
-* Source code and issue tracker: https://github.com/jcrocholl/pep8
+* Source code and issue tracker: https://github.com/pycqa/pep8
Indices and tables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/docs/intro.rst new/pep8-1.7.0/docs/intro.rst
--- old/pep8-1.6.2/docs/intro.rst 2015-02-14 23:52:43.000000000 +0100
+++ new/pep8-1.7.0/docs/intro.rst 2015-10-25 18:52:26.000000000 +0100
@@ -207,201 +207,202 @@
these files have a ``[pep8]`` section, no project specific configuration is
loaded.
-If the ``ignore`` option is not in the configuration and not in the arguments,
-only the error codes ``E123/E133``, ``E226`` and ``E241/E242`` are ignored
-(see below).
-
Error codes
-----------
This is the current list of error and warning codes:
-+----------+----------------------------------------------------------------------+
-| code | sample message |
-+==========+======================================================================+
-| **E1** | *Indentation* |
-+----------+----------------------------------------------------------------------+
-| E101 | indentation contains mixed spaces and tabs |
-+----------+----------------------------------------------------------------------+
-| E111 | indentation is not a multiple of four |
-+----------+----------------------------------------------------------------------+
-| E112 | expected an indented block |
-+----------+----------------------------------------------------------------------+
-| E113 | unexpected indentation |
-+----------+----------------------------------------------------------------------+
-| E114 | indentation is not a multiple of four (comment) |
-+----------+----------------------------------------------------------------------+
-| E115 | expected an indented block (comment) |
-+----------+----------------------------------------------------------------------+
-| E116 | unexpected indentation (comment) |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E121 (*^)| continuation line under-indented for hanging indent |
-+----------+----------------------------------------------------------------------+
-| E122 (^) | continuation line missing indentation or outdented |
-+----------+----------------------------------------------------------------------+
-| E123 (*) | closing bracket does not match indentation of opening bracket's line |
-+----------+----------------------------------------------------------------------+
-| E124 (^) | closing bracket does not match visual indentation |
-+----------+----------------------------------------------------------------------+
-| E125 (^) | continuation line with same indent as next logical line |
-+----------+----------------------------------------------------------------------+
-| E126 (*^)| continuation line over-indented for hanging indent |
-+----------+----------------------------------------------------------------------+
-| E127 (^) | continuation line over-indented for visual indent |
-+----------+----------------------------------------------------------------------+
-| E128 (^) | continuation line under-indented for visual indent |
-+----------+----------------------------------------------------------------------+
-| E129 (^) | visually indented line with same indent as next logical line |
-+----------+----------------------------------------------------------------------+
-| E131 (^) | continuation line unaligned for hanging indent |
-+----------+----------------------------------------------------------------------+
-| E133 (*) | closing bracket is missing indentation |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E2** | *Whitespace* |
-+----------+----------------------------------------------------------------------+
-| E201 | whitespace after '(' |
-+----------+----------------------------------------------------------------------+
-| E202 | whitespace before ')' |
-+----------+----------------------------------------------------------------------+
-| E203 | whitespace before ':' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E211 | whitespace before '(' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E221 | multiple spaces before operator |
-+----------+----------------------------------------------------------------------+
-| E222 | multiple spaces after operator |
-+----------+----------------------------------------------------------------------+
-| E223 | tab before operator |
-+----------+----------------------------------------------------------------------+
-| E224 | tab after operator |
-+----------+----------------------------------------------------------------------+
-| E225 | missing whitespace around operator |
-+----------+----------------------------------------------------------------------+
-| E226 (*) | missing whitespace around arithmetic operator |
-+----------+----------------------------------------------------------------------+
-| E227 | missing whitespace around bitwise or shift operator |
-+----------+----------------------------------------------------------------------+
-| E228 | missing whitespace around modulo operator |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E231 | missing whitespace after ',', ';', or ':' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E241 (*) | multiple spaces after ',' |
-+----------+----------------------------------------------------------------------+
-| E242 (*) | tab after ',' |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E251 | unexpected spaces around keyword / parameter equals |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E261 | at least two spaces before inline comment |
-+----------+----------------------------------------------------------------------+
-| E262 | inline comment should start with '# ' |
-+----------+----------------------------------------------------------------------+
-| E265 | block comment should start with '# ' |
-+----------+----------------------------------------------------------------------+
-| E266 | too many leading '#' for block comment |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| E271 | multiple spaces after keyword |
-+----------+----------------------------------------------------------------------+
-| E272 | multiple spaces before keyword |
-+----------+----------------------------------------------------------------------+
-| E273 | tab after keyword |
-+----------+----------------------------------------------------------------------+
-| E274 | tab before keyword |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E3** | *Blank line* |
-+----------+----------------------------------------------------------------------+
-| E301 | expected 1 blank line, found 0 |
-+----------+----------------------------------------------------------------------+
-| E302 | expected 2 blank lines, found 0 |
-+----------+----------------------------------------------------------------------+
-| E303 | too many blank lines (3) |
-+----------+----------------------------------------------------------------------+
-| E304 | blank lines found after function decorator |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E4** | *Import* |
-+----------+----------------------------------------------------------------------+
-| E401 | multiple imports on one line |
-+----------+----------------------------------------------------------------------+
-| E402 | module level import not at top of file |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E5** | *Line length* |
-+----------+----------------------------------------------------------------------+
-| E501 (^) | line too long (82 > 79 characters) |
-+----------+----------------------------------------------------------------------+
-| E502 | the backslash is redundant between brackets |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E7** | *Statement* |
-+----------+----------------------------------------------------------------------+
-| E701 | multiple statements on one line (colon) |
-+----------+----------------------------------------------------------------------+
-| E702 | multiple statements on one line (semicolon) |
-+----------+----------------------------------------------------------------------+
-| E703 | statement ends with a semicolon |
-+----------+----------------------------------------------------------------------+
-| E704 (*) | multiple statements on one line (def) |
-+----------+----------------------------------------------------------------------+
-| E711 (^) | comparison to None should be 'if cond is None:' |
-+----------+----------------------------------------------------------------------+
-| E712 (^) | comparison to True should be 'if cond is True:' or 'if cond:' |
-+----------+----------------------------------------------------------------------+
-| E713 | test for membership should be 'not in' |
-+----------+----------------------------------------------------------------------+
-| E714 | test for object identity should be 'is not' |
-+----------+----------------------------------------------------------------------+
-| E721 (^) | do not compare types, use 'isinstance()' |
-+----------+----------------------------------------------------------------------+
-| E731 | do not assign a lambda expression, use a def |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **E9** | *Runtime* |
-+----------+----------------------------------------------------------------------+
-| E901 | SyntaxError or IndentationError |
-+----------+----------------------------------------------------------------------+
-| E902 | IOError |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W1** | *Indentation warning* |
-+----------+----------------------------------------------------------------------+
-| W191 | indentation contains tabs |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W2** | *Whitespace warning* |
-+----------+----------------------------------------------------------------------+
-| W291 | trailing whitespace |
-+----------+----------------------------------------------------------------------+
-| W292 | no newline at end of file |
-+----------+----------------------------------------------------------------------+
-| W293 | blank line contains whitespace |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W3** | *Blank line warning* |
-+----------+----------------------------------------------------------------------+
-| W391 | blank line at end of file |
-+----------+----------------------------------------------------------------------+
-+----------+----------------------------------------------------------------------+
-| **W6** | *Deprecation warning* |
-+----------+----------------------------------------------------------------------+
-| W601 | .has_key() is deprecated, use 'in' |
-+----------+----------------------------------------------------------------------+
-| W602 | deprecated form of raising exception |
-+----------+----------------------------------------------------------------------+
-| W603 | '<>' is deprecated, use '!=' |
-+----------+----------------------------------------------------------------------+
-| W604 | backticks are deprecated, use 'repr()' |
-+----------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| code | sample message |
++============+======================================================================+
+| **E1** | *Indentation* |
++------------+----------------------------------------------------------------------+
+| E101 | indentation contains mixed spaces and tabs |
++------------+----------------------------------------------------------------------+
+| E111 | indentation is not a multiple of four |
++------------+----------------------------------------------------------------------+
+| E112 | expected an indented block |
++------------+----------------------------------------------------------------------+
+| E113 | unexpected indentation |
++------------+----------------------------------------------------------------------+
+| E114 | indentation is not a multiple of four (comment) |
++------------+----------------------------------------------------------------------+
+| E115 | expected an indented block (comment) |
++------------+----------------------------------------------------------------------+
+| E116 | unexpected indentation (comment) |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E121 (\*^) | continuation line under-indented for hanging indent |
++------------+----------------------------------------------------------------------+
+| E122 (^) | continuation line missing indentation or outdented |
++------------+----------------------------------------------------------------------+
+| E123 (*) | closing bracket does not match indentation of opening bracket's line |
++------------+----------------------------------------------------------------------+
+| E124 (^) | closing bracket does not match visual indentation |
++------------+----------------------------------------------------------------------+
+| E125 (^) | continuation line with same indent as next logical line |
++------------+----------------------------------------------------------------------+
+| E126 (\*^) | continuation line over-indented for hanging indent |
++------------+----------------------------------------------------------------------+
+| E127 (^) | continuation line over-indented for visual indent |
++------------+----------------------------------------------------------------------+
+| E128 (^) | continuation line under-indented for visual indent |
++------------+----------------------------------------------------------------------+
+| E129 (^) | visually indented line with same indent as next logical line |
++------------+----------------------------------------------------------------------+
+| E131 (^) | continuation line unaligned for hanging indent |
++------------+----------------------------------------------------------------------+
+| E133 (*) | closing bracket is missing indentation |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E2** | *Whitespace* |
++------------+----------------------------------------------------------------------+
+| E201 | whitespace after '(' |
++------------+----------------------------------------------------------------------+
+| E202 | whitespace before ')' |
++------------+----------------------------------------------------------------------+
+| E203 | whitespace before ':' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E211 | whitespace before '(' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E221 | multiple spaces before operator |
++------------+----------------------------------------------------------------------+
+| E222 | multiple spaces after operator |
++------------+----------------------------------------------------------------------+
+| E223 | tab before operator |
++------------+----------------------------------------------------------------------+
+| E224 | tab after operator |
++------------+----------------------------------------------------------------------+
+| E225 | missing whitespace around operator |
++------------+----------------------------------------------------------------------+
+| E226 (*) | missing whitespace around arithmetic operator |
++------------+----------------------------------------------------------------------+
+| E227 | missing whitespace around bitwise or shift operator |
++------------+----------------------------------------------------------------------+
+| E228 | missing whitespace around modulo operator |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E231 | missing whitespace after ',', ';', or ':' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E241 (*) | multiple spaces after ',' |
++------------+----------------------------------------------------------------------+
+| E242 (*) | tab after ',' |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E251 | unexpected spaces around keyword / parameter equals |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E261 | at least two spaces before inline comment |
++------------+----------------------------------------------------------------------+
+| E262 | inline comment should start with '# ' |
++------------+----------------------------------------------------------------------+
+| E265 | block comment should start with '# ' |
++------------+----------------------------------------------------------------------+
+| E266 | too many leading '#' for block comment |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| E271 | multiple spaces after keyword |
++------------+----------------------------------------------------------------------+
+| E272 | multiple spaces before keyword |
++------------+----------------------------------------------------------------------+
+| E273 | tab after keyword |
++------------+----------------------------------------------------------------------+
+| E274 | tab before keyword |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E3** | *Blank line* |
++------------+----------------------------------------------------------------------+
+| E301 | expected 1 blank line, found 0 |
++------------+----------------------------------------------------------------------+
+| E302 | expected 2 blank lines, found 0 |
++------------+----------------------------------------------------------------------+
+| E303 | too many blank lines (3) |
++------------+----------------------------------------------------------------------+
+| E304 | blank lines found after function decorator |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E4** | *Import* |
++------------+----------------------------------------------------------------------+
+| E401 | multiple imports on one line |
++------------+----------------------------------------------------------------------+
+| E402 | module level import not at top of file |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E5** | *Line length* |
++------------+----------------------------------------------------------------------+
+| E501 (^) | line too long (82 > 79 characters) |
++------------+----------------------------------------------------------------------+
+| E502 | the backslash is redundant between brackets |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E7** | *Statement* |
++------------+----------------------------------------------------------------------+
+| E701 | multiple statements on one line (colon) |
++------------+----------------------------------------------------------------------+
+| E702 | multiple statements on one line (semicolon) |
++------------+----------------------------------------------------------------------+
+| E703 | statement ends with a semicolon |
++------------+----------------------------------------------------------------------+
+| E704 (*) | multiple statements on one line (def) |
++------------+----------------------------------------------------------------------+
+| E711 (^) | comparison to None should be 'if cond is None:' |
++------------+----------------------------------------------------------------------+
+| E712 (^) | comparison to True should be 'if cond is True:' or 'if cond:' |
++------------+----------------------------------------------------------------------+
+| E713 | test for membership should be 'not in' |
++------------+----------------------------------------------------------------------+
+| E714 | test for object identity should be 'is not' |
++------------+----------------------------------------------------------------------+
+| E721 (^) | do not compare types, use 'isinstance()' |
++------------+----------------------------------------------------------------------+
+| E731 | do not assign a lambda expression, use a def |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **E9** | *Runtime* |
++------------+----------------------------------------------------------------------+
+| E901 | SyntaxError or IndentationError |
++------------+----------------------------------------------------------------------+
+| E902 | IOError |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W1** | *Indentation warning* |
++------------+----------------------------------------------------------------------+
+| W191 | indentation contains tabs |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W2** | *Whitespace warning* |
++------------+----------------------------------------------------------------------+
+| W291 | trailing whitespace |
++------------+----------------------------------------------------------------------+
+| W292 | no newline at end of file |
++------------+----------------------------------------------------------------------+
+| W293 | blank line contains whitespace |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W3** | *Blank line warning* |
++------------+----------------------------------------------------------------------+
+| W391 | blank line at end of file |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W5** | *Line break warning* |
++------------+----------------------------------------------------------------------+
+| W503 | line break occurred before a binary operator |
++------------+----------------------------------------------------------------------+
++------------+----------------------------------------------------------------------+
+| **W6** | *Deprecation warning* |
++------------+----------------------------------------------------------------------+
+| W601 | .has_key() is deprecated, use 'in' |
++------------+----------------------------------------------------------------------+
+| W602 | deprecated form of raising exception |
++------------+----------------------------------------------------------------------+
+| W603 | '<>' is deprecated, use '!=' |
++------------+----------------------------------------------------------------------+
+| W604 | backticks are deprecated, use 'repr()' |
++------------+----------------------------------------------------------------------+
**(*)** In the default configuration, the checks **E121**, **E123**, **E126**,
@@ -430,6 +431,6 @@
``pep8`` and similar tools. It supports plugins.
Other tools which use ``pep8`` are referenced in the Wiki: `list of related
-tools <https://github.com/jcrocholl/pep8/wiki/RelatedTools>`_.
+tools <https://github.com/pycqa/pep8/wiki/RelatedTools>`_.
.. _PEP 8: http://www.python.org/dev/peps/pep-0008/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/pep8.egg-info/PKG-INFO new/pep8-1.7.0/pep8.egg-info/PKG-INFO
--- old/pep8-1.6.2/pep8.egg-info/PKG-INFO 2015-02-15 23:07:16.000000000 +0100
+++ new/pep8-1.7.0/pep8.egg-info/PKG-INFO 2016-01-12 19:42:59.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pep8
-Version: 1.6.2
+Version: 1.7.0
Summary: Python style guide checker
Home-page: http://pep8.readthedocs.org/
Author: Johann C. Rocholl
@@ -86,8 +86,8 @@
Links
-----
- .. image:: https://api.travis-ci.org/jcrocholl/pep8.png?branch=master
- :target: https://travis-ci.org/jcrocholl/pep8
+ .. image:: https://api.travis-ci.org/PyCQA/pep8.png?branch=master
+ :target: https://travis-ci.org/PyCQA/pep8
:alt: Build status
.. image:: https://pypip.in/wheel/pep8/badge.png?branch=master
@@ -96,13 +96,34 @@
* `Read the documentation <http://pep8.readthedocs.org/>`_
- * `Fork me on GitHub <http://github.com/jcrocholl/pep8>`_
+ * `Fork me on GitHub <http://github.com/PyCQA/pep8>`_
Changelog
=========
+ 1.7.0 (2016-01-12)
+ ------------------
+
+ Announcements:
+
+ * Repository moved to PyCQA Organization on GitHub:
+ https://github.com/pycqa/pep8
+
+ Changes:
+
+ * Reverted the fix in #368, "options passed on command line are only ones
+ accepted" feature. This has many unintended consequences in pep8 and flake8
+ and needs to be reworked when I have more time.
+ * Added support for Python 3.5. (Issue #420 & #459)
+ * Added support for multi-line config_file option parsing. (Issue #429)
+ * Improved parameter parsing. (Issues #420 & #456)
+
+ Bugs:
+
+ * Fixed BytesWarning on Python 3. (Issue #459)
+
1.6.2 (2015-02-15)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/pep8.egg-info/SOURCES.txt new/pep8-1.7.0/pep8.egg-info/SOURCES.txt
--- old/pep8-1.6.2/pep8.egg-info/SOURCES.txt 2015-02-15 23:07:16.000000000 +0100
+++ new/pep8-1.7.0/pep8.egg-info/SOURCES.txt 2016-01-12 19:42:59.000000000 +0100
@@ -1,4 +1,5 @@
CHANGES.txt
+CONTRIBUTING.rst
MANIFEST.in
README.rst
pep8.py
@@ -51,6 +52,7 @@
testsuite/support.py
testsuite/test_all.py
testsuite/test_api.py
+testsuite/test_parser.py
testsuite/test_shell.py
testsuite/test_util.py
testsuite/utf-8-bom.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/pep8.py new/pep8-1.7.0/pep8.py
--- old/pep8-1.6.2/pep8.py 2015-02-15 23:05:54.000000000 +0100
+++ new/pep8-1.7.0/pep8.py 2016-01-12 19:40:45.000000000 +0100
@@ -2,7 +2,7 @@
# pep8.py - Check Python source code formatting, according to PEP 8
# Copyright (C) 2006-2009 Johann C. Rocholl <johann(a)rocholl.net>
# Copyright (C) 2009-2014 Florent Xicluna <florent.xicluna(a)gmail.com>
-# Copyright (C) 2014 Ian Lee <ianlee1521(a)gmail.com>
+# Copyright (C) 2014-2016 Ian Lee <ianlee1521(a)gmail.com>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -31,7 +31,7 @@
$ python pep8.py -h
This program and its regression test suite live here:
-http://github.com/jcrocholl/pep8
+https://github.com/pycqa/pep8
Groups of errors and warnings:
E errors
@@ -62,7 +62,7 @@
except ImportError:
from ConfigParser import RawConfigParser
-__version__ = '1.6.2'
+__version__ = '1.7.0'
DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox'
DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704'
@@ -108,7 +108,7 @@
DOCSTRING_REGEX = re.compile(r'u?r?["\']')
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]')
WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?: |\t)')
-COMPARE_SINGLETON_REGEX = re.compile(r'\b(None|False|True)?\s*([=!]=)'
+COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)'
r'\s*(?(1)|(None|False|True))\b')
COMPARE_NEGATIVE_REGEX = re.compile(r'\b(not)\s+[^][)(}{ ]+\s+(in|is)\s')
COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s*type(?:s.\w+Type'
@@ -1171,7 +1171,7 @@
##############################################################################
-if '' == ''.encode():
+if sys.version_info < (3,):
# Python 2: implicit encoding.
def readlines(filename):
"""Read the source code."""
@@ -1314,6 +1314,16 @@
_checks = {'physical_line': {}, 'logical_line': {}, 'tree': {}}
+def _get_parameters(function):
+ if sys.version_info >= (3, 3):
+ return [parameter.name
+ for parameter
+ in inspect.signature(function).parameters.values()
+ if parameter.kind == parameter.POSITIONAL_OR_KEYWORD]
+ else:
+ return inspect.getargspec(function)[0]
+
+
def register_check(check, codes=None):
"""Register a new check object."""
def _add_check(check, kind, codes, args):
@@ -1322,13 +1332,13 @@
else:
_checks[kind][check] = (codes or [''], args)
if inspect.isfunction(check):
- args = inspect.getargspec(check)[0]
+ args = _get_parameters(check)
if args and args[0] in ('physical_line', 'logical_line'):
if codes is None:
codes = ERRORCODE_REGEX.findall(check.__doc__ or '')
_add_check(check, args[0], codes, args)
elif inspect.isclass(check):
- if inspect.getargspec(check.__init__)[0][:2] == ['self', 'tree']:
+ if _get_parameters(check.__init__)[:2] == ['self', 'tree']:
_add_check(check, 'tree', codes, None)
@@ -1504,7 +1514,7 @@
"""Build the file's AST and run all AST checks."""
try:
tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
- except (SyntaxError, TypeError):
+ except (ValueError, SyntaxError, TypeError):
return self.report_invalid_syntax()
for name, cls, __ in self._ast_checks:
checker = cls(tree, self.filename)
@@ -1955,8 +1965,8 @@
parser.add_option('--format', metavar='format', default='default',
help="set the error format [default|pylint|<custom>]")
parser.add_option('--diff', action='store_true',
- help="report only lines changed according to the "
- "unified diff received on STDIN")
+ help="report changes only within line number ranges in "
+ "the unified diff received on STDIN")
group = parser.add_option_group("Testing Options")
if os.path.exists(TESTSUITE_PATH):
group.add_option('--testsuite', metavar='dir',
@@ -1984,24 +1994,24 @@
local_dir = os.curdir
+ if USER_CONFIG and os.path.isfile(USER_CONFIG):
+ if options.verbose:
+ print('user configuration: %s' % USER_CONFIG)
+ config.read(USER_CONFIG)
+
+ parent = tail = args and os.path.abspath(os.path.commonprefix(args))
+ while tail:
+ if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
+ local_dir = parent
+ if options.verbose:
+ print('local configuration: in %s' % parent)
+ break
+ (parent, tail) = os.path.split(parent)
+
if cli_conf and os.path.isfile(cli_conf):
if options.verbose:
print('cli configuration: %s' % cli_conf)
config.read(cli_conf)
- else:
- if USER_CONFIG and os.path.isfile(USER_CONFIG):
- if options.verbose:
- print('user configuration: %s' % USER_CONFIG)
- config.read(USER_CONFIG)
-
- parent = tail = args and os.path.abspath(os.path.commonprefix(args))
- while tail:
- if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
- local_dir = parent
- if options.verbose:
- print('local configuration: in %s' % parent)
- break
- (parent, tail) = os.path.split(parent)
pep8_section = parser.prog
if config.has_section(pep8_section):
@@ -2074,10 +2084,10 @@
options = read_config(options, args, arglist, parser)
options.reporter = parse_argv and options.quiet == 1 and FileReport
- options.filename = options.filename and options.filename.split(',')
+ options.filename = _parse_multi_options(options.filename)
options.exclude = normalize_paths(options.exclude)
- options.select = options.select and options.select.split(',')
- options.ignore = options.ignore and options.ignore.split(',')
+ options.select = _parse_multi_options(options.select)
+ options.ignore = _parse_multi_options(options.ignore)
if options.diff:
options.reporter = DiffReport
@@ -2088,6 +2098,22 @@
return options, args
+def _parse_multi_options(options, split_token=','):
+ r"""Split and strip and discard empties.
+
+ Turns the following:
+
+ A,
+ B,
+
+ into ["A", "B"]
+ """
+ if options:
+ return [o.strip() for o in options.split(split_token) if o.strip()]
+ else:
+ return options
+
+
def _main():
"""Parse options and run checks on Python source."""
import signal
@@ -2100,17 +2126,22 @@
pep8style = StyleGuide(parse_argv=True)
options = pep8style.options
+
if options.doctest or options.testsuite:
from testsuite.support import run_tests
report = run_tests(pep8style)
else:
report = pep8style.check_files()
+
if options.statistics:
report.print_statistics()
+
if options.benchmark:
report.print_benchmark()
+
if options.testsuite and not options.quiet:
report.print_results()
+
if report.total_errors:
if options.count:
sys.stderr.write(str(report.total_errors) + '\n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/E71.py new/pep8-1.7.0/testsuite/E71.py
--- old/pep8-1.6.2/testsuite/E71.py 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/testsuite/E71.py 2015-10-25 18:12:14.000000000 +0100
@@ -10,6 +10,18 @@
#: E711
if None != res:
pass
+#: E711
+if res[1] == None:
+ pass
+#: E711
+if res[1] != None:
+ pass
+#: E711
+if None != res[1]:
+ pass
+#: E711
+if None == res[1]:
+ pass
#
#: E712
@@ -24,6 +36,12 @@
#: E712
if False == res:
pass
+#: E712
+if res[1] == True:
+ pass
+#: E712
+if res[1] != False:
+ pass
#
#: E713
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/test_all.py new/pep8-1.7.0/testsuite/test_all.py
--- old/pep8-1.6.2/testsuite/test_all.py 2015-01-01 02:17:54.000000000 +0100
+++ new/pep8-1.7.0/testsuite/test_all.py 2015-09-08 00:50:03.000000000 +0200
@@ -46,11 +46,12 @@
def suite():
- from testsuite import test_api, test_shell, test_util
+ from testsuite import test_api, test_parser, test_shell, test_util
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Pep8TestCase))
suite.addTest(unittest.makeSuite(test_api.APITestCase))
+ suite.addTest(unittest.makeSuite(test_parser.ParserTestCase))
suite.addTest(unittest.makeSuite(test_shell.ShellTestCase))
suite.addTest(unittest.makeSuite(test_util.UtilTestCase))
return suite
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/test_api.py new/pep8-1.7.0/testsuite/test_api.py
--- old/pep8-1.6.2/testsuite/test_api.py 2015-01-27 17:16:12.000000000 +0100
+++ new/pep8-1.7.0/testsuite/test_api.py 2015-09-07 08:38:04.000000000 +0200
@@ -339,6 +339,9 @@
if 'SyntaxError' in stdout:
# PyPy 2.2 returns a SyntaxError
expected = "stdin:1:2: E901 SyntaxError"
+ elif 'ValueError' in stdout:
+ # Python 3.5.
+ expected = "stdin:1:1: E901 ValueError"
else:
expected = "stdin:1:1: E901 TypeError"
self.assertTrue(stdout.startswith(expected),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pep8-1.6.2/testsuite/test_parser.py new/pep8-1.7.0/testsuite/test_parser.py
--- old/pep8-1.6.2/testsuite/test_parser.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pep8-1.7.0/testsuite/test_parser.py 2015-09-08 00:50:03.000000000 +0200
@@ -0,0 +1,61 @@
+import os
+import tempfile
+import unittest
+
+import pep8
+
+
+def _process_file(contents):
+ with tempfile.NamedTemporaryFile(delete=False) as f:
+ f.write(contents)
+
+ options, args = pep8.process_options(config_file=f.name)
+ os.remove(f.name)
+
+ return options, args
+
+
+class ParserTestCase(unittest.TestCase):
+
+ def test_vanilla_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore = E226,E24
+ """
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226", "E24"])
+
+ def test_multiline_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore =
+ E226,
+ E24
+ """
+
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226", "E24"])
+
+ def test_trailing_comma_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore = E226,
+ """
+
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226"])
+
+ def test_multiline_trailing_comma_ignore_parsing(self):
+ contents = b"""
+[pep8]
+ignore =
+ E226,
+ E24,
+ """
+
+ options, args = _process_file(contents)
+
+ self.assertEqual(options.ignore, ["E226", "E24"])
1
0
Hello community,
here is the log from the commit of package python3-astroid for openSUSE:Factory checked in at 2016-01-21 23:42:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-astroid (Old)
and /work/SRC/openSUSE:Factory/.python3-astroid.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-astroid"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-astroid/python3-astroid.changes 2015-12-03 13:32:19.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-astroid.new/python3-astroid.changes 2016-01-22 01:07:02.000000000 +0100
@@ -1,0 +2,23 @@
+Wed Jan 13 10:03:16 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to version 1.4.3
+ * pkg_resources brain tips are a bit more specific,
+ by specifiying proper returns.
+ * Standard library modules are properly detected by is_standard_module.
+ This should fix issues such as https://github.com/PyCQA/pylint/issues/725.
+- Update to version 1.4.2
+ * The slots() method conflates all the slots from the ancestors
+ into a list of current and parent slots.
+ We're doing this because this is the right semantics of slots,
+ they get inherited, as long as each parent defines a __slots__
+ entry.
+ * Revert to using printf-style formatting in as_string, in order
+ to avoid a potential problem with encodings when using .format.
+ Closes issue #273.
+ * assigned_stmts methods have the same signature from now on.
+ They used to have different signatures and each one made
+ assumptions about what could be passed to other implementations,
+ leading to various possible crashes when one or more arguments
+ weren't given. Closes issue #277.
+
+-------------------------------------------------------------------
Old:
----
astroid-1.4.1.tar.gz
New:
----
astroid-1.4.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-astroid.spec ++++++
--- /var/tmp/diff_new_pack.Tt6SPH/_old 2016-01-22 01:07:04.000000000 +0100
+++ /var/tmp/diff_new_pack.Tt6SPH/_new 2016-01-22 01:07:04.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-astroid
#
-# 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,17 +17,18 @@
Name: python3-astroid
-Version: 1.4.1
+Version: 1.4.3
Release: 0
-Url: http://bitbucket.org/logilab/astroid
+Url: https://github.com/pycqa/astroid
Summary: Rebuild a new abstract syntax tree from Python's ast
License: LGPL-2.1+
Group: Development/Libraries/Python
Source: https://pypi.python.org/packages/source/a/astroid/astroid-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: python3-2to3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
+BuildRequires: python3-six
+Requires: python3-six
BuildArch: noarch
%description
@@ -56,7 +57,7 @@
%files
%defattr(-,root,root,-)
-%doc COPYING COPYING.LESSER ChangeLog README
+%doc COPYING COPYING.LESSER ChangeLog README.rst
%{python3_sitelib}/astroid/
%{python3_sitelib}/astroid-%{version}-py*.egg-info
++++++ astroid-1.4.1.tar.gz -> astroid-1.4.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/ChangeLog new/astroid-1.4.3/ChangeLog
--- old/astroid-1.4.1/ChangeLog 2015-11-29 21:44:44.000000000 +0100
+++ new/astroid-1.4.3/ChangeLog 2015-12-24 16:03:30.000000000 +0100
@@ -1,6 +1,36 @@
Change log for the astroid package (used to be astng)
=====================================================
+2015-12-24 -- 1.4.3
+
+ * pkg_resources brain tips are a bit more specific,
+ by specifiying proper returns.
+
+ * Standard library modules are properly detected by is_standard_module.
+
+ This should fix issues such as https://github.com/PyCQA/pylint/issues/725.
+
+2015-12-21 -- 1.4.2
+
+ * The slots() method conflates all the slots from the ancestors
+ into a list of current and parent slots.
+
+ We're doing this because this is the right semantics of slots,
+ they get inherited, as long as each parent defines a __slots__
+ entry.
+
+ * Revert to using printf-style formatting in as_string, in order
+ to avoid a potential problem with encodings when using .format.
+ Closes issue #273.
+
+ * assigned_stmts methods have the same signature from now on.
+
+ They used to have different signatures and each one made
+ assumptions about what could be passed to other implementations,
+ leading to various possible crashes when one or more arguments
+ weren't given. Closes issue #277.
+
+
2015-11-29 -- 1.4.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/PKG-INFO new/astroid-1.4.3/PKG-INFO
--- old/astroid-1.4.1/PKG-INFO 2015-11-29 22:19:52.000000000 +0100
+++ new/astroid-1.4.3/PKG-INFO 2015-12-24 16:13:30.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: astroid
-Version: 1.4.1
+Version: 1.4.3
Summary: A abstract syntax tree for Python with inference support.
Home-page: http://bitbucket.org/logilab/astroid
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/README new/astroid-1.4.3/README
--- old/astroid-1.4.1/README 2015-11-29 15:57:24.000000000 +0100
+++ new/astroid-1.4.3/README 1970-01-01 01:00:00.000000000 +0100
@@ -1,64 +0,0 @@
-.. image:: https://drone.io/bitbucket.org/logilab/astroid/status.png
- :alt: drone.io Build Status
- :target: https://drone.io/bitbucket.org/logilab/astroid
-
-Astroid
-=======
-
-What's this?
-------------
-
-The aim of this module is to provide a common base representation of
-python source code for projects such as pychecker, pyreverse,
-pylint... Well, actually the development of this library is essentially
-governed by pylint's needs. It used to be called logilab-astng.
-
-It provides a compatible representation which comes from the `_ast`
-module. It rebuilds the tree generated by the builtin _ast module by
-recursively walking down the AST and building an extended ast. The new
-node classes have additional methods and attributes for different
-usages. They include some support for static inference and local name
-scopes. Furthermore, astroid builds partial trees by inspecting living
-objects.
-
-Main modules are:
-
-* `bases`, `node_classses` and `scoped_nodes` contain the classes for the
- different type of nodes of the tree.
-
-* the `manager` contains a high level object to get astroid trees from
- source files and living objects. It maintains a cache of previously
- constructed tree for quick access.
-
-
-Installation
-------------
-
-Extract the tarball, jump into the created directory and run::
-
- python setup.py install
-
-For installation options, see::
-
- python setup.py install --help
-
-
-If you have any questions, please mail the code-quality(a)python.org
-mailing list for support. See
-http://mail.python.org/mailman/listinfo/code-quality for subscription
-information and archives. You may find older archives at
-http://lists.logilab.org/mailman/listinfo/python-projects .
-
-Python Versions
----------------
-
-astroid is compatible with Python 2.7 as well as 3.3 and later. astroid uses
-the same code base for both Python versions, using six.
-
-Test
-----
-
-Tests are in the 'test' subdirectory. To launch the whole tests suite
-at once, you can use unittest discover::
-
- python -m unittest discover -p "unittest*.py"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/README.rst new/astroid-1.4.3/README.rst
--- old/astroid-1.4.1/README.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/astroid-1.4.3/README.rst 2015-12-24 16:02:22.000000000 +0100
@@ -0,0 +1,64 @@
+.. image:: https://drone.io/bitbucket.org/logilab/astroid/status.png
+ :alt: drone.io Build Status
+ :target: https://drone.io/bitbucket.org/logilab/astroid
+
+Astroid
+=======
+
+What's this?
+------------
+
+The aim of this module is to provide a common base representation of
+python source code for projects such as pychecker, pyreverse,
+pylint... Well, actually the development of this library is essentially
+governed by pylint's needs. It used to be called logilab-astng.
+
+It provides a compatible representation which comes from the `_ast`
+module. It rebuilds the tree generated by the builtin _ast module by
+recursively walking down the AST and building an extended ast. The new
+node classes have additional methods and attributes for different
+usages. They include some support for static inference and local name
+scopes. Furthermore, astroid builds partial trees by inspecting living
+objects.
+
+Main modules are:
+
+* `bases`, `node_classses` and `scoped_nodes` contain the classes for the
+ different type of nodes of the tree.
+
+* the `manager` contains a high level object to get astroid trees from
+ source files and living objects. It maintains a cache of previously
+ constructed tree for quick access.
+
+
+Installation
+------------
+
+Extract the tarball, jump into the created directory and run::
+
+ python setup.py install
+
+For installation options, see::
+
+ python setup.py install --help
+
+
+If you have any questions, please mail the code-quality(a)python.org
+mailing list for support. See
+http://mail.python.org/mailman/listinfo/code-quality for subscription
+information and archives. You may find older archives at
+http://lists.logilab.org/mailman/listinfo/python-projects .
+
+Python Versions
+---------------
+
+astroid is compatible with Python 2.7 as well as 3.3 and later. astroid uses
+the same code base for both Python versions, using six.
+
+Test
+----
+
+Tests are in the 'test' subdirectory. To launch the whole tests suite
+at once, you can use unittest discover::
+
+ python -m unittest discover -p "unittest*.py"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/__init__.py new/astroid-1.4.3/astroid/__init__.py
--- old/astroid-1.4.1/astroid/__init__.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/__init__.py 2015-12-24 16:02:22.000000000 +0100
@@ -114,8 +114,11 @@
def register_module_extender(manager, module_name, get_extension_mod):
def transform(node):
extension_module = get_extension_mod()
- for name, obj in extension_module._locals.items():
- node._locals[name] = obj
+ for name, objs in extension_module._locals.items():
+ node._locals[name] = objs
+ for obj in objs:
+ if obj.parent is extension_module:
+ obj.parent = node
manager.register_transform(Module, transform, lambda n: n.name == module_name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/__pkginfo__.py new/astroid-1.4.3/astroid/__pkginfo__.py
--- old/astroid-1.4.1/astroid/__pkginfo__.py 2015-11-29 21:44:53.000000000 +0100
+++ new/astroid-1.4.3/astroid/__pkginfo__.py 2015-12-24 16:03:37.000000000 +0100
@@ -20,7 +20,7 @@
modname = 'astroid'
-numversion = (1, 4, 1)
+numversion = (1, 4, 3)
version = '.'.join([str(num) for num in numversion])
install_requires = ['six', 'lazy_object_proxy', 'wrapt']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/as_string.py new/astroid-1.4.3/astroid/as_string.py
--- old/astroid-1.4.1/astroid/as_string.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/as_string.py 2015-12-24 16:02:22.000000000 +0100
@@ -287,13 +287,11 @@
trailer = return_annotation + ":"
else:
trailer = ":"
- def_format = "\n{decorators}def {name}({args}){trailer}{docs}\n{body}"
- return def_format.format(decorators=decorate,
- name=node.name,
- args=node.args.accept(self),
- trailer=trailer,
- docs=docs,
- body=self._stmt_list(node.body))
+ def_format = "\n%sdef %s(%s)%s%s\n%s"
+ return def_format % (decorate, node.name,
+ node.args.accept(self),
+ trailer, docs,
+ self._stmt_list(node.body))
def visit_generatorexp(self, node):
"""return an astroid.GeneratorExp node as string"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/bases.py new/astroid-1.4.3/astroid/bases.py
--- old/astroid-1.4.1/astroid/bases.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/bases.py 2015-12-24 16:02:22.000000000 +0100
@@ -47,7 +47,7 @@
POSSIBLE_PROPERTIES = {"cached_property", "cachedproperty",
"lazyproperty", "lazy_property", "reify",
"lazyattribute", "lazy_attribute",
- "LazyProperty"}
+ "LazyProperty", "lazy"}
def _is_property(meth):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/brain/brain_gi.py new/astroid-1.4.3/astroid/brain/brain_gi.py
--- old/astroid-1.4.1/astroid/brain/brain_gi.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/brain/brain_gi.py 2015-12-24 16:02:22.000000000 +0100
@@ -47,13 +47,13 @@
elif (inspect.ismethod(obj) or
inspect.ismethoddescriptor(obj)):
methods[name] = obj
- elif isinstance(obj, (int, str)):
- constants[name] = obj
elif (str(obj).startswith("<flags") or
str(obj).startswith("<enum ") or
str(obj).startswith("<GType ") or
inspect.isdatadescriptor(obj)):
constants[name] = 0
+ elif isinstance(obj, (int, str)):
+ constants[name] = obj
elif callable(obj):
# Fall back to a function for anything callable
functions[name] = obj
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/brain/brain_stdlib.py new/astroid-1.4.3/astroid/brain/brain_stdlib.py
--- old/astroid-1.4.1/astroid/brain/brain_stdlib.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/brain/brain_stdlib.py 2015-12-24 16:02:22.000000000 +0100
@@ -156,30 +156,36 @@
def pkg_resources_transform():
return AstroidBuilder(MANAGER).string_build('''
-
def resource_exists(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).has_resource(resource_name)
def resource_isdir(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).resource_isdir(
+ resource_name)
def resource_filename(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).get_resource_filename(
+ self, resource_name)
def resource_stream(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).get_resource_stream(
+ self, resource_name)
def resource_string(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).get_resource_string(
+ self, resource_name)
def resource_listdir(package_or_requirement, resource_name):
- pass
+ return get_provider(package_or_requirement).resource_listdir(
+ resource_name)
def extraction_error():
pass
def get_cache_path(archive_name, names=()):
- pass
+ extract_path = self.extraction_path or get_default_cache()
+ target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
+ return target_path
def postprocess(tempname, filename):
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/modutils.py new/astroid-1.4.3/astroid/modutils.py
--- old/astroid-1.4.1/astroid/modutils.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/modutils.py 2015-12-24 16:02:22.000000000 +0100
@@ -50,12 +50,7 @@
PY_SOURCE_EXTS = ('py',)
PY_COMPILED_EXTS = ('so',)
-# Notes about STD_LIB_DIRS
-# Consider arch-specific installation for STD_LIB_DIRS definition
-# :mod:`distutils.sysconfig` contains to much hardcoded values to rely on
-#
-# :see: `Problems with /usr/lib64 builds <http://bugs.python.org/issue1294959>`_
-# :see: `FHS <http://www.pathname.com/fhs/pub/fhs-2.3.html#LIBLTQUALGTALTERNATEFORMATESSE…>`_
+
try:
# The explicit sys.prefix is to work around a patch in virtualenv that
# replaces the 'real' sys.prefix (i.e. the location of the binary)
@@ -67,18 +62,50 @@
# Take care of installations where exec_prefix != prefix.
get_python_lib(standard_lib=True, prefix=sys.exec_prefix),
get_python_lib(standard_lib=True)])
- if os.name == 'nt':
- STD_LIB_DIRS.add(os.path.join(sys.prefix, 'dlls'))
- try:
- # real_prefix is defined when running inside virtualenv.
- STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'dlls'))
- except AttributeError:
- pass
# get_python_lib(standard_lib=1) is not available on pypy, set STD_LIB_DIR to
# non-valid path, see https://bugs.pypy.org/issue1164
except DistutilsPlatformError:
STD_LIB_DIRS = set()
+if os.name == 'nt':
+ STD_LIB_DIRS.add(os.path.join(sys.prefix, 'dlls'))
+ try:
+ # real_prefix is defined when running inside virtualenv.
+ STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'dlls'))
+ except AttributeError:
+ pass
+if platform.python_implementation() == 'PyPy':
+ _root = os.path.join(sys.prefix, 'lib_pypy')
+ STD_LIB_DIRS.add(_root)
+ try:
+ # real_prefix is defined when running inside virtualenv.
+ STD_LIB_DIRS.add(os.path.join(sys.real_prefix, 'lib_pypy'))
+ except AttributeError:
+ pass
+ del _root
+if os.name == 'posix':
+ # Need the real prefix is we're under a virtualenv, otherwise
+ # the usual one will do.
+ try:
+ prefix = sys.real_prefix
+ except AttributeError:
+ prefix = sys.prefix
+
+ def _posix_path(path):
+ base_python = 'python%d.%d' % sys.version_info[:2]
+ return os.path.join(prefix, path, base_python)
+
+ STD_LIB_DIRS.add(_posix_path('lib'))
+ if sys.maxsize > 2**32:
+ # This tries to fix a problem with /usr/lib64 builds,
+ # where systems are running both 32-bit and 64-bit code
+ # on the same machine, which reflects into the places where
+ # standard library could be found. More details can be found
+ # here http://bugs.python.org/issue1294959.
+ # An easy reproducing case would be
+ # https://github.com/PyCQA/pylint/issues/712#issuecomment-163178753
+ STD_LIB_DIRS.add(_posix_path('lib64'))
+
EXT_LIB_DIR = get_python_lib()
IS_JYTHON = platform.python_implementation() == 'Jython'
BUILTIN_MODULES = dict.fromkeys(sys.builtin_module_names, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/protocols.py new/astroid-1.4.3/astroid/protocols.py
--- old/astroid-1.4.1/astroid/protocols.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/protocols.py 2015-12-24 16:02:22.000000000 +0100
@@ -250,7 +250,7 @@
@bases.raise_if_nothing_inferred
-def for_assigned_stmts(self, node, context=None, asspath=None):
+def for_assigned_stmts(self, node=None, context=None, asspath=None):
if asspath is None:
for lst in self.iter.infer(context):
if isinstance(lst, (nodes.Tuple, nodes.List)):
@@ -265,18 +265,25 @@
nodes.Comprehension.assigned_stmts = for_assigned_stmts
-def mulass_assigned_stmts(self, node, context=None, asspath=None):
+def sequence_assigned_stmts(self, node=None, context=None, asspath=None):
if asspath is None:
asspath = []
- asspath.insert(0, self.elts.index(node))
- return self.parent.assigned_stmts(self, context, asspath)
+ try:
+ index = self.elts.index(node)
+ except ValueError:
+ util.reraise(exceptions.InferenceError(
+ 'Tried to retrieve a node {node!r} which does not exist',
+ node=self, assign_path=asspath, context=context))
+
+ asspath.insert(0, index)
+ return self.parent.assigned_stmts(node=self, context=context, asspath=asspath)
-nodes.Tuple.assigned_stmts = mulass_assigned_stmts
-nodes.List.assigned_stmts = mulass_assigned_stmts
+nodes.Tuple.assigned_stmts = sequence_assigned_stmts
+nodes.List.assigned_stmts = sequence_assigned_stmts
-def assend_assigned_stmts(self, context=None):
- return self.parent.assigned_stmts(self, context=context)
+def assend_assigned_stmts(self, node=None, context=None, asspath=None):
+ return self.parent.assigned_stmts(node=self, context=context)
nodes.AssignName.assigned_stmts = assend_assigned_stmts
nodes.AssignAttr.assigned_stmts = assend_assigned_stmts
@@ -325,7 +332,7 @@
yield util.YES
-def arguments_assigned_stmts(self, node, context, asspath=None):
+def arguments_assigned_stmts(self, node=None, context=None, asspath=None):
if context.callcontext:
# reset call context/name
callcontext = context.callcontext
@@ -339,7 +346,7 @@
@bases.raise_if_nothing_inferred
-def assign_assigned_stmts(self, node, context=None, asspath=None):
+def assign_assigned_stmts(self, node=None, context=None, asspath=None):
if not asspath:
yield self.value
return
@@ -380,7 +387,7 @@
@bases.raise_if_nothing_inferred
-def excepthandler_assigned_stmts(self, node, context=None, asspath=None):
+def excepthandler_assigned_stmts(self, node=None, context=None, asspath=None):
for assigned in node_classes.unpack_infer(self.type):
if isinstance(assigned, nodes.ClassDef):
assigned = bases.Instance(assigned)
@@ -389,7 +396,7 @@
@bases.raise_if_nothing_inferred
-def with_assigned_stmts(self, node, context=None, asspath=None):
+def with_assigned_stmts(self, node=None, context=None, asspath=None):
if asspath is None:
for _, vars in self.items:
if vars is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/scoped_nodes.py new/astroid-1.4.3/astroid/scoped_nodes.py
--- old/astroid-1.4.1/astroid/scoped_nodes.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/scoped_nodes.py 2015-12-24 16:02:22.000000000 +0100
@@ -535,6 +535,7 @@
all = self['__all__']
except KeyError:
return default
+
try:
explicit = next(all.assigned_stmts())
except exceptions.InferenceError:
@@ -1578,6 +1579,22 @@
except exceptions.InferenceError:
continue
+ def _slots(self):
+ if not self.newstyle:
+ raise NotImplementedError(
+ "The concept of slots is undefined for old-style classes.")
+
+ slots = self._islots()
+ try:
+ first = next(slots)
+ except StopIteration as exc:
+ # The class doesn't have a __slots__ definition or empty slots.
+ if exc.args and exc.args[0] not in ('', None):
+ return exc.args[0]
+ return None
+ # pylint: disable=unsupported-binary-operation; false positive
+ return [first] + list(slots)
+
# Cached, because inferring them all the time is expensive
@decorators_mod.cached
def slots(self):
@@ -1588,20 +1605,28 @@
Also, it will return None in the case the slots weren't inferred.
Otherwise, it will return a list of slot names.
"""
+ def grouped_slots():
+ # Not interested in object, since it can't have slots.
+ for cls in self.mro()[:-1]:
+ try:
+ cls_slots = cls._slots()
+ except NotImplementedError:
+ continue
+ if cls_slots is not None:
+ for slot in cls_slots:
+ yield slot
+ else:
+ yield None
+
if not self.newstyle:
raise NotImplementedError(
"The concept of slots is undefined for old-style classes.")
- slots = self._islots()
- try:
- first = next(slots)
- except StopIteration as exc:
- # The class doesn't have a __slots__ definition or empty slots.
- if exc.args and exc.args[0] not in ('', None):
- return exc.args[0]
+ slots = list(grouped_slots())
+ if not all(slot is not None for slot in slots):
return None
- # pylint: disable=unsupported-binary-operation; false positive
- return [first] + list(slots)
+
+ return sorted(slots, key=lambda item: item.value)
def _inferred_bases(self, context=None):
# TODO(cpopa): really similar with .ancestors,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_brain.py new/astroid-1.4.3/astroid/tests/unittest_brain.py
--- old/astroid-1.4.1/astroid/tests/unittest_brain.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_brain.py 2015-12-24 16:02:22.000000000 +0100
@@ -301,6 +301,15 @@
else:
self.assertIsInstance(cpu_count, astroid.BoundMethod)
+ def test_module_name(self):
+ module = test_utils.extract_node("""
+ import multiprocessing
+ multiprocessing.SyncManager()
+ """)
+ inferred_sync_mgr = next(module.infer())
+ module = inferred_sync_mgr.root()
+ self.assertEqual(module.name, 'multiprocessing.managers')
+
def test_multiprocessing_manager(self):
# Test that we have the proper attributes
# for a multiprocessing.managers.SyncManager
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_manager.py new/astroid-1.4.3/astroid/tests/unittest_manager.py
--- old/astroid-1.4.1/astroid/tests/unittest_manager.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_manager.py 2015-12-24 16:02:22.000000000 +0100
@@ -35,8 +35,9 @@
return obj.__file__.split("$py.class")[0] + ".py"
if sys.version_info > (3, 0):
return obj.__file__
- else:
+ if not obj.__file__.endswith(".py"):
return obj.__file__[:-1]
+ return obj.__file__
class AstroidManagerTest(resources.SysPathSetup,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_modutils.py new/astroid-1.4.3/astroid/tests/unittest_modutils.py
--- old/astroid-1.4.1/astroid/tests/unittest_modutils.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_modutils.py 2015-12-24 16:02:22.000000000 +0100
@@ -176,6 +176,11 @@
library
"""
+ def test_datetime(self):
+ # This is an interesting example, since datetime, on pypy,
+ # is under lib_pypy, rather than the usual Lib directory.
+ self.assertTrue(modutils.is_standard_module('datetime'))
+
def test_builtins(self):
if sys.version_info < (3, 0):
self.assertEqual(modutils.is_standard_module('__builtin__'), True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_nodes.py new/astroid-1.4.3/astroid/tests/unittest_nodes.py
--- old/astroid-1.4.1/astroid/tests/unittest_nodes.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_nodes.py 2015-12-24 16:02:22.000000000 +0100
@@ -534,6 +534,7 @@
pass
def lazyproperty():
pass
+ def lazy(): pass
class A(object):
@property
def builtin_property(self):
@@ -550,6 +551,8 @@
@lazyproperty
def lazyprop(self): return 42
def not_prop(self): pass
+ @lazy
+ def decorated_with_lazy(self): return 42
cls = A()
builtin_property = cls.builtin_property
@@ -559,9 +562,10 @@
not_prop = cls.not_prop
lazy_prop = cls.lazy_prop
lazyprop = cls.lazyprop
+ decorated_with_lazy = cls.decorated_with_lazy
''')
for prop in ('builtin_property', 'abc_property', 'cached_p', 'reified',
- 'lazy_prop', 'lazyprop'):
+ 'lazy_prop', 'lazyprop', 'decorated_with_lazy'):
inferred = next(ast[prop].infer())
self.assertIsInstance(inferred, nodes.Const, prop)
self.assertEqual(inferred.value, 42, prop)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_protocols.py new/astroid-1.4.3/astroid/tests/unittest_protocols.py
--- old/astroid-1.4.1/astroid/tests/unittest_protocols.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_protocols.py 2015-12-24 16:02:22.000000000 +0100
@@ -16,8 +16,10 @@
# You should have received a copy of the GNU Lesser General Public License along
# with astroid. If not, see <http://www.gnu.org/licenses/>.
+import contextlib
import unittest
+import astroid
from astroid.test_utils import extract_node, require_version
from astroid import InferenceError
from astroid import nodes
@@ -25,6 +27,15 @@
from astroid.node_classes import AssignName, Const, Name, Starred
+(a)contextlib.contextmanager
+def _add_transform(manager, node, transform, predicate=None):
+ manager.register_transform(node, transform, predicate)
+ try:
+ yield
+ finally:
+ manager.unregister_transform(node, transform, predicate)
+
+
class ProtocolTests(unittest.TestCase):
def assertConstNodesEqual(self, nodes_list_expected, nodes_list_got):
@@ -149,6 +160,17 @@
assigned = list(simple_mul_assnode_2.assigned_stmts())
self.assertNameNodesEqual(['c'], assigned)
+ def test_sequence_assigned_stmts_not_accepting_empty_node(self):
+ def transform(node):
+ node.root().locals['__all__'] = [node.value]
+
+ manager = astroid.MANAGER
+ with _add_transform(manager, astroid.Assign, transform):
+ module = astroid.parse('''
+ __all__ = ['a']
+ ''')
+ module.wildcard_import_names()
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_regrtest.py new/astroid-1.4.3/astroid/tests/unittest_regrtest.py
--- old/astroid-1.4.1/astroid/tests/unittest_regrtest.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_regrtest.py 2015-12-24 16:02:22.000000000 +0100
@@ -282,6 +282,23 @@
''')
self.assertRaises(exceptions.InferenceError, next, node.infer())
+ def test_unicode_in_docstring(self):
+ # Crashed for astroid==1.4.1
+ # Test for https://bitbucket.org/logilab/astroid/issues/273/
+
+ # In a regular file, "coding: utf-8" would have been used.
+ node = extract_node(u'''
+ from __future__ import unicode_literals
+
+ class MyClass(object):
+ def method(self):
+ "With unicode : %s "
+
+ instance = MyClass()
+ ''' % u"\u2019")
+
+ next(node.value.infer()).as_string()
+
class Whatever(object):
a = property(lambda x: x, lambda x: x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid/tests/unittest_scoped_nodes.py new/astroid-1.4.3/astroid/tests/unittest_scoped_nodes.py
--- old/astroid-1.4.1/astroid/tests/unittest_scoped_nodes.py 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/astroid/tests/unittest_scoped_nodes.py 2015-12-24 16:02:22.000000000 +0100
@@ -1203,6 +1203,41 @@
module['OldStyle'].slots()
self.assertEqual(str(cm.exception), msg)
+ def test_slots_empty_list_of_slots(self):
+ module = builder.parse("""
+ class Klass(object):
+ __slots__ = ()
+ """)
+ cls = module['Klass']
+ self.assertEqual(cls.slots(), [])
+
+ def test_slots_taken_from_parents(self):
+ module = builder.parse('''
+ class FirstParent(object):
+ __slots__ = ('a', 'b', 'c')
+ class SecondParent(FirstParent):
+ __slots__ = ('d', 'e')
+ class Third(SecondParent):
+ __slots__ = ('d', )
+ ''')
+ cls = module['Third']
+ slots = cls.slots()
+ self.assertEqual(sorted(set(slot.value for slot in slots)),
+ ['a', 'b', 'c', 'd', 'e'])
+
+ def test_all_ancestors_need_slots(self):
+ module = builder.parse('''
+ class A(object):
+ __slots__ = ('a', )
+ class B(A): pass
+ class C(B):
+ __slots__ = ('a', )
+ ''')
+ cls = module['C']
+ self.assertIsNone(cls.slots())
+ cls = module['B']
+ self.assertIsNone(cls.slots())
+
def assertEqualMro(self, klass, expected_mro):
self.assertEqual(
[member.name for member in klass.mro()],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid.egg-info/PKG-INFO new/astroid-1.4.3/astroid.egg-info/PKG-INFO
--- old/astroid-1.4.1/astroid.egg-info/PKG-INFO 2015-11-29 22:19:16.000000000 +0100
+++ new/astroid-1.4.3/astroid.egg-info/PKG-INFO 2015-12-24 16:13:17.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: astroid
-Version: 1.4.1
+Version: 1.4.3
Summary: A abstract syntax tree for Python with inference support.
Home-page: http://bitbucket.org/logilab/astroid
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/astroid.egg-info/SOURCES.txt new/astroid-1.4.3/astroid.egg-info/SOURCES.txt
--- old/astroid-1.4.1/astroid.egg-info/SOURCES.txt 2015-11-29 22:19:16.000000000 +0100
+++ new/astroid-1.4.3/astroid.egg-info/SOURCES.txt 2015-12-24 16:13:17.000000000 +0100
@@ -2,7 +2,7 @@
COPYING.LESSER
ChangeLog
MANIFEST.in
-README
+README.rst
setup.cfg
setup.py
tox.ini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/setup.cfg new/astroid-1.4.3/setup.cfg
--- old/astroid-1.4.1/setup.cfg 2015-11-29 22:19:52.000000000 +0100
+++ new/astroid-1.4.3/setup.cfg 2015-12-24 16:13:30.000000000 +0100
@@ -2,7 +2,7 @@
universal = 1
[egg_info]
+tag_date = 0
tag_svn_revision = 0
tag_build =
-tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/setup.py new/astroid-1.4.3/setup.py
--- old/astroid-1.4.1/setup.py 2015-11-29 15:57:24.000000000 +0100
+++ new/astroid-1.4.3/setup.py 2015-12-21 10:32:11.000000000 +0100
@@ -20,14 +20,18 @@
"""Setup script for astroid."""
import os
from setuptools import setup, find_packages
+from setuptools.command import easy_install
from setuptools.command import install_lib
-pkginfo = 'astroid/__pkginfo__.py'
+
+real_path = os.path.realpath(__file__)
+astroid_dir = os.path.dirname(real_path)
+pkginfo = os.path.join(astroid_dir, 'astroid', '__pkginfo__.py')
with open(pkginfo, 'rb') as fobj:
exec(compile(fobj.read(), pkginfo, 'exec'), locals())
-with open('README') as fobj:
+with open(os.path.join(astroid_dir, 'README.rst')) as fobj:
long_description = fobj.read()
class AstroidInstallLib(install_lib.install_lib):
@@ -37,6 +41,15 @@
install_lib.install_lib.byte_compile(self, files)
+class AstroidEasyInstallLib(easy_install.easy_install):
+ # override this since pip/easy_install attempt to byte compile
+ # test data files, some of them being syntactically wrong by design,
+ # and this scares the end-user
+ def byte_compile(self, files):
+ test_datadir = os.path.join('astroid', 'tests', 'testdata')
+ files = [f for f in files if test_datadir not in f]
+ easy_install.easy_install.byte_compile(self, files)
+
def install():
return setup(name = distname,
@@ -51,7 +64,8 @@
include_package_data = True,
install_requires = install_requires,
packages = find_packages(),
- cmdclass={'install_lib': AstroidInstallLib}
+ cmdclass={'install_lib': AstroidInstallLib,
+ 'easy_install': AstroidEasyInstallLib}
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astroid-1.4.1/tox.ini new/astroid-1.4.3/tox.ini
--- old/astroid-1.4.1/tox.ini 2015-11-29 21:37:16.000000000 +0100
+++ new/astroid-1.4.3/tox.ini 2015-12-24 16:02:22.000000000 +0100
@@ -3,9 +3,6 @@
skip_missing_interpreters = true
[testenv:pylint]
-deps =
- hg+https://bitbucket.org/logilab/astroid@1.4.0
- hg+https://bitbucket.org/logilab/pylint@1.5.0
commands = pylint -rn --rcfile={toxinidir}/pylintrc {envsitepackagesdir}/astroid
[testenv]
@@ -19,5 +16,5 @@
py27,py33,pypy,jython: singledispatch
six
wrapt
- pylint: hg+https://bitbucket.org/logilab/pylint
+ pylint: git+https://github.com/pycqa/pylint@1.5.0
commands = python -m unittest discover -s {envsitepackagesdir}/astroid/tests -p "unittest*.py"
1
0
Hello community,
here is the log from the commit of package python3-pylint for openSUSE:Factory checked in at 2016-01-21 23:42:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pylint (Old)
and /work/SRC/openSUSE:Factory/.python3-pylint.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pylint"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pylint/python3-pylint.changes 2015-12-23 08:50:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pylint.new/python3-pylint.changes 2016-01-22 01:07:00.000000000 +0100
@@ -1,0 +2,34 @@
+Wed Jan 13 10:15:52 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to version 1.5.3:
+ * Handle the import fallback idiom with regard to wrong-import-order.
+ Closes issue #750.
+ * Decouple the displaying of reports from the displaying of messages
+ Some reporters are aggregating the messages instead of displaying
+ them when they are available. The actual displaying was conflatted
+ in the generate_reports. Unfortunately this behaviour was flaky
+ and in the case of the JSON reporter, the messages weren't shown
+ at all if a file had syntax errors or if it was missing.
+ In order to fix this, the aggregated messages can now be
+ displayed with Reporter.display_message, while the reports are
+ displayed with display_reports.
+ Closes issues #766 and #765.
+ * Ignore function calls with variadic arguments without a context.
+ Inferring variadic positional arguments and keyword arguments
+ will result into empty Tuples and Dicts, which can lead in
+ some cases to false positives with regard to no-value-for-parameter.
+ In order to avoid this, until we'll have support for call context
+ propagation, we're ignoring such cases if detected.
+ Closes issue #722.
+ * Treat AsyncFunctionDef just like FunctionDef nodes,
+ by implementing visit_asyncfunctiondef in terms of
+ visit_functiondef.
+ Closes issue #767.
+ * Take in account kwonlyargs when verifying that arguments
+ are defined with the check_docs extension.
+ Closes issue #745.
+ * Suppress reporting 'unneeded-not' inside `__ne__` methods
+ Closes issue #749.
+- Cleanup update-alternatives
+
+-------------------------------------------------------------------
Old:
----
pylint-1.5.2.tar.gz
New:
----
pylint-1.5.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pylint.spec ++++++
--- /var/tmp/diff_new_pack.n7Ho4P/_old 2016-01-22 01:07:02.000000000 +0100
+++ /var/tmp/diff_new_pack.n7Ho4P/_new 2016-01-22 01:07:02.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-pylint
#
-# 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,15 +17,15 @@
Name: python3-pylint
-Version: 1.5.2
+Version: 1.5.3
Release: 0
Summary: Syntax and style checker for Python code
License: GPL-2.0+
Group: Development/Languages/Python
-Url: http://www.pylint.org/
+Url: https://github.com/pycqa/pylint
Source: https://pypi.python.org/packages/source/p/pylint/pylint-%{version}.tar.gz
-BuildRequires: python3-2to3
BuildRequires: python3-astroid
+BuildRequires: python3-six
BuildRequires: python3-tk
Requires: python3-astroid
Requires: python3-six
@@ -58,58 +58,53 @@
python3 setup.py build
%install
-# build failes without --no-compile
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot} --no-compile
+
# fix non-executable rpmlint warning
chmod +x %{buildroot}%{python3_sitelib}/pylint/epylint.py
-# update-alternatives
-mv %{buildroot}%{_bindir}/pylint %{buildroot}%{_bindir}/pylint-%{py3_ver}
-mv %{buildroot}%{_bindir}/epylint %{buildroot}%{_bindir}/epylint-%{py3_ver}
-mv %{buildroot}%{_bindir}/pylint-gui %{buildroot}%{_bindir}/pylint-gui-%{py3_ver}
-mv %{buildroot}%{_bindir}/pyreverse %{buildroot}%{_bindir}/pyreverse-%{py3_ver}
-mv %{buildroot}%{_bindir}/symilar %{buildroot}%{_bindir}/symilar-%{py3_ver}
-ln -s %{_bindir}/pylint-%{py3_ver} %{buildroot}%{_bindir}/pylint
-ln -s %{_bindir}/epylint-%{py3_ver} %{buildroot}%{_bindir}/epylint
-ln -s %{_bindir}/pylint-gui-%{py3_ver} %{buildroot}%{_bindir}/pylint-gui
-ln -s %{_bindir}/pyreverse-%{py3_ver} %{buildroot}%{_bindir}/pyreverse
-ln -s %{_bindir}/symilar-%{py3_ver} %{buildroot}%{_bindir}/symilar
-
-%pre
-# Since /usr/bin/pylint, etc. became ghosted to be used with update-alternatives, we have to get rid
-# of the old binary resulting from the non-update-alternativies-ified package:
-[ -h %{_bindir}/pylint ] || rm -f %{_bindir}/pylint
-[ -h %{_bindir}/epylint ] || rm -f %{_bindir}/epylint
-[ -h %{_bindir}/pylint-gui ] || rm -f %{_bindir}/pylint-gui
-[ -h %{_bindir}/pyreverse ] || rm -f %{_bindir}/pyreverse
-[ -h %{_bindir}/symilar ] || rm -f %{_bindir}/symilar
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+for p in pylint epylint pylint-gui pyreverse symilar ; do
+ mv %{buildroot}%{_bindir}/$p %{buildroot}%{_bindir}/$p-%{py3_ver}
+ ln -s -f %{_sysconfdir}/alternatives/$p %{buildroot}%{_bindir}/$p
+ # create a dummy target for /etc/alternatives/$p
+ touch %{buildroot}%{_sysconfdir}/alternatives/$p
+done
%post
-update-alternatives \
+%_sbindir/update-alternatives \
--install %{_bindir}/pylint pylint %{_bindir}/pylint-%{py3_ver} 30 \
--slave %{_bindir}/epylint epylint %{_bindir}/epylint-%{py3_ver} \
--slave %{_bindir}/pylint-gui pylint-gui %{_bindir}/pylint-gui-%{py3_ver} \
--slave %{_bindir}/pyreverse pyreverse %{_bindir}/pyreverse-%{py3_ver} \
--slave %{_bindir}/symilar symilar %{_bindir}/symilar-%{py3_ver}
-%preun
+%postun
if [ $1 -eq 0 ] ; then
- update-alternatives --remove pylint %{_bindir}/pylint-%{py3_ver}
+ %_sbindir/update-alternatives --remove pylint %{_bindir}/pylint-%{py3_ver}
fi
%files
%defattr(-,root,root)
-%doc ChangeLog COPYING README.rst examples/
+%doc ChangeLog COPYING README.rst
+%doc examples/
+%{_bindir}/pylint
+%{_bindir}/epylint
+%{_bindir}/pylint-gui
+%{_bindir}/pyreverse
+%{_bindir}/symilar
%{_bindir}/pylint-%{py3_ver}
%{_bindir}/epylint-%{py3_ver}
%{_bindir}/pylint-gui-%{py3_ver}
%{_bindir}/pyreverse-%{py3_ver}
%{_bindir}/symilar-%{py3_ver}
-%ghost %{_bindir}/pylint
-%ghost %{_bindir}/epylint
-%ghost %{_bindir}/pylint-gui
-%ghost %{_bindir}/pyreverse
-%ghost %{_bindir}/symilar
+%ghost %{_sysconfdir}/alternatives/pylint
+%ghost %{_sysconfdir}/alternatives/epylint
+%ghost %{_sysconfdir}/alternatives/pylint-gui
+%ghost %{_sysconfdir}/alternatives/pyreverse
+%ghost %{_sysconfdir}/alternatives/symilar
%{python3_sitelib}/pylint/
-%{python3_sitelib}/pylint-%{version}-py%{py3_ver}.egg-info
+%{python3_sitelib}/pylint-%{version}-py*.egg-info
%changelog
++++++ pylint-1.5.2.tar.gz -> pylint-1.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/ChangeLog new/pylint-1.5.3/ChangeLog
--- old/pylint-1.5.2/ChangeLog 2015-12-21 01:15:06.000000000 +0100
+++ new/pylint-1.5.3/ChangeLog 2016-01-11 10:51:49.000000000 +0100
@@ -1,8 +1,52 @@
ChangeLog for Pylint
--------------------
-2015-12-21
+2016-01-11 -- 1.5.3
+ * Handle the import fallback idiom with regard to wrong-import-order.
+
+ Closes issue #750.
+
+ * Decouple the displaying of reports from the displaying of messages
+
+ Some reporters are aggregating the messages instead of displaying
+ them when they are available. The actual displaying was conflatted
+ in the generate_reports. Unfortunately this behaviour was flaky
+ and in the case of the JSON reporter, the messages weren't shown
+ at all if a file had syntax errors or if it was missing.
+ In order to fix this, the aggregated messages can now be
+ displayed with Reporter.display_message, while the reports are
+ displayed with display_reports.
+
+ Closes issues #766 and #765.
+
+ * Ignore function calls with variadic arguments without a context.
+
+ Inferring variadic positional arguments and keyword arguments
+ will result into empty Tuples and Dicts, which can lead in
+ some cases to false positives with regard to no-value-for-parameter.
+ In order to avoid this, until we'll have support for call context
+ propagation, we're ignoring such cases if detected.
+ Closes issue #722.
+
+ * Treat AsyncFunctionDef just like FunctionDef nodes,
+ by implementing visit_asyncfunctiondef in terms of
+ visit_functiondef.
+
+ Closes issue #767.
+
+ * Take in account kwonlyargs when verifying that arguments
+ are defined with the check_docs extension.
+
+ Closes issue #745.
+
+ * Suppress reporting 'unneeded-not' inside `__ne__` methods
+
+ Closes issue #749.
+
+
+2015-12-21 -- 1.5.2
+
* Don't crash if graphviz is not installed, instead emit a
warning letting the user to know.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/PKG-INFO new/pylint-1.5.3/PKG-INFO
--- old/pylint-1.5.2/PKG-INFO 2015-12-21 01:21:43.000000000 +0100
+++ new/pylint-1.5.3/PKG-INFO 2016-01-11 11:07:57.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pylint
-Version: 1.5.2
+Version: 1.5.3
Summary: python code static checker
Home-page: http://www.pylint.org
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/doc/changelog.rst new/pylint-1.5.3/doc/changelog.rst
--- old/pylint-1.5.2/doc/changelog.rst 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/doc/changelog.rst 2016-01-09 21:13:05.000000000 +0100
@@ -1,8 +1,6 @@
-Changes & Contributors
-======================
+Change log
+==========
.. include:: ../ChangeLog
-
-.. include:: ../CONTRIBUTORS.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/man/pylint.1 new/pylint-1.5.3/man/pylint.1
--- old/pylint-1.5.2/man/pylint.1 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/man/pylint.1 2016-01-09 21:13:05.000000000 +0100
@@ -239,7 +239,7 @@
.IP "--max-module-lines=<int>"
Maximum number of lines in a module [current: 1000]
.IP "--indent-string=<string>"
-String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 tab). [current: ' ']
+String used as indentation unit. This is usually " " (4 spaces) or "\\t" (1 tab). [current: ' ']
.IP "--indent-after-paren=<int>"
Number of spaces of indent required inside a hanging or continued line. [current: 4]
.IP "--expected-line-ending-format=<empty or LF or CRLF>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/__pkginfo__.py new/pylint-1.5.3/pylint/__pkginfo__.py
--- old/pylint-1.5.2/pylint/__pkginfo__.py 2015-12-21 01:14:49.000000000 +0100
+++ new/pylint-1.5.3/pylint/__pkginfo__.py 2016-01-11 10:51:17.000000000 +0100
@@ -23,11 +23,11 @@
modname = distname = 'pylint'
-numversion = (1, 5, 2)
+numversion = (1, 5, 3)
version = '.'.join([str(num) for num in numversion])
install_requires = [
- 'astroid>=1.4.1',
+ 'astroid>=1.4.1,<1.5.0',
'six',
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/base.py new/pylint-1.5.3/pylint/checkers/base.py
--- old/pylint-1.5.2/pylint/checkers/base.py 2015-12-20 14:33:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/base.py 2016-01-09 21:13:05.000000000 +0100
@@ -419,6 +419,8 @@
else:
args.add(name)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_nonlocal_and_global(self, node):
"""Check that a name is both nonlocal and global."""
def same_scope(current):
@@ -777,7 +779,7 @@
# * a yield (which are wrapped by a discard node in _ast XXX)
# warn W0106 if we have any underlying function call (we can't predict
# side effects), else pointless-statement
- if (isinstance(expr, (astroid.Yield, astroid.Call)) or
+ if (isinstance(expr, (astroid.Yield, astroid.Await, astroid.Call)) or
(isinstance(node.parent, astroid.TryExcept) and
node.parent.body == [node])):
return
@@ -871,6 +873,8 @@
self.stats[node.is_method() and 'method' or 'function'] += 1
self._check_dangerous_default(node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_dangerous_default(self, node):
# check for dangerous default values as arguments
is_iterable = lambda n: isinstance(n, (astroid.List,
@@ -1238,6 +1242,8 @@
if args is not None:
self._recursive_check_names(args, node)
+ visit_asyncfunctiondef = visit_functiondef
+
@check_messages('blacklisted-name', 'invalid-name')
def visit_global(self, node):
for name in node.names:
@@ -1389,6 +1395,8 @@
else:
self._check_docstring(ftype, node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_docstring(self, node_type, node, report_missing=True,
confidence=HIGH):
"""check the node has a non empty docstring"""
@@ -1860,6 +1868,7 @@
if node.op != 'not':
return
operand = node.operand
+
if isinstance(operand, astroid.UnaryOp) and operand.op == 'not':
self.add_message('unneeded-not', node=node,
args=(node.as_string(),
@@ -1872,6 +1881,12 @@
operator, right = operand.ops[0]
if operator not in self.reverse_op:
return
+
+ # Ignore __ne__ as function of __eq__
+ frame = node.frame()
+ if frame.name == '__ne__' and operator == '==':
+ return
+
suggestion = '%s %s %s' % (left.as_string(),
self.reverse_op[operator],
right.as_string())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/classes.py new/pylint-1.5.3/pylint/checkers/classes.py
--- old/pylint-1.5.2/pylint/checkers/classes.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/classes.py 2016-01-09 21:13:05.000000000 +0100
@@ -508,6 +508,8 @@
except astroid.NotFoundError:
pass
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_slots(self, node):
if '__slots__' not in node.locals:
return
@@ -1015,6 +1017,8 @@
if node.name in PYMETHODS:
self._check_unexpected_method_signature(node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_unexpected_method_signature(self, node):
expected_params = SPECIAL_METHODS_PARAMS[node.name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/design_analysis.py new/pylint-1.5.3/pylint/checkers/design_analysis.py
--- old/pylint-1.5.2/pylint/checkers/design_analysis.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/design_analysis.py 2016-01-09 21:13:05.000000000 +0100
@@ -254,6 +254,8 @@
# init statements counter
self._stmts = 1
+ visit_asyncfunctiondef = visit_functiondef
+
@check_messages('too-many-return-statements', 'too-many-branches',
'too-many-arguments', 'too-many-locals',
'too-many-statements')
@@ -274,6 +276,8 @@
self.add_message('too-many-statements', node=node,
args=(self._stmts, self.config.max_statements))
+ leave_asyncfunctiondef = leave_functiondef
+
def visit_return(self, _):
"""count number of returns"""
if not self._returns:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/imports.py new/pylint-1.5.3/pylint/checkers/imports.py
--- old/pylint-1.5.2/pylint/checkers/imports.py 2015-12-21 00:56:43.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/imports.py 2016-01-11 10:42:15.000000000 +0100
@@ -16,6 +16,7 @@
"""imports checkers for Python code"""
import collections
+from distutils import sysconfig
import os
import sys
@@ -23,7 +24,7 @@
import astroid
from astroid import are_exclusive
-from astroid.modutils import (EXT_LIB_DIR, get_module_part, is_standard_module,
+from astroid.modutils import (get_module_part, is_standard_module,
file_from_modpath)
from pylint.interfaces import IAstroidChecker
@@ -253,7 +254,6 @@
given file (report RP0402 must not be disabled)'}
),
)
- ext_lib_dir = os.path.normcase(os.path.abspath(EXT_LIB_DIR))
def __init__(self, linter=None):
BaseChecker.__init__(self, linter)
@@ -268,6 +268,29 @@
self._report_dependencies_graph),
)
+ self._site_packages = self._compute_site_packages()
+
+ @staticmethod
+ def _compute_site_packages():
+ def _normalized_path(path):
+ return os.path.normcase(os.path.abspath(path))
+
+ paths = set()
+ real_prefix = getattr(sys, 'real_prefix', None)
+ for prefix in filter(None, (real_prefix, sys.prefix)):
+ path = sysconfig.get_python_lib(prefix=prefix)
+ path = _normalized_path(path)
+ paths.add(path)
+
+ # Handle Debian's derivatives /usr/local.
+ if os.path.isfile("/etc/debian_version"):
+ for prefix in filter(None, (real_prefix, sys.prefix)):
+ libpython = os.path.join(prefix, "local", "lib",
+ "python" + sysconfig.get_python_version(),
+ "dist-packages")
+ paths.add(libpython)
+ return paths
+
def open(self):
"""called before visiting project (i.e set of modules)"""
self.linter.add_stats(dependencies={})
@@ -429,6 +452,12 @@
importedname = node.names[0][0].split('.')[0]
self._imports_stack.append((node, importedname))
+ @staticmethod
+ def _is_fallback_import(node, imports):
+ imports = [import_node for (import_node, _) in imports]
+ return any(astroid.are_exclusive(import_node, node)
+ for import_node in imports)
+
def _check_imports_order(self, node):
"""Checks imports of module `node` are grouped by category
@@ -437,11 +466,6 @@
extern_imports = []
local_imports = []
std_imports = []
- stdlib_paths = [sys.prefix, self.ext_lib_dir]
- real_prefix = getattr(sys, 'real_prefix', None)
- if real_prefix is not None:
- stdlib_paths.append(real_prefix)
-
for node, modname in self._imports_stack:
package = modname.split('.')[0]
if is_standard_module(modname):
@@ -449,6 +473,8 @@
wrong_import = extern_imports or local_imports
if not wrong_import:
continue
+ if self._is_fallback_import(node, wrong_import):
+ continue
self.add_message('wrong-import-order', node=node,
args=('standard import "%s"' % node.as_string(),
'"%s"' % wrong_import[0][0].as_string()))
@@ -456,13 +482,12 @@
try:
filename = file_from_modpath([package])
except ImportError:
- extern_imports.append((node, package))
continue
if not filename:
- extern_imports.append((node, package))
continue
+
filename = os.path.normcase(os.path.abspath(filename))
- if not any(filename.startswith(path) for path in stdlib_paths):
+ if not any(filename.startswith(path) for path in self._site_packages):
local_imports.append((node, package))
continue
extern_imports.append((node, package))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/newstyle.py new/pylint-1.5.3/pylint/checkers/newstyle.py
--- old/pylint-1.5.2/pylint/checkers/newstyle.py 2015-12-16 16:25:28.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/newstyle.py 2016-01-09 21:13:05.000000000 +0100
@@ -161,6 +161,8 @@
if name is not None:
self.add_message('bad-super-call', node=call, args=(name, ))
+ visit_asyncfunctiondef = visit_functiondef
+
def register(linter):
"""required method to auto register this checker """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/spelling.py new/pylint-1.5.3/pylint/checkers/spelling.py
--- old/pylint-1.5.2/pylint/checkers/spelling.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/spelling.py 2016-01-09 21:13:05.000000000 +0100
@@ -239,6 +239,8 @@
return
self._check_docstring(node)
+ visit_asyncfunctiondef = visit_functiondef
+
def _check_docstring(self, node):
"""check the node has any spelling errors"""
docstring = node.doc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/typecheck.py new/pylint-1.5.3/pylint/checkers/typecheck.py
--- old/pylint-1.5.2/pylint/checkers/typecheck.py 2015-12-21 00:56:58.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/typecheck.py 2016-01-11 10:42:15.000000000 +0100
@@ -468,6 +468,33 @@
args=node.func.as_string())
break
+ @staticmethod
+ def _no_context_variadic(node):
+ """Verify if the given call node has variadic nodes without context
+
+ This is a workaround for handling cases of nested call functions
+ which don't have the specific call context at hand.
+ Variadic arguments (variable positional arguments and variable
+ keyword arguments) are inferred, inherently wrong, by astroid
+ as a Tuple, respectively a Dict with empty elements.
+ This can lead pylint to believe that a function call receives
+ too few arguments.
+ """
+ for arg in node.args:
+ if not isinstance(arg, astroid.Starred):
+ continue
+
+ inferred = safe_infer(arg.value)
+ if isinstance(inferred, astroid.Tuple):
+ length = len(inferred.elts)
+ elif isinstance(inferred, astroid.Dict):
+ length = len(inferred.items)
+ else:
+ return False
+ if not length and isinstance(inferred.statement(), astroid.FunctionDef):
+ return True
+ return False
+
@check_messages(*(list(MSGS.keys())))
def visit_call(self, node):
"""check that called functions/methods are inferred to callable objects,
@@ -479,6 +506,7 @@
call_site = astroid.arguments.CallSite.from_call(node)
num_positional_args = len(call_site.positional_arguments)
keyword_args = list(call_site.keyword_arguments.keys())
+ no_context_variadic = self._no_context_variadic(node)
called = safe_infer(node.func)
# only function, generator and object defining __call__ are allowed
@@ -494,6 +522,7 @@
# Any error occurred during determining the function type, most of
# those errors are handled by different warnings.
return
+
num_positional_args += implicit_args
if called.args.args is None:
# Built-in functions have no argument information.
@@ -610,8 +639,10 @@
display_name = '<tuple>'
else:
display_name = repr(name)
- self.add_message('no-value-for-parameter', node=node,
- args=(display_name, callable_name))
+ # TODO(cpopa): this should be removed after PyCQA/astroid/issues/177
+ if not no_context_variadic:
+ self.add_message('no-value-for-parameter', node=node,
+ args=(display_name, callable_name))
for name in kwparams:
defval, assigned = kwparams[name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/checkers/variables.py new/pylint-1.5.3/pylint/checkers/variables.py
--- old/pylint-1.5.2/pylint/checkers/variables.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/checkers/variables.py 2016-01-11 10:42:15.000000000 +0100
@@ -622,6 +622,9 @@
continue
self.add_message('unused-variable', args=name, node=stmt)
+ visit_asyncfunctiondef = visit_functiondef
+ leave_asyncfunctiondef = leave_functiondef
+
@check_messages('global-variable-undefined', 'global-variable-not-assigned',
'global-statement', 'global-at-module-level',
'redefined-builtin')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/extensions/check_docs.py new/pylint-1.5.3/pylint/extensions/check_docs.py
--- old/pylint-1.5.2/pylint/extensions/check_docs.py 2015-12-12 13:20:29.000000000 +0100
+++ new/pylint-1.5.3/pylint/extensions/check_docs.py 2016-01-09 21:13:05.000000000 +0100
@@ -174,6 +174,7 @@
# Collect the function arguments.
expected_argument_names = [arg.name for arg in arguments_node.args]
+ expected_argument_names += [arg.name for arg in arguments_node.kwonlyargs]
not_needed_type_in_docstring = (
self.not_needed_param_in_docstring.copy())
@@ -183,7 +184,6 @@
if arguments_node.kwarg is not None:
expected_argument_names.append(arguments_node.kwarg)
not_needed_type_in_docstring.add(arguments_node.kwarg)
-
params_with_doc, params_with_type = self.match_param_docs(doc)
# Tolerate no parameter documentation at all.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/interfaces.py new/pylint-1.5.3/pylint/interfaces.py
--- old/pylint-1.5.2/pylint/interfaces.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/interfaces.py 2016-01-11 10:42:15.000000000 +0100
@@ -94,7 +94,7 @@
msg is the actual message
"""
- def display_results(self, layout):
+ def display_reports(self, layout):
"""display results encapsulated in the layout tree
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/lint.py new/pylint-1.5.3/pylint/lint.py
--- old/pylint-1.5.2/pylint/lint.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/lint.py 2016-01-11 10:42:15.000000000 +0100
@@ -964,6 +964,9 @@
if persistent run, pickle results for later comparison
"""
+ # Display whatever messages are left on the reporter.
+ self.reporter.display_messages(report_nodes.Section())
+
if self.file_state.base_name is not None:
# load previous results if any
previous_stats = config.load_results(self.file_state.base_name)
@@ -976,17 +979,12 @@
self.reporter.set_output(open(filename, 'w'))
else:
sect = report_nodes.Section()
- if self.config.reports or self.config.output_format == 'html':
- self.reporter.display_results(sect)
+ if self.config.reports:
+ self.reporter.display_reports(sect)
# save results if persistent run
if self.config.persistent:
config.save_results(self.stats, self.file_state.base_name)
else:
- if self.config.output_format == 'html':
- # No output will be emitted for the html
- # reporter if the file doesn't exist, so emit
- # the results here.
- self.reporter.display_results(report_nodes.Section())
self.reporter.on_close(self.stats, {})
# specific reports ########################################################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/__init__.py new/pylint-1.5.3/pylint/reporters/__init__.py
--- old/pylint-1.5.2/pylint/reporters/__init__.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/reporters/__init__.py 2016-01-11 10:42:15.000000000 +0100
@@ -91,17 +91,34 @@
"""write a line in the output buffer"""
print(self.encode(string), file=self.out)
- def display_results(self, layout):
+ def display_reports(self, layout):
"""display results encapsulated in the layout tree"""
self.section = 0
if hasattr(layout, 'report_id'):
layout.children[0].children[0].data += ' (%s)' % layout.report_id
self._display(layout)
+ def display_results(self, layout):
+ warnings.warn("display_results is deprecated, use display_reports instead. "
+ "The former will be removed in Pylint 2.0.",
+ DeprecationWarning)
+ self.display_reports(layout)
+
def _display(self, layout):
"""display the layout"""
raise NotImplementedError()
+ def display_messages(self, layout):
+ """Hook for displaying the messages of the reporter
+
+ This will be called whenever the underlying messages
+ needs to be displayed. For some reporters, it probably
+ doesn't make sense to display messages as soon as they
+ are available, so some mechanism of storing them could be used.
+ This method can be implemented to display them after they've
+ been aggregated.
+ """
+
# Event callbacks
def on_set_current_module(self, module, filepath):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/html.py new/pylint-1.5.3/pylint/reporters/html.py
--- old/pylint-1.5.2/pylint/reporters/html.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/reporters/html.py 2016-01-09 21:13:05.000000000 +0100
@@ -88,6 +88,9 @@
(in add_message, message is not displayed, just collected so it
can be displayed in an html table)
"""
+ HTMLWriter().format(layout, self.out)
+
+ def display_messages(self, layout):
if self.msgs:
# add stored messages to the layout
msgs = self.header
@@ -97,7 +100,7 @@
layout.append(sect)
sect.append(Table(cols=cols, children=msgs, rheaders=1))
self.msgs = []
- HTMLWriter().format(layout, self.out)
+ self._display(layout)
def register(linter):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/reporters/json.py new/pylint-1.5.3/pylint/reporters/json.py
--- old/pylint-1.5.2/pylint/reporters/json.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/reporters/json.py 2016-01-09 21:13:05.000000000 +0100
@@ -35,7 +35,6 @@
def handle_message(self, message):
"""Manage message of different type and in the context of path."""
-
self.messages.append({
'type': message.category,
'module': message.module,
@@ -48,11 +47,17 @@
'message': cgi.escape(message.msg or ''),
})
- def _display(self, layout):
+ def display_messages(self, layout):
"""Launch layouts display"""
if self.messages:
print(json.dumps(self.messages, indent=4), file=self.out)
+ def display_reports(self, _):
+ """Don't do nothing in this reporter."""
+
+ def _display(self, layout):
+ """Don't do nothing."""
+
def register(linter):
"""Register the reporter classes with the linter."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/extensions/test_check_docs.py new/pylint-1.5.3/pylint/test/extensions/test_check_docs.py
--- old/pylint-1.5.2/pylint/test/extensions/test_check_docs.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/extensions/test_check_docs.py 2016-01-09 21:13:05.000000000 +0100
@@ -4,6 +4,7 @@
from __future__ import division, print_function, absolute_import
import unittest
+import sys
import astroid
from astroid import test_utils
@@ -639,6 +640,27 @@
):
self._visit_methods_of_class(node)
+ @unittest.skipIf(sys.version_info[0] != 3, "Enabled on Python 3")
+ def test_kwonlyargs_are_taken_in_account(self):
+ node = test_utils.extract_node('''
+ def my_func(arg, *, kwonly, missing_kwonly):
+ """The docstring
+
+ :param int arg: The argument.
+ :param bool kwonly: A keyword-arg.
+ """
+ ''')
+ with self.assertAddsMessages(
+ Message(
+ msg_id='missing-param-doc',
+ node=node,
+ args=('missing_kwonly', )),
+ Message(
+ msg_id='missing-type-doc',
+ node=node,
+ args=('missing_kwonly', ))):
+ self.checker.visit_functiondef(node)
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/arguments.py new/pylint-1.5.3/pylint/test/functional/arguments.py
--- old/pylint-1.5.2/pylint/test/functional/arguments.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/arguments.py 2016-01-11 10:42:15.000000000 +0100
@@ -156,3 +156,12 @@
function_1_arg(5, 6, **{unknown: 1})
function_1_arg(**{object: 1})
function_1_arg(**{1: 2})
+
+# Don't emit no-value-for-parameter for this, since we
+# don't have the context at our disposal.
+def expect_three(one, two, three):
+ return one + two + three
+
+
+def no_context(*args):
+ expect_three(*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/async_functions.py new/pylint-1.5.3/pylint/test/functional/async_functions.py
--- old/pylint-1.5.2/pylint/test/functional/async_functions.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.py 2016-01-11 10:42:15.000000000 +0100
@@ -0,0 +1,65 @@
+"""Check that Python 3.5's async functions are properly analyzed by Pylint."""
+# pylint: disable=missing-docstring,invalid-name,too-few-public-methods
+# pylint: disable=using-constant-test
+
+async def next(): # [redefined-builtin]
+ pass
+
+async def some_function(arg1, arg2): # [unused-argument]
+ await arg1
+
+
+class OtherClass(object):
+
+ @staticmethod
+ def test():
+ return 42
+
+
+class Class(object):
+
+ async def some_method(self):
+ super(OtherClass, self).test() # [bad-super-call]
+
+
+# +1: [too-many-arguments,too-many-return-statements, too-many-branches]
+async def complex_function(this, function, has, more, arguments, than,
+ one, _, should, have):
+ if 1:
+ return this
+ elif 1:
+ return function
+ elif 1:
+ return has
+ elif 1:
+ return more
+ elif 1:
+ return arguments
+ elif 1:
+ return than
+ try:
+ return one
+ finally:
+ pass
+ if 2:
+ return should
+ while True:
+ pass
+ if 1:
+ return have
+ elif 2:
+ return function
+ elif 3:
+ pass
+
+
+# +1: [duplicate-argument-name,dangerous-default-value]
+async def func(a, a, b=[]):
+ return a, b
+
+
+# +1: [empty-docstring, blacklisted-name]
+async def foo():
+ ""
+
+
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/async_functions.rc new/pylint-1.5.3/pylint/test/functional/async_functions.rc
--- old/pylint-1.5.2/pylint/test/functional/async_functions.rc 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.rc 2016-01-09 21:13:05.000000000 +0100
@@ -0,0 +1,2 @@
+[testoptions]
+min_pyver=3.5
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/async_functions.txt new/pylint-1.5.3/pylint/test/functional/async_functions.txt
--- old/pylint-1.5.2/pylint/test/functional/async_functions.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/async_functions.txt 2016-01-09 21:13:05.000000000 +0100
@@ -0,0 +1,10 @@
+redefined-builtin:5:next:"Redefining built-in 'next'"
+unused-argument:8:some_function:"Unused argument 'arg2'"
+bad-super-call:22:Class.some_method:"Bad first argument 'OtherClass' given to super()"
+too-many-arguments:26:complex_function:Too many arguments (10/5)
+too-many-branches:26:complex_function:Too many branches (13/12)
+too-many-return-statements:26:complex_function:Too many return statements (10/6)
+dangerous-default-value:57:func:Dangerous default value [] as argument
+duplicate-argument-name:57:func:Duplicate argument name a in function definition
+blacklisted-name:62:foo:Black listed name "foo"
+empty-docstring:62:foo:Empty function docstring
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/unneeded_not.py new/pylint-1.5.3/pylint/test/functional/unneeded_not.py
--- old/pylint-1.5.2/pylint/test/functional/unneeded_not.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/unneeded_not.py 2016-01-11 10:42:15.000000000 +0100
@@ -1,6 +1,6 @@
"""Check exceeding negations in boolean expressions trigger warnings"""
-# pylint: disable=singleton-comparison, too-many-branches
+# pylint: disable=singleton-comparison, too-many-branches, too-few-public-methods
def unneeded_not():
"""This is not ok
@@ -49,3 +49,9 @@
pass
if not 2 <= someint < 3 < 4:
pass
+
+class Klass(object):
+ """This is also ok"""
+ def __ne__(self, other):
+ return not self == other
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/wrong_import_order.py new/pylint-1.5.3/pylint/test/functional/wrong_import_order.py
--- old/pylint-1.5.2/pylint/test/functional/wrong_import_order.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/wrong_import_order.py 2016-01-11 10:42:04.000000000 +0100
@@ -1,5 +1,9 @@
"""Checks import order rule"""
# pylint: disable=unused-import,relative-import,ungrouped-imports,import-error
+try:
+ from six.moves import configparser
+except ImportError:
+ import configparser
import six
import os.path # [wrong-import-order]
@@ -7,4 +11,5 @@
import sys # [wrong-import-order]
import datetime # [wrong-import-order]
import unused_import
+import totally_missing
import astroid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/wrong_import_order.txt new/pylint-1.5.3/pylint/test/functional/wrong_import_order.txt
--- old/pylint-1.5.2/pylint/test/functional/wrong_import_order.txt 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/wrong_import_order.txt 2016-01-11 10:40:13.000000000 +0100
@@ -1,3 +1,3 @@
-wrong-import-order:5::standard import "import os.path" comes before "import six"
-wrong-import-order:7::standard import "import sys" comes before "import six"
-wrong-import-order:8::standard import "import datetime" comes before "import six"
+wrong-import-order:9::standard import "import os.path" comes before "from six.moves import configparser"
+wrong-import-order:11::standard import "import sys" comes before "from six.moves import configparser"
+wrong-import-order:12::standard import "import datetime" comes before "from six.moves import configparser"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/functional/yield_inside_async_function.py new/pylint-1.5.3/pylint/test/functional/yield_inside_async_function.py
--- old/pylint-1.5.2/pylint/test/functional/yield_inside_async_function.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/functional/yield_inside_async_function.py 2016-01-09 21:13:05.000000000 +0100
@@ -1,5 +1,5 @@
"""Test that `yield` or `yield from` can't be used inside an async function."""
-# pylint: disable=missing-docstring
+# pylint: disable=missing-docstring, unused-variable
async def good_coro():
def _inner():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/regrtest_data/syntax_error.py new/pylint-1.5.3/pylint/test/regrtest_data/syntax_error.py
--- old/pylint-1.5.2/pylint/test/regrtest_data/syntax_error.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/regrtest_data/syntax_error.py 2016-01-09 21:13:05.000000000 +0100
@@ -0,0 +1 @@
+class A extends B {}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/test_functional.py new/pylint-1.5.3/pylint/test/test_functional.py
--- old/pylint-1.5.2/pylint/test/test_functional.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/test_functional.py 2016-01-09 21:13:05.000000000 +0100
@@ -88,7 +88,7 @@
def on_set_current_module(self, module, filepath):
self.messages = []
- def display_results(self, layout):
+ def display_reports(self, layout):
"""Ignore layouts."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/test_self.py new/pylint-1.5.3/pylint/test/test_self.py
--- old/pylint-1.5.2/pylint/test/test_self.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/test_self.py 2016-01-11 10:42:15.000000000 +0100
@@ -12,6 +12,7 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import contextlib
+import json
import re
import sys
import os
@@ -56,7 +57,7 @@
for rep in self._reporters:
rep.handle_message(msg)
- def display_results(self, layout):
+ def display_reports(self, layout):
pass
@property
@@ -296,6 +297,51 @@
expected_output=expected)
+ def test_json_report_when_file_has_syntax_error(self):
+ out = six.StringIO()
+ module = join(HERE, 'regrtest_data', 'syntax_error.py')
+ self._runtest([module], code=2, reporter=JSONReporter(out))
+ output = json.loads(out.getvalue())
+ self.assertIsInstance(output, list)
+ self.assertEqual(len(output), 1)
+ self.assertIsInstance(output[0], dict)
+ expected = {
+ "obj": "",
+ "column": 0,
+ "line": 1,
+ "type": "error",
+ "symbol": "syntax-error",
+ "module": "syntax_error"
+ }
+ message = output[0]
+ for key, value in expected.items():
+ self.assertIn(key, message)
+ self.assertEqual(message[key], value)
+ self.assertIn("invalid syntax", message["message"].lower())
+
+ def test_json_report_when_file_is_missing(self):
+ out = six.StringIO()
+ module = join(HERE, 'regrtest_data', 'totally_missing.py')
+ self._runtest([module], code=1, reporter=JSONReporter(out))
+ output = json.loads(out.getvalue())
+ self.assertIsInstance(output, list)
+ self.assertEqual(len(output), 1)
+ self.assertIsInstance(output[0], dict)
+ expected = {
+ "obj": "",
+ "column": 0,
+ "line": 1,
+ "type": "fatal",
+ "symbol": "fatal",
+ "module": module
+ }
+ message = output[0]
+ for key, value in expected.items():
+ self.assertIn(key, message)
+ self.assertEqual(message[key], value)
+ self.assertTrue(message['message'].startswith("No module named"))
+
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/unittest_reporters_json.py new/pylint-1.5.3/pylint/test/unittest_reporters_json.py
--- old/pylint-1.5.2/pylint/test/unittest_reporters_json.py 2015-12-10 16:29:47.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/unittest_reporters_json.py 2016-01-09 21:13:05.000000000 +0100
@@ -40,7 +40,8 @@
linter.add_message('line-too-long', line=1, args=(1, 2))
# we call this method because we didn't actually run the checkers
- reporter.display_results(None)
+ reporter.display_messages(None)
+
expected_result = [[
("column", 0),
("line", 1),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/test/unittest_reporting.py new/pylint-1.5.3/pylint/test/unittest_reporting.py
--- old/pylint-1.5.2/pylint/test/unittest_reporting.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/test/unittest_reporting.py 2016-01-11 10:42:15.000000000 +0100
@@ -123,7 +123,7 @@
linter.open()
linter.set_current_module('0123')
linter.add_message('lowercase-l-suffix', line=1)
- linter.reporter.display_results(Section())
+ linter.reporter.display_messages(Section())
self.assertEqual(output.getvalue().splitlines(), expected)
@unittest.expectedFailure
@@ -169,8 +169,26 @@
linter.add_message('bad-whitespace', line=1,
args=('Exactly one', 'required', 'before',
'comparison', 'a< 5: print "zero"'))
- linter.reporter.display_results(Section())
+ linter.reporter.display_reports(Section())
self.assertMultiLineEqual(output.getvalue(), expected)
+ def test_display_results_is_renamed(self):
+ class CustomReporter(TextReporter):
+ def _display(self, layout):
+ return None
+
+ reporter = CustomReporter()
+ if __pkginfo__.numversion >= (2, 0):
+ with self.assertRaises(AttributeError):
+ reporter.display_results
+ else:
+ with warnings.catch_warnings(record=True) as cm:
+ warnings.simplefilter("always")
+ reporter.display_results(Section())
+
+ self.assertEqual(len(cm), 1)
+ self.assertIsInstance(cm[0].message, DeprecationWarning)
+
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint/testutils.py new/pylint-1.5.3/pylint/testutils.py
--- old/pylint-1.5.2/pylint/testutils.py 2015-12-21 00:52:14.000000000 +0100
+++ new/pylint-1.5.3/pylint/testutils.py 2016-01-11 10:42:15.000000000 +0100
@@ -125,7 +125,7 @@
self.reset()
return result
- def display_results(self, layout):
+ def display_reports(self, layout):
"""ignore layouts"""
_display = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/PKG-INFO new/pylint-1.5.3/pylint.egg-info/PKG-INFO
--- old/pylint-1.5.2/pylint.egg-info/PKG-INFO 2015-12-21 01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/PKG-INFO 2016-01-11 11:07:49.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pylint
-Version: 1.5.2
+Version: 1.5.3
Summary: python code static checker
Home-page: http://www.pylint.org
Author: Logilab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/SOURCES.txt new/pylint-1.5.3/pylint.egg-info/SOURCES.txt
--- old/pylint-1.5.2/pylint.egg-info/SOURCES.txt 2015-12-21 01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/SOURCES.txt 2016-01-11 11:07:49.000000000 +0100
@@ -178,6 +178,9 @@
pylint/test/functional/assert_on_tuple.txt
pylint/test/functional/assigning_non_slot.py
pylint/test/functional/assigning_non_slot.txt
+pylint/test/functional/async_functions.py
+pylint/test/functional/async_functions.rc
+pylint/test/functional/async_functions.txt
pylint/test/functional/attribute_defined_outside_init.py
pylint/test/functional/attribute_defined_outside_init.txt
pylint/test/functional/bad_builtin.py
@@ -784,6 +787,7 @@
pylint/test/regrtest_data/precedence_test.py
pylint/test/regrtest_data/py3k_error_flag.py
pylint/test/regrtest_data/special_attr_scope_lookup_crash.py
+pylint/test/regrtest_data/syntax_error.py
pylint/test/regrtest_data/try_finally_disable_msg_crash.py
pylint/test/regrtest_data/wrong_import_position.py
pylint/test/regrtest_data/absimp/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pylint-1.5.2/pylint.egg-info/requires.txt new/pylint-1.5.3/pylint.egg-info/requires.txt
--- old/pylint-1.5.2/pylint.egg-info/requires.txt 2015-12-21 01:21:34.000000000 +0100
+++ new/pylint-1.5.3/pylint.egg-info/requires.txt 2016-01-11 11:07:49.000000000 +0100
@@ -1,3 +1,3 @@
-astroid>=1.4.1
+astroid>=1.4.1,<1.5.0
six
colorama
1
0
Hello community,
here is the log from the commit of package python3-pyflakes for openSUSE:Factory checked in at 2016-01-21 23:42:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pyflakes (Old)
and /work/SRC/openSUSE:Factory/.python3-pyflakes.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pyflakes"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pyflakes/python3-pyflakes.changes 2015-11-12 19:41:17.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-pyflakes.new/python3-pyflakes.changes 2016-01-22 01:06:58.000000000 +0100
@@ -1,0 +2,5 @@
+Wed Jan 13 09:55:01 UTC 2016 - toddrme2178(a)gmail.com
+
+- Implement update-alternatives.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pyflakes.spec ++++++
--- /var/tmp/diff_new_pack.ZynNXF/_old 2016-01-22 01:07:00.000000000 +0100
+++ /var/tmp/diff_new_pack.ZynNXF/_new 2016-01-22 01:07:00.000000000 +0100
@@ -34,6 +34,8 @@
Requires: python3
# the pkg_resources module is required at runtime
Requires: python3-setuptools
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
BuildArch: noarch
%description
@@ -49,12 +51,32 @@
%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
-mv %{buildroot}%{_bindir}/pyflakes %{buildroot}%{_bindir}/pyflakes-python%{py3_ver}
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+mv %{buildroot}%{_bindir}/pyflakes %{buildroot}%{_bindir}/pyflakes-%{py3_ver}
+ln -s -f %{_sysconfdir}/alternatives/pyflakes %{buildroot}%{_bindir}/pyflakes
+# create a dummy target for /etc/alternatives/pyflakes
+touch %{buildroot}%{_sysconfdir}/alternatives/pyflakes
+# Leave existing executable name in place
+ln -s -f %{_bindir}/pyflakes-%{py3_ver} %{buildroot}%{_bindir}/pyflakes-python%{py3_ver}
+
+%post
+"%_sbindir/update-alternatives" \
+ --install %{_bindir}/pyflakes pyflakes %{_bindir}/pyflakes-%{py3_ver} 30
+
+%postun
+if [ $1 -eq 0 ] ; then
+ "%_sbindir/update-alternatives" --remove pyflakes %{_bindir}/pyflakes-%{py3_ver}
+fi
%files
%defattr(-,root,root,-)
%doc LICENSE NEWS.txt README.rst AUTHORS
+%{_bindir}/pyflakes
+%{_bindir}/pyflakes-%{py3_ver}
%{_bindir}/pyflakes-python%{py3_ver}
+%ghost %{_sysconfdir}/alternatives/pyflakes
%{python3_sitelib}/pyflakes/
%{python3_sitelib}/pyflakes-%{version}-py*.egg-info
1
0
Hello community,
here is the log from the commit of package python3-flake8 for openSUSE:Factory checked in at 2016-01-21 23:42:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-flake8 (Old)
and /work/SRC/openSUSE:Factory/.python3-flake8.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-flake8"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-flake8/python3-flake8.changes 2015-01-10 23:05:33.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-flake8.new/python3-flake8.changes 2016-01-22 01:06:56.000000000 +0100
@@ -1,0 +2,38 @@
+Wed Jan 13 09:23:20 UTC 2016 - toddrme2178(a)gmail.com
+
+- Update to 2.5.1
+ * Bug Properly look for .flake8 in current working directory
+ * Bug Monkey-patch pep8.stdin_get_value to cache the actual value
+ in stdin. This helps plugins relying on the function when run
+ with multiprocessing.
+- Update to 2.5.0
+ * Improvement Raise cap on PyFlakes for Python 3.5 support
+ * Improvement Avoid deprecation warnings when loading extensions
+ * Improvement Separate logic to enable “off-by-default” extensions
+ * Bug Properly parse options to setuptools Flake8 command
+ * Bug Fix exceptions when output on stdout is truncated before
+ Flake8 finishes writing the output
+ * Bug Fix error on OS X where Flake8 can no longer acquire or
+ create new semaphores
+- Update to 2.4.1
+ * Bug Do not raise a SystemError unless there were errors in the
+ setuptools command.
+ * Bug Do not verify dependencies of extensions loaded via
+ entry-points.
+ * Improvement Blacklist versions of pep8 we know are broken
+- Update to 2.4.0
+ * Bug Print filenames when using multiprocessing and -q option.
+ * Bug Put upper cap on dependencies. The caps for 2.4.0 are:
+ > pep8 < 1.6 (Related to GitLab#35)
+ > mccabe < 0.4
+ > pyflakes < 0.9
+ * See also GitLab#32
+ * Bug Files excluded in a config file were not being excluded
+ when flake8 was run from a git hook.
+ * Improvement Print warnings for users who are providing
+ mutually exclusive options to flake8.
+ * Feature Allow git hook configuration to live in .git/config.
+ See the updated VCS hooks docs for more details.
+- Implement update-alternatives
+
+-------------------------------------------------------------------
Old:
----
flake8-2.3.0.tar.gz
New:
----
flake8-2.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-flake8.spec ++++++
--- /var/tmp/diff_new_pack.APNnbi/_old 2016-01-22 01:06:57.000000000 +0100
+++ /var/tmp/diff_new_pack.APNnbi/_new 2016-01-22 01:06:57.000000000 +0100
@@ -17,7 +17,7 @@
Name: python3-flake8
-Version: 2.3.0
+Version: 2.5.1
Release: 0
Summary: Modular source code checker: pep8, pyflakes and co
License: MIT
@@ -26,15 +26,17 @@
Source: http://pypi.python.org/packages/source/f/flake8/flake8-%{version}.tar.gz
BuildRequires: python3-devel
BuildRequires: python3-distribute
-# Test requirements:
BuildRequires: python3-mccabe >= 0.2
-BuildRequires: python3-mock
-BuildRequires: python3-nose
BuildRequires: python3-pep8 >= 1.4.3
BuildRequires: python3-pyflakes >= 0.6.1
+# Test requirements:
+BuildRequires: python3-mock
+BuildRequires: python3-nose
Requires: python3-mccabe >= 0.2
Requires: python3-pep8 >= 1.4.3
Requires: python3-pyflakes >= 0.6.1
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
@@ -55,8 +57,22 @@
%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
-# Avoid file conflict with Python-2.x version:
-mv %{buildroot}%{_bindir}/flake8{,-%{py3_ver}}
+
+# Prepare for update-alternatives usage
+mkdir -p %{buildroot}%{_sysconfdir}/alternatives
+mv %{buildroot}%{_bindir}/flake8 %{buildroot}%{_bindir}/flake8-%{py3_ver}
+ln -s -f %{_sysconfdir}/alternatives/flake8 %{buildroot}%{_bindir}/flake8
+# create a dummy target for /etc/alternatives/flake8
+touch %{buildroot}%{_sysconfdir}/alternatives/flake8
+
+%post
+"%_sbindir/update-alternatives" \
+ --install %{_bindir}/flake8 flake8 %{_bindir}/flake8-%{py3_ver} 30
+
+%postun
+if [ $1 -eq 0 ] ; then
+ "%_sbindir/update-alternatives" --remove flake8 %{_bindir}/flake8-%{py3_ver}
+fi
%check
python3 setup.py test
@@ -64,7 +80,9 @@
%files
%defattr(-,root,root,-)
%doc LICENSE README.rst
+%{_bindir}/flake8
%{_bindir}/flake8-%{py3_ver}
+%ghost %{_sysconfdir}/alternatives/flake8
%{python3_sitelib}/*
%changelog
++++++ flake8-2.3.0.tar.gz -> flake8-2.5.1.tar.gz ++++++
++++ 1811 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package virtualbox for openSUSE:Factory checked in at 2016-01-21 23:41:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virtualbox (Old)
and /work/SRC/openSUSE:Factory/.virtualbox.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "virtualbox"
Changes:
--------
--- /work/SRC/openSUSE:Factory/virtualbox/virtualbox.changes 2016-01-04 09:20:50.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.virtualbox.new/virtualbox.changes 2016-01-21 23:41:39.000000000 +0100
@@ -1,0 +2,27 @@
+Tue Jan 19 20:38:27 UTC 2016 - Larry.Finger(a)lwfinger.net
+
+- Version bump to 5.0.14 (released 2016-01-19i by Oracle)
+
+This is a maintenance release. The following items were fixed and/or added:
+
+ GUI: properly limit the number of VCPUs to the number of physical cores on Mac OS X (bug #15018)
+ Audio: fixed a bug which prevented loading a saved state of a saved guests with HDA emulation (5.0.12 regression; bug #14981)
+ Audio: don't crash if the backend is unable to initialize (bug #14960)
+ Audio: fixed audio capture on Mac OS X (bug #14386)
+ Storage: fixed a possible crash when attaching the same ISO image multiple times to the same VM (bug #14951)
+ BIOS: properly report if two floppy drives are attached
+ USB: fixed a problem with filters which would not capture the device under certain circumstances (5.0.10 regression; bug #15042)
+ ExtPack: black-list Extension Packs older than 4.3.30 due to incompatible changes not being properly handled in the past
+ Windows hosts: fixed a regression which caused robocopy to fail (bug #14958)
+ Linux hosts: properly create the /sbin/rcvboxdrv symbolic link (5.0.12 regression; bug #14989)
+ Mac OS X hosts: several fixes for USB on El Capitan (bug #14677)
+ Linux Additions: fixes for Linux 4.5 (bug #15032)
+
+
+
+-------------------------------------------------------------------
+Thu Jan 14 14:47:01 UTC 2016 - bwiedemann(a)suse.com
+
+- vboxadd script no more fails on remote_fs failure (bnc#908383)
+
+-------------------------------------------------------------------
Old:
----
VirtualBox-5.0.12-patched.tar.bz2
New:
----
VirtualBox-5.0.14-patched.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ virtualbox.spec ++++++
--- /var/tmp/diff_new_pack.QH35sZ/_old 2016-01-21 23:41:43.000000000 +0100
+++ /var/tmp/diff_new_pack.QH35sZ/_new 2016-01-21 23:41:43.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package virtualbox
#
-# 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 _vbox_instdir %{_libexecdir}/virtualbox
%define _udevrulesdir %{_libexecdir}/udev/rules.d
Name: virtualbox
-Version: 5.0.12
+Version: 5.0.14
Release: 0
Summary: VirtualBox is an Emulator
License: GPL-2.0+
++++++ UserManual.pdf ++++++
(binary differes)
++++++ VirtualBox-5.0.12-patched.tar.bz2 -> VirtualBox-5.0.14-patched.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/virtualbox/VirtualBox-5.0.12-patched.tar.bz2 /work/SRC/openSUSE:Factory/.virtualbox.new/VirtualBox-5.0.14-patched.tar.bz2 differ: char 11, line 1
++++++ vbox-vboxadd-init-script.diff ++++++
--- /var/tmp/diff_new_pack.QH35sZ/_old 2016-01-21 23:41:43.000000000 +0100
+++ /var/tmp/diff_new_pack.QH35sZ/_new 2016-01-21 23:41:43.000000000 +0100
@@ -1,16 +1,12 @@
-Index: src/VBox/Additions/linux/installer/vboxadd.sh
-===================================================================
---- src/VBox/Additions/linux/installer/vboxadd.sh.orig
-+++ src/VBox/Additions/linux/installer/vboxadd.sh
-@@ -21,11 +21,12 @@
- #
- ### BEGIN INIT INFO
+--- src/VBox/Additions/linux/installer/vboxadd.sh.orig 2015-12-18 17:17:03.000000000 +0100
++++ src/VBox/Additions/linux/installer/vboxadd.sh 2016-01-14 15:45:13.793994484 +0100
+@@ -23,9 +23,12 @@
# Provides: vboxadd
--# Required-Start:
--# Required-Stop:
+ # Required-Start:
+ # Required-Stop:
-# Default-Start: 2 3 4 5
-+# Required-Start: $remote_fs
-+# Required-Stop: $remote_fs
++# Should-Start: $remote_fs
++# Should-Stop: $remote_fs
+# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: VirtualBox Linux Additions kernel modules
@@ -18,7 +14,7 @@
### END INIT INFO
PATH=$PATH:/bin:/sbin:/usr/sbin
-@@ -224,12 +225,6 @@ do_vboxguest_non_udev()
+@@ -224,12 +227,6 @@
fail "Cannot create device $dev with major $maj and minor $min"
}
fi
@@ -31,7 +27,7 @@
if [ ! -c $userdev ]; then
maj=10
-@@ -240,12 +235,6 @@ do_vboxguest_non_udev()
+@@ -240,12 +237,6 @@
rmmod vboxguest 2>/dev/null
fail "Cannot create device $userdev with major $maj and minor $min"
}
@@ -44,7 +40,7 @@
fi
fi
}
-@@ -260,6 +249,13 @@ start()
+@@ -260,6 +251,13 @@
fi
test -n "$INSTALL_DIR" -a -n "$INSTALL_VER" ||
fail "Configuration file $config not complete"
@@ -58,7 +54,7 @@
uname -r | grep -q -E '^2\.6|^3|^4' 2>/dev/null &&
ps -A -o comm | grep -q '/*udevd$' 2>/dev/null ||
no_udev=1
-@@ -470,33 +466,8 @@ extra_setup()
+@@ -470,33 +468,8 @@
# setup_script
setup()
{
1
0
Hello community,
here is the log from the commit of package linuxrc for openSUSE:Factory checked in at 2016-01-21 23:41:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/linuxrc (Old)
and /work/SRC/openSUSE:Factory/.linuxrc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "linuxrc"
Changes:
--------
--- /work/SRC/openSUSE:Factory/linuxrc/linuxrc.changes 2015-12-01 09:17:25.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.linuxrc.new/linuxrc.changes 2016-01-21 23:41:34.000000000 +0100
@@ -1,0 +2,12 @@
+Tue Jan 19 09:00:14 UTC 2016 - snwint(a)suse.com
+
+- squashfs.ko might depend on lz4_decompress (bsc#962493)
+- 5.0.65
+
+-------------------------------------------------------------------
+Fri Jan 15 02:30:13 UTC 2016 - snwint(a)suse.com
+
+- Removed the prompt for portname when configuring LCS interfaces (bsc#956603)
+- 5.0.64
+
+-------------------------------------------------------------------
Old:
----
linuxrc-5.0.63.tar.xz
New:
----
linuxrc-5.0.65.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ linuxrc.spec ++++++
--- /var/tmp/diff_new_pack.eMsJdf/_old 2016-01-21 23:41:35.000000000 +0100
+++ /var/tmp/diff_new_pack.eMsJdf/_new 2016-01-21 23:41:35.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package linuxrc
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,7 +25,7 @@
Summary: SUSE Installation Program
License: GPL-3.0+
Group: System/Boot
-Version: 5.0.63
+Version: 5.0.65
Release: 0
Source: %{name}-%{version}.tar.xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ linuxrc-5.0.63.tar.xz -> linuxrc-5.0.65.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/VERSION new/linuxrc-5.0.65/VERSION
--- old/linuxrc-5.0.63/VERSION 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/VERSION 2016-01-19 09:57:06.000000000 +0100
@@ -1 +1 @@
-5.0.63
+5.0.65
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/changelog new/linuxrc-5.0.65/changelog
--- old/linuxrc-5.0.63/changelog 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/changelog 2016-01-19 09:57:06.000000000 +0100
@@ -1,3 +1,9 @@
+2016-01-19: 5.0.65
+ - squashfs.ko might depend on lz4_decompress (bsc #962493)
+
+2016-01-14: 5.0.64
+ - Removed the prompt for portname when configuring LCS interfaces (bsc #956603)
+
2015-11-23: 5.0.63
- adjust buffer size to sane value
- document new logging behavior
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/linuxrc.c new/linuxrc-5.0.65/linuxrc.c
--- old/linuxrc-5.0.63/linuxrc.c 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/linuxrc.c 2016-01-19 09:57:06.000000000 +0100
@@ -1559,6 +1559,9 @@
if(!insmod_done) {
insmod_done = 1;
lxrc_run("/sbin/insmod /modules/loop.ko max_loop=64");
+ if(util_check_exist("/modules/lz4_decompress.ko")) {
+ lxrc_run("/sbin/insmod /modules/lz4_decompress.ko");
+ }
}
strprintf(&mp, "/parts/mp_%04u", config.mountpoint.initrd_parts++);
mkdir(mp, 0755);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linuxrc-5.0.63/net.c new/linuxrc-5.0.65/net.c
--- old/linuxrc-5.0.63/net.c 2015-11-23 16:42:59.000000000 +0100
+++ new/linuxrc-5.0.65/net.c 2016-01-19 09:57:06.000000000 +0100
@@ -1552,9 +1552,6 @@
if((rc=net_s390_getrwchans_ex(hd))) return rc;
- IFNOTAUTO(config.hwp.portname)
- if((rc=dia_input2_chopspace("Enter the relative port number", &config.hwp.portname,9,0))) return rc;
-
}
break;
1
0
Hello community,
here is the log from the commit of package iproute2 for openSUSE:Factory checked in at 2016-01-21 23:41:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/iproute2 (Old)
and /work/SRC/openSUSE:Factory/.iproute2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "iproute2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/iproute2/iproute2-doc.changes 2015-09-24 07:15:58.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.iproute2.new/iproute2-doc.changes 2016-01-21 23:41:24.000000000 +0100
@@ -1,0 +2,34 @@
+Thu Jan 14 09:57:42 UTC 2016 - mkubecek(a)suse.cz
+
+- Update to new upstream release 4.4
+* tunnel code rework
+* add VRF support
+* add lightweight tunnel support
+* ila: Add support for ILA lwtunnels
+* f_bpf: allow for optional classid and add flags
+* m_bpf: don't require default opcode on ebpf actions
+* route: Add RTM_F_LOOKUP_TABLE flag and show table id
+* neigh: Add support for filtering dumps by master device
+* route: print addrgenmode stable_secret and fallback otherwise
+* tc: flower no need to specify the ethertype
+* geneve: add support for IPv6 link partners
+* neigh: device is optional for proxy entries
+* tunnel: determine tunnel address family from the tunnel type
+* addr: ignore EADDRNOTAVAIL errors during address flush operation
+* vxlan, gre: add support for collect metadata flag
+* route: ignore RTAX_HOPLIMIT of value -1
+* route: fix printing of locked entries
+* vxlan: Add support for remote checksum offload
+* documentation improvements
+- man-fix-documentation-references-in-manual-pages.patch:
+ replace Debian specific paths and package names with SUSE ones
+
+-------------------------------------------------------------------
+Wed Nov 11 15:21:05 UTC 2015 - jengelh(a)inai.de
+
+- Update to new upstream release 4.3
+* route: filter routes by family if so specified
+* ip: add `ip rule save/restore`
+* Manpage additions for tc filters
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/iproute2/iproute2.changes 2015-11-17 14:19:57.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.iproute2.new/iproute2.changes 2016-01-21 23:41:24.000000000 +0100
@@ -1,0 +2,26 @@
+Thu Jan 14 09:57:42 UTC 2016 - mkubecek(a)suse.cz
+
+- Update to new upstream release 4.4
+* tunnel code rework
+* add VRF support
+* add lightweight tunnel support
+* ila: Add support for ILA lwtunnels
+* f_bpf: allow for optional classid and add flags
+* m_bpf: don't require default opcode on ebpf actions
+* route: Add RTM_F_LOOKUP_TABLE flag and show table id
+* neigh: Add support for filtering dumps by master device
+* route: print addrgenmode stable_secret and fallback otherwise
+* tc: flower no need to specify the ethertype
+* geneve: add support for IPv6 link partners
+* neigh: device is optional for proxy entries
+* tunnel: determine tunnel address family from the tunnel type
+* addr: ignore EADDRNOTAVAIL errors during address flush operation
+* vxlan, gre: add support for collect metadata flag
+* route: ignore RTAX_HOPLIMIT of value -1
+* route: fix printing of locked entries
+* vxlan: Add support for remote checksum offload
+* documentation improvements
+- man-fix-documentation-references-in-manual-pages.patch:
+ replace Debian specific paths and package names with SUSE ones
+
+-------------------------------------------------------------------
Old:
----
iproute2-4.3.0.tar.sign
iproute2-4.3.0.tar.xz
New:
----
iproute2-4.4.0.tar.sign
iproute2-4.4.0.tar.xz
man-fix-documentation-references-in-manual-pages.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ iproute2-doc.spec ++++++
--- /var/tmp/diff_new_pack.udS4uT/_old 2016-01-21 23:41:26.000000000 +0100
+++ /var/tmp/diff_new_pack.udS4uT/_new 2016-01-21 23:41:26.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package iproute2-doc
#
-# 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,9 +17,9 @@
Name: iproute2-doc
-Version: 4.3
+Version: 4.4
Release: 0
-%define rversion 4.3.0
+%define rversion 4.4.0
Summary: Documentation to iproute2
License: GPL-2.0+
Group: Documentation/Other
++++++ iproute2.spec ++++++
--- /var/tmp/diff_new_pack.udS4uT/_old 2016-01-21 23:41:26.000000000 +0100
+++ /var/tmp/diff_new_pack.udS4uT/_new 2016-01-21 23:41:26.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package iproute2
#
-# 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,9 +17,9 @@
Name: iproute2
-Version: 4.3
+Version: 4.4
Release: 0
-%define rversion 4.3.0
+%define rversion 4.4.0
Summary: Linux network configuration utilities
License: GPL-2.0
Group: Productivity/Networking/Routing
@@ -37,6 +37,7 @@
Patch3: revert-pdf-creation.diff
Patch4: revert-bison-fix.diff
Patch5: kernel_xfrm6_raw.patch
+Patch6: man-fix-documentation-references-in-manual-pages.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: bison
BuildRequires: db-devel
@@ -78,7 +79,7 @@
%if 0%{?sles_version} == 11
%patch -P 4 -p1
%endif
-%patch -P 5 -p1
+%patch -P 5 -P 6 -p1
find . -name *.orig -delete
%build
++++++ iproute2-4.3.0.tar.xz -> iproute2-4.4.0.tar.xz ++++++
++++ 6182 lines of diff (skipped)
++++++ man-fix-documentation-references-in-manual-pages.patch ++++++
From: Michal Kubecek <mkubecek(a)suse.cz>
Date: Mon, 19 Oct 2015 14:11:00 +0200
Subject: man: fix documentation references in manual pages
Patch-mainline: Never, SUSE specific
References: bsc#949063
Some manual pages refer to Debian specific paths and package names.
Replace them by SUSE specific ones.
---
man/man8/lnstat.8 | 2 +-
man/man8/ss.8 | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/man/man8/lnstat.8 b/man/man8/lnstat.8
index acd5f4a20522..738acd545f6a 100644
--- a/man/man8/lnstat.8
+++ b/man/man8/lnstat.8
@@ -255,7 +255,7 @@ route cache removal, therefore always zero.
.SH SEE ALSO
.BR ip (8),
-and /usr/share/doc/iproute-doc/README.lnstat (package iproute-doc on Debian)
+and /usr/share/doc/packages/iproute2/README.lnstat
.br
.SH AUTHOR
lnstat was written by Harald Welte <laforge(a)gnumonks.org>.
diff --git a/man/man8/ss.8 b/man/man8/ss.8
index f4d5264f3036..2be5295d58f3 100644
--- a/man/man8/ss.8
+++ b/man/man8/ss.8
@@ -131,7 +131,7 @@ Read filter information from FILE.
Each line of FILE is interpreted like single command line option. If FILE is - stdin is used.
.TP
.B FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
-Please take a look at the official documentation (Debian package iproute-doc) for details regarding filters.
+Please take a look at the official documentation (package iproute2-doc) for details regarding filters.
.SH STATE-FILTER
@@ -186,7 +186,7 @@ Find all local processes connected to X server.
List all the tcp sockets in state FIN-WAIT-1 for our apache to network 193.233.7/24 and look at their timers.
.SH SEE ALSO
.BR ip (8),
-.BR /usr/share/doc/iproute-doc/ss.html " (package iproute�doc)",
+.BR /usr/share/doc/packages/iproute2/ss.* " (package iproute2-doc)"
.br
.BR RFC " 793 "
- https://tools.ietf.org/rfc/rfc793.txt (TCP states)
--
2.7.0
1
0
Hello community,
here is the log from the commit of package libcanberra for openSUSE:Factory checked in at 2016-01-21 23:41:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libcanberra (Old)
and /work/SRC/openSUSE:Factory/.libcanberra.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libcanberra"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libcanberra/libcanberra.changes 2016-01-05 09:41:00.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libcanberra.new/libcanberra.changes 2016-01-21 23:41:19.000000000 +0100
@@ -1,0 +2,8 @@
+Thu Jan 14 12:11:44 UTC 2016 - dimstar(a)opensuse.org
+
+- Do not require sound-theme-freedesktop by libcanberra0: if this
+ is wanted on a default install, it is up to the DE pattern to
+ recommend/require this - it is not needed for the libraries
+ proper functioning.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libcanberra.spec ++++++
--- /var/tmp/diff_new_pack.fCqrgM/_old 2016-01-21 23:41:20.000000000 +0100
+++ /var/tmp/diff_new_pack.fCqrgM/_new 2016-01-21 23:41:20.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libcanberra
#
-# 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
@@ -58,7 +58,6 @@
Summary: Portable sound event library
Group: System/Libraries
Requires: libpulse0 >= 0.9.11
-Requires: sound-theme-freedesktop
%description -n libcanberra0
libcanberra is an implementation of the XDG Sound Theme and Name
1
0
Hello community,
here is the log from the commit of package libproxy for openSUSE:Factory checked in at 2016-01-21 23:41:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libproxy (Old)
and /work/SRC/openSUSE:Factory/.libproxy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libproxy"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libproxy/libproxy-plugins.changes 2015-07-16 17:16:46.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libproxy.new/libproxy-plugins.changes 2016-01-21 23:41:14.000000000 +0100
@@ -1,0 +2,26 @@
+Tue Jan 12 16:46:37 UTC 2016 - dimstar(a)opensuse.org
+
+- Update to version 0.4.12:
+ + Move development to github.com/libproxy/libproxy.
+ + Fix fd leak in get_pac (Bug #185).
+ + Detect running MATE session (Bug #186, Part1).
+ + Fix linking of perl bindings to pthread (Bug #182).
+ + Correctly detect spidermonky (mozjs185) (Bug #188).
+ + Stop pxgsettings from segfaulting on exit (Bug #192).
+ + Fix test #10 (Bug #189).
+ + Fix build on Mac OS X (Bug #183).
+ + Add a generic KDE Config module (fix crashes of Qt5 based
+ apps) (issue#4).
+- Drop upstream fixed patches:
+ + libproxy-pxgsettings-crash.patch
+ + libproxy-no-libperl.patch
+ + libproxy-pxgsettings-signals.patch
+- Rename libproxy1-config-kde4 subpackage to libproxy-config-kde,
+ following upstreams introduction of the generic config loader.
+- Require libKF5ConfigCore5 from libproxy1-config-kde (we don't
+ really need the library, but kreadconfig5 in this package).
+- Replace libkde4-devel and libqt4-devel BuildRequires with
+ libKF5ConfigCore5: the new KDE config parser interacts directly
+ with kreadconfig5 and does not link to Qt.
+
+-------------------------------------------------------------------
libproxy.changes: same change
Old:
----
libproxy-0.4.11.tar.gz
libproxy-no-libperl.patch
libproxy-pxgsettings-crash.patch
libproxy-pxgsettings-signals.patch
New:
----
0.4.12.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libproxy-plugins.spec ++++++
--- /var/tmp/diff_new_pack.t96Dq4/_old 2016-01-21 23:41:16.000000000 +0100
+++ /var/tmp/diff_new_pack.t96Dq4/_new 2016-01-21 23:41:16.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libproxy-plugins
#
-# 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
@@ -31,7 +31,7 @@
Summary: Libproxy provides consistent proxy configuration to applications
License: GPL-2.0+ and LGPL-2.1+
Group: System/Libraries
-Version: 0.4.11
+Version: 0.4.12
Release: 0
# FIXME: verify if test suite works - 0.4.10 has weird behavior in some cases, where the internal server times out.
%if 0%{?build_snapshot}
@@ -39,16 +39,10 @@
%else
%define _sourcename %{_name}-%{version}
%endif
-Source: http://libproxy.googlecode.com/files/%{_name}-%{version}.tar.gz
+Source: https://github.com/libproxy/%{_name}/archive/%{version}.tar.gz
# Script used for automatic snapshot updates
Source98: update-from-svn.sh
Source99: baselibs.conf
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-crash.patch bnc#836576 dimstar(a)opensuse.org -- Fix crash when pxgsettings is closing, taken from svn.
-Patch0: libproxy-pxgsettings-crash.patch
-# PATCH-FIX-UPSTREAM libproxy-no-libperl.patch mls(a)suse.de -- Do not link against libperl. Submitted upstream.
-Patch1: libproxy-no-libperl.patch
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-signals.patch dimstar(a)opensuse.org -- Due to changes in glib, signals are not emited on settings that are not read AFTER connecting the signal
-Patch2: libproxy-pxgsettings-signals.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
BuildRequires: gcc-c++
@@ -74,8 +68,7 @@
BuildRequires: pkgconfig(webkitgtk-3.0)
%endif
BuildRequires: NetworkManager-devel
-BuildRequires: libkde4-devel
-BuildRequires: libqt4-devel
+BuildRequires: libKF5ConfigCore5
%if %{build_mozjs}
BuildRequires: pkgconfig(mozjs185)
%endif
@@ -188,10 +181,12 @@
A module to extend libproxy with capabilities to query GNOME about
proxy settings.
-%package -n libproxy1-config-kde4
+%package -n libproxy1-config-kde
Summary: Libproxy module for KDE configuration
Group: System/Libraries
Requires: libproxy1 = %{version}
+# We don't really need the library, but this package brings kreadconfig5
+Requires: libKF5ConfigCore5
%if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version}
Supplements: packageand(libproxy1:libkde4)
@@ -200,8 +195,10 @@
%endif
Provides: libproxy-kde = %{version}
Obsoletes: libproxy-kde < %{version}
+# A generic KDE config loader was introduced in 0.4.12
+Obsoletes: libproxy1-config-kde4 < 0.4.12
-%description -n libproxy1-config-kde4
+%description -n libproxy1-config-kde
A module to extend libproxy with capabilities to query KDE4 about proxy
settings.
@@ -314,9 +311,6 @@
%prep
%setup -q -n %{_sourcename}
-%patch0
-%patch1
-%patch2 -p1
mkdir build
%build
@@ -441,9 +435,9 @@
%if ! 0%{?windows}
-%files -n libproxy1-config-kde4
+%files -n libproxy1-config-kde
%defattr(-, root, root)
-%{_libdir}/libproxy-%{version}/modules/config_kde4.so
+%{_libdir}/libproxy-%{version}/modules/config_kde.so
%if 0%{?favor_gtk2}
++++++ libproxy.spec ++++++
--- /var/tmp/diff_new_pack.t96Dq4/_old 2016-01-21 23:41:16.000000000 +0100
+++ /var/tmp/diff_new_pack.t96Dq4/_new 2016-01-21 23:41:16.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libproxy
#
-# 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
@@ -31,7 +31,7 @@
Summary: Libproxy provides consistent proxy configuration to applications
License: GPL-2.0+ and LGPL-2.1+
Group: System/Libraries
-Version: 0.4.11
+Version: 0.4.12
Release: 0
# FIXME: verify if test suite works - 0.4.10 has weird behavior in some cases, where the internal server times out.
%if 0%{?build_snapshot}
@@ -39,16 +39,10 @@
%else
%define _sourcename %{_name}-%{version}
%endif
-Source: http://libproxy.googlecode.com/files/%{_name}-%{version}.tar.gz
+Source: https://github.com/libproxy/%{_name}/archive/%{version}.tar.gz
# Script used for automatic snapshot updates
Source98: update-from-svn.sh
Source99: baselibs.conf
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-crash.patch bnc#836576 dimstar(a)opensuse.org -- Fix crash when pxgsettings is closing, taken from svn.
-Patch0: libproxy-pxgsettings-crash.patch
-# PATCH-FIX-UPSTREAM libproxy-no-libperl.patch mls(a)suse.de -- Do not link against libperl. Submitted upstream.
-Patch1: libproxy-no-libperl.patch
-# PATCH-FIX-UPSTREAM libproxy-pxgsettings-signals.patch dimstar(a)opensuse.org -- Due to changes in glib, signals are not emited on settings that are not read AFTER connecting the signal
-Patch2: libproxy-pxgsettings-signals.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
BuildRequires: gcc-c++
@@ -74,8 +68,7 @@
BuildRequires: pkgconfig(webkitgtk-3.0)
%endif
BuildRequires: NetworkManager-devel
-BuildRequires: libkde4-devel
-BuildRequires: libqt4-devel
+BuildRequires: libKF5ConfigCore5
%if %{build_mozjs}
BuildRequires: pkgconfig(mozjs185)
%endif
@@ -188,10 +181,12 @@
A module to extend libproxy with capabilities to query GNOME about
proxy settings.
-%package -n libproxy1-config-kde4
+%package -n libproxy1-config-kde
Summary: Libproxy module for KDE configuration
Group: System/Libraries
Requires: libproxy1 = %{version}
+# We don't really need the library, but this package brings kreadconfig5
+Requires: libKF5ConfigCore5
%if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version}
Supplements: packageand(libproxy1:libkde4)
@@ -200,8 +195,10 @@
%endif
Provides: libproxy-kde = %{version}
Obsoletes: libproxy-kde < %{version}
+# A generic KDE config loader was introduced in 0.4.12
+Obsoletes: libproxy1-config-kde4 < 0.4.12
-%description -n libproxy1-config-kde4
+%description -n libproxy1-config-kde
A module to extend libproxy with capabilities to query KDE4 about proxy
settings.
@@ -314,9 +311,6 @@
%prep
%setup -q -n %{_sourcename}
-%patch0
-%patch1
-%patch2 -p1
mkdir build
%build
@@ -441,9 +435,9 @@
%if ! 0%{?windows}
-%files -n libproxy1-config-kde4
+%files -n libproxy1-config-kde
%defattr(-, root, root)
-%{_libdir}/libproxy-%{version}/modules/config_kde4.so
+%{_libdir}/libproxy-%{version}/modules/config_kde.so
%if 0%{?favor_gtk2}
++++++ libproxy-0.4.11.tar.gz -> 0.4.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/NEWS new/libproxy-0.4.12/NEWS
--- old/libproxy-0.4.11/NEWS 2012-11-30 23:31:17.000000000 +0100
+++ new/libproxy-0.4.12/NEWS 2016-01-12 17:41:07.000000000 +0100
@@ -1,3 +1,16 @@
+New in version 0.4.12
+==============================
+* Move development to github.com/libproxy/libproxy
+* Fix fd leak in get_pac (Bug #185)
+* Detect running MATE session (Bug #186, Part1).
+* Fix linking of perl bindings to pthread (Bug #182)
+* Correctly detect spidermonky (mozjs185) (Bug #188)
+* Stop pxgsettings from segfaulting on exit (Bug #192)
+* Fix test #10 (Bug #189)
+* Fix build on Mac OS X (Bug #183)
+* Add a generic KDE Config module (fix crashes of Qt5 based
+ apps) (issue#4)
+
New in version 0.4.11
==============================
* Build fixes with cmake 2.8.10+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/bindings/perl/src/CMakeLists.txt new/libproxy-0.4.12/bindings/perl/src/CMakeLists.txt
--- old/libproxy-0.4.11/bindings/perl/src/CMakeLists.txt 2010-11-24 21:50:12.000000000 +0100
+++ new/libproxy-0.4.12/bindings/perl/src/CMakeLists.txt 2016-01-12 17:41:07.000000000 +0100
@@ -12,7 +12,7 @@
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/perl/blib/arch/auto/Net)
add_library(PLlibproxy SHARED ${Libproxy_LIB_SRCS})
-target_link_libraries(PLlibproxy ${PERL_LIBRARY} libproxy)
+target_link_libraries(PLlibproxy libproxy pthread)
set_target_properties(PLlibproxy PROPERTIES OUTPUT_NAME "Libproxy")
set_target_properties(PLlibproxy PROPERTIES PREFIX "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/cmake/cpack.cmk new/libproxy-0.4.12/cmake/cpack.cmk
--- old/libproxy-0.4.11/cmake/cpack.cmk 2010-08-22 16:02:23.000000000 +0200
+++ new/libproxy-0.4.12/cmake/cpack.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -1,6 +1,6 @@
set(CPACK_IGNORE_FILES "CMakeCache.txt;install_manifest.txt;/Testing/;/Makefile$;\\\\.tar.gz$;\\\\.so[.0-9]*$;/build/;/_CPack_Packages/;/CMakeFiles/;/CVS/;/\\\\.svn/;/\\\\.git/;\\\\.swp$;\\\\.#;/#")
set(CPACK_SOURCE_IGNORE_FILES ${CPACK_IGNORE_FILES})
-set(CPACK_SOURCE_GENERATOR TGZ ZIP)
+set(CPACK_SOURCE_GENERATOR TXZ ZIP)
set(CPACK_SOURCE_TOPLEVEL_TAG "")
function(set_project_version MAJOR MINOR PATCH)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/CMakeLists.txt new/libproxy-0.4.12/libproxy/CMakeLists.txt
--- old/libproxy-0.4.11/libproxy/CMakeLists.txt 2012-11-30 23:31:35.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/CMakeLists.txt 2016-01-12 17:41:07.000000000 +0100
@@ -1,6 +1,6 @@
### Project info
project(libproxy)
-set_project_version(0 4 11)
+set_project_version(0 4 12)
### Add a global compilation stuff
if (WIN32)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/Libproxy-1.0.gir new/libproxy-0.4.12/libproxy/Libproxy-1.0.gir
--- old/libproxy-0.4.11/libproxy/Libproxy-1.0.gir 2011-08-11 18:12:37.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/Libproxy-1.0.gir 1970-01-01 01:00:00.000000000 +0100
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<!-- This file was automatically generated from C sources - DO NOT EDIT!
-To affect the contents of this file, edit the original C definitions,
-and/or use gtk-doc annotations. -->
-<repository version="1.2"
- xmlns="http://www.gtk.org/introspection/core/1.0"
- xmlns:c="http://www.gtk.org/introspection/c/1.0"
- xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <namespace name="Libproxy"
- version="1.0"
- shared-library="libproxy.so.1"
- c:identifier-prefixes="px"
- c:symbol-prefixes="px">
- <record name="ProxyFactory" c:type="pxProxyFactory" disguised="1">
- <method name="free" c:identifier="px_proxy_factory_free">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </method>
- <method name="get_proxies" c:identifier="px_proxy_factory_get_proxies">
- <doc xml:whitespace="preserve">Get which proxies to use for the specified URL.
-A NULL-terminated array of proxy strings is returned.
-If the first proxy fails, the second should be tried, etc...
-Don't forget to free the strings/array when you are done.
-If an unrecoverable error occurs, this function returns NULL.
-in a separate thread (is thread-safe). In most cases, the time
-required to complete this function call is simply the time required
-to read the configuration (i.e. from gconf, kconfig, etc).
-In the case of PAC, if no valid PAC is found in the cache (i.e.
-configuration has changed, cache is invalid, etc), the PAC file is
-downloaded and inserted into the cache. This is the most expensive
-operation as the PAC is retrieved over the network. Once a PAC exists
-in the cache, it is merely a javascript invocation to evaluate the PAC.
-One should note that DNS can be called from within a PAC during
-javascript invocation.
-In the case of WPAD, WPAD is used to automatically locate a PAC on the
-network. Currently, we only use DNS for this, but other methods may
-be implemented in the future. Once the PAC is located, normal PAC
-performance (described above) applies.
-The format of the returned proxy strings are as follows:
-- http://[username:password@]proxy:port
-- socks://[username:password@]proxy:port
-- socks5://[username:password@]proxy:port
-- socks4://[username:password@]proxy:port
-- <procotol>://[username:password@]proxy:port
-- direct://
-Please note that the username and password in the above URLs are optional
-and should be use to authenticate the connection if present.
-For SOCKS proxies, when the protocol version is specified (socks4:// or
-sock5://), it is expected that only this version is used. When only
-socks:// is set, the client MUST try SOCKS version 5 protocol and, on
-connection failure, fallback to SOCKS version 4.
-Other proxying protocols may exist. It is expected that the returned
-configuration scheme shall match the network service name of the
-proxy protocol or the service name of the protocol being proxied if the
-previous does not exist. As an example, on Mac OS X you can configure a
-RTSP streaming proxy. The expected returned configuration would be:
-- rtsp://[username:password@]proxy:port</doc>
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">A NULL-terminated array of proxy strings to use</doc>
- <array c:type="char**">
- <type name="utf8"/>
- </array>
- </return-value>
- <parameters>
- <parameter name="url" transfer-ownership="none">
- <doc xml:whitespace="preserve">The URL we are trying to reach</doc>
- <type name="utf8" c:type="char*"/>
- </parameter>
- </parameters>
- </method>
- </record>
- <function name="proxy_factory_new" c:identifier="px_proxy_factory_new">
- <doc xml:whitespace="preserve">Creates a new pxProxyFactory instance. This instance should be kept
-around as long as possible as it contains cached data to increase
-performance. Memory usage should be minimal (cache is small) and the
-cache lifespan is handled automatically.</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">A new pxProxyFactory instance or NULL on error</doc>
- <type name="ProxyFactory" c:type="pxProxyFactory*"/>
- </return-value>
- </function>
- </namespace>
-</repository>
Files old/libproxy-0.4.11/libproxy/Libproxy-1.0.typelib and new/libproxy-0.4.12/libproxy/Libproxy-1.0.typelib differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/libproxy.cmk new/libproxy-0.4.12/libproxy/cmake/libproxy.cmk
--- old/libproxy-0.4.11/libproxy/cmake/libproxy.cmk 2012-04-01 14:41:55.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/cmake/libproxy.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -19,6 +19,7 @@
PROPERTY COMPILE_DEFINITIONS MODULEDIR="${MODULEDIR}";BUILTIN_MODULES=${BUILTIN_MODULES})
# When changing the SOVERSION here remember to also bump the 'favorite proxy .so' in python bindings.
set_target_properties(libproxy PROPERTIES PREFIX "" VERSION 1.0.0 SOVERSION 1)
+set_target_properties(libproxy PROPERTIES INTERFACE_LINK_LIBRARIES "")
set_target_properties(libproxy PROPERTIES LINK_INTERFACE_LIBRARIES "")
install(TARGETS libproxy DESTINATION ${LIB_INSTALL_DIR})
install(FILES proxy.h DESTINATION ${INCLUDE_INSTALL_DIR})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules/config_kde.cmk new/libproxy-0.4.12/libproxy/cmake/modules/config_kde.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules/config_kde.cmk 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/cmake/modules/config_kde.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,6 @@
+find_program(KDE4_CONF kreadconfig)
+find_program(KF5_CONF kreadconfig5)
+
+if (KDE4_CONF OR KF5_CONF)
+ set(KDE_FOUND 1)
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules/config_kde4.cmk new/libproxy-0.4.12/libproxy/cmake/modules/config_kde4.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules/config_kde4.cmk 2010-07-29 14:14:59.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/cmake/modules/config_kde4.cmk 1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +0,0 @@
-if (NOT WIN32 AND NOT APPLE)
- option(WITH_KDE4 "Search for KDE4 package" ON)
- if (WITH_KDE4)
- find_package(KDE4)
- find_package(Qt4)
- if(KDE4_FOUND AND QT4_FOUND)
- include(KDE4Defaults)
- set(KDE4_FOUND 1)
- set(KDE4_LIBRARIES ${KDE4_KDECORE_LIBS} ${QT_LIBRARIES})
- include_directories(${KDE4_INCLUDES} ${QT_INCLUDES})
- link_directories(${KDE_LIB_DIR})
- string(REGEX REPLACE " *-fno-exceptions" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
- else()
- set(KDE4_FOUND 0)
- endif()
- else()
- set(KDE4_FOUND 0)
- endif()
-endif()
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules/pacrunner_mozjs.cmk new/libproxy-0.4.12/libproxy/cmake/modules/pacrunner_mozjs.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules/pacrunner_mozjs.cmk 2011-06-20 12:31:41.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/cmake/modules/pacrunner_mozjs.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -9,7 +9,7 @@
elseif(NOT APPLE)
option(WITH_MOZJS "Search for MOZJS package" ON)
if (WITH_MOZJS)
- pkg_search_module(MOZJS mozjs185>=1.8.5)
+ pkg_search_module(MOZJS mozjs185)
if(MOZJS_FOUND)
include_directories(${MOZJS_INCLUDE_DIRS})
link_directories(${MOZJS_LIBRARY_DIRS})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/cmake/modules.cmk new/libproxy-0.4.12/libproxy/cmake/modules.cmk
--- old/libproxy-0.4.11/libproxy/cmake/modules.cmk 2012-03-09 18:52:57.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/cmake/modules.cmk 2016-01-12 17:41:07.000000000 +0100
@@ -11,7 +11,7 @@
include(cmake/modules/config_envvar.cmk)
include(cmake/modules/config_sysconfig.cmk)
include(cmake/modules/config_gnome.cmk)
-include(cmake/modules/config_kde4.cmk)
+include(cmake/modules/config_kde.cmk)
include(cmake/modules/config_macosx.cmk)
include(cmake/modules/network_networkmanager.cmk)
include(cmake/modules/pacrunner_mozjs.cmk)
@@ -32,7 +32,7 @@
px_module(config_sysconfig "${SYSCONFIG_FOUND}" 1)
px_module(config_gnome "${GNOME2_FOUND}" 0)
px_module(config_gnome3 "${GNOME3_FOUND}" 0)
-px_module(config_kde4 "${KDE4_FOUND}" 0 ${KDE4_LIBRARIES})
+px_module(config_kde "${KDE_FOUND}" 0)
px_module(config_macosx "${SC_FOUND}" 1 ${SC_LIBRARIES} ${CF_LIBRARIES})
px_module(config_w32reg "${WIN32}" 1)
px_module(ignore_domain 1 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/libproxy-config.cmake.in new/libproxy-0.4.12/libproxy/libproxy-config.cmake.in
--- old/libproxy-0.4.11/libproxy/libproxy-config.cmake.in 2011-06-11 23:58:39.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/libproxy-config.cmake.in 1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-# - Try to find libproxy
-# Once done this will define
-#
-# LIBPROXY_FOUND - system has libproxy
-# LIBPROXY_INCLUDE_DIR - the libproxy include directory
-# LIBPROXY_LIBRARIES - libproxy library
-#
-# Copyright (c) 2010, Dominique Leuenberger
-#
-# Redistribution and use is allowed according the license terms
-# of libproxy, which this file is integrated part of.
-
-# Find proxy.h and the corresponding library (libproxy.so)
-FIND_PATH(LIBPROXY_INCLUDE_DIR proxy.h )
-FIND_LIBRARY(LIBPROXY_LIBRARIES NAMES proxy )
-
-# Set library version
-SET(LIBPROXY_VERSION @PROJECT_VERSION@)
-SET(LIBPROXY_VERSION_MAJOR @PROJECT_VERSION_MAJOR@)
-SET(LIBPROXY_VERSION_MINOR @PROJECT_VERSION_MINOR@)
-SET(LIBPROXY_VERSION_PATCH @PROJECT_VERSION_PATCH@)
-
-# Give output, should this be wished (this handles also QUIET and REQUIRED
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(libproxy DEFAULT_MSG LIBPROXY_LIBRARIES LIBPROXY_INCLUDE_DIR)
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_gnome3.cpp new/libproxy-0.4.12/libproxy/modules/config_gnome3.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_gnome3.cpp 2012-07-05 18:50:06.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_gnome3.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -288,7 +288,9 @@
static bool gnome_config_extension_test() {
return (getenv("GNOME_DESKTOP_SESSION_ID")
|| (getenv("DESKTOP_SESSION")
- && string(getenv("DESKTOP_SESSION")) == "gnome"));
+ && string(getenv("DESKTOP_SESSION")) == "gnome")
+ || (getenv("DESKTOP_SESSION")
+ && string(getenv("DESKTOP_SESSION")) == "mate"));
}
MM_MODULE_INIT(gnome_config_extension,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_kde.cpp new/libproxy-0.4.12/libproxy/modules/config_kde.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_kde.cpp 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/libproxy/modules/config_kde.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * libproxy - A library for proxy configuration
+ * Copyright (C) 2006 Nathaniel McCallum <nathaniel(a)natemccallum.com>
+ * Copyright (C) 2016 Fabian Vogt <fvogt(a)suse.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ******************************************************************************/
+
+#include <algorithm>
+#include <cstdlib>
+#include <cstdio>
+
+#include "../extension_config.hpp"
+using namespace libproxy;
+
+class kde_config_extension : public config_extension {
+public:
+ kde_config_extension()
+ {
+ try {
+ // Try the KF5 one first
+ command = "kreadconfig5";
+ kde_config_val("proxyType", "-1");
+ return; // Worked
+ }
+ catch(...) {}
+
+ try {
+ // The KDE4 one next
+ command = "kreadconfig";
+ kde_config_val("proxyType", "-1");
+ return; // Worked
+ }
+ catch(...) {}
+
+ // Neither worked, so throw in get_config
+ command = "";
+ }
+
+ vector<url> get_config(const url &dst) throw (runtime_error) {
+ // See constructor
+ if(command.empty())
+ throw runtime_error("Unable to read configuration");
+
+ vector<url> response;
+
+ string tmp, proxyType = kde_config_val("ProxyType", "-1");
+
+ // Just switch on the first byte, either a digit, '-' ("-1") or '\0'
+ switch(proxyType.c_str()[0])
+ {
+ case '1':
+ tmp = kde_config_val(dst.get_scheme() + "Proxy", "");
+ if(tmp.empty()) {
+ tmp = kde_config_val("httpProxy", "");
+ if(tmp.empty()) {
+ tmp = kde_config_val("socksProxy", "");
+ if(tmp.empty())
+ tmp = "direct://";
+ }
+ }
+
+ // KDE uses "http://127.0.0.1 8080" instead of "http://127.0.0.1:8080"
+ replace(tmp.begin(), tmp.end(), ' ', ':');
+
+ response.push_back(url(tmp));
+ break;
+
+ case '2':
+ tmp = "pac+" + kde_config_val("Proxy Config Script", "");
+ if (url::is_valid(tmp))
+ {
+ response.push_back(url(tmp));
+ break;
+ }
+ // else fallthrough
+
+ case '3':
+ response.push_back(url(string("wpad://")));
+ break;
+
+ case '4':
+ throw runtime_error("User config_envvar"); // We'll bypass this config plugin and let the envvar plugin wor
+
+ case '0':
+ default: // Not set or unknown/illegal
+ response.push_back(url("direct://"));
+ break;
+ }
+
+ return response;
+ }
+
+ string get_ignore(const url&) {
+ // See constructor
+ if(command.empty())
+ return "";
+
+ string proxyType = kde_config_val("ProxyType", "-1");
+ if(proxyType.c_str()[0] != '1')
+ return ""; // Not manual config
+
+ string prefix = kde_config_val("ReversedException", "false") != "false" ? "-" : "";
+ return prefix + kde_config_val("NoProxyFor", ""); // Already in the right format
+ }
+
+private:
+ // Neither key nor def must contain '
+ string kde_config_val(const string &key, const string &def) throw (runtime_error) {
+ string cmdline =
+ command + " --file kioslaverc --group 'Proxy Settings' --key '" + key + "' --default '" + def + "'";
+
+ FILE *pipe = popen(cmdline.c_str(), "r");
+ if (!pipe)
+ throw runtime_error("Unable to run command");
+
+ char buffer[128];
+ string result = "";
+ while (!feof(pipe)) {
+ if (fgets(buffer, 128, pipe) != NULL)
+ result += buffer; // TODO: If this throws bad_alloc, pipe is leaked
+ }
+
+ pclose(pipe);
+
+ // Trim newlines and whitespace at end
+ result.erase(result.begin() + (result.find_last_not_of(" \n\t")+1), result.end());
+ return result;
+ }
+
+ // Whether to use kreadconfig or kreadconfig5
+ string command;
+};
+
+MM_MODULE_INIT_EZ(kde_config_extension, getenv("KDE_FULL_SESSION"), NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_kde4.cpp new/libproxy-0.4.12/libproxy/modules/config_kde4.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_kde4.cpp 2012-07-05 18:50:06.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_kde4.cpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2006 Nathaniel McCallum <nathaniel(a)natemccallum.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-#include <KDE/KConfig>
-#include <KDE/KConfigGroup>
-#include <KDE/KGlobal>
-
-#include "../extension_config.hpp"
-using namespace libproxy;
-
-static void dummyMessageHandler(QtMsgType, const char *) {}
-
-class kde_config_extension : public config_extension {
-public:
- kde_config_extension() {
- /* The constructor of KConfig uses qAppName() which asumes a QApplication object to exist.
- If not, an error message is written. This error message and all others seems to be disabled for
- libraries, but to be sure, we can reemplace temporaly Qt's internal message handler by a
- dummy implementation. */
-
- // Open the config file
- QtMsgHandler oldHandler = qInstallMsgHandler(dummyMessageHandler);
- this->cfg = new KConfig("kioslaverc", KConfig::NoGlobals);
- this->grp = new KConfigGroup(this->cfg, "Proxy Settings");
- qInstallMsgHandler(oldHandler);
- }
-
- ~kde_config_extension() {
- delete this->grp;
- delete this->cfg;
- }
-
- vector<url> get_config(const url &dst) throw (runtime_error) {
- string tmp;
- QString prxy;
- vector<url> response;
-
- switch (this->grp->readEntry("ProxyType", 0)) {
- case 1: // Use a manual proxy
- prxy = this->grp->readEntry(QString(dst.get_scheme().c_str()) + "Proxy", "");
- if (prxy.isEmpty()) {
- prxy = this->grp->readEntry("httpProxy", "");
- if (prxy.isEmpty()) {
- prxy = this->grp->readEntry("socksProxy", "");
- if (prxy.isEmpty())
- prxy = "direct://";
- };
- };
- // The result of toLatin1() is undefined for non-Latin1 strings.
- // However, KDE saves this entry using IDN and percent-encoding, so no problem...
- response.push_back(string(prxy.toLatin1().data()));
- break;
- case 2: // Use a manual PAC
- // The result of toLatin1() is undefined for non-Latin1 strings.
- // However, KDE saves this entry using IDN and percent-encoding, so no problem...
- tmp = string(this->grp->readEntry("Proxy Config Script", "").toLatin1().data());
- if (url::is_valid("pac+" + tmp))
- response.push_back(url("pac+" + tmp));
- else
- response.push_back(string("wpad://"));
- break;
- case 3: // Use WPAD
- response.push_back(string("wpad://"));
- break;
- case 4: // Use envvar
- throw runtime_error("User config_envvar"); // We'll bypass this config plugin and let the envvar plugin work
- default:
- response.push_back(url("direct://"));
- break;
- };
-
- return response;
- }
-
- string get_ignore(const url& /*dst*/) {
- // Apply ignore list only for manual proxy configuration
- if (this->grp->readEntry("ProxyType", 0) == 1) {
- string prefix = this->grp->readEntry("ReversedException", false) ? "-" : "";
- QStringList list = this->grp->readEntry("NoProxyFor", QStringList());
- for (int i = 0; i < list.size(); ++i)
- list[i] = QUrl(list.at(i)).toEncoded();
- return prefix + string(list.join(",").toLatin1().data());
- }
- return "";
- }
-
-private:
- KConfig* cfg;
- KConfigGroup* grp;
-};
-
-MM_MODULE_INIT_EZ(kde_config_extension, getenv("KDE_FULL_SESSION"), NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_macosx.cpp new/libproxy-0.4.12/libproxy/modules/config_macosx.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_macosx.cpp 2012-07-05 18:50:06.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_macosx.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -114,7 +114,7 @@
class macosx_config_extension : public config_extension {
public:
- vector<url> get_config(const url &url) throw (runtime_error) {
+ vector<url> get_config(const url &the_url) throw (runtime_error) {
string tmp;
CFDictionaryRef proxies = SCDynamicStoreCopyProxies(NULL);
vector<url> response;
@@ -136,8 +136,8 @@
}
// http:// or socks:// (TODO: gopher:// and rtsp:// ???)
- else if ((protocol_url(proxies, toupper(url.get_scheme()), tmp) && url::is_valid(tmp)) ||
- (protocol_url(proxies, capitalize(url.get_scheme()), tmp) && url::is_valid(tmp)) ||
+ else if ((protocol_url(proxies, toupper(the_url.get_scheme()), tmp) && url::is_valid(tmp)) ||
+ (protocol_url(proxies, capitalize(the_url.get_scheme()), tmp) && url::is_valid(tmp)) ||
(protocol_url(proxies, toupper("http"), tmp) && url::is_valid(tmp)) ||
(protocol_url(proxies, toupper("socks"), tmp) && url::is_valid(tmp))) {
CFRelease(proxies);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/config_sysfile.cpp new/libproxy-0.4.12/libproxy/modules/config_sysfile.cpp
--- old/libproxy-0.4.11/libproxy/modules/config_sysfile.cpp 2011-08-11 17:34:08.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/config_sysfile.cpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2010 Dominique Leuenberger <dominique(a)leuenberger.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-#include <cstdlib>
-
-#include "../extension_config.hpp"
-// include "helper_configfile.hpp"
-using namespace libproxy;
-
-#define SYSCONFDIR /etc
-#define CFGFILE libproxy.conf
-
-class sysfile_config_extension : public config_extension {
-public:
- url get_config(url url) throw (runtime_error) {
- pxConfigFile pxCFG(abolute_cfgpath);
- switch case pxCFG.pxConfigType
- case PX_TYPE_AUTO:
- return "wpad://";
- break;
- case PX_TYPE_PAC:
- break;
- case_PX_TYPE_MANUAL:
- break;
- case PX_TYPE_NONE:
- return "direct://";
- break;
- }
-
-};
-
-
-bool function cfg_file_exists {
- struct stat stFileInfo;
- return ! stat("/etc/libproxy.conf", stFileInfo);
-}
-
-MM_MODULE_INIT_EZ(sysfile_config_extension, cfg_file_exists, NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/helper_configfile.cpp new/libproxy-0.4.12/libproxy/modules/helper_configfile.cpp
--- old/libproxy-0.4.11/libproxy/modules/helper_configfile.cpp 2010-09-26 15:53:35.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/helper_configfile.cpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2010 Dominique Leuenberger <dominique(a)leuenberger.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-Class pxConfigFile {
- public:
- enum pxConfigType {
- PX_TYPE_NONE,
- PX_TYPE_MANUAL,
- PX_TYPE_PAC,
- PX_TYPE_AUTO
- }
-
- void pxConfigFile() {
- // Initialize the class, read the config file and get the arrays filled
-
- }
-};
-
-pxConfigFile::pxConfigFile {
-
-}
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/helper_configfile.hpp new/libproxy-0.4.12/libproxy/modules/helper_configfile.hpp
--- old/libproxy-0.4.11/libproxy/modules/helper_configfile.hpp 2010-09-26 15:48:00.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/helper_configfile.hpp 1970-01-01 01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2010 Dominique Leuenberger <dominique(a)leuenberger.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-Class pxConfigFile {
- public:
- enum pxConfigType {
- PX_TYPE_NONE,
- PX_TYPE_MANUAL,
- PX_TYPE_PAC,
- PX_TYPE_AUTO
- }
-
- virtual void pxConfigFile() {
- // Initialize the class, read the config file and get the arrays filled
-
- }
-}
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.orig new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.orig
--- old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.orig 2012-07-05 20:24:05.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.orig 1970-01-01 01:00:00.000000000 +0100
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * libproxy - A library for proxy configuration
- * Copyright (C) 2006 Nathaniel McCallum <nathaniel(a)natemccallum.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-#include <cstdio>
-#include <cstring>
-
-#include "../extension_ignore.hpp"
-using namespace libproxy;
-
-static inline bool
-sockaddr_equals(const struct sockaddr *ip_a, const struct sockaddr *ip_b, const struct sockaddr *nm)
-{
- if (!ip_a || !ip_b) return false;
- if (ip_a->sa_family != ip_b->sa_family) return false;
- if (nm && ip_a->sa_family != nm->sa_family) return false;
-
- /* Setup the arrays */
- uint8_t bytes = 0, *a_data = NULL, *b_data = NULL, *nm_data = NULL;
- if (ip_a->sa_family == AF_INET)
- {
- bytes = 32 / 8;
- a_data = (uint8_t *) &((struct sockaddr_in *) ip_a)->sin_addr;
- b_data = (uint8_t *) &((struct sockaddr_in *) ip_b)->sin_addr;
- nm_data = nm ? (uint8_t *) &((struct sockaddr_in *) nm)->sin_addr : NULL;
- }
- else if (ip_a->sa_family == AF_INET6)
- {
- bytes = 128 / 8;
- a_data = (uint8_t *) &((struct sockaddr_in6 *) ip_a)->sin6_addr;
- b_data = (uint8_t *) &((struct sockaddr_in6 *) ip_b)->sin6_addr;
- nm_data = nm ? (uint8_t *) &((struct sockaddr_in6 *) nm)->sin6_addr : NULL;
- }
- else
- return false;
-
- for (int i=0 ; i < bytes ; i++)
- {
- if (nm && (a_data[i] & nm_data[i]) != (b_data[i] & nm_data[i]))
- return false;
- else if (!nm && (a_data[i] != b_data[i]))
- return false;
- }
- return true;
-}
-
-static inline sockaddr *
-sockaddr_from_string(string ip)
-{
- struct sockaddr *result = NULL;
-
- /* Try to parse */
- struct addrinfo *info = NULL;
- struct addrinfo flags;
- flags.ai_family = AF_UNSPEC;
- flags.ai_socktype = 0;
- flags.ai_protocol = 0;
- flags.ai_flags = AI_NUMERICHOST;
- if (getaddrinfo(ip.c_str(), NULL, &flags, &info) != 0 || !info) return result;
-
- /* Copy the results into our buffer */
- result = (sockaddr *) new char[info->ai_addrlen];
- if (!result) {
- freeaddrinfo(info);
- return result;
- }
- memcpy(result, info->ai_addr, info->ai_addrlen);
- freeaddrinfo(info);
- return result;
-}
-
-static inline sockaddr *
-sockaddr_from_cidr(sa_family_t af, uint8_t cidr)
-{
- /* IPv4 */
- if (af == AF_INET)
- {
- sockaddr_in *mask = new sockaddr_in;
- mask->sin_family = af;
- mask->sin_addr.s_addr = htonl(~0 << (32 - (cidr > 32 ? 32 : cidr)));
-
- return (struct sockaddr *) mask;
- }
-
- /* IPv6 */
- else if (af == AF_INET6)
- {
- sockaddr_in6 *mask = new sockaddr_in6;
- mask->sin6_family = af;
- for (uint8_t i=0 ; i < sizeof(mask->sin6_addr) ; i++)
- mask->sin6_addr.s6_addr[i] = ~0 << (8 - (8*i > cidr ? 0 : cidr-8*i < 8 ? cidr-8*i : 8) );
-
- return (sockaddr *) mask;
- }
-
- return NULL;
-}
-
-class ip_ignore_extension : public ignore_extension {
-public:
- virtual bool ignore(url& url, const string &ignore) {
- bool result = false;
- uint16_t port = 0;
- const struct sockaddr *dst_ip = url.get_ips(false) ? url.get_ips(false)[0] : NULL;
- struct sockaddr *ign_ip = NULL, *net_ip = NULL;
-
- /*
- * IPv4
- * IPv6
- */
- if ((ign_ip = sockaddr_from_string(ignore)))
- goto out;
-
- /*
- * IPv4/CIDR
- * IPv4/IPv4
- * IPv6/CIDR
- * IPv6/IPv6
- */
- if (ignore.find('/') != string::npos)
- {
- ign_ip = sockaddr_from_string(ignore.substr(0, ignore.find('/')));
-
- uint32_t cidr = 0;
- string mask = ignore.substr(ignore.find('/') + 1);
-
- if (mask.find('.') != string::npos)
- {
- /* A dotted netmask was used */
- net_ip = sockaddr_from_string(mask);
- }
- else
- {
- /* If CIDR notation was used, get the netmask */
- if (sscanf(mask.c_str(), "%d", &cidr) == 1)
- net_ip = sockaddr_from_cidr(ign_ip->sa_family, cidr);
- }
-
- if (ign_ip && net_ip && ign_ip->sa_family == net_ip->sa_family)
- goto out;
-
- delete ign_ip;
- delete net_ip;
- ign_ip = NULL;
- net_ip = NULL;
- }
-
- /*
- * IPv4:port
- * [IPv6]:port
- */
- if (ignore.rfind(':') != string::npos && sscanf(ignore.substr(ignore.rfind(':')).c_str(), ":%hu", &port) == 1 && port > 0)
- {
- ign_ip = sockaddr_from_string(ignore.substr(ignore.rfind(':')).c_str());
-
- /* Make sure this really is just a port and not just an IPv6 address */
- if (ign_ip && (ign_ip->sa_family != AF_INET6 || ignore[0] == '['))
- goto out;
-
- delete[] ign_ip;
- ign_ip = NULL;
- port = 0;
- }
-
- out:
- result = sockaddr_equals(dst_ip, ign_ip, net_ip);
- delete[] ign_ip;
- delete[] net_ip;
- return port != 0 ? (port == url.get_port() && result) : result;
- }
-};
-
-MM_MODULE_INIT_EZ(ip_ignore_extension, true, NULL, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.rej new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.rej
--- old/libproxy-0.4.11/libproxy/modules/ignore_ip.cpp.rej 2012-07-05 20:25:17.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/ignore_ip.cpp.rej 1970-01-01 01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
---- libproxy/modules/ignore_ip.cpp
-+++ libproxy/modules/ignore_ip.cpp
-@@ -90,7 +90,7 @@
- /* IPv4 */
- if (af == AF_INET)
- {
-- sockaddr_in *mask = new sockaddr_in;
-+ sockaddr_in *mask = (sockaddr_in*) new char[sizeof(sockaddr_in)];
- mask->sin_family = af;
- mask->sin_addr.s_addr = htonl(~0 << (32 - (cidr > 32 ? 32 : cidr)));
-
-@@ -100,7 +100,7 @@
- /* IPv6 */
- else if (af == AF_INET6)
- {
-- sockaddr_in6 *mask = new sockaddr_in6;
-+ sockaddr_in6 *mask = (sockaddr_in6*) new char[sizeof(sockaddr_in6)];
- mask->sin6_family = af;
- for (uint8_t i=0 ; i < sizeof(mask->sin6_addr) ; i++)
- mask->sin6_addr.s6_addr[i] = ~0 << (8 - (8*i > cidr ? 0 : cidr-8*i < 8 ? cidr-8*i : 8) );
-@@ -154,8 +154,8 @@
- if (ign_ip && net_ip && ign_ip->sa_family == net_ip->sa_family)
- goto out;
-
-- delete ign_ip;
-- delete net_ip;
-+ delete[] ign_ip;
-+ delete[] net_ip;
- ign_ip = NULL;
- net_ip = NULL;
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/modules/pxgsettings.cpp new/libproxy-0.4.12/libproxy/modules/pxgsettings.cpp
--- old/libproxy-0.4.11/libproxy/modules/pxgsettings.cpp 2011-05-02 19:46:03.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/modules/pxgsettings.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -143,23 +143,20 @@
g_io_add_watch(outchan, G_IO_ERR, err, NULL);
g_io_add_watch(outchan, G_IO_HUP, err, NULL);
- // Get GConf client
- GSettings* client;
+ // Get GSettings obkecy
+ GSettings* settings;
for (int i=1; i<argc; i++) {
- client = g_settings_new(argv[i]);
- gchar** keys = g_settings_list_keys(client);
- for (int j=0; keys[j]; on_value_change(client, keys[j++],argv[i] ));
- g_signal_connect(client, "changed::", (GCallback) on_value_change, argv[i]);
+ settings = g_settings_new(argv[i]);
+ gchar** keys = g_settings_list_keys(settings);
+ g_signal_connect(settings, "changed::", G_CALLBACK (on_value_change), argv[i]);
+ for (int j=0; keys[j]; on_value_change(settings, keys[j++],argv[i] ));
}
-
g_main_loop_run(loop);
// Cleanup
- while (G_IS_OBJECT(client)) {
- g_object_unref(client);
- }
+ g_object_unref(settings);
g_io_channel_shutdown(inchan, FALSE, NULL);
g_io_channel_shutdown(outchan, FALSE, NULL);
g_io_channel_unref(inchan);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/test/get-pac-test.cpp new/libproxy-0.4.12/libproxy/test/get-pac-test.cpp
--- old/libproxy-0.4.11/libproxy/test/get-pac-test.cpp 2012-10-16 19:52:03.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/test/get-pac-test.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -3,6 +3,8 @@
#include <sstream>
#include <string>
+#include <stdlib.h> // for abort()
+#include <errno.h> // for EINTR
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -58,7 +60,12 @@
void stop()
{
- assert (write(m_pipe[1], (void*)"q", 1) == 1);
+ int ret;
+ do
+ {
+ ret = write(m_pipe[1], (void*)"q", 1);
+ } while (errno == EINTR);
+ if (ret < 0) abort(); // We could not write to the pipe anymore
pthread_join (m_thread, NULL);
close(m_pipe[1]);
m_pipe[1] = -1;
@@ -188,7 +195,8 @@
ret = send(csock, (void*)basic, strlen(basic), 0);
assert(ret == strlen(basic));
ret = send(csock, (void*)buf, size, 0);
- assert(ret != size);
+ if (!(errno == EBADF))
+ abort(); // Test failed... the socket did not close on us
delete[] buf;
shutdown(csock, SHUT_RDWR);
close(ret);
@@ -235,21 +243,21 @@
server.start();
pac = basic.get_pac();
- assert(pac != NULL);
- assert(strlen(pac) == 10);
- assert(!strcmp("0123456789", pac));
- delete[] pac;
+ if (!(pac != NULL && strlen(pac) == 10 && !strcmp("0123456789", pac)))
+ return 1; // test failed, exit with error code
+ delete[] pac; // test succesful, cleanup
pac = truncated.get_pac();
- assert(pac == NULL);
+ if (pac != NULL)
+ return 2; // Test failed, exit with error code
pac = overflow.get_pac();
- assert(pac == NULL);
+ if (pac != NULL)
+ return 3; // Test failed, exit with error code
pac = chunked.get_pac();
- assert(pac != NULL);
- assert(strlen(pac) == 10);
- assert(!strcmp("0123456789", pac));
+ if (!(pac != NULL && strlen(pac) == 10 && !strcmp("0123456789", pac)))
+ return 4; // Test failed, exit with error code
delete[] pac;
server.stop();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy/url.cpp new/libproxy-0.4.12/libproxy/url.cpp
--- old/libproxy-0.4.11/libproxy/url.cpp 2012-10-16 19:52:03.000000000 +0200
+++ new/libproxy-0.4.12/libproxy/url.cpp 2016-01-12 17:41:07.000000000 +0100
@@ -403,6 +403,7 @@
buffer = NULL;
}
}
+ close(sock);
return buffer;
}
@@ -496,6 +497,7 @@
// Clean up
shutdown(sock, SHUT_RDWR);
+ close(sock);
return buffer;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/libproxy-CVE-2012-4504.patch new/libproxy-0.4.12/libproxy-CVE-2012-4504.patch
--- old/libproxy-0.4.11/libproxy-CVE-2012-4504.patch 2012-10-10 21:25:54.000000000 +0200
+++ new/libproxy-0.4.12/libproxy-CVE-2012-4504.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-Index: libproxy/url.cpp
-===================================================================
---- libproxy/url.cpp (revision 852)
-+++ libproxy/url.cpp (revision 853)
-@@ -474,9 +474,10 @@
- // Add this chunk to our content length,
- // ensuring that we aren't over our max size
- content_length += chunk_length;
-- if (content_length >= PAC_MAX_SIZE) break;
- }
-
-+ if (content_length >= PAC_MAX_SIZE) break;
-+
- while (recvd != content_length) {
- int r = recv(sock, buffer + recvd, content_length - recvd, 0);
- if (r < 0) break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/dotnet/Makefile new/libproxy-0.4.12/samples/dotnet/Makefile
--- old/libproxy-0.4.11/samples/dotnet/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/samples/dotnet/Makefile 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,8 @@
+
+all: proxy.exe
+
+proxy.exe: proxy.cs
+ gmcs -pkg:libproxy-sharp-1.0 proxy.cs
+
+clean:
+ rm proxy.exe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/libcurl/Makefile new/libproxy-0.4.12/samples/libcurl/Makefile
--- old/libproxy-0.4.11/samples/libcurl/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/samples/libcurl/Makefile 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,9 @@
+
+
+all: curlget
+
+curlget: curlget.c
+ gcc curlget.c -o curlget -Wall -lcurl -std=c99 $(shell pkg-config --libs libproxy-1.0)
+
+clean:
+ rm curlget
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/seed/main.js new/libproxy-0.4.12/samples/seed/main.js
--- old/libproxy-0.4.11/samples/seed/main.js 2011-08-11 18:10:14.000000000 +0200
+++ new/libproxy-0.4.12/samples/seed/main.js 1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-
-Libproxy = imports.gi.Libproxy;
-px = Libproxy.proxy_factory_new;
-
-print (Libproxy.get_proxies("http://www.google.com"));
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libproxy-0.4.11/samples/vala/Makefile new/libproxy-0.4.12/samples/vala/Makefile
--- old/libproxy-0.4.11/samples/vala/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/libproxy-0.4.12/samples/vala/Makefile 2016-01-12 17:41:07.000000000 +0100
@@ -0,0 +1,7 @@
+all: sample
+
+sample: sample.vala
+ valac --pkg libproxy-1.0 sample.vala
+
+clean:
+ rm sample
++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.t96Dq4/_old 2016-01-21 23:41:16.000000000 +0100
+++ /var/tmp/diff_new_pack.t96Dq4/_new 2016-01-21 23:41:16.000000000 +0100
@@ -3,7 +3,7 @@
# supplements "packageand(libproxy1-<targettype>:libproxy1-config-gnome)"
libproxy1-config-gnome3
supplements "packageand(libproxy1-<targettype>:libproxy1-config-gnome3)"
-libproxy1-config-kde4
+libproxy1-config-kde
supplements "packageand(libproxy1-<targettype>:libproxy1-config-kde)"
#libproxy1-pacrunner-mozjs
# supplements "packageand(libproxy1-<targettype>:libproxy1-config-mozjs)"
1
0
Hello community,
here is the log from the commit of package gtksourceview for openSUSE:Factory checked in at 2016-01-21 23:41:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gtksourceview (Old)
and /work/SRC/openSUSE:Factory/.gtksourceview.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gtksourceview"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gtksourceview/gtksourceview.changes 2015-10-25 19:10:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gtksourceview.new/gtksourceview.changes 2016-01-21 23:41:07.000000000 +0100
@@ -1,0 +2,7 @@
+Thu Jan 14 08:43:50 UTC 2016 - dimstar(a)opensuse.org
+
+- Update to version 3.18.2:
+ + A few bug fixes in *.lang files.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
gtksourceview-3.18.1.tar.xz
New:
----
gtksourceview-3.18.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gtksourceview.spec ++++++
--- /var/tmp/diff_new_pack.GmsyVt/_old 2016-01-21 23:41:09.000000000 +0100
+++ /var/tmp/diff_new_pack.GmsyVt/_new 2016-01-21 23:41:09.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gtksourceview
#
-# 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: gtksourceview
-Version: 3.18.1
+Version: 3.18.2
Release: 0
Summary: GTK+ Source Editing Widget
License: LGPL-2.1+
++++++ gtksourceview-3.18.1.tar.xz -> gtksourceview-3.18.2.tar.xz ++++++
++++ 23595 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package harfbuzz for openSUSE:Factory checked in at 2016-01-21 23:41:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/harfbuzz (Old)
and /work/SRC/openSUSE:Factory/.harfbuzz.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "harfbuzz"
Changes:
--------
--- /work/SRC/openSUSE:Factory/harfbuzz/harfbuzz.changes 2015-12-01 10:03:07.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.harfbuzz.new/harfbuzz.changes 2016-01-21 23:41:02.000000000 +0100
@@ -1,0 +2,13 @@
+Thu Jan 14 08:50:37 UTC 2016 - dimstar(a)opensuse.org
+
+- Update to version 1.1.3:
+ + Ported Indic shaper to Unicode 8.0 data.
+ + Universal Shaping Engine fixes.
+ + Speed up CoreText shaper when font fallback happens in
+ CoreText.
+ + Documentation improvements, thanks to Khaled Hosny.
+ + Very rough directwrite shaper for testing.
+ + Misc bug fixes.
+ + API extensions.
+
+-------------------------------------------------------------------
Old:
----
harfbuzz-1.1.2.tar.bz2
New:
----
harfbuzz-1.1.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ harfbuzz.spec ++++++
--- /var/tmp/diff_new_pack.VIo4BO/_old 2016-01-21 23:41:03.000000000 +0100
+++ /var/tmp/diff_new_pack.VIo4BO/_new 2016-01-21 23:41:03.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package harfbuzz
#
-# 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: harfbuzz
-Version: 1.1.2
+Version: 1.1.3
Release: 0
Summary: An OpenType text shaping engine
License: MIT
++++++ harfbuzz-1.1.2.tar.bz2 -> harfbuzz-1.1.3.tar.bz2 ++++++
++++ 29244 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package smartmontools for openSUSE:Factory checked in at 2016-01-21 23:40:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/smartmontools (Old)
and /work/SRC/openSUSE:Factory/.smartmontools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "smartmontools"
Changes:
--------
--- /work/SRC/openSUSE:Factory/smartmontools/smartmontools.changes 2015-03-16 09:37:58.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.smartmontools.new/smartmontools.changes 2016-01-21 23:40:55.000000000 +0100
@@ -1,0 +2,43 @@
+Thu Jan 14 09:06:55 UTC 2016 - meissner(a)suse.com
+
+- replaced keyring with 2015/2016 key.
+ pub rsa2048/0xDF0F1A49C4A4903A 2014-12-31 [verfällt: 2016-12-31]
+ Schl.-Fingerabdruck = F41F 01FC 0784 4958 4FFC CF57 DF0F 1A49 C4A4 903A
+ uid [ unbekannt] Smartmontools Signing Key (through 2016) <smartmontools-support(a)lists.sourceforge.net>
+
+
+-------------------------------------------------------------------
+Sun Jan 10 14:09:14 UTC 2016 - p.drouand(a)gmail.com
+
+- Update to version 6.0.4
+ * Device type ' *d usbprolific' for Prolific PL2571/277x USB bridges.
+ * SAT: Support for ATA registers returned in fixed format sense data.
+ * smartctl ' *i' and ' * *identify': ATA ACS *4 and SATA 3.2 enhancements.
+ * smartctl ' *l xerror': Support for logs with more than 255 pages.
+ * smartctl ' *l devstat': Prints ACS *3 DSN flags.
+ * smartctl ' *l devstat': Read via SMART command if GP log is not
+ available.
+ * smartctl ' *l scttempsts': Prints SCT SMART STATUS (ACS *4) and
+ vendor specific SCT bytes.
+ * configure option ' * *with *systemdenvfile=auto' as new default.
+ * configure options ' * *disable *drivedb', ' * *enable *savestates'
+ and ' * *enable *attributelog' are deprecated.
+ * Corresponding ' * *with **' options are enhanced accordingly.
+ * Configure option ' * *with *docdir' is deprecated.
+ * autoconf < 2.60 and automake < 1.10 are deprecated.
+ (all of the above still work but a warning is printed if used)
+ * HDD, SSD and USB additions to drive database.
+ * Linux: AACRAID fixes, SMART STATUS should work now.
+ * Linux: '/dev/megaraid_sas_ioctl_node' fd leak fix.
+ * Darwin: ' *S' command implemented, ' *l devstat' should work now.
+ * Cygwin: Compile fix.
+ * Windows: Device type ' *d aacraid' for AACRAID controllers.
+ * Windows: SAT autodetection based on IOCTL_STORAGE_QUERY_PROPERTY.
+ * Windows installer: Fix possible loss of user PATH environment variable.
+- Update smartmontools-drivedb.h to the latest version from the
+ upstream branch RELEASE_6_4_DRIVEDB.
+- Cleanup and remove conditional macros; the package doesn't build
+ for SLE anyway
+- Remove smartmontools-default-enabled.patch; not needed anymore
+
+-------------------------------------------------------------------
Old:
----
smartmontools-6.3.tar.gz
smartmontools-6.3.tar.gz.asc
smartmontools-default-enabled.patch
New:
----
smartmontools-6.4.tar.gz
smartmontools-6.4.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ smartmontools.spec ++++++
--- /var/tmp/diff_new_pack.lkCgSP/_old 2016-01-21 23:40:57.000000000 +0100
+++ /var/tmp/diff_new_pack.lkCgSP/_new 2016-01-21 23:40:57.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package smartmontools
#
-# 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,10 +17,10 @@
Name: smartmontools
-Version: 6.3
+Version: 6.4
Release: 0
Source: http://sourceforge.net/projects/smartmontools/files/smartmontools/%{version…
-Source1: %{name}-%{version}.tar.gz.asc
+Source1: http://sourceforge.net/projects/smartmontools/files/smartmontools/%{version…
Source2: smartmontools.sysconfig
Source3: %{name}-rpmlintrc
Source4: %{name}.keyring
@@ -30,32 +30,22 @@
Source6: smartmontools-drivedb_h-update.sh
# SOURCE-FEATURE-UPSTREAM smartmontools-drivedb.h bnc851276 sbrabec(a)suse.cz -- Update of drivedb.h. (Following line is handled by smartmontools-drivedb_h-update.sh.)
Source7: smartmontools-drivedb.h
-# PATCH-FEATURE-UNITEDLINUX smartmontools-default-enabled.patch sbrabec(a)suse.cz -- Enable smartd by default.
-Patch1: smartmontools-default-enabled.patch
# PATCH-FEATURE-OPENSUSE smartmontools-suse-default.patch sbrabec(a)suse.cz -- Define smart SUSE defaults.
Patch4: smartmontools-suse-default.patch
# PATCH-FIX-OPENSUSE smartmontools-var-lock-subsys.patch sbrabec(a)suse.cz -- Do not use unsupported /var/lock/subsys.
Patch10: smartmontools-var-lock-subsys.patch
# PATCH-FEATURE-OPENSUSE smartd-service-novm.patch crrodriguez(a)opensuse.org -- Do not start smartd in virtual environment.
Patch11: smartd-service-novm.patch
-PreReq: %fillup_prereq
-PreReq: %insserv_prereq
+Requires(pre): %fillup_prereq
# Needed by generate_smartd_opt:
-PreReq: coreutils
-%if 0%{?suse_version} <= 1100
-Requires: powersave
-%endif
+Requires(pre): coreutils
Url: http://smartmontools.sourceforge.net/
BuildRequires: gcc-c++
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} >= 1110
-BuildRequires: libselinux-devel
-%endif
-%if 0%{?suse_version} >= 1130
BuildRequires: libcap-ng-devel
+BuildRequires: libselinux-devel
BuildRequires: pkgconfig(systemd)
%{?systemd_requires}
-%endif
Summary: Monitor for SMART devices
License: GPL-2.0+
Group: Hardware/Other
@@ -78,7 +68,6 @@
cp -a %{SOURCE2} %{SOURCE5} .
# Following line is handled by smartmontools-drivedb_h-update.sh.
cp -a %{SOURCE7} drivedb.h.new
-%patch1
%patch4
%patch10 -p1
%patch11
@@ -105,19 +94,13 @@
fi
%build
-%if 0%{?suse_version} > 1000
export CFLAGS="%{optflags} $(getconf LFS_CFLAGS) -fPIE"
export CXXFLAGS="%{optflags} -fPIE $(getconf LFS_CFLAGS)"
export LDFLAGS="-pie"
-%endif
%configure\
--with-docdir=%{_defaultdocdir}/%{name}\
-%if 0%{?suse_version} >= 1110
--with-selinux\
-%endif
-%if 0%{?suse_version} >= 1130
--with-systemdsystemunitdir=%{_unitdir}\
-%endif
--enable-drivedb\
--enable-savestates\
--enable-attributelog
@@ -127,29 +110,17 @@
%install
%makeinstall
-%if 0%{?suse_version} <= 1100 || 0%{?suse_version} > 1140
mkdir -p %{buildroot}%{_prefix}/lib/smartmontools
-%endif
-%if 0%{?suse_version} <= 1100
-cp examplescripts/Example4 %{buildroot}%{_prefix}/lib/smartmontools/smart-notify
-chmod +x %{buildroot}%{_prefix}/lib/smartmontools/smart-notify
-%endif
mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
cp smartmontools.sysconfig %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.smartmontools
mkdir -p %{buildroot}%{_localstatedir}/lib/smartmontools
-%if 0%{?suse_version} > 1140
touch %{buildroot}%{_localstatedir}/lib/smartmontools/smartd_opts
install generate_smartd_opts %{buildroot}%{_prefix}/lib/smartmontools/
-%endif
cat >%{buildroot}%{_sysconfdir}/smart_drivedb.h <<EOF
/* smart_drivedb.h: Custom drive database. See also %{_datadir}/smartmontools/drivedb.h. */
EOF
-%if 0%{?suse_version} >= 1130
cp smartd.service %{buildroot}/%{_unitdir}
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rcsmartd
-%else
-ln -sf ../../etc/init.d/smartd %{buildroot}%{_sbindir}/rcsmartd
-%endif
# INSTALL file is intended only for packagers.
rm %{buildroot}%{_defaultdocdir}/%{name}/INSTALL
# Create empty ghost files for files created by update-smart-drivedb.
@@ -168,13 +139,8 @@
# Fail if there is no BRANCH= in update-smart-drivedb
grep -q "^BRANCH=\"[^\"]*\"$" update-smart-drivedb
-%clean
-rm -rf %{buildroot}
-
%pre
-%if 0%{?suse_version} >= 1130
%service_add_pre smartd.service
-%endif
# Intelligent drivedb.h update, part 1.
# Extract drivedb.h branch for installed version. We will need it in %%post.
if test -f %{_sbindir}/update-smart-drivedb ; then
@@ -194,20 +160,11 @@
%post
# First prepare sysconfig.
-%if 0%{?suse_version} >= 1130
%{fillup_only}
-%else
-%{fillup_and_insserv -f -y smartd}
-%endif
-
-%if 0%{?suse_version} > 1140
# Then generate initial %%{_localstatedir}/lib/smartmontools/smartd_opts needed by smartd.service.
SMARTD_SKIP_INIT=1 %{_prefix}/lib/smartmontools/generate_smartd_opts
-%endif
# No start by default here.. belongs to -presets packages
-%if 0%{?suse_version} >= 1130
%service_add_post smartd.service
-%endif
# Intelligent drivedb.h update, part 2.
# Now we have the old system drivedb.h.rpmsave and the new packaged drivedb.h.
if test -f %{_datadir}/smartmontools/drivedb.h.rpmsave ; then
@@ -245,19 +202,10 @@
rm -f %{_datadir}/smartmontools/drivedb.h.branch.rpmtemp
%preun
-%if 0%{?suse_version} >= 1130
%service_del_preun smartd.service
-%else
-%{stop_on_removal smartd}
-%endif
%postun
-%if 0%{?suse_version} >= 1130
%service_del_postun smartd.service
-%else
-%{restart_on_update smartd}
-%{insserv_cleanup}
-%endif
# Clean all attrlogs and state files.
if test "$1" = 0 ; then
rm -rf %{_localstatedir}/lib/smartmontools
@@ -273,17 +221,9 @@
%ghost %{_datadir}/smartmontools/drivedb.h.old
%doc %{_mandir}/man*/*
%dir %{_localstatedir}/lib/smartmontools
-%if 0%{?suse_version} > 1140
%ghost %{_localstatedir}/lib/smartmontools/smartd_opts
-%endif
-%if 0%{?suse_version} <= 1100 || 0%{?suse_version} > 1140
%{_prefix}/lib/smartmontools
-%endif
-%if 0%{?suse_version} >= 1130
%{_unitdir}/*
-%else
-%{_sysconfdir}/init.d/smartd
-%endif
%{_sbindir}/*
%config(noreplace) %{_sysconfdir}/smart_drivedb.h
%config(noreplace) %{_sysconfdir}/smartd.conf
++++++ smartmontools-6.3.tar.gz -> smartmontools-6.4.tar.gz ++++++
++++ 8998 lines of diff (skipped)
++++++ smartmontools-drivedb.h ++++++
++++ 1390 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/smartmontools/smartmontools-drivedb.h
++++ and /work/SRC/openSUSE:Factory/.smartmontools.new/smartmontools-drivedb.h
++++++ smartmontools.keyring ++++++
--- /var/tmp/diff_new_pack.lkCgSP/_old 2016-01-21 23:40:57.000000000 +0100
+++ /var/tmp/diff_new_pack.lkCgSP/_new 2016-01-21 23:40:57.000000000 +0100
@@ -1,23 +1,31 @@
-pub 2048R/8F6ED8AA 2012-12-31 [expires: 2014-12-31]
-uid Smartmontools Signing Key (through 2014) <smartmontools-support(a)lists.sourceforge.net>
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v2.0.19 (GNU/Linux)
-mQENBFDh0moBCACl0TpfTOv6AiwBhtr1khbyRYhf4uXvTA2W5Dy5/aTgfkkj7M85
-L6E/7MaVeR6Z3qGQTd5RtN61VKybe5x1CETk0LXelNyaE8In2HnrKCk7v01o4UM7
-1bjPa9iU87K5hGJQNAEL4TWVQs5OAkzi39els5CSaboPYtQ00vbuz1e93ZALLsOO
-bdpv9DPfvm27ZGt9kNX2SAYHlVMO/hqwI8kQ2uhw2vE20TNFUMzlajtzTYt+3YaA
-BBR+V5BFJSqSej4BMldopY4x1RS3EQyw5UxT/pOGAaI7PatKSExp80Zp9fJSjxUv
-qS41N1E5cOu19ol+CJoDDKPHh3TV2B5vWnkpABEBAAG0VlNtYXJ0bW9udG9vbHMg
-U2lnbmluZyBLZXkgKHRocm91Z2ggMjAxNCkgPHNtYXJ0bW9udG9vbHMtc3VwcG9y
-dEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+iQE+BBMBAgAoBQJQ4dJqAhsDBQkDwmcA
-BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCxnPjmj27YqkFtB/9rKXMzUjKY
-h6FmrCH7hLOCGYV1iTa805wOy/zx7fgIKqInkEjAvPhObyLgVe+F+kFI9M1sqmR0
-JlQd1Q4bc8o08QAt1F+jTO3P+Y+2EX9TnPbQBG2VDUhDds0Z/eqKCPpx0w+geAF6
-Kfjb7F1Ixizwzec2Fr4xn7682MCKJFu+j0QzWDJ7inkoE+V2Vc3fBeoqwH2h9xOD
-boMD4HE7hGvysyhb3xfMIR4g5B7W9RpGe/A9rLY3yvNToYx9QD35DoUXqfz1R9WG
-PGxauujeU9xVKQjhJkj6/yG0VOT42DIpqGWLArUmYmwAo71zcdhLVl863/7CtJmw
-iMCJYgIePjz3
-=/RUR
+mQENBFSkITsBCADgmG6B4Pj9ihLdcRwVjvQbbUId32X6znN5LDNF6mEa5BZRrJC5
+JsKeiFyLHzpFxuhfj9KxRhRxgZyTWLQge5E9FKZL6SHsYHaRrekDqRD61O/eGxeK
+1DO/qJogDn0vG9Pm2FXe4bR2lrjEV4BEDweIBHqCvSA0rPnV2X8x4nnXBoLuGw3g
+IlgYu6TZdfKlu22kKoUgcmqrtHH5zeuRoxDpInsD1l7hXkQnhMgxBsN9dANNvron
+Dfxg9o3+bLE8JbvI24RiY/hrdhtavd7DZ0zUj+zDZx7Di/Li4GpLIsEZ68hQzH92
+dvv/+Taa5GWgEUm2ZsO4Nv8devXNDB7Zo49FABEBAAG0VlNtYXJ0bW9udG9vbHMg
+U2lnbmluZyBLZXkgKHRocm91Z2ggMjAxNikgPHNtYXJ0bW9udG9vbHMtc3VwcG9y
+dEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+iQE+BBMBAgAoBQJUpCE7AhsDBQkDw7iA
+BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDfDxpJxKSQOkb6B/9ACI12l2/2
+YU6/BxJKaG1do9rWlLxppoq15mlHEi/GhohWFJOKX0U1RQsWkbG7f1WUGI0c0Tk3
+6ufjKOVeHdgXgIMWFxcrAvk/0szKPD4brODCRdpsuvdaXZLX/L0cDYxn2nUDuzok
+Vdh6I9/9gXrXxQmcWWzbSFkshjZBfhhgPtS5DqktQmoGHXZCza6wxlY8zxM0wwQn
+BPAx98Jf6vCijlZ2tV3uLLTnpCSkRwWxlppjsYM3AKHsmlYcfBPfiWzAq0SQz1A0
+18sLXKMnRI4inG5ZVq+bqvt2AyphkokKWnsE5DSw6gsjKlUNZoWB+jrva/sCP/Gw
+w2FAZ0spFTLdiQEcBBMBAgAGBQJUpCNYAAoJELGc+OaPbtiqc9cH/3r4MCQlngJK
+8OqBXQV3J8e2eThhXZgbmubU8nG9jIgyoQNlb4iFyQaDCELJR7Om+IWnRkp27nD+
+oMdZCyYY12gHUFpbdb9HEgTUjg4i62oJKRCBzi/quROGn4WNjkz369z3xhjotSeo
+cHDwuvkCMeSDqw6zVGSk1HVhtPA3pd/pFCUU28gqOgZJbzGlc/onO6U3DoV2eY2s
+kG7HBEqUGdpr5wWZM6nVoNXW7JuIIK9U0bMBssqqiKE62FyK5rC7J8rAkFjKduAr
+rTkrtR5+TUXe+QarxP+1RHO+GKdVA64YTVt7lo3bHK/HvByaEeT+iqhdVSpEG3qb
+fodLvc7FOWKJARwEEwECAAYFAlSkI3oACgkQL83sC9OvGquWSwf/V64ZqsbXDUjm
+fnrZ/GS5CsS0lipP8JAfHeWWsfBvmk3fN+XKZgdnayZJZpDABGGABggiX6oyovps
+ZlX7dwV3RDrT3ft5JPEa+7ixMKvFY5b05kft+embXKt+nBvHoXbaajGvQs4qY7KW
+94dRNjtIPXur3In7+jbgIcqaEw6ak9kMBvqb51UT32XDvsBBncOt/vWPj62+bUmJ
+eYSNv2mYPNv2CIMFsAG9DsDaDAdyuPFBv1UaOpTG5QLI80MHa4XXERmhhSGAU4Ap
+ZlB83p1Af810IeAte/kFDLHwssfimNkeHL0AIjkzSXYQk0hVhpJnsANkxoNN7oSM
+V7pCYnuC7Q==
+=M4lM
-----END PGP PUBLIC KEY BLOCK-----
1
0
Hello community,
here is the log from the commit of package ncurses for openSUSE:Factory checked in at 2016-01-21 23:40:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ncurses (Old)
and /work/SRC/openSUSE:Factory/.ncurses.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ncurses"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ncurses/ncurses.changes 2015-12-13 09:34:23.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ncurses.new/ncurses.changes 2016-01-21 23:40:32.000000000 +0100
@@ -1,0 +2,39 @@
+Fri Jan 8 10:09:31 UTC 2016 - werner(a)suse.de
+
+- Add ncurses patch 20160102
+ + modify ncurses c/C color test-screens to take advantage of wide
+ screens, reducing the number of lines used for 88- and 256-colors.
+ + minor refinement to check versus ncv to ignore two parameters of
+ SGR 38 and 48 when those come from color-capabilities.
+- Add ncurses patch 20151226
+ + add check in tic for use of bold, etc., video attributes in the
+ color capabilities, accounting whether the feature is listed in ncv.
+ + add check in tic for conflict between ritm, rmso, rmul versus sgr0.
+- Add ncurses patch 20151219
+ + add a paragraph to curs_getch.3x discussing key naming (discussion
+ with James Crippen).
+ + amend workaround for Solaris vs line-drawing to take the configure
+ check into account.
+ + add a configure check for wcwidth() versus the ncurses line-drawing
+ characters, to use in special-casing systems such as Solaris.
+- Add ncurses patch 20151212
+ + improve CF_XOPEN_CURSES macro used in test/configure, to define as
+ needed NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED
+ does not work. Also modified the test program to ensure that if
+ building with ncurses, that the cchar_t type is checked, since that
+ normally is since 20111030 ifdef'd depending on this test.
+ + improve 20121222 workaround for broken acs, letting Solaris "work"
+ in spite of its m.isconfigured wcwidth which marks all of the line
+ drawing characters as double-width.
+- Add ncurses patch 20151205
+ + update form_cursor.3x, form_post.3x, menu_attributes.3x to list
+ function names in NAME section (patch by Jason McIntyre).
+ + minor fixes to manpage NAME/SYNOPSIS sections to consistently use
+ rule that either all functions which are prototyped in SYNOPSIS are
+ listed in the NAME section, or the manual-page name is the sole item
+ listed in the NAME section. The latter is used to reduce clutter,
+ e.g., for the top-level library manual pages as well as for certain
+ feature-pages such as SP-funcs and threading (prompted by patches by
+ Jason McIntyre).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ncurses.spec ++++++
--- /var/tmp/diff_new_pack.Ze5tgC/_old 2016-01-21 23:40:33.000000000 +0100
+++ /var/tmp/diff_new_pack.Ze5tgC/_new 2016-01-21 23:40:33.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ncurses
#
-# 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
++++++ ncurses-6.0-patches.tar.bz2 ++++++
++++ 16739 lines of diff (skipped)
++++++ ncurses-6.0.dif ++++++
++++ 606 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/ncurses/ncurses-6.0.dif
++++ and /work/SRC/openSUSE:Factory/.ncurses.new/ncurses-6.0.dif
1
0
Hello community,
here is the log from the commit of package binutils for openSUSE:Factory checked in at 2016-01-21 23:40:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/binutils (Old)
and /work/SRC/openSUSE:Factory/.binutils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "binutils"
Changes:
--------
--- /work/SRC/openSUSE:Factory/binutils/binutils.changes 2015-10-19 22:14:00.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.binutils.new/binutils.changes 2016-01-21 23:40:24.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Jan 13 08:31:17 UTC 2016 - schwab(a)suse.de
+
+- gold-relocate-tls.patch: Fix internal error when applying TLSDESC
+ relocations with no TLS segment
+
+-------------------------------------------------------------------
cross-aarch64-binutils.changes: same change
cross-arm-binutils.changes: same change
cross-avr-binutils.changes: same change
cross-epiphany-binutils.changes: same change
cross-hppa-binutils.changes: same change
cross-hppa64-binutils.changes: same change
cross-i386-binutils.changes: same change
cross-ia64-binutils.changes: same change
cross-m68k-binutils.changes: same change
cross-mips-binutils.changes: same change
cross-ppc-binutils.changes: same change
cross-ppc64-binutils.changes: same change
cross-ppc64le-binutils.changes: same change
cross-rx-binutils.changes: same change
cross-s390-binutils.changes: same change
cross-s390x-binutils.changes: same change
cross-sparc-binutils.changes: same change
cross-sparc64-binutils.changes: same change
cross-spu-binutils.changes: same change
cross-x86_64-binutils.changes: same change
New:
----
gold-relocate-tls.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ binutils.spec ++++++
--- /var/tmp/diff_new_pack.ITklsP/_old 2016-01-21 23:40:29.000000000 +0100
+++ /var/tmp/diff_new_pack.ITklsP/_new 2016-01-21 23:40:29.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package binutils
#
-# 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
@@ -106,6 +106,7 @@
Patch32: gold-arm64-abi-pagesize.patch
Patch33: s390-troo-insn-type.patch
Patch34: aarch64-common-pagesize.patch
+Patch35: gold-relocate-tls.patch
Patch90: cross-avr-nesc-as.patch
Patch92: cross-avr-omit_section_dynsym.patch
Patch93: cross-avr-size.patch
@@ -190,6 +191,7 @@
%patch32 -p1
%patch33 -p1
%patch34 -p1
+%patch35 -p1
%if "%{TARGET}" == "avr"
cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
%patch90
cross-aarch64-binutils.spec: same change
cross-arm-binutils.spec: same change
cross-avr-binutils.spec: same change
cross-epiphany-binutils.spec: same change
cross-hppa-binutils.spec: same change
cross-hppa64-binutils.spec: same change
cross-i386-binutils.spec: same change
cross-ia64-binutils.spec: same change
cross-m68k-binutils.spec: same change
cross-mips-binutils.spec: same change
cross-ppc-binutils.spec: same change
cross-ppc64-binutils.spec: same change
cross-ppc64le-binutils.spec: same change
cross-rx-binutils.spec: same change
cross-s390-binutils.spec: same change
cross-s390x-binutils.spec: same change
cross-sparc-binutils.spec: same change
cross-sparc64-binutils.spec: same change
cross-spu-binutils.spec: same change
cross-x86_64-binutils.spec: same change
++++++ gold-relocate-tls.patch ++++++
>From d21f123b0ead1806416cf0dafae12bec4cca8920 Mon Sep 17 00:00:00 2001
From: Cary Coutant <ccoutant(a)gmail.com>
Date: Mon, 11 Jan 2016 23:57:44 -0800
Subject: [PATCH] Fix internal error when applying TLSDESC relocations with no
TLS segment.
gold/
PR gold/19353
* aarch64.cc (Target_aarch64::relocate_tls): Don't insist that
we have a TLS segment for GD-to-IE optimization.
* i386.cc (Target_i386::tls_gd_to_ie): Remove tls_segment parameter.
Adjust all calls.
(Target_i386::tls_desc_gd_to_ie): Likewise.
(Target_i386::relocate_tls): Don't insist that we have a TLS segment
for TLSDESC GD-to-IE optimizations.
* x86_64.cc (Target_x86_64::tls_gd_to_ie): Remove tls_segment parameter.
Adjust all calls.
(Target_x86_64::tls_desc_gd_to_ie): Likewise.
(Target_x86_64::relocate_tls): Don't insist that we have a TLS segment
for TLSDESC GD-to-IE optimizations.
---
gold/ChangeLog | 16 ++++++++++++++++
gold/aarch64.cc | 6 ------
gold/i386.cc | 14 ++------------
gold/x86_64.cc | 14 ++------------
4 files changed, 20 insertions(+), 30 deletions(-)
Index: binutils-2.25.0/gold/aarch64.cc
===================================================================
--- binutils-2.25.0.orig/gold/aarch64.cc
+++ binutils-2.25.0/gold/aarch64.cc
@@ -3689,12 +3689,6 @@ Target_aarch64<size, big_endian>::Reloca
}
if (tlsopt == tls::TLSOPT_TO_IE)
{
- if (tls_segment == NULL)
- {
- gold_assert(parameters->errors()->error_count() > 0
- || issue_undefined_symbol_error(gsym));
- return aarch64_reloc_funcs::STATUS_BAD_RELOC;
- }
return tls_desc_gd_to_ie(relinfo, target, rela, r_type,
view, psymval, got_entry_address,
address);
Index: binutils-2.25.0/gold/i386.cc
===================================================================
--- binutils-2.25.0.orig/gold/i386.cc
+++ binutils-2.25.0/gold/i386.cc
@@ -654,7 +654,6 @@ class Target_i386 : public Sized_target<
// Do a TLS General-Dynamic to Initial-Exec transition.
inline void
tls_gd_to_ie(const Relocate_info<32, false>*, size_t relnum,
- Output_segment* tls_segment,
const elfcpp::Rel<32, false>&, unsigned int r_type,
elfcpp::Elf_types<32>::Elf_Addr value,
unsigned char* view,
@@ -673,7 +672,6 @@ class Target_i386 : public Sized_target<
// transition.
inline void
tls_desc_gd_to_ie(const Relocate_info<32, false>*, size_t relnum,
- Output_segment* tls_segment,
const elfcpp::Rel<32, false>&, unsigned int r_type,
elfcpp::Elf_types<32>::Elf_Addr value,
unsigned char* view,
@@ -2944,7 +2942,7 @@ Target_i386::Relocate::relocate_tls(cons
}
if (optimized_type == tls::TLSOPT_TO_IE)
{
- this->tls_gd_to_ie(relinfo, relnum, tls_segment, rel, r_type,
+ this->tls_gd_to_ie(relinfo, relnum, rel, r_type,
got_offset, view, view_size);
break;
}
@@ -3006,13 +3004,7 @@ Target_i386::Relocate::relocate_tls(cons
}
if (optimized_type == tls::TLSOPT_TO_IE)
{
- if (tls_segment == NULL)
- {
- gold_assert(parameters->errors()->error_count() > 0
- || issue_undefined_symbol_error(gsym));
- return;
- }
- this->tls_desc_gd_to_ie(relinfo, relnum, tls_segment, rel, r_type,
+ this->tls_desc_gd_to_ie(relinfo, relnum, rel, r_type,
got_offset, view, view_size);
break;
}
@@ -3244,7 +3236,6 @@ Target_i386::Relocate::tls_gd_to_le(cons
inline void
Target_i386::Relocate::tls_gd_to_ie(const Relocate_info<32, false>* relinfo,
size_t relnum,
- Output_segment*,
const elfcpp::Rel<32, false>& rel,
unsigned int,
elfcpp::Elf_types<32>::Elf_Addr value,
@@ -3350,7 +3341,6 @@ inline void
Target_i386::Relocate::tls_desc_gd_to_ie(
const Relocate_info<32, false>* relinfo,
size_t relnum,
- Output_segment*,
const elfcpp::Rel<32, false>& rel,
unsigned int r_type,
elfcpp::Elf_types<32>::Elf_Addr value,
Index: binutils-2.25.0/gold/x86_64.cc
===================================================================
--- binutils-2.25.0.orig/gold/x86_64.cc
+++ binutils-2.25.0/gold/x86_64.cc
@@ -798,7 +798,6 @@ class Target_x86_64 : public Sized_targe
// Do a TLS General-Dynamic to Initial-Exec transition.
inline void
tls_gd_to_ie(const Relocate_info<size, false>*, size_t relnum,
- Output_segment* tls_segment,
const elfcpp::Rela<size, false>&, unsigned int r_type,
typename elfcpp::Elf_types<size>::Elf_Addr value,
unsigned char* view,
@@ -817,7 +816,6 @@ class Target_x86_64 : public Sized_targe
// Do a TLSDESC-style General-Dynamic to Initial-Exec transition.
inline void
tls_desc_gd_to_ie(const Relocate_info<size, false>*, size_t relnum,
- Output_segment* tls_segment,
const elfcpp::Rela<size, false>&, unsigned int r_type,
typename elfcpp::Elf_types<size>::Elf_Addr value,
unsigned char* view,
@@ -3613,7 +3611,7 @@ Target_x86_64<size>::Relocate::relocate_
if (optimized_type == tls::TLSOPT_TO_IE)
{
value = target->got_plt_section()->address() + got_offset;
- this->tls_gd_to_ie(relinfo, relnum, tls_segment, rela, r_type,
+ this->tls_gd_to_ie(relinfo, relnum, rela, r_type,
value, view, address, view_size);
break;
}
@@ -3680,14 +3678,8 @@ Target_x86_64<size>::Relocate::relocate_
}
if (optimized_type == tls::TLSOPT_TO_IE)
{
- if (tls_segment == NULL)
- {
- gold_assert(parameters->errors()->error_count() > 0
- || issue_undefined_symbol_error(gsym));
- return;
- }
value = target->got_plt_section()->address() + got_offset;
- this->tls_desc_gd_to_ie(relinfo, relnum, tls_segment,
+ this->tls_desc_gd_to_ie(relinfo, relnum,
rela, r_type, value, view, address,
view_size);
break;
@@ -3843,7 +3835,6 @@ inline void
Target_x86_64<size>::Relocate::tls_gd_to_ie(
const Relocate_info<size, false>* relinfo,
size_t relnum,
- Output_segment*,
const elfcpp::Rela<size, false>& rela,
unsigned int,
typename elfcpp::Elf_types<size>::Elf_Addr value,
@@ -3955,7 +3946,6 @@ inline void
Target_x86_64<size>::Relocate::tls_desc_gd_to_ie(
const Relocate_info<size, false>* relinfo,
size_t relnum,
- Output_segment*,
const elfcpp::Rela<size, false>& rela,
unsigned int r_type,
typename elfcpp::Elf_types<size>::Elf_Addr value,
1
0
Hello community,
here is the log from the commit of package bzip2 for openSUSE:Factory checked in at 2016-01-21 23:40:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bzip2 (Old)
and /work/SRC/openSUSE:Factory/.bzip2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bzip2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/bzip2/bzip2.changes 2015-01-20 21:54:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.bzip2.new/bzip2.changes 2016-01-21 23:40:19.000000000 +0100
@@ -1,0 +2,7 @@
+Wed Jan 13 08:12:20 UTC 2016 - idonmez(a)suse.com
+
+- Remove bzip2-faster.patch, it causes a crash with libarchive and
+ valgrind points out uninitialized memory. See
+ https://github.com/libarchive/libarchive/issues/637#issuecomment-170612576
+
+-------------------------------------------------------------------
Old:
----
bzip2-faster.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bzip2.spec ++++++
--- /var/tmp/diff_new_pack.5FqHGz/_old 2016-01-21 23:40:21.000000000 +0100
+++ /var/tmp/diff_new_pack.5FqHGz/_new 2016-01-21 23:40:21.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package bzip2
#
-# 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
@@ -32,10 +32,9 @@
# PATCH-FEATURE-OPENSUSE bzip2-1.0.6-autoconfiscated.patch sbrabec(a)suse.cz -- Convert to a standard autoconf based package.
Patch0: http://ftp.suse.com/pub/people/sbrabec/bzip2/for_downstream/bzip2-1.0.6-aut…
Patch1: bzip2-1.0.6-fix-bashisms.patch
-Patch3: bzip2-faster.patch
-Patch5: bzip2-unsafe_strcpy.patch
-Patch6: bzip2-point-to-doc-pkg.patch
-Patch7: bzip2-ocloexec.patch
+Patch2: bzip2-unsafe_strcpy.patch
+Patch3: bzip2-point-to-doc-pkg.patch
+Patch4: bzip2-ocloexec.patch
BuildRequires: autoconf >= 2.57
BuildRequires: libtool
BuildRequires: pkg-config
@@ -78,10 +77,9 @@
%setup -q
%patch0
%patch1 -p1
-%patch3
-%patch5
-%patch6 -p1
-%patch7
+%patch2
+%patch3 -p1
+%patch4
autoreconf -fiv
%build
1
0
Hello community,
here is the log from the commit of package mkdud for openSUSE:Factory checked in at 2016-01-20 09:55:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mkdud (Old)
and /work/SRC/openSUSE:Factory/.mkdud.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mkdud"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mkdud/mkdud.changes 2016-01-16 11:56:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mkdud.new/mkdud.changes 2016-01-20 09:55:21.000000000 +0100
@@ -1,0 +2,6 @@
+Tue Jan 19 13:46:13 UTC 2016 - snwint(a)suse.com
+
+- better public key file detection
+- 1.23
+
+-------------------------------------------------------------------
Old:
----
mkdud-1.22.tar.xz
New:
----
mkdud-1.23.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mkdud.spec ++++++
--- /var/tmp/diff_new_pack.3rN5m5/_old 2016-01-20 09:55:22.000000000 +0100
+++ /var/tmp/diff_new_pack.3rN5m5/_new 2016-01-20 09:55:22.000000000 +0100
@@ -23,7 +23,7 @@
Summary: Create driver update from rpms
License: GPL-3.0+
Group: Hardware/Other
-Version: 1.22
+Version: 1.23
Release: 0
Source: %{name}-%{version}.tar.xz
Url: https://github.com/wfeldt/mkdud
++++++ mkdud-1.22.tar.xz -> mkdud-1.23.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mkdud-1.22/VERSION new/mkdud-1.23/VERSION
--- old/mkdud-1.22/VERSION 2016-01-14 15:15:40.000000000 +0100
+++ new/mkdud-1.23/VERSION 2016-01-19 14:45:13.000000000 +0100
@@ -1 +1 @@
-1.22
+1.23
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mkdud-1.22/changelog new/mkdud-1.23/changelog
--- old/mkdud-1.22/changelog 2016-01-14 15:15:40.000000000 +0100
+++ new/mkdud-1.23/changelog 2016-01-19 14:45:13.000000000 +0100
@@ -1,3 +1,6 @@
+2016-01-19: 1.23
+ - better public key file detection
+
2016-01-14: 1.22
- added --obs-keys option to retrieve necessary obs project keys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mkdud-1.22/mkdud new/mkdud-1.23/mkdud
--- old/mkdud-1.22/mkdud 2016-01-14 15:15:40.000000000 +0100
+++ new/mkdud-1.23/mkdud 2016-01-19 14:45:13.000000000 +0100
@@ -706,13 +706,14 @@
}
elsif(-f $_[0] && -s _ && -T _) {
open my $f, $_[0];
+ local $/; # complete file
my $l = <$f>;
close $f;
if($l =~ /^#!/) {
push @files, { type => 'bin', file => $_[0] } if -x $_[0];
return;
}
- elsif($l =~ /^-----BEGIN PGP PUBLIC KEY BLOCK-----/) {
+ elsif($l =~ /^-----BEGIN PGP PUBLIC KEY BLOCK-----/m) {
push @files, { type => 'pubkey', file => $_[0] };
return;
}
1
0
Hello community,
here is the log from the commit of package youtube-dl for openSUSE:Factory checked in at 2016-01-20 09:55:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/youtube-dl (Old)
and /work/SRC/openSUSE:Factory/.youtube-dl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "youtube-dl"
Changes:
--------
--- /work/SRC/openSUSE:Factory/youtube-dl/youtube-dl.changes 2016-01-17 09:23:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.youtube-dl.new/youtube-dl.changes 2016-01-20 09:55:20.000000000 +0100
@@ -1,0 +2,7 @@
+Tue Jan 19 12:57:12 UTC 2016 - jengelh(a)inai.de
+
+- Update to new upstream release 2016.01.16
+* cwtv: add new extractor
+* add support for fyi.tv, aetv.com, mylifetime.com, 7tv.de
+
+-------------------------------------------------------------------
Old:
----
youtube-dl-2016.01.09.tar.gz
youtube-dl-2016.01.09.tar.gz.sig
New:
----
youtube-dl-2016.01.15.tar.gz
youtube-dl-2016.01.15.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.0ob1F2/_old 2016-01-20 09:55:21.000000000 +0100
+++ /var/tmp/diff_new_pack.0ob1F2/_new 2016-01-20 09:55:21.000000000 +0100
@@ -17,7 +17,7 @@
Name: youtube-dl
-Version: 2016.01.09
+Version: 2016.01.15
Release: 0
Summary: A tool for downloading from Youtube
License: SUSE-Public-Domain and CC-BY-SA-3.0
++++++ youtube-dl-2016.01.09.tar.gz -> youtube-dl-2016.01.15.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/devscripts/gh-pages/update-copyright.py new/youtube-dl/devscripts/gh-pages/update-copyright.py
--- old/youtube-dl/devscripts/gh-pages/update-copyright.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/devscripts/gh-pages/update-copyright.py 2016-01-14 10:35:12.000000000 +0100
@@ -5,7 +5,7 @@
import datetime
import glob
-import io # For Python 2 compatibilty
+import io # For Python 2 compatibility
import os
import re
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/docs/supportedsites.md new/youtube-dl/docs/supportedsites.md
--- old/youtube-dl/docs/supportedsites.md 2016-01-09 01:16:08.000000000 +0100
+++ new/youtube-dl/docs/supportedsites.md 2016-01-15 19:43:04.000000000 +0100
@@ -24,6 +24,7 @@
- **AdobeTVShow**
- **AdobeTVVideo**
- **AdultSwim**
+ - **AE**
- **Aftonbladet**
- **AirMozilla**
- **AlJazeera**
@@ -65,6 +66,7 @@
- **Beeg**
- **BehindKink**
- **Bet**
+ - **Bigflix**
- **Bild**: Bild.de
- **BiliBili**
- **BleacherReport**
@@ -84,6 +86,7 @@
- **CamdemyFolder**
- **canalc2.tv**
- **Canalplus**: canalplus.fr, piwiplus.fr and d8.tv
+ - **Canvas**
- **CBS**
- **CBSNews**: CBS News
- **CBSSports**
@@ -121,6 +124,7 @@
- **CSpan**: C-SPAN
- **CtsNews**: 華視新聞
- **culturebox.francetvinfo.fr**
+ - **CWTV**
- **dailymotion**
- **dailymotion:playlist**
- **dailymotion:user**
@@ -228,7 +232,6 @@
- **Helsinki**: helsinki.fi
- **HentaiStigma**
- **HistoricFilms**
- - **History**
- **hitbox**
- **hitbox:live**
- **HornBunny**
@@ -251,7 +254,7 @@
- **Instagram**
- **instagram:user**: Instagram user profile
- **InternetVideoArchive**
- - **IPrima**
+ - **IPrima** (Currently broken)
- **iqiyi**: 爱奇艺
- **Ir90Tv**
- **ivi**: ivi.ru
@@ -602,7 +605,9 @@
- **TruTube**
- **Tube8**
- **TubiTv**
- - **Tudou**
+ - **tudou**
+ - **tudou:album**
+ - **tudou:playlist**
- **Tumblr**
- **tunein:clip**
- **tunein:program**
@@ -655,12 +660,12 @@
- **video.mit.edu**
- **VideoDetective**
- **videofy.me**
- - **VideoMega**
+ - **VideoMega** (Currently broken)
- **videomore**
- **videomore:season**
- **videomore:video**
- **VideoPremium**
- - **VideoTt**: video.tt - Your True Tube
+ - **VideoTt**: video.tt - Your True Tube (Currently broken)
- **videoweed**: VideoWeed
- **Vidme**
- **Vidzi**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/test/test_YoutubeDL.py new/youtube-dl/test/test_YoutubeDL.py
--- old/youtube-dl/test/test_YoutubeDL.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/test/test_YoutubeDL.py 2016-01-15 19:42:53.000000000 +0100
@@ -12,7 +12,7 @@
from test.helper import FakeYDL, assertRegexpMatches
from youtube_dl import YoutubeDL
-from youtube_dl.compat import compat_str
+from youtube_dl.compat import compat_str, compat_urllib_error
from youtube_dl.extractor import YoutubeIE
from youtube_dl.postprocessor.common import PostProcessor
from youtube_dl.utils import ExtractorError, match_filter_func
@@ -631,6 +631,11 @@
result = get_ids({'playlist_items': '10'})
self.assertEqual(result, [])
+ def test_urlopen_no_file_protocol(self):
+ # see https://github.com/rg3/youtube-dl/issues/8227
+ ydl = YDL()
+ self.assertRaises(compat_urllib_error.URLError, ydl.urlopen, 'file:///etc/passwd')
+
if __name__ == '__main__':
unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/test/test_write_annotations.py new/youtube-dl/test/test_write_annotations.py
--- old/youtube-dl/test/test_write_annotations.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/test/test_write_annotations.py 2016-01-14 10:35:12.000000000 +0100
@@ -66,7 +66,7 @@
textTag = a.find('TEXT')
text = textTag.text
self.assertTrue(text in expected) # assertIn only added in python 2.7
- # remove the first occurance, there could be more than one annotation with the same text
+ # remove the first occurrence, there could be more than one annotation with the same text
expected.remove(text)
# We should have seen (and removed) all the expected annotation texts.
self.assertEqual(len(expected), 0, 'Not all expected annotations were found.')
Files old/youtube-dl/youtube-dl and new/youtube-dl/youtube-dl differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/YoutubeDL.py new/youtube-dl/youtube_dl/YoutubeDL.py
--- old/youtube-dl/youtube_dl/YoutubeDL.py 2016-01-01 12:28:48.000000000 +0100
+++ new/youtube-dl/youtube_dl/YoutubeDL.py 2016-01-15 19:42:53.000000000 +0100
@@ -1312,7 +1312,7 @@
# only set the 'formats' fields if the original info_dict list them
# otherwise we end up with a circular reference, the first (and unique)
# element in the 'formats' field in info_dict is info_dict itself,
- # wich can't be exported to json
+ # which can't be exported to json
info_dict['formats'] = formats
if self.params.get('listformats'):
self.list_formats(info_dict)
@@ -1986,8 +1986,19 @@
https_handler = make_HTTPS_handler(self.params, debuglevel=debuglevel)
ydlh = YoutubeDLHandler(self.params, debuglevel=debuglevel)
data_handler = compat_urllib_request_DataHandler()
+
+ # When passing our own FileHandler instance, build_opener won't add the
+ # default FileHandler and allows us to disable the file protocol, which
+ # can be used for malicious purposes (see
+ # https://github.com/rg3/youtube-dl/issues/8227)
+ file_handler = compat_urllib_request.FileHandler()
+
+ def file_open(*args, **kwargs):
+ raise compat_urllib_error.URLError('file:// scheme is explicitly disabled in youtube-dl for security reasons')
+ file_handler.file_open = file_open
+
opener = compat_urllib_request.build_opener(
- proxy_handler, https_handler, cookie_processor, ydlh, data_handler)
+ proxy_handler, https_handler, cookie_processor, ydlh, data_handler, file_handler)
# Delete the default user-agent header, which would otherwise apply in
# cases where our custom HTTP handler doesn't come into play
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/downloader/fragment.py new/youtube-dl/youtube_dl/downloader/fragment.py
--- old/youtube-dl/youtube_dl/downloader/fragment.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/downloader/fragment.py 2016-01-14 10:35:12.000000000 +0100
@@ -59,37 +59,43 @@
'filename': ctx['filename'],
'tmpfilename': ctx['tmpfilename'],
}
+
start = time.time()
- ctx['started'] = start
+ ctx.update({
+ 'started': start,
+ # Total complete fragments downloaded so far in bytes
+ 'complete_frags_downloaded_bytes': 0,
+ # Amount of fragment's bytes downloaded by the time of the previous
+ # frag progress hook invocation
+ 'prev_frag_downloaded_bytes': 0,
+ })
def frag_progress_hook(s):
if s['status'] not in ('downloading', 'finished'):
return
- frag_total_bytes = s.get('total_bytes', 0)
- if s['status'] == 'finished':
- state['downloaded_bytes'] += frag_total_bytes
- state['frag_index'] += 1
+ frag_total_bytes = s.get('total_bytes') or 0
estimated_size = (
- (state['downloaded_bytes'] + frag_total_bytes) /
+ (ctx['complete_frags_downloaded_bytes'] + frag_total_bytes) /
(state['frag_index'] + 1) * total_frags)
time_now = time.time()
state['total_bytes_estimate'] = estimated_size
state['elapsed'] = time_now - start
if s['status'] == 'finished':
- progress = self.calc_percent(state['frag_index'], total_frags)
+ state['frag_index'] += 1
+ state['downloaded_bytes'] += frag_total_bytes - ctx['prev_frag_downloaded_bytes']
+ ctx['complete_frags_downloaded_bytes'] = state['downloaded_bytes']
+ ctx['prev_frag_downloaded_bytes'] = 0
else:
frag_downloaded_bytes = s['downloaded_bytes']
- frag_progress = self.calc_percent(frag_downloaded_bytes,
- frag_total_bytes)
- progress = self.calc_percent(state['frag_index'], total_frags)
- progress += frag_progress / float(total_frags)
-
+ state['downloaded_bytes'] += frag_downloaded_bytes - ctx['prev_frag_downloaded_bytes']
state['eta'] = self.calc_eta(
- start, time_now, estimated_size, state['downloaded_bytes'] + frag_downloaded_bytes)
+ start, time_now, estimated_size,
+ state['downloaded_bytes'])
state['speed'] = s.get('speed')
+ ctx['prev_frag_downloaded_bytes'] = frag_downloaded_bytes
self._hook_progress(state)
ctx['dl'].add_progress_hook(frag_progress_hook)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/__init__.py new/youtube-dl/youtube_dl/extractor/__init__.py
--- old/youtube-dl/youtube_dl/extractor/__init__.py 2016-01-09 01:15:59.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/__init__.py 2016-01-15 19:42:53.000000000 +0100
@@ -15,6 +15,7 @@
AdobeTVVideoIE,
)
from .adultswim import AdultSwimIE
+from .ae import AEIE
from .aftonbladet import AftonbladetIE
from .airmozilla import AirMozillaIE
from .aljazeera import AlJazeeraIE
@@ -61,6 +62,7 @@
from .behindkink import BehindKinkIE
from .beatportpro import BeatportProIE
from .bet import BetIE
+from .bigflix import BigflixIE
from .bild import BildIE
from .bilibili import BiliBiliIE
from .bleacherreport import (
@@ -85,6 +87,7 @@
)
from .canalplus import CanalplusIE
from .canalc2 import Canalc2IE
+from .canvas import CanvasIE
from .cbs import CBSIE
from .cbsnews import CBSNewsIE
from .cbssports import CBSSportsIE
@@ -127,6 +130,7 @@
)
from .cspan import CSpanIE
from .ctsnews import CtsNewsIE
+from .cwtv import CWTVIE
from .dailymotion import (
DailymotionIE,
DailymotionPlaylistIE,
@@ -261,7 +265,6 @@
from .helsinki import HelsinkiIE
from .hentaistigma import HentaiStigmaIE
from .historicfilms import HistoricFilmsIE
-from .history import HistoryIE
from .hitbox import HitboxIE, HitboxLiveIE
from .hornbunny import HornBunnyIE
from .hotnewhiphop import HotNewHipHopIE
@@ -722,7 +725,11 @@
from .trutube import TruTubeIE
from .tube8 import Tube8IE
from .tubitv import TubiTvIE
-from .tudou import TudouIE
+from .tudou import (
+ TudouIE,
+ TudouPlaylistIE,
+ TudouAlbumIE,
+)
from .tumblr import TumblrIE
from .tunein import (
TuneInClipIE,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/ae.py new/youtube-dl/youtube_dl/extractor/ae.py
--- old/youtube-dl/youtube_dl/extractor/ae.py 1970-01-01 01:00:00.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/ae.py 2016-01-15 19:42:53.000000000 +0100
@@ -0,0 +1,58 @@
+from __future__ import unicode_literals
+
+from .common import InfoExtractor
+from ..utils import smuggle_url
+
+
+class AEIE(InfoExtractor):
+ _VALID_URL = r'https?://(?:www\.)?(?:(?:history|aetv|mylifetime)\.com|fyi\.tv)/(?:[^/]+/)+(?P<id>[^/]+?)(?:$|[?#])'
+
+ _TESTS = [{
+ 'url': 'http://www.history.com/topics/valentines-day/history-of-valentines-day/vide…',
+ 'info_dict': {
+ 'id': 'g12m5Gyt3fdR',
+ 'ext': 'mp4',
+ 'title': "Bet You Didn't Know: Valentine's Day",
+ 'description': 'md5:7b57ea4829b391995b405fa60bd7b5f7',
+ },
+ 'params': {
+ # m3u8 download
+ 'skip_download': True,
+ },
+ 'add_ie': ['ThePlatform'],
+ }, {
+ 'url': 'http://www.history.com/shows/mountain-men/season-1/episode-1',
+ 'info_dict': {
+ 'id': 'eg47EERs_JsZ',
+ 'ext': 'mp4',
+ 'title': "Winter Is Coming",
+ 'description': 'md5:a40e370925074260b1c8a633c632c63a',
+ },
+ 'params': {
+ # m3u8 download
+ 'skip_download': True,
+ },
+ 'add_ie': ['ThePlatform'],
+ }, {
+ 'url': 'http://www.aetv.com/shows/duck-dynasty/video/inlawful-entry',
+ 'only_matching': True
+ }, {
+ 'url': 'http://www.fyi.tv/shows/tiny-house-nation/videos/207-sq-ft-minnesota-prairi…',
+ 'only_matching': True
+ }, {
+ 'url': 'http://www.mylifetime.com/shows/project-runway-junior/video/season-1/episod…',
+ 'only_matching': True
+ }]
+
+ def _real_extract(self, url):
+ video_id = self._match_id(url)
+
+ webpage = self._download_webpage(url, video_id)
+
+ video_url_re = [
+ r'data-href="[^"]*/%s"[^>]+data-release-url="([^"]+)"' % video_id,
+ r"media_url\s*=\s*'([^']+)'"
+ ]
+ video_url = self._search_regex(video_url_re, webpage, 'video url')
+
+ return self.url_result(smuggle_url(video_url, {'sig': {'key': 'crazyjava', 'secret': 's3cr3t'}}))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/beeg.py new/youtube-dl/youtube_dl/extractor/beeg.py
--- old/youtube-dl/youtube_dl/extractor/beeg.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/beeg.py 2016-01-14 15:43:12.000000000 +0100
@@ -34,7 +34,7 @@
video_id = self._match_id(url)
video = self._download_json(
- 'http://beeg.com/api/v5/video/%s' % video_id, video_id)
+ 'https://api.beeg.com/api/v5/video/%s' % video_id, video_id)
def split(o, e):
def cut(s, x):
@@ -60,7 +60,7 @@
def decrypt_url(encrypted_url):
encrypted_url = self._proto_relative_url(
- encrypted_url.replace('{DATA_MARKERS}', ''), 'http:')
+ encrypted_url.replace('{DATA_MARKERS}', ''), 'https:')
key = self._search_regex(
r'/key=(.*?)%2Cend=', encrypted_url, 'key', default=None)
if not key:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/bigflix.py new/youtube-dl/youtube_dl/extractor/bigflix.py
--- old/youtube-dl/youtube_dl/extractor/bigflix.py 1970-01-01 01:00:00.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/bigflix.py 2016-01-14 10:35:12.000000000 +0100
@@ -0,0 +1,85 @@
+# coding: utf-8
+from __future__ import unicode_literals
+
+import base64
+import re
+
+from .common import InfoExtractor
+from ..compat import compat_urllib_parse_unquote
+
+
+class BigflixIE(InfoExtractor):
+ _VALID_URL = r'https?://(?:www\.)?bigflix\.com/.+/(?P<id>[0-9]+)'
+ _TESTS = [{
+ 'url': 'http://www.bigflix.com/Hindi-movies/Action-movies/Singham-Returns/16537',
+ 'md5': 'ec76aa9b1129e2e5b301a474e54fab74',
+ 'info_dict': {
+ 'id': '16537',
+ 'ext': 'mp4',
+ 'title': 'Singham Returns',
+ 'description': 'md5:3d2ba5815f14911d5cc6a501ae0cf65d',
+ }
+ }, {
+ # 2 formats
+ 'url': 'http://www.bigflix.com/Tamil-movies/Drama-movies/Madarasapatinam/16070',
+ 'info_dict': {
+ 'id': '16070',
+ 'ext': 'mp4',
+ 'title': 'Madarasapatinam',
+ 'description': 'md5:63b9b8ed79189c6f0418c26d9a3452ca',
+ 'formats': 'mincount:2',
+ },
+ 'params': {
+ 'skip_download': True,
+ }
+ }, {
+ # multiple formats
+ 'url': 'http://www.bigflix.com/Malayalam-movies/Drama-movies/Indian-Rupee/15967',
+ 'only_matching': True,
+ }]
+
+ def _real_extract(self, url):
+ video_id = self._match_id(url)
+
+ webpage = self._download_webpage(url, video_id)
+
+ title = self._html_search_regex(
+ r'<div[^>]+class=["\']pagetitle["\'][^>]*>(.+?)</div>',
+ webpage, 'title')
+
+ def decode_url(quoted_b64_url):
+ return base64.b64decode(compat_urllib_parse_unquote(
+ quoted_b64_url).encode('ascii')).decode('utf-8')
+
+ formats = []
+ for height, encoded_url in re.findall(
+ r'ContentURL_(\d{3,4})[pP][^=]+=([^&]+)', webpage):
+ video_url = decode_url(encoded_url)
+ f = {
+ 'url': video_url,
+ 'format_id': '%sp' % height,
+ 'height': int(height),
+ }
+ if video_url.startswith('rtmp'):
+ f['ext'] = 'flv'
+ formats.append(f)
+
+ file_url = self._search_regex(
+ r'file=([^&]+)', webpage, 'video url', default=None)
+ if file_url:
+ video_url = decode_url(file_url)
+ if all(f['url'] != video_url for f in formats):
+ formats.append({
+ 'url': decode_url(file_url),
+ })
+
+ self._sort_formats(formats)
+
+ description = self._html_search_meta('description', webpage)
+
+ return {
+ 'id': video_id,
+ 'title': title,
+ 'description': description,
+ 'formats': formats
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/canalc2.py new/youtube-dl/youtube_dl/extractor/canalc2.py
--- old/youtube-dl/youtube_dl/extractor/canalc2.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/canalc2.py 2016-01-14 10:35:12.000000000 +0100
@@ -9,9 +9,9 @@
class Canalc2IE(InfoExtractor):
IE_NAME = 'canalc2.tv'
- _VALID_URL = r'https?://(?:www\.)?canalc2\.tv/video/(?P<id>\d+)'
+ _VALID_URL = r'https?://(?:(?:www\.)?canalc2\.tv/video/|archives-canalc2\.u-strasbg\.fr/video\.asp\?.*\bidVideo=)(?P<id>\d+)'
- _TEST = {
+ _TESTS = [{
'url': 'http://www.canalc2.tv/video/12163',
'md5': '060158428b650f896c542dfbb3d6487f',
'info_dict': {
@@ -23,24 +23,36 @@
'params': {
'skip_download': True, # Requires rtmpdump
}
- }
+ }, {
+ 'url': 'http://archives-canalc2.u-strasbg.fr/video.asp?idVideo=11427&voir=oui',
+ 'only_matching': True,
+ }]
def _real_extract(self, url):
video_id = self._match_id(url)
- webpage = self._download_webpage(url, video_id)
- video_url = self._search_regex(
- r'jwplayer\((["\'])Player\1\)\.setup\({[^}]*file\s*:\s*(["\'])(?P<file>.+?)\2',
- webpage, 'video_url', group='file')
- formats = [{'url': video_url}]
- if video_url.startswith('rtmp://'):
- rtmp = re.search(r'^(?P<url>rtmp://[^/]+/(?P<app>.+/))(?P<play_path>mp4:.+)$', video_url)
- formats[0].update({
- 'url': rtmp.group('url'),
- 'ext': 'flv',
- 'app': rtmp.group('app'),
- 'play_path': rtmp.group('play_path'),
- 'page_url': url,
- })
+
+ webpage = self._download_webpage(
+ 'http://www.canalc2.tv/video/%s' % video_id, video_id)
+
+ formats = []
+ for _, video_url in re.findall(r'file\s*=\s*(["\'])(.+?)\1', webpage):
+ if video_url.startswith('rtmp://'):
+ rtmp = re.search(
+ r'^(?P<url>rtmp://[^/]+/(?P<app>.+/))(?P<play_path>mp4:.+)$', video_url)
+ formats.append({
+ 'url': rtmp.group('url'),
+ 'format_id': 'rtmp',
+ 'ext': 'flv',
+ 'app': rtmp.group('app'),
+ 'play_path': rtmp.group('play_path'),
+ 'page_url': url,
+ })
+ else:
+ formats.append({
+ 'url': video_url,
+ 'format_id': 'http',
+ })
+ self._sort_formats(formats)
title = self._html_search_regex(
r'(?s)class="[^"]*col_description[^"]*">.*?<h3>(.*?)</h3>', webpage, 'title')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/canvas.py new/youtube-dl/youtube_dl/extractor/canvas.py
--- old/youtube-dl/youtube_dl/extractor/canvas.py 1970-01-01 01:00:00.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/canvas.py 2016-01-15 19:42:53.000000000 +0100
@@ -0,0 +1,65 @@
+from __future__ import unicode_literals
+
+from .common import InfoExtractor
+from ..utils import float_or_none
+
+
+class CanvasIE(InfoExtractor):
+ _VALID_URL = r'https?://(?:www\.)?canvas\.be/video/(?:[^/]+/)*(?P<id>[^/?#&]+)'
+ _TEST = {
+ 'url': 'http://www.canvas.be/video/de-afspraak/najaar-2015/de-afspraak-veilt-voor-d…',
+ 'md5': 'ea838375a547ac787d4064d8c7860a6c',
+ 'info_dict': {
+ 'id': 'mz-ast-5e5f90b6-2d72-4c40-82c2-e134f884e93e',
+ 'display_id': 'de-afspraak-veilt-voor-de-warmste-week',
+ 'ext': 'mp4',
+ 'title': 'De afspraak veilt voor de Warmste Week',
+ 'description': 'md5:24cb860c320dc2be7358e0e5aa317ba6',
+ 'thumbnail': 're:^https?://.*\.jpg$',
+ 'duration': 49.02,
+ }
+ }
+
+ def _real_extract(self, url):
+ display_id = self._match_id(url)
+
+ webpage = self._download_webpage(url, display_id)
+
+ title = self._search_regex(
+ r'<h1[^>]+class="video__body__header__title"[^>]*>(.+?)</h1>',
+ webpage, 'title', default=None) or self._og_search_title(webpage)
+
+ video_id = self._html_search_regex(
+ r'data-video=(["\'])(?P<id>.+?)\1', webpage, 'video id', group='id')
+
+ data = self._download_json(
+ 'https://mediazone.vrt.be/api/v1/canvas/assets/%s' % video_id, display_id)
+
+ formats = []
+ for target in data['targetUrls']:
+ format_url, format_type = target.get('url'), target.get('type')
+ if not format_url or not format_type:
+ continue
+ if format_type == 'HLS':
+ formats.extend(self._extract_m3u8_formats(
+ format_url, display_id, entry_protocol='m3u8_native',
+ ext='mp4', preference=0, fatal=False, m3u8_id=format_type))
+ elif format_type == 'HDS':
+ formats.extend(self._extract_f4m_formats(
+ format_url, display_id, f4m_id=format_type, fatal=False))
+ else:
+ formats.append({
+ 'format_id': format_type,
+ 'url': format_url,
+ })
+ self._sort_formats(formats)
+
+ return {
+ 'id': video_id,
+ 'display_id': display_id,
+ 'title': title,
+ 'description': self._og_search_description(webpage),
+ 'formats': formats,
+ 'duration': float_or_none(data.get('duration'), 1000),
+ 'thumbnail': data.get('posterImageUrl'),
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/common.py new/youtube-dl/youtube_dl/extractor/common.py
--- old/youtube-dl/youtube_dl/extractor/common.py 2016-01-09 01:15:59.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/common.py 2016-01-14 10:35:12.000000000 +0100
@@ -313,9 +313,9 @@
except ExtractorError:
raise
except compat_http_client.IncompleteRead as e:
- raise ExtractorError('A network error has occured.', cause=e, expected=True)
+ raise ExtractorError('A network error has occurred.', cause=e, expected=True)
except (KeyError, StopIteration) as e:
- raise ExtractorError('An extractor error has occured.', cause=e)
+ raise ExtractorError('An extractor error has occurred.', cause=e)
def set_downloader(self, downloader):
"""Sets the downloader for this IE."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/cwtv.py new/youtube-dl/youtube_dl/extractor/cwtv.py
--- old/youtube-dl/youtube_dl/extractor/cwtv.py 1970-01-01 01:00:00.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/cwtv.py 2016-01-15 19:42:53.000000000 +0100
@@ -0,0 +1,88 @@
+# coding: utf-8
+from __future__ import unicode_literals
+
+from .common import InfoExtractor
+from ..utils import (
+ int_or_none,
+ parse_iso8601,
+)
+
+
+class CWTVIE(InfoExtractor):
+ _VALID_URL = r'https?://(?:www\.)?cw(?:tv|seed)\.com/shows/(?:[^/]+/){2}\?play=(?P<id>[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})'
+ _TESTS = [{
+ 'url': 'http://cwtv.com/shows/arrow/legends-of-yesterday/?play=6b15e985-9345-4f60-b…',
+ 'info_dict': {
+ 'id': '6b15e985-9345-4f60-baf8-56e96be57c63',
+ 'ext': 'mp4',
+ 'title': 'Legends of Yesterday',
+ 'description': 'Oliver and Barry Allen take Kendra Saunders and Carter Hall to a remote location to keep them hidden from Vandal Savage while they figure out how to defeat him.',
+ 'duration': 2665,
+ 'series': 'Arrow',
+ 'season_number': 4,
+ 'season': '4',
+ 'episode_number': 8,
+ 'upload_date': '20151203',
+ 'timestamp': 1449122100,
+ },
+ 'params': {
+ # m3u8 download
+ 'skip_download': True,
+ }
+ }, {
+ 'url': 'http://www.cwseed.com/shows/whose-line-is-it-anyway/jeff-davis-4/?play=2428…',
+ 'info_dict': {
+ 'id': '24282b12-ead2-42f2-95ad-26770c2c6088',
+ 'ext': 'mp4',
+ 'title': 'Jeff Davis 4',
+ 'description': 'Jeff Davis is back to make you laugh.',
+ 'duration': 1263,
+ 'series': 'Whose Line Is It Anyway?',
+ 'season_number': 11,
+ 'season': '11',
+ 'episode_number': 20,
+ 'upload_date': '20151006',
+ 'timestamp': 1444107300,
+ },
+ 'params': {
+ # m3u8 download
+ 'skip_download': True,
+ }
+ }]
+
+ def _real_extract(self, url):
+ video_id = self._match_id(url)
+ video_data = self._download_json(
+ 'http://metaframe.digitalsmiths.tv/v2/CWtv/assets/%s/partner/132?format=json' % video_id, video_id)
+
+ formats = self._extract_m3u8_formats(
+ video_data['videos']['variantplaylist']['uri'], video_id, 'mp4')
+
+ thumbnails = [{
+ 'url': image['uri'],
+ 'width': image.get('width'),
+ 'height': image.get('height'),
+ } for image_id, image in video_data['images'].items() if image.get('uri')] if video_data.get('images') else None
+
+ video_metadata = video_data['assetFields']
+
+ subtitles = {
+ 'en': [{
+ 'url': video_metadata['UnicornCcUrl'],
+ }],
+ } if video_metadata.get('UnicornCcUrl') else None
+
+ return {
+ 'id': video_id,
+ 'title': video_metadata['title'],
+ 'description': video_metadata.get('description'),
+ 'duration': int_or_none(video_metadata.get('duration')),
+ 'series': video_metadata.get('seriesName'),
+ 'season_number': int_or_none(video_metadata.get('seasonNumber')),
+ 'season': video_metadata.get('seasonName'),
+ 'episode_number': int_or_none(video_metadata.get('episodeNumber')),
+ 'timestamp': parse_iso8601(video_data.get('startTime')),
+ 'thumbnails': thumbnails,
+ 'formats': formats,
+ 'subtitles': subtitles,
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/dailymotion.py new/youtube-dl/youtube_dl/extractor/dailymotion.py
--- old/youtube-dl/youtube_dl/extractor/dailymotion.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/dailymotion.py 2016-01-14 10:35:12.000000000 +0100
@@ -149,14 +149,15 @@
ext = determine_ext(media_url)
if type_ == 'application/x-mpegURL' or ext == 'm3u8':
formats.extend(self._extract_m3u8_formats(
- media_url, video_id, 'mp4', m3u8_id='hls', fatal=False))
+ media_url, video_id, 'mp4', preference=-1,
+ m3u8_id='hls', fatal=False))
elif type_ == 'application/f4m' or ext == 'f4m':
formats.extend(self._extract_f4m_formats(
media_url, video_id, preference=-1, f4m_id='hds', fatal=False))
else:
f = {
'url': media_url,
- 'format_id': quality,
+ 'format_id': 'http-%s' % quality,
}
m = re.search(r'H264-(?P<width>\d+)x(?P<height>\d+)', media_url)
if m:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/dcn.py new/youtube-dl/youtube_dl/extractor/dcn.py
--- old/youtube-dl/youtube_dl/extractor/dcn.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/dcn.py 2016-01-14 10:35:12.000000000 +0100
@@ -5,7 +5,10 @@
import base64
from .common import InfoExtractor
-from ..compat import compat_urllib_parse
+from ..compat import (
+ compat_urllib_parse,
+ compat_str,
+)
from ..utils import (
int_or_none,
parse_iso8601,
@@ -186,7 +189,8 @@
entries = []
for video in show['videos']:
+ video_id = compat_str(video['id'])
entries.append(self.url_result(
- 'http://www.dcndigital.ae/media/%s' % video['id'], 'DCNVideo'))
+ 'http://www.dcndigital.ae/media/%s' % video_id, 'DCNVideo', video_id))
return self.playlist_result(entries, season_id, title)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/facebook.py new/youtube-dl/youtube_dl/extractor/facebook.py
--- old/youtube-dl/youtube_dl/extractor/facebook.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/facebook.py 2016-01-14 10:35:12.000000000 +0100
@@ -105,7 +105,7 @@
login_results, 'login error', default=None, group='error')
if error:
raise ExtractorError('Unable to login: %s' % error, expected=True)
- self._downloader.report_warning('unable to log in: bad username/password, or exceded login rate limit (~3/min). Check credentials or wait.')
+ self._downloader.report_warning('unable to log in: bad username/password, or exceeded login rate limit (~3/min). Check credentials or wait.')
return
fb_dtsg = self._search_regex(
@@ -126,7 +126,7 @@
check_response = self._download_webpage(check_req, None,
note='Confirming login')
if re.search(r'id="checkpointSubmitButton"', check_response) is not None:
- self._downloader.report_warning('Unable to confirm login, you have to login in your brower and authorize the login.')
+ self._downloader.report_warning('Unable to confirm login, you have to login in your browser and authorize the login.')
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self._downloader.report_warning('unable to log in: %s' % error_to_compat_str(err))
return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/generic.py new/youtube-dl/youtube_dl/extractor/generic.py
--- old/youtube-dl/youtube_dl/extractor/generic.py 2015-12-31 16:50:46.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/generic.py 2016-01-14 10:35:12.000000000 +0100
@@ -487,7 +487,7 @@
'description': 'md5:8145d19d320ff3e52f28401f4c4283b9',
}
},
- # Embeded Ustream video
+ # Embedded Ustream video
{
'url': 'http://www.american.edu/spa/pti/nsa-privacy-janus-2014.cfm',
'md5': '27b99cdb639c9b12a79bca876a073417',
@@ -1644,7 +1644,7 @@
if myvi_url:
return self.url_result(myvi_url)
- # Look for embeded soundcloud player
+ # Look for embedded soundcloud player
mobj = re.search(
r'<iframe\s+(?:[a-zA-Z0-9_-]+="[^"]+"\s+)*src="(?P<url>https?://(?:w\.)?soundcloud\.com/player[^"]+)"',
webpage)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/history.py new/youtube-dl/youtube_dl/extractor/history.py
--- old/youtube-dl/youtube_dl/extractor/history.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/history.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
-from __future__ import unicode_literals
-
-from .common import InfoExtractor
-from ..utils import smuggle_url
-
-
-class HistoryIE(InfoExtractor):
- _VALID_URL = r'https?://(?:www\.)?history\.com/(?:[^/]+/)+(?P<id>[^/]+?)(?:$|[?#])'
-
- _TESTS = [{
- 'url': 'http://www.history.com/topics/valentines-day/history-of-valentines-day/vide…',
- 'md5': '6fe632d033c92aa10b8d4a9be047a7c5',
- 'info_dict': {
- 'id': 'bLx5Dv5Aka1G',
- 'ext': 'mp4',
- 'title': "Bet You Didn't Know: Valentine's Day",
- 'description': 'md5:7b57ea4829b391995b405fa60bd7b5f7',
- },
- 'add_ie': ['ThePlatform'],
- }]
-
- def _real_extract(self, url):
- video_id = self._match_id(url)
-
- webpage = self._download_webpage(url, video_id)
-
- video_url = self._search_regex(
- r'data-href="[^"]*/%s"[^>]+data-release-url="([^"]+)"' % video_id,
- webpage, 'video url')
-
- return self.url_result(smuggle_url(video_url, {'sig': {'key': 'crazyjava', 'secret': 's3cr3t'}}))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/iprima.py new/youtube-dl/youtube_dl/extractor/iprima.py
--- old/youtube-dl/youtube_dl/extractor/iprima.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/iprima.py 2016-01-14 10:35:12.000000000 +0100
@@ -14,6 +14,7 @@
class IPrimaIE(InfoExtractor):
+ _WORKING = False
_VALID_URL = r'https?://play\.iprima\.cz/(?:[^/]+/)*(?P<id>[^?#]+)'
_TESTS = [{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/ivi.py new/youtube-dl/youtube_dl/extractor/ivi.py
--- old/youtube-dl/youtube_dl/extractor/ivi.py 2016-01-09 01:15:59.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/ivi.py 2016-01-14 10:35:12.000000000 +0100
@@ -32,7 +32,7 @@
},
'skip': 'Only works from Russia',
},
- # Serial's serie
+ # Serial's series
{
'url': 'http://www.ivi.ru/watch/dvoe_iz_lartsa/9549',
'md5': '221f56b35e3ed815fde2df71032f4b3e',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/mdr.py new/youtube-dl/youtube_dl/extractor/mdr.py
--- old/youtube-dl/youtube_dl/extractor/mdr.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/mdr.py 2016-01-14 10:35:12.000000000 +0100
@@ -17,7 +17,7 @@
_VALID_URL = r'https?://(?:www\.)?(?:mdr|kika)\.de/(?:.*)/[a-z]+(?P<id>\d+)(?:_.+?)?\.html'
_TESTS = [{
- # MDR regularily deletes its videos
+ # MDR regularly deletes its videos
'url': 'http://www.mdr.de/fakt/video189002.html',
'only_matching': True,
}, {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/nbc.py new/youtube-dl/youtube_dl/extractor/nbc.py
--- old/youtube-dl/youtube_dl/extractor/nbc.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/nbc.py 2016-01-14 10:35:12.000000000 +0100
@@ -100,7 +100,7 @@
class NBCSportsIE(InfoExtractor):
- # Does not include https becuase its certificate is invalid
+ # Does not include https because its certificate is invalid
_VALID_URL = r'http://www\.nbcsports\.com//?(?:[^/]+/)+(?P<id>[0-9a-z-]+)'
_TEST = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/nhl.py new/youtube-dl/youtube_dl/extractor/nhl.py
--- old/youtube-dl/youtube_dl/extractor/nhl.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/nhl.py 2016-01-14 10:35:12.000000000 +0100
@@ -223,7 +223,7 @@
response = self._download_webpage(request_url, playlist_title)
response = self._fix_json(response)
if not response.strip():
- self._downloader.report_warning('Got an empty reponse, trying '
+ self._downloader.report_warning('Got an empty response, trying '
'adding the "newvideos" parameter')
response = self._download_webpage(request_url + '&newvideos=true',
playlist_title)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/ntvde.py new/youtube-dl/youtube_dl/extractor/ntvde.py
--- old/youtube-dl/youtube_dl/extractor/ntvde.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/ntvde.py 2016-01-15 19:42:53.000000000 +0100
@@ -2,6 +2,7 @@
from __future__ import unicode_literals
from .common import InfoExtractor
+from ..compat import compat_urlparse
from ..utils import (
int_or_none,
js_to_json,
@@ -34,7 +35,7 @@
webpage = self._download_webpage(url, video_id)
info = self._parse_json(self._search_regex(
- r'(?s)ntv.pageInfo.article =\s(\{.*?\});', webpage, 'info'),
+ r'(?s)ntv\.pageInfo\.article\s*=\s*(\{.*?\});', webpage, 'info'),
video_id, transform_source=js_to_json)
timestamp = int_or_none(info.get('publishedDateAsUnixTimeStamp'))
vdata = self._parse_json(self._search_regex(
@@ -42,18 +43,24 @@
webpage, 'player data'),
video_id, transform_source=js_to_json)
duration = parse_duration(vdata.get('duration'))
- formats = [{
- 'format_id': 'flash',
- 'url': 'rtmp://fms.n-tv.de/' + vdata['video'],
- }, {
- 'format_id': 'mobile',
- 'url': 'http://video.n-tv.de' + vdata['videoMp4'],
- 'tbr': 400, # estimation
- }]
- m3u8_url = 'http://video.n-tv.de' + vdata['videoM3u8']
- formats.extend(self._extract_m3u8_formats(
- m3u8_url, video_id, ext='mp4',
- entry_protocol='m3u8_native', preference=0))
+
+ formats = []
+ if vdata.get('video'):
+ formats.append({
+ 'format_id': 'flash',
+ 'url': 'rtmp://fms.n-tv.de/%s' % vdata['video'],
+ })
+ if vdata.get('videoMp4'):
+ formats.append({
+ 'format_id': 'mobile',
+ 'url': compat_urlparse.urljoin('http://video.n-tv.de', vdata['videoMp4']),
+ 'tbr': 400, # estimation
+ })
+ if vdata.get('videoM3u8'):
+ m3u8_url = compat_urlparse.urljoin('http://video.n-tv.de', vdata['videoM3u8'])
+ formats.extend(self._extract_m3u8_formats(
+ m3u8_url, video_id, ext='mp4', entry_protocol='m3u8_native',
+ preference=0, m3u8_id='hls', fatal=False))
self._sort_formats(formats)
return {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/ora.py new/youtube-dl/youtube_dl/extractor/ora.py
--- old/youtube-dl/youtube_dl/extractor/ora.py 2015-12-31 16:50:46.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/ora.py 2016-01-14 10:35:12.000000000 +0100
@@ -37,7 +37,7 @@
formats = self._extract_m3u8_formats(
m3u8_url, display_id, 'mp4', 'm3u8_native',
m3u8_id='hls', fatal=False)
- # simular to GameSpotIE
+ # similar to GameSpotIE
m3u8_path = compat_urlparse.urlparse(m3u8_url).path
QUALITIES_RE = r'((,[a-z]+\d+)+,?)'
available_qualities = self._search_regex(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/orf.py new/youtube-dl/youtube_dl/extractor/orf.py
--- old/youtube-dl/youtube_dl/extractor/orf.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/orf.py 2016-01-15 19:42:53.000000000 +0100
@@ -170,7 +170,21 @@
class ORFFM4IE(InfoExtractor):
IE_NAME = 'orf:fm4'
IE_DESC = 'radio FM4'
- _VALID_URL = r'http://fm4\.orf\.at/7tage/?#(?P<date>[0-9]+)/(?P<show>\w+)'
+ _VALID_URL = r'http://fm4\.orf\.at/(?:7tage/?#|player/)(?P<date>[0-9]+)/(?P<show>\w+)'
+
+ _TEST = {
+ 'url': 'http://fm4.orf.at/player/20160110/IS/',
+ 'md5': '01e736e8f1cef7e13246e880a59ad298',
+ 'info_dict': {
+ 'id': '2016-01-10_2100_tl_54_7DaysSun13_11244',
+ 'ext': 'mp3',
+ 'title': 'Im Sumpf',
+ 'description': 'md5:384c543f866c4e422a55f66a62d669cd',
+ 'duration': 7173,
+ 'timestamp': 1452456073,
+ 'upload_date': '20160110',
+ },
+ }
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/pluralsight.py new/youtube-dl/youtube_dl/extractor/pluralsight.py
--- old/youtube-dl/youtube_dl/extractor/pluralsight.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/pluralsight.py 2016-01-14 10:35:12.000000000 +0100
@@ -232,7 +232,7 @@
# { a = author, cn = clip_id, lc = end, m = name }
return {
- 'id': clip['clipName'],
+ 'id': clip.get('clipName') or clip['name'],
'title': '%s - %s' % (module['title'], clip['title']),
'duration': int_or_none(clip.get('duration')) or parse_duration(clip.get('formattedDuration')),
'creator': author,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/prosiebensat1.py new/youtube-dl/youtube_dl/extractor/prosiebensat1.py
--- old/youtube-dl/youtube_dl/extractor/prosiebensat1.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/prosiebensat1.py 2016-01-15 19:42:53.000000000 +0100
@@ -20,7 +20,7 @@
class ProSiebenSat1IE(InfoExtractor):
IE_NAME = 'prosiebensat1'
IE_DESC = 'ProSiebenSat.1 Digital'
- _VALID_URL = r'https?://(?:www\.)?(?:(?:prosieben|prosiebenmaxx|sixx|sat1|kabeleins|the-voice-of-germany)\.(?:de|at|ch)|ran\.de|fem\.com)/(?P<id>.+)'
+ _VALID_URL = r'https?://(?:www\.)?(?:(?:prosieben|prosiebenmaxx|sixx|sat1|kabeleins|the-voice-of-germany|7tv)\.(?:de|at|ch)|ran\.de|fem\.com)/(?P<id>.+)'
_TESTS = [
{
@@ -32,7 +32,7 @@
'url': 'http://www.prosieben.de/tv/circus-halligalli/videos/218-staffel-2-episode-1…',
'info_dict': {
'id': '2104602',
- 'ext': 'mp4',
+ 'ext': 'flv',
'title': 'Episode 18 - Staffel 2',
'description': 'md5:8733c81b702ea472e069bc48bb658fc1',
'upload_date': '20131231',
@@ -138,14 +138,13 @@
'url': 'http://www.the-voice-of-germany.de/video/31-andreas-kuemmert-rocket-man-clip',
'info_dict': {
'id': '2572814',
- 'ext': 'mp4',
+ 'ext': 'flv',
'title': 'Andreas Kümmert: Rocket Man',
'description': 'md5:6ddb02b0781c6adf778afea606652e38',
'upload_date': '20131017',
'duration': 469.88,
},
'params': {
- # rtmp download
'skip_download': True,
},
},
@@ -153,13 +152,12 @@
'url': 'http://www.fem.com/wellness/videos/wellness-video-clip-kurztripps-zum-valen…',
'info_dict': {
'id': '2156342',
- 'ext': 'mp4',
+ 'ext': 'flv',
'title': 'Kurztrips zum Valentinstag',
- 'description': 'Romantischer Kurztrip zum Valentinstag? Wir verraten, was sich hier wirklich lohnt.',
+ 'description': 'Romantischer Kurztrip zum Valentinstag? Nina Heinemann verrät, was sich hier wirklich lohnt.',
'duration': 307.24,
},
'params': {
- # rtmp download
'skip_download': True,
},
},
@@ -172,12 +170,26 @@
},
'playlist_count': 2,
},
+ {
+ 'url': 'http://www.7tv.de/circus-halligalli/615-best-of-circus-halligalli-ganze-fol…',
+ 'info_dict': {
+ 'id': '4187506',
+ 'ext': 'flv',
+ 'title': 'Best of Circus HalliGalli',
+ 'description': 'md5:8849752efd90b9772c9db6fdf87fb9e9',
+ 'upload_date': '20151229',
+ },
+ 'params': {
+ 'skip_download': True,
+ },
+ },
]
_CLIPID_REGEXES = [
r'"clip_id"\s*:\s+"(\d+)"',
r'clipid: "(\d+)"',
r'clip[iI]d=(\d+)',
+ r'clip[iI]d\s*=\s*["\'](\d+)',
r"'itemImageUrl'\s*:\s*'/dynamic/thumbnails/full/\d+/(\d+)",
]
_TITLE_REGEXES = [
@@ -186,12 +198,16 @@
r'<!-- start video -->\s*<h1>(.+?)</h1>',
r'<h1 class="att-name">\s*(.+?)</h1>',
r'<header class="module_header">\s*<h2>([^<]+)</h2>\s*</header>',
+ r'<h2 class="video-title" itemprop="name">\s*(.+?)</h2>',
+ r'<div[^>]+id="veeseoTitle"[^>]*>(.+?)</div>',
]
_DESCRIPTION_REGEXES = [
r'<p itemprop="description">\s*(.+?)</p>',
r'<div class="videoDecription">\s*<p><strong>Beschreibung</strong>: (.+?)</p>',
r'<div class="g-plusone" data-size="medium"></div>\s*</div>\s*</header>\s*(.+?)\s*<footer>',
r'<p class="att-description">\s*(.+?)\s*</p>',
+ r'<p class="video-description" itemprop="description">\s*(.+?)</p>',
+ r'<div[^>]+id="veeseoDescription"[^>]*>(.+?)</div>',
]
_UPLOAD_DATE_REGEXES = [
r'<meta property="og:published_time" content="(.+?)">',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/shahid.py new/youtube-dl/youtube_dl/extractor/shahid.py
--- old/youtube-dl/youtube_dl/extractor/shahid.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/shahid.py 2016-01-14 10:35:12.000000000 +0100
@@ -73,6 +73,9 @@
'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-%s.type-%s.html'
% (video_id, api_vars['type']), video_id, 'Downloading player JSON')
+ if player.get('drm'):
+ raise ExtractorError('This video is DRM protected.', expected=True)
+
formats = self._extract_m3u8_formats(player['url'], video_id, 'mp4')
video = self._download_json(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/testurl.py new/youtube-dl/youtube_dl/extractor/testurl.py
--- old/youtube-dl/youtube_dl/extractor/testurl.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/testurl.py 2016-01-14 10:35:12.000000000 +0100
@@ -7,7 +7,7 @@
class TestURLIE(InfoExtractor):
- """ Allows adressing of the test cases as test:yout.*be_1 """
+ """ Allows addressing of the test cases as test:yout.*be_1 """
IE_DESC = False # Do not list
_VALID_URL = r'test(?:url)?:(?P<id>(?P<extractor>.+?)(?:_(?P<num>[0-9]+))?)$'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/theplatform.py new/youtube-dl/youtube_dl/extractor/theplatform.py
--- old/youtube-dl/youtube_dl/extractor/theplatform.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/theplatform.py 2016-01-15 19:42:53.000000000 +0100
@@ -85,7 +85,7 @@
class ThePlatformIE(ThePlatformBaseIE):
_VALID_URL = r'''(?x)
(?:https?://(?:link|player)\.theplatform\.com/[sp]/(?P<provider_id>[^/]+)/
- (?:(?P<media>(?:[^/]+/)+select/media/)|(?P<config>(?:[^/\?]+/(?:swf|config)|onsite)/select/))?
+ (?:(?P<media>(?:(?:[^/]+/)+select/)?media/)|(?P<config>(?:[^/\?]+/(?:swf|config)|onsite)/select/))?
|theplatform:)(?P<id>[^/\?&]+)'''
_TESTS = [{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/tudou.py new/youtube-dl/youtube_dl/extractor/tudou.py
--- old/youtube-dl/youtube_dl/extractor/tudou.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/tudou.py 2016-01-14 10:35:12.000000000 +0100
@@ -4,10 +4,16 @@
from .common import InfoExtractor
from ..compat import compat_str
+from ..utils import (
+ int_or_none,
+ float_or_none,
+ unescapeHTML,
+)
class TudouIE(InfoExtractor):
- _VALID_URL = r'https?://(?:www\.)?tudou\.com/(?:listplay|programs(?:/view)?|albumplay)/([^/]+/)*(?P<id>[^/?#]+?)(?:\.html)?/?(?:$|[?#])'
+ IE_NAME = 'tudou'
+ _VALID_URL = r'https?://(?:www\.)?tudou\.com/(?:(?:programs|wlplay)/view|(?:listplay|albumplay)/[\w-]{11})/(?P<id>[\w-]{11})'
_TESTS = [{
'url': 'http://www.tudou.com/listplay/zzdE77v6Mmo/2xN2duXMxmw.html',
'md5': '140a49ed444bd22f93330985d8475fcb',
@@ -16,6 +22,11 @@
'ext': 'f4v',
'title': '卡马乔国足开大脚长传冲吊集锦',
'thumbnail': 're:^https?://.*\.jpg$',
+ 'timestamp': 1372113489000,
+ 'description': '卡马乔卡家军,开大脚先进战术不完全集锦!',
+ 'duration': 289.04,
+ 'view_count': int,
+ 'filesize': int,
}
}, {
'url': 'http://www.tudou.com/programs/view/ajX3gyhL0pc/',
@@ -24,10 +35,12 @@
'ext': 'f4v',
'title': 'La Sylphide-Bolshoi-Ekaterina Krysanova & Vyacheslav Lopatin 2012',
'thumbnail': 're:^https?://.*\.jpg$',
+ 'timestamp': 1349207518000,
+ 'description': 'md5:294612423894260f2dcd5c6c04fe248b',
+ 'duration': 5478.33,
+ 'view_count': int,
+ 'filesize': int,
}
- }, {
- 'url': 'http://www.tudou.com/albumplay/cJAHGih4yYg.html',
- 'only_matching': True,
}]
_PLAYER_URL = 'http://js.tudouui.com/bin/lingtong/PortalPlayer_177.swf'
@@ -42,24 +55,20 @@
def _real_extract(self, url):
video_id = self._match_id(url)
- webpage = self._download_webpage(url, video_id)
+ item_data = self._download_json(
+ 'http://www.tudou.com/tvp/getItemInfo.action?ic=%s' % video_id, video_id)
- youku_vcode = self._search_regex(
- r'vcode\s*:\s*[\'"]([^\'"]*)[\'"]', webpage, 'youku vcode', default=None)
+ youku_vcode = item_data.get('vcode')
if youku_vcode:
return self.url_result('youku:' + youku_vcode, ie='Youku')
- title = self._search_regex(
- r',kw\s*:\s*[\'"]([^\'"]+)[\'"]', webpage, 'title')
- thumbnail_url = self._search_regex(
- r',pic\s*:\s*[\'"]([^\'"]+)[\'"]', webpage, 'thumbnail URL', fatal=False)
-
- player_url = self._search_regex(
- r'playerUrl\s*:\s*[\'"]([^\'"]+\.swf)[\'"]',
- webpage, 'player URL', default=self._PLAYER_URL)
+ title = unescapeHTML(item_data['kw'])
+ description = item_data.get('desc')
+ thumbnail_url = item_data.get('pic')
+ view_count = int_or_none(item_data.get('playTimes'))
+ timestamp = int_or_none(item_data.get('pt'))
- segments = self._parse_json(self._search_regex(
- r'segs: \'([^\']+)\'', webpage, 'segments'), video_id)
+ segments = self._parse_json(item_data['itemSegs'], video_id)
# It looks like the keys are the arguments that have to be passed as
# the hd field in the request url, we pick the higher
# Also, filter non-number qualities (see issue #3643).
@@ -80,8 +89,13 @@
'ext': ext,
'title': title,
'thumbnail': thumbnail_url,
+ 'description': description,
+ 'view_count': view_count,
+ 'timestamp': timestamp,
+ 'duration': float_or_none(part.get('seconds'), 1000),
+ 'filesize': int_or_none(part.get('size')),
'http_headers': {
- 'Referer': player_url,
+ 'Referer': self._PLAYER_URL,
},
}
result.append(part_info)
@@ -92,3 +106,47 @@
'id': video_id,
'title': title,
}
+
+
+class TudouPlaylistIE(InfoExtractor):
+ IE_NAME = 'tudou:playlist'
+ _VALID_URL = r'https?://(?:www\.)?tudou\.com/listplay/(?P<id>[\w-]{11})\.html'
+ _TESTS = [{
+ 'url': 'http://www.tudou.com/listplay/zzdE77v6Mmo.html',
+ 'info_dict': {
+ 'id': 'zzdE77v6Mmo',
+ },
+ 'playlist_mincount': 209,
+ }]
+
+ def _real_extract(self, url):
+ playlist_id = self._match_id(url)
+ playlist_data = self._download_json(
+ 'http://www.tudou.com/tvp/plist.action?lcode=%s' % playlist_id, playlist_id)
+ entries = [self.url_result(
+ 'http://www.tudou.com/programs/view/%s' % item['icode'],
+ 'Tudou', item['icode'],
+ item['kw']) for item in playlist_data['items']]
+ return self.playlist_result(entries, playlist_id)
+
+
+class TudouAlbumIE(InfoExtractor):
+ IE_NAME = 'tudou:album'
+ _VALID_URL = r'https?://(?:www\.)?tudou\.com/album(?:cover|play)/(?P<id>[\w-]{11})'
+ _TESTS = [{
+ 'url': 'http://www.tudou.com/albumplay/v5qckFJvNJg.html',
+ 'info_dict': {
+ 'id': 'v5qckFJvNJg',
+ },
+ 'playlist_mincount': 45,
+ }]
+
+ def _real_extract(self, url):
+ album_id = self._match_id(url)
+ album_data = self._download_json(
+ 'http://www.tudou.com/tvp/alist.action?acode=%s' % album_id, album_id)
+ entries = [self.url_result(
+ 'http://www.tudou.com/programs/view/%s' % item['icode'],
+ 'Tudou', item['icode'],
+ item['kw']) for item in album_data['items']]
+ return self.playlist_result(entries, album_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/tv4.py new/youtube-dl/youtube_dl/extractor/tv4.py
--- old/youtube-dl/youtube_dl/extractor/tv4.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/tv4.py 2016-01-14 10:35:12.000000000 +0100
@@ -67,7 +67,7 @@
info = self._download_json(
'http://www.tv4play.se/player/assets/%s.json' % video_id, video_id, 'Downloading video info JSON')
- # If is_geo_restricted is true, it doesn't neceserally mean we can't download it
+ # If is_geo_restricted is true, it doesn't necessarily mean we can't download it
if info['is_geo_restricted']:
self.report_warning('This content might not be available in your country due to licensing restrictions.')
if info['requires_subscription']:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/unistra.py new/youtube-dl/youtube_dl/extractor/unistra.py
--- old/youtube-dl/youtube_dl/extractor/unistra.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/unistra.py 2016-01-15 19:42:53.000000000 +0100
@@ -38,7 +38,7 @@
webpage = self._download_webpage(url, video_id)
- files = set(re.findall(r'file\s*:\s*"([^"]+)"', webpage))
+ files = set(re.findall(r'file\s*:\s*"(/[^"]+)"', webpage))
quality = qualities(['SD', 'HD'])
formats = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/videomega.py new/youtube-dl/youtube_dl/extractor/videomega.py
--- old/youtube-dl/youtube_dl/extractor/videomega.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/videomega.py 2016-01-14 10:35:12.000000000 +0100
@@ -8,6 +8,7 @@
class VideoMegaIE(InfoExtractor):
+ _WORKING = False
_VALID_URL = r'(?:videomega:|https?://(?:www\.)?videomega\.tv/(?:(?:view|iframe|cdn)\.php)?\?ref=)(?P<id>[A-Za-z0-9]+)'
_TESTS = [{
'url': 'http://videomega.tv/cdn.php?ref=AOSQBJYKIDDIKYJBQSOA',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/videomore.py new/youtube-dl/youtube_dl/extractor/videomore.py
--- old/youtube-dl/youtube_dl/extractor/videomore.py 2016-01-09 01:15:59.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/videomore.py 2016-01-14 10:35:12.000000000 +0100
@@ -170,7 +170,7 @@
'skip_download': True,
},
}, {
- # season single serie with og:video:iframe
+ # season single series with og:video:iframe
'url': 'http://videomore.ru/poslednii_ment/1_sezon/14_seriya',
'only_matching': True,
}, {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/videott.py new/youtube-dl/youtube_dl/extractor/videott.py
--- old/youtube-dl/youtube_dl/extractor/videott.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/videott.py 2016-01-14 10:35:12.000000000 +0100
@@ -11,6 +11,7 @@
class VideoTtIE(InfoExtractor):
+ _WORKING = False
ID_NAME = 'video.tt'
IE_DESC = 'video.tt - Your True Tube'
_VALID_URL = r'http://(?:www\.)?video\.tt/(?:(?:video|embed)/|watch_video\.php\?v=)(?P<id>[\da-zA-Z]{9})'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/vodlocker.py new/youtube-dl/youtube_dl/extractor/vodlocker.py
--- old/youtube-dl/youtube_dl/extractor/vodlocker.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/vodlocker.py 2016-01-15 19:42:53.000000000 +0100
@@ -5,12 +5,13 @@
from ..compat import compat_urllib_parse
from ..utils import (
ExtractorError,
+ NO_DEFAULT,
sanitized_Request,
)
class VodlockerIE(InfoExtractor):
- _VALID_URL = r'https?://(?:www\.)?vodlocker\.com/(?:embed-)?(?P<id>[0-9a-zA-Z]+)(?:\..*?)?'
+ _VALID_URL = r'https?://(?:www\.)?vodlocker\.(?:com|city)/(?:embed-)?(?P<id>[0-9a-zA-Z]+)(?:\..*?)?'
_TESTS = [{
'url': 'http://vodlocker.com/e8wvyzz4sl42',
@@ -43,16 +44,31 @@
webpage = self._download_webpage(
req, video_id, 'Downloading video page')
+ def extract_file_url(html, default=NO_DEFAULT):
+ return self._search_regex(
+ r'file:\s*"(http[^\"]+)",', html, 'file url', default=default)
+
+ video_url = extract_file_url(webpage, default=None)
+
+ if not video_url:
+ embed_url = self._search_regex(
+ r'<iframe[^>]+src=(["\'])(?P<url>(?:https?://)?vodlocker\.(?:com|city)/embed-.+?)\1',
+ webpage, 'embed url', group='url')
+ embed_webpage = self._download_webpage(
+ embed_url, video_id, 'Downloading embed webpage')
+ video_url = extract_file_url(embed_webpage)
+ thumbnail_webpage = embed_webpage
+ else:
+ thumbnail_webpage = webpage
+
title = self._search_regex(
r'id="file_title".*?>\s*(.*?)\s*<(?:br|span)', webpage, 'title')
thumbnail = self._search_regex(
- r'image:\s*"(http[^\"]+)",', webpage, 'thumbnail')
- url = self._search_regex(
- r'file:\s*"(http[^\"]+)",', webpage, 'file url')
+ r'image:\s*"(http[^\"]+)",', thumbnail_webpage, 'thumbnail', fatal=False)
formats = [{
'format_id': 'sd',
- 'url': url,
+ 'url': video_url,
}]
return {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/xhamster.py new/youtube-dl/youtube_dl/extractor/xhamster.py
--- old/youtube-dl/youtube_dl/extractor/xhamster.py 2016-01-09 01:15:59.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/xhamster.py 2016-01-14 10:35:12.000000000 +0100
@@ -6,7 +6,6 @@
from ..utils import (
float_or_none,
int_or_none,
- str_to_int,
unified_strdate,
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/xtube.py new/youtube-dl/youtube_dl/extractor/xtube.py
--- old/youtube-dl/youtube_dl/extractor/xtube.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/xtube.py 2016-01-15 19:42:53.000000000 +0100
@@ -1,10 +1,12 @@
from __future__ import unicode_literals
+import itertools
import re
from .common import InfoExtractor
from ..compat import compat_urllib_parse_unquote
from ..utils import (
+ int_or_none,
parse_duration,
sanitized_Request,
str_to_int,
@@ -12,7 +14,7 @@
class XTubeIE(InfoExtractor):
- _VALID_URL = r'https?://(?:www\.)?(?P<url>xtube\.com/watch\.php\?v=(?P<id>[^/?&#]+))'
+ _VALID_URL = r'(?:xtube:|https?://(?:www\.)?xtube\.com/watch\.php\?.*\bv=)(?P<id>[^/?&#]+)'
_TEST = {
'url': 'http://www.xtube.com/watch.php?v=kVTUy_G222_',
'md5': '092fbdd3cbe292c920ef6fc6a8a9cdab',
@@ -30,7 +32,7 @@
def _real_extract(self, url):
video_id = self._match_id(url)
- req = sanitized_Request(url)
+ req = sanitized_Request('http://www.xtube.com/watch.php?v=%s' % video_id)
req.add_header('Cookie', 'age_verified=1')
webpage = self._download_webpage(req, video_id)
@@ -88,45 +90,43 @@
class XTubeUserIE(InfoExtractor):
IE_DESC = 'XTube user profile'
- _VALID_URL = r'https?://(?:www\.)?xtube\.com/community/profile\.php\?(.*?)user=(?P<username>[^&#]+)(?:$|[&#])'
+ _VALID_URL = r'https?://(?:www\.)?xtube\.com/profile/(?P<id>[^/]+-\d+)'
_TEST = {
- 'url': 'http://www.xtube.com/community/profile.php?user=greenshowers',
+ 'url': 'http://www.xtube.com/profile/greenshowers-4056496',
'info_dict': {
- 'id': 'greenshowers',
+ 'id': 'greenshowers-4056496',
'age_limit': 18,
},
'playlist_mincount': 155,
}
def _real_extract(self, url):
- mobj = re.match(self._VALID_URL, url)
- username = mobj.group('username')
+ user_id = self._match_id(url)
- profile_page = self._download_webpage(
- url, username, note='Retrieving profile page')
-
- video_count = int(self._search_regex(
- r'<strong>%s\'s Videos \(([0-9]+)\)</strong>' % username, profile_page,
- 'video count'))
-
- PAGE_SIZE = 25
- urls = []
- page_count = (video_count + PAGE_SIZE + 1) // PAGE_SIZE
- for n in range(1, page_count + 1):
- lpage_url = 'http://www.xtube.com/user_videos.php?page=%d&u=%s' % (n, username)
- lpage = self._download_webpage(
- lpage_url, username,
- note='Downloading page %d/%d' % (n, page_count))
- urls.extend(
- re.findall(r'addthis:url="([^"]+)"', lpage))
-
- return {
- '_type': 'playlist',
- 'id': username,
- 'age_limit': 18,
- 'entries': [{
- '_type': 'url',
- 'url': eurl,
- 'ie_key': 'XTube',
- } for eurl in urls]
- }
+ entries = []
+ for pagenum in itertools.count(1):
+ request = sanitized_Request(
+ 'http://www.xtube.com/profile/%s/videos/%d' % (user_id, pagenum),
+ headers={
+ 'Cookie': 'popunder=4',
+ 'X-Requested-With': 'XMLHttpRequest',
+ 'Referer': url,
+ })
+
+ page = self._download_json(
+ request, user_id, 'Downloading videos JSON page %d' % pagenum)
+
+ html = page.get('html')
+ if not html:
+ break
+
+ for _, video_id in re.findall(r'data-plid=(["\'])(.+?)\1', html):
+ entries.append(self.url_result('xtube:%s' % video_id, XTubeIE.ie_key()))
+
+ page_count = int_or_none(page.get('pageCount'))
+ if not page_count or pagenum == page_count:
+ break
+
+ playlist = self.playlist_result(entries, user_id)
+ playlist['age_limit'] = 18
+ return playlist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/youtube.py new/youtube-dl/youtube_dl/extractor/youtube.py
--- old/youtube-dl/youtube_dl/extractor/youtube.py 2016-01-09 01:15:59.000000000 +0100
+++ new/youtube-dl/youtube_dl/extractor/youtube.py 2016-01-14 10:35:12.000000000 +0100
@@ -1487,7 +1487,7 @@
if codecs:
codecs = codecs.split(',')
if len(codecs) == 2:
- acodec, vcodec = codecs[0], codecs[1]
+ acodec, vcodec = codecs[1], codecs[0]
else:
acodec, vcodec = (codecs[0], 'none') if kind == 'audio' else ('none', codecs[0])
dct.update({
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/swfinterp.py new/youtube-dl/youtube_dl/swfinterp.py
--- old/youtube-dl/youtube_dl/swfinterp.py 2015-12-30 20:30:33.000000000 +0100
+++ new/youtube-dl/youtube_dl/swfinterp.py 2016-01-14 10:35:12.000000000 +0100
@@ -689,7 +689,7 @@
elif mname in _builtin_classes:
res = _builtin_classes[mname]
else:
- # Assume unitialized
+ # Assume uninitialized
# TODO warn here
res = undefined
stack.append(res)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/utils.py new/youtube-dl/youtube_dl/utils.py
--- old/youtube-dl/youtube_dl/utils.py 2016-01-09 01:15:59.000000000 +0100
+++ new/youtube-dl/youtube_dl/utils.py 2016-01-14 10:35:12.000000000 +0100
@@ -984,7 +984,7 @@
if sign == '-':
time = -time
unit = match.group('unit')
- # A bad aproximation?
+ # A bad approximation?
if unit == 'month':
unit = 'day'
time *= 30
@@ -1307,7 +1307,7 @@
if s is None:
return None
- # The lower-case forms are of course incorrect and inofficial,
+ # The lower-case forms are of course incorrect and unofficial,
# but we support those too
_UNIT_TABLE = {
'B': 1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/version.py new/youtube-dl/youtube_dl/version.py
--- old/youtube-dl/youtube_dl/version.py 2016-01-09 01:16:07.000000000 +0100
+++ new/youtube-dl/youtube_dl/version.py 2016-01-15 19:43:03.000000000 +0100
@@ -1,3 +1,3 @@
from __future__ import unicode_literals
-__version__ = '2016.01.09'
+__version__ = '2016.01.15'
1
0
Hello community,
here is the log from the commit of package erlang-rebar for openSUSE:Factory checked in at 2016-01-20 09:55:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/erlang-rebar (Old)
and /work/SRC/openSUSE:Factory/.erlang-rebar.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "erlang-rebar"
Changes:
--------
--- /work/SRC/openSUSE:Factory/erlang-rebar/erlang-rebar-obs.changes 2015-10-30 13:42:56.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.erlang-rebar.new/erlang-rebar-obs.changes 2016-01-20 09:55:18.000000000 +0100
@@ -1,0 +2,14 @@
+Sun Jan 17 17:25:39 UTC 2016 - matwey.kornilov(a)gmail.com
+
+- Update to version 2.6.1+git20160115.c534f8a:
+ + fprof: document Cachegrind support
+ + fprof: further document Cachegrind support
+ + Add qualified name tests docs (see pr #119)
+ + Fix windows eunit tests
+ + Lock retest dependency
+ + Allow windows release to use etc conf dir
+ + xref: fix dialyzer warning introduced in 69802f63120
+ + Provide additional debug logging on relup generation
+ + Add the latest OTP 18 version to the Travis build
+
+-------------------------------------------------------------------
erlang-rebar.changes: same change
Old:
----
rebar-2.6.1+git20151013.5d73a8d.tar.bz2
New:
----
rebar-2.6.1+git20160115.c534f8a.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ erlang-rebar-obs.spec ++++++
--- /var/tmp/diff_new_pack.Eqnsiz/_old 2016-01-20 09:55:19.000000000 +0100
+++ /var/tmp/diff_new_pack.Eqnsiz/_new 2016-01-20 09:55:19.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package erlang-rebar-obs
#
-# 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 obs 1
Name: erlang-rebar-obs
-Version: 2.6.1+git20151013.5d73a8d
+Version: 2.6.1+git20160115.c534f8a
Release: 0
%define mod_ver %(echo "%{version}" | cut -d "+" -f1)
Summary: A sophisticated build-tool for Erlang projects that follows OTP principles
++++++ erlang-rebar.spec ++++++
--- /var/tmp/diff_new_pack.Eqnsiz/_old 2016-01-20 09:55:19.000000000 +0100
+++ /var/tmp/diff_new_pack.Eqnsiz/_new 2016-01-20 09:55:19.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package erlang-rebar
#
-# 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 obs 0
Name: erlang-rebar
-Version: 2.6.1+git20151013.5d73a8d
+Version: 2.6.1+git20160115.c534f8a
Release: 0
%define mod_ver %(echo "%{version}" | cut -d "+" -f1)
Summary: A sophisticated build-tool for Erlang projects that follows OTP principles
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.Eqnsiz/_old 2016-01-20 09:55:19.000000000 +0100
+++ /var/tmp/diff_new_pack.Eqnsiz/_new 2016-01-20 09:55:19.000000000 +0100
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/rebar/rebar.git</param>
- <param name="changesrevision">5d73a8d8e7c9d56231970ab775231a7a87bcd14a</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">c534f8a903c10bf330c0b819fd75e1495a7e1d39</param></service></servicedata>
\ No newline at end of file
++++++ no-rebar-deps.patch ++++++
--- /var/tmp/diff_new_pack.Eqnsiz/_old 2016-01-20 09:55:19.000000000 +0100
+++ /var/tmp/diff_new_pack.Eqnsiz/_new 2016-01-20 09:55:19.000000000 +0100
@@ -1,7 +1,7 @@
-Index: rebar-2.6.1+git20150928.365ac64/Makefile
+Index: rebar-2.6.1+git20160115.c534f8a/Makefile
===================================================================
---- rebar-2.6.1+git20150928.365ac64.orig/Makefile
-+++ rebar-2.6.1+git20150928.365ac64/Makefile
+--- rebar-2.6.1+git20160115.c534f8a.orig/Makefile
++++ rebar-2.6.1+git20160115.c534f8a/Makefile
@@ -1,7 +1,7 @@
.PHONY: clean xref_warnings deps test test_eunit test_inttest
@@ -19,15 +19,15 @@
test: test_eunit test_inttest
-Index: rebar-2.6.1+git20150928.365ac64/rebar.config.script
+Index: rebar-2.6.1+git20160115.c534f8a/rebar.config.script
===================================================================
---- rebar-2.6.1+git20150928.365ac64.orig/rebar.config.script
-+++ rebar-2.6.1+git20150928.365ac64/rebar.config.script
+--- rebar-2.6.1+git20160115.c534f8a.orig/rebar.config.script
++++ rebar-2.6.1+git20160115.c534f8a/rebar.config.script
@@ -1,7 +1,7 @@
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 ft=erlang et
--ExtraDeps = [{retest, ".*", {git, "git://github.com/dizzyd/retest.git"}}],
+-ExtraDeps = [{retest, ".*", {git, "git://github.com/dizzyd/retest.git", {tag, "4590941a"}}}],
+ExtraDeps = [],
case os:getenv("REBAR_EXTRA_DEPS") of
++++++ rebar-2.6.1+git20151013.5d73a8d.tar.bz2 -> rebar-2.6.1+git20160115.c534f8a.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/.travis.yml new/rebar-2.6.1+git20160115.c534f8a/.travis.yml
--- old/rebar-2.6.1+git20151013.5d73a8d/.travis.yml 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/.travis.yml 2016-01-17 18:25:38.000000000 +0100
@@ -9,6 +9,7 @@
- R14B04
- R14B03
- 17.0
+ - 18.0
before_script:
- hostname -f
- cc -v
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/THANKS new/rebar-2.6.1+git20160115.c534f8a/THANKS
--- old/rebar-2.6.1+git20151013.5d73a8d/THANKS 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/THANKS 2016-01-17 18:25:38.000000000 +0100
@@ -145,3 +145,4 @@
Tony Rogvall
Andrey Teplyashin
Duncan McGreggor
+Sebastien Serre
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/priv/templates/simplenode.windows.runner.cmd new/rebar-2.6.1+git20160115.c534f8a/priv/templates/simplenode.windows.runner.cmd
--- old/rebar-2.6.1+git20151013.5d73a8d/priv/templates/simplenode.windows.runner.cmd 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/priv/templates/simplenode.windows.runner.cmd 2016-01-17 18:25:38.000000000 +0100
@@ -17,8 +17,18 @@
@call :set_trim release_version %%J
)
-@set vm_args=%releases_dir%\%release_version%\vm.args
-@set sys_config=%releases_dir%\%release_version%\sys.config
+@if exist "%releases_dir%\%release_version%\vm.args" (
+ @set vm_args="%releases_dir%\%release_version%\vm.args"
+) else (
+ @set vm_args="%node_root%\etc\vm.args"
+)
+
+@if exist "%releases_dir%\%release_version%\sys.config" (
+ @set sys_config="%releases_dir%\%release_version%\sys.config"
+) else (
+ @set sys_config="%node_root%\etc\app.config"
+)
+
@set node_boot_script=%releases_dir%\%release_version%\%node_name%
@set clean_boot_script=%releases_dir%\%release_version%\start_clean
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/rebar.config.script new/rebar-2.6.1+git20160115.c534f8a/rebar.config.script
--- old/rebar-2.6.1+git20151013.5d73a8d/rebar.config.script 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/rebar.config.script 2016-01-17 18:25:38.000000000 +0100
@@ -1,7 +1,7 @@
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 ft=erlang et
-ExtraDeps = [{retest, ".*", {git, "git://github.com/dizzyd/retest.git"}}],
+ExtraDeps = [{retest, ".*", {git, "git://github.com/dizzyd/retest.git", {tag, "4590941a"}}}],
case os:getenv("REBAR_EXTRA_DEPS") of
false ->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/src/rebar.erl new/rebar-2.6.1+git20160115.c534f8a/src/rebar.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/src/rebar.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/src/rebar.erl 2016-01-17 18:25:38.000000000 +0100
@@ -501,7 +501,9 @@
{profile, $p, "profile", undefined,
"Profile this run of rebar. Via profiler= you can optionally select "
"either fprof (default) or eflame. The result can be found in "
- "fprof.analysis or eflame.svg."},
+ "fprof.analysis or eflame.svg. Additionally, in fprof mode, if "
+ "erlgrind can be found in $PATH, a Cachegrind file (fprof.cgrind) "
+ "will be generated as well."},
{keep_going, $k, "keep-going", undefined,
"Keep running after a command fails"},
{recursive, $r, "recursive", boolean,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_eunit.erl new/rebar-2.6.1+git20160115.c534f8a/src/rebar_eunit.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_eunit.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/src/rebar_eunit.erl 2016-01-17 18:25:38.000000000 +0100
@@ -128,6 +128,7 @@
" name starts with bar and, if no such test exists,~n"
" run the test whose name starts with bar in the~n"
" suite's _tests module)~n"
+ " test[s]=\"foo:bar_test\" (Run bar_test located in module foo)~n"
" random_suite_order=true (Run tests in random order)~n"
" random_suite_order=Seed (Run tests in random order,~n"
" with the PRNG seeded with Seed)~n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_file_utils.erl new/rebar-2.6.1+git20160115.c534f8a/src/rebar_file_utils.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_file_utils.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/src/rebar_file_utils.erl 2016-01-17 18:25:38.000000000 +0100
@@ -88,7 +88,7 @@
?FMT("move /y \"~s\" \"~s\" 1> nul",
[filename:nativename(Source),
filename:nativename(Dest)]),
- [{use_stdout, false}, return_on_error]),
+ [{use_stdout, false}, abort_on_error]),
case R of
[] ->
ok;
@@ -131,14 +131,14 @@
delete_each_dir_win32([Dir | Rest]) ->
{ok, []} = rebar_utils:sh(?FMT("rd /q /s \"~s\"",
[filename:nativename(Dir)]),
- [{use_stdout, false}, return_on_error]),
+ [{use_stdout, false}, abort_on_error]),
delete_each_dir_win32(Rest).
xcopy_win32(Source,Dest)->
{ok, R} = rebar_utils:sh(
?FMT("xcopy \"~s\" \"~s\" /q /y /e 2> nul",
[filename:nativename(Source), filename:nativename(Dest)]),
- [{use_stdout, false}, return_on_error]),
+ [{use_stdout, false}, abort_on_error]),
case length(R) > 0 of
%% when xcopy fails, stdout is empty and and error message is printed
%% to stderr (which is redirected to nul)
@@ -162,8 +162,10 @@
cp_r_win32(S, {false, filename:join(DestDir, filename:basename(Source))});
cp_r_win32({false, Source},{false, Dest}) ->
%% from file to file
- {ok,_} = file:copy(Source, Dest),
- ok;
+ case file:copy(Source, Dest) of
+ {ok,_} -> ok;
+ _ -> throw(rebar_abort)
+ end;
cp_r_win32({true, SourceDir}, {false, DestDir}) ->
case filelib:is_regular(DestDir) of
true ->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_upgrade.erl new/rebar-2.6.1+git20160115.c534f8a/src/rebar_upgrade.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_upgrade.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/src/rebar_upgrade.erl 2016-01-17 18:25:38.000000000 +0100
@@ -44,18 +44,24 @@
'generate-upgrade'(Config0, ReltoolFile) ->
%% Get the old release path
{Config, ReltoolConfig} = rebar_rel_utils:load_config(Config0, ReltoolFile),
+ ?DEBUG("reltool.config: ~p~n", [ReltoolConfig]),
TargetParentDir = rebar_rel_utils:get_target_parent_dir(Config,
ReltoolConfig),
TargetDir = rebar_rel_utils:get_target_dir(Config, ReltoolConfig),
+ ?DEBUG("target dir: ~p~n", [TargetDir]),
PrevRelPath = rebar_rel_utils:get_previous_release_path(Config),
OldVerPath = filename:join([TargetParentDir, PrevRelPath]),
+ ?DEBUG("old version path: ~p~n", [OldVerPath]),
%% Run checks to make sure that building a package is possible
{NewVerPath, NewName, NewVer, OldVer} = run_checks(Config, OldVerPath,
ReltoolConfig),
+ ?DEBUG("old version: ~p~n", [OldVer]),
NameVer = NewName ++ "_" ++ NewVer,
OldRelName = get_old_rel_name(OldVerPath, OldVer, NewName),
+ ?DEBUG("new version path: ~p~n", [NewVerPath]),
+ ?DEBUG("old version: ~p~n", [NewVer]),
%% Save the code path prior to doing anything
OrigPath = code:get_path(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_xref.erl new/rebar-2.6.1+git20160115.c534f8a/src/rebar_xref.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/src/rebar_xref.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/src/rebar_xref.erl 2016-01-17 18:25:38.000000000 +0100
@@ -60,9 +60,9 @@
true = code:add_path(rebar_utils:ebin_dir()),
%% Add extra paths to code path to, for example, be used
- %% when behaviour modules are defined
- [code:add_path(Path)
- || Path <- rebar_config:get(Config, xref_extra_paths, [])],
+ %% when behaviour modules are defined.
+ lists:foreach(fun(P) -> true = code:add_path(P) end,
+ rebar_config:get(Config, xref_extra_paths, [])),
%% Get list of xref checks we want to run
ConfXrefChecks = rebar_config:get(Config, xref_checks,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_compiler_tests.erl new/rebar-2.6.1+git20160115.c534f8a/test/rebar_compiler_tests.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_compiler_tests.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/test/rebar_compiler_tests.erl 2016-01-17 18:25:38.000000000 +0100
@@ -84,11 +84,11 @@
setup,
fun() ->
setup_basic_project(),
- setup_rebar_config(),
- rebar("compile")
+ setup_rebar_config()
end,
fun teardown/1,
- fun(RebarOut)->
+ fun()->
+ RebarOut = rebar("compile"),
[
{"Exit after error",
?_assert(string:str(RebarOut, "ERROR: compile failed") =/= 0)}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_eunit_tests.erl new/rebar-2.6.1+git20160115.c534f8a/test/rebar_eunit_tests.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_eunit_tests.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/test/rebar_eunit_tests.erl 2016-01-17 18:25:38.000000000 +0100
@@ -56,7 +56,7 @@
?_assert(string:str(RebarOut, "myapp_mymod:") =/= 0)},
{"Tests are only run once",
- ?_assert(string:str(RebarOut, "All 2 tests passed") =/= 0)}]
+ ?_assert(string:str(RebarOut, "2 tests passed") =/= 0)}]
end}.
eunit_with_suites_and_tests_test_() ->
@@ -80,7 +80,7 @@
?_assert(string:str(RebarOut, "myapp_mymod:") =:= 0)},
{"Selected suite tests are only run once",
- ?_assert(string:str(RebarOut, "All 4 tests passed") =/= 0)}]
+ ?_assert(string:str(RebarOut, "4 tests passed") =/= 0)}]
end},
{"Ensure EUnit runs selected _tests suites",
setup, fun() ->
@@ -102,7 +102,7 @@
?_assert(string:str(RebarOut, "myapp_mymod:") =:= 0)},
{"Selected suite tests are only run once",
- ?_assert(string:str(RebarOut, "All 2 tests passed") =/= 0)}]
+ ?_assert(string:str(RebarOut, "2 tests passed") =/= 0)}]
end},
{"Ensure EUnit runs a specific test defined in a selected suite",
setup, fun() ->
@@ -154,7 +154,7 @@
"myapp_mymod2_tests:myfunc2_test/0") =/= 0)]},
{"Selected suite tests are run once",
- ?_assert(string:str(RebarOut, "All 3 tests passed") =/= 0)}]
+ ?_assert(string:str(RebarOut, "3 tests passed") =/= 0)}]
end},
{"Ensure EUnit runs specific test in a _tests suite",
setup,
@@ -190,7 +190,7 @@
=/= 0)]},
{"Selected suite tests is run once",
- ?_assert(string:str(RebarOut, "All 2 tests passed") =/= 0)}]
+ ?_assert(string:str(RebarOut, "2 tests passed") =/= 0)}]
end},
{"Ensure EUnit runs a specific test by qualified function name",
setup,
@@ -325,7 +325,11 @@
assert_rebar_runs() ->
prepare_rebar_script(),
- ?assert(string:str(os:cmd(filename:nativename("./" ++ ?TMP_DIR ++ "rebar")),
+ {ok, Cwd} = file:get_cwd(),
+ ok = file:set_cwd(?TMP_DIR),
+ RebarOut = os:cmd(filename:nativename("./rebar")),
+ ok = file:set_cwd(Cwd),
+ ?assert(string:str(RebarOut,
"No command to run specified!") =/= 0).
basic_setup_test_() ->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_file_utils_tests.erl new/rebar-2.6.1+git20160115.c534f8a/test/rebar_file_utils_tests.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_file_utils_tests.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/test/rebar_file_utils_tests.erl 2016-01-17 18:25:38.000000000 +0100
@@ -36,7 +36,7 @@
-define(TMP_DIR, "tmp_file_utils").
--define(SRC, "source dir?").
+-define(SRC, "source dir").
-define(DST, "dest (dir)").
-define(FILE1, "file 1").
-define(FILE2, "file(2)").
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_xref_eunit.erl new/rebar-2.6.1+git20160115.c534f8a/test/rebar_xref_eunit.erl
--- old/rebar-2.6.1+git20151013.5d73a8d/test/rebar_xref_eunit.erl 2015-10-15 10:29:57.000000000 +0200
+++ new/rebar-2.6.1+git20160115.c534f8a/test/rebar_xref_eunit.erl 2016-01-17 18:25:38.000000000 +0100
@@ -192,8 +192,8 @@
{unix, _} ->
[] = os:cmd("chmod u+x " ++ Rebar);
{win32, _} ->
- {ok, _} = file:copy(?REBAR_SCRIPT ++ ".bat",
- ?TMP_DIR ++ "rebar.bat")
+ {ok, _} = file:copy(?REBAR_SCRIPT ++ ".cmd",
+ ?TMP_DIR ++ "rebar.cmd")
end.
rebar() ->
++++++ spec.in ++++++
--- /var/tmp/diff_new_pack.Eqnsiz/_old 2016-01-20 09:55:20.000000000 +0100
+++ /var/tmp/diff_new_pack.Eqnsiz/_new 2016-01-20 09:55:20.000000000 +0100
@@ -19,7 +19,7 @@
%define obs OBS
Name: PKGNAME
-Version: 2.6.1+git20151013.5d73a8d
+Version: 2.6.1+git20160115.c534f8a
Release: 0
%define mod_ver %(echo "%{version}" | cut -d "+" -f1)
Summary: A sophisticated build-tool for Erlang projects that follows OTP principles
1
0
Hello community,
here is the log from the commit of package golang-packaging for openSUSE:Factory checked in at 2016-01-20 09:55:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/golang-packaging (Old)
and /work/SRC/openSUSE:Factory/.golang-packaging.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "golang-packaging"
Changes:
--------
--- /work/SRC/openSUSE:Factory/golang-packaging/golang-packaging.changes 2016-01-12 16:13:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.golang-packaging.new/golang-packaging.changes 2016-01-20 09:55:17.000000000 +0100
@@ -1,0 +2,7 @@
+Tue Jan 19 10:36:14 UTC 2016 - i(a)marguerite.su
+
+- update version 14.3
+ * fix: command not found error for go test on SLE
+ * fix #5 again: gsub importpath itself is not enough
+
+-------------------------------------------------------------------
Old:
----
golang-packaging-14.2.tar.gz
New:
----
golang-packaging-14.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ golang-packaging.spec ++++++
--- /var/tmp/diff_new_pack.2vOuos/_old 2016-01-20 09:55:18.000000000 +0100
+++ /var/tmp/diff_new_pack.2vOuos/_new 2016-01-20 09:55:18.000000000 +0100
@@ -17,7 +17,7 @@
Name: golang-packaging
-Version: 14.2
+Version: 14.3
Release: 0
Summary: A toolchain to help packaging golang
License: GPL-3.0
@@ -56,7 +56,7 @@
%files
%defattr(-,root,root)
-%doc COPYING README.md TODO ChangeLog
+%doc COPYING README.md ChangeLog
%config %{_sysconfdir}/rpm/macros.go
%if %{?suse_version} >= 1320
%{_prefix}/lib/rpm/fileattrs/golang.attr
++++++ golang-packaging-14.2.tar.gz -> golang-packaging-14.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/golang-packaging-14.2/ChangeLog new/golang-packaging-14.3/ChangeLog
--- old/golang-packaging-14.2/ChangeLog 2016-01-11 12:16:49.000000000 +0100
+++ new/golang-packaging-14.3/ChangeLog 2016-01-19 11:33:28.000000000 +0100
@@ -1,3 +1,16 @@
+== update version 14.3 ==
+
+ * fix: command not found error for go test on SLE
+ * fix #5 again: gsub importpath itself is not enough
+
+== update version 14.2 ==
+
+ * golang.req: fix ' // indirect' comment in import
+
+== update version 14.1 ==
+
+ * fix: uniq! returns nil if everything is unique
+
== update version 14 ==
* if importpath has "test/example", it should survive (github#5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/golang-packaging-14.2/TODO new/golang-packaging-14.3/TODO
--- old/golang-packaging-14.2/TODO 2016-01-11 12:16:49.000000000 +0100
+++ new/golang-packaging-14.3/TODO 1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-# TODO
-
-* multithreading
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/golang-packaging-14.2/golang/cli.rb new/golang-packaging-14.3/golang/cli.rb
--- old/golang-packaging-14.2/golang/cli.rb 2016-01-11 12:16:49.000000000 +0100
+++ new/golang-packaging-14.3/golang/cli.rb 2016-01-19 11:33:28.000000000 +0100
@@ -1,19 +1,32 @@
module CLI
- def self.run(command="")
-
- # echo the command we run to the buildlog
- puts command
-
- IO.popen(command) {|f| f.each_line {|l| puts l}}
-
- if $? == 0
- File.open("/tmp/exitstatus.txt","w:UTF-8") {|f| f.puts(0)}
+ def write_status(status)
+ file = "/tmp/exitstatus.txt"
+ mode = "w:UTF-8"
+ if status == 0
+ File.open(file,mode) {|f| f.puts(0)}
else
- File.open("/tmp/exitstatus.txt","w:UTF-8") {|f| f.puts(1)}
+ File.open(file,mode) {|f| f.puts(1)}
abort "[ERROR]Go command failed! Please check."
end
+ end
+ def self.run(env={},cmd="")
+ unless RUBY_VERSION.to_f > 1.8
+ # popen in 1.8 doesn't support env hash
+ def popen_env(hash, cmd)
+ hash.each do |k,v|
+ ENV[k] = v
+ end
+ io = IO.popen(cmd)
+ io.close
+ write_status($?)
+ end
+ popen_env(env,cmd) {|f| f.each_line {|l| puts l}}
+ else
+ IO.popen(env,cmd) {|f| f.each_line {|l| puts l}}
+ write_status($?)
+ end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/golang-packaging-14.2/golang-macros.rb new/golang-packaging-14.3/golang-macros.rb
--- old/golang-packaging-14.2/golang-macros.rb 2016-01-11 12:16:49.000000000 +0100
+++ new/golang-packaging-14.3/golang-macros.rb 2016-01-19 11:33:28.000000000 +0100
@@ -104,14 +104,14 @@
# MODs: nil, "...", "/...", "foo...", "foo/...", "foo bar", "foo bar... baz" and etc
if mods.empty?
- CLI.run("GOPATH=\"#{gopath}\" GOBIN=\"#{gobin}\" go install #{extraflags} #{buildflags} #{importpath}")
+ CLI.run({"GOPATH"=>gopath,"GOBIN"=>gobin}, "go install #{extraflags} #{buildflags} #{importpath}")
else
for mod in mods do
if mod == "..."
- CLI.run("GOPATH=\"#{gopath}\" GOBIN=\"#{gobin}\" go install #{extraflags} #{buildflags} #{importpath}...")
+ CLI.run({"GOPATH"=>gopath,"GOBIN"=>gobin}, "go install #{extraflags} #{buildflags} #{importpath}...")
break
else
- CLI.run("GOPATH=\"#{gopath}\" GOBIN=\"#{gobin}\" go install #{extraflags} #{buildflags} #{importpath}/#{mod}")
+ CLI.run({"GOPATH"=>gopath,"GOBIN"=>gobin}, "go install #{extraflags} #{buildflags} #{importpath}/#{mod}")
end
end
end
@@ -187,7 +187,7 @@
puts "[ERROR]gofix: please specify a valid importpath, see: go help fix"
else
gopath = $builddir + "/go"
- CLI.run("GOPATH=#{gopath} go fix #{ARGV[1]}...")
+ CLI.run({"GOPATH"=>gopath},"go fix #{ARGV[1]}...")
end
puts "Fixed!"
@@ -204,7 +204,7 @@
puts "[ERROR]gotest: please specify a valid importpath, see: go help test"
else
gopath = $builddir + "/go:" + $libdir + "/go/contrib"
- CLI.run("GOPATH=#{gopath} go test -x #{ARGV[1]}...")
+ CLI.run({"GOPATH"=>gopath}, "go test -x #{ARGV[1]}...")
end
puts "Test passed!"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/golang-packaging-14.2/golang.prov new/golang-packaging-14.3/golang.prov
--- old/golang-packaging-14.2/golang.prov 2016-01-11 12:16:49.000000000 +0100
+++ new/golang-packaging-14.3/golang.prov 2016-01-19 11:33:28.000000000 +0100
@@ -9,10 +9,11 @@
# read stdin for filelist rpm feeds us for a (sub) package
filelist = []
+prefix = buildroot + contribdir + "/"
ARGF.each do |l|
# if line has "*.a"
# buildroot + contribdir + golang.org/x/text/collate/colltab.a
- filelist << l.gsub(buildroot + contribdir + "/",'').strip! if ( l.index(/\.a\n/) && ! l.gsub(importpath,'').index(/example|test/) )
+ filelist << l.gsub(prefix,'').strip! if ( l.index(".a\n") && ! l.gsub(prefix + importpath,'').index(/example|test/) )
end
# filelist:
1
0
Hello community,
here is the log from the commit of package vms-empire for openSUSE:Factory checked in at 2016-01-20 09:55:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vms-empire (Old)
and /work/SRC/openSUSE:Factory/.vms-empire.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vms-empire"
Changes:
--------
--- /work/SRC/openSUSE:Factory/vms-empire/vms-empire.changes 2015-12-09 22:36:01.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.vms-empire.new/vms-empire.changes 2016-01-20 09:55:15.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Jan 18 23:14:23 UTC 2016 - nemysis(a)openSUSE.org
+
+- Update to 1.14, please see
+
+ /usr/share/doc/packages/vms-empire/NEWS
+
+-------------------------------------------------------------------
Old:
----
vms-empire-1.13.tar.gz
New:
----
vms-empire-1.14.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vms-empire.spec ++++++
--- /var/tmp/diff_new_pack.MY6N32/_old 2016-01-20 09:55:16.000000000 +0100
+++ /var/tmp/diff_new_pack.MY6N32/_new 2016-01-20 09:55:16.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package vms-empire
#
-# 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: vms-empire
-Version: 1.13
+Version: 1.14
Release: 0
Summary: Simulation of a full-scale war between two emperors
License: GPL-2.0
++++++ vms-empire-1.13.tar.gz -> vms-empire-1.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/Makefile new/vms-empire-1.14/Makefile
--- old/vms-empire-1.13/Makefile 2014-12-14 23:05:55.000000000 +0100
+++ new/vms-empire-1.14/Makefile 2016-01-05 07:49:05.000000000 +0100
@@ -4,7 +4,7 @@
# See the file COPYING, distributed with empire, for restriction
# and warranty information.
-VERS=1.13
+VERS=1.14
# Use -g to compile the program for debugging.
#DEBUG = -g -DDEBUG
@@ -128,3 +128,6 @@
release: vms-empire-$(VERS).tar.gz vms-empire.html
shipper version=$(VERS) | sh -e -x
+
+refresh: vms-empire.html
+ shipper -N -w version=$(VERS) | sh -e -x
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/NEWS new/vms-empire-1.14/NEWS
--- old/vms-empire-1.13/NEWS 2014-12-14 23:05:39.000000000 +0100
+++ new/vms-empire-1.14/NEWS 2016-01-05 07:49:39.000000000 +0100
@@ -1,24 +1,29 @@
vms-empire news
-1.13: 2014-12-14:
+1.14: 2016-01-05 06:49:17Z
+ Add an identifying magic cookie and version to save files.
+ Full ANSI prototypes for private functions as well as public.
+ Markup fix for probability table.
+
+1.13: 2014-12-14T17:06:26Z
Comment on entry to and exit from edit mode.
Cleaned up packaging and install/uninstall productions.
-1.12: 2014-05-20:
+1.12: 2014-05-20T09:03:09Z
Incorporated Dennis Pinckard's fix for a Mac OS/X port bug.
Added desktop file.
-1.11: 2013-12-31T17:28:06
+1.11: 2013-12-31T17:31:04Z
Clean up code to modern C, apply cppcheck.
Fix code typo reported as Debian bug #593434
-1.10: 2013-08-22T23:46:03
+1.10: 2013-08-22T23:47:21Z
Fix core dump when a satellite bounced off the world edge.
Full ANSIfication of function prototypes (which fixed the
sat bug - the code appears to have been tickling some obscure
bug in the compilation of function calls with K&R-style prototypes).
-1.9: 2012-02-16T02:49:47
+1.9: 2012-02-16T22:59:22Z
Drop RPM packaging. Documentation cleanups.
1.8: 2010-10-21T12:47:33Z
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/attack.c new/vms-empire-1.14/attack.c
--- old/vms-empire-1.13/attack.c 2013-08-27 17:00:47.000000000 +0200
+++ new/vms-empire-1.14/attack.c 2014-12-15 00:16:47.000000000 +0100
@@ -79,8 +79,9 @@
void
attack_obj(piece_info_t *att_obj, loc_t loc)
{
- void describe(), survive();
-
+ void describe(piece_info_t *, piece_info_t *, loc_t);
+ void survive(piece_info_t *, loc_t);
+
piece_info_t *def_obj; /* defender */
int owner;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/compmove.c new/vms-empire-1.14/compmove.c
--- old/vms-empire-1.13/compmove.c 2013-08-27 17:00:47.000000000 +0200
+++ new/vms-empire-1.14/compmove.c 2014-12-15 17:26:35.000000000 +0100
@@ -34,7 +34,7 @@
void
comp_move(int nmoves)
{
- void do_cities(), do_pieces(), check_endgame();
+ void do_cities(void), do_pieces(void), check_endgame(void);
int i;
piece_info_t *obj;
@@ -366,7 +366,7 @@
void
do_pieces(void)
{
- void cpiece_move();
+ void cpiece_move(piece_info_t *);
int i;
piece_info_t *obj, *next_obj;
@@ -389,12 +389,10 @@
void
cpiece_move(piece_info_t *obj)
{
- void move1();
+ void move1(piece_info_t *);
bool changed_loc;
int max_hits;
- loc_t saved_loc;
- city_info_t *cityp;
if (obj->type == SATELLITE) {
move_sat (obj);
@@ -406,11 +404,12 @@
max_hits = piece_attr[obj->type].max_hits;
if (obj->type == FIGHTER) { /* init fighter range */
- cityp = find_city (obj->loc);
+ city_info_t *cityp = find_city (obj->loc);
if (cityp != NULL) obj->range = piece_attr[FIGHTER].range;
}
while (obj->moved < obj_moves (obj)) {
+ loc_t saved_loc;
saved_loc = obj->loc; /* remember starting location */
move1 (obj);
if (saved_loc != obj->loc) changed_loc = true;
@@ -441,7 +440,8 @@
void
move1(piece_info_t *obj)
{
- void army_move(), transport_move(), fighter_move(), ship_move();
+ void army_move(piece_info_t *), transport_move(piece_info_t *);
+ void fighter_move(piece_info_t *), ship_move(piece_info_t *);
switch (obj->type) {
case ARMY: army_move (obj); break;
@@ -483,10 +483,12 @@
void
army_move(piece_info_t *obj)
{
- loc_t move_away();
- loc_t find_attack();
- void make_army_load_map(), make_unload_map(), make_tt_load_map();
- void board_ship();
+ loc_t move_away(view_map_t *, loc_t, char *);
+ loc_t find_attack(loc_t, char *, char *);
+ void make_army_load_map(piece_info_t *, view_map_t *, view_map_t *);
+ void make_unload_map(view_map_t *, view_map_t *);
+ void make_tt_load_map(view_map_t *, view_map_t *);
+ void board_ship(piece_info_t *, path_map_t *, loc_t);
loc_t new_loc;
path_map_t path_map2[MAP_SIZE];
@@ -760,12 +762,11 @@
{
piece_info_t *p;
int i;
- loc_t x_loc;
p = find_best_tt (obj->ship, obj->loc); /* look here first */
for (i = 0; i < 8; i++) { /* try surrounding squares */
- x_loc = obj->loc + dir_offset[i];
+ loc_t x_loc = obj->loc + dir_offset[i];
if (map[x_loc].on_board)
p = find_best_tt (p, x_loc);
@@ -792,11 +793,10 @@
loc_t
move_away(view_map_t *vmap, loc_t loc, char *terrain)
{
- loc_t new_loc;
int i;
for (i = 0; i < 8; i++) {
- new_loc = loc + dir_offset[i];
+ loc_t new_loc = loc + dir_offset[i];
if (map[new_loc].on_board
&& strchr (terrain, vmap[new_loc].contents))
return (new_loc);
@@ -815,14 +815,14 @@
loc_t
find_attack(loc_t loc, char *obj_list, char *terrain)
{
- loc_t new_loc, best_loc;
+ loc_t best_loc;
int i, best_val;
char *p;
best_loc = loc; /* nothing found yet */
best_val = INFINITY;
for (i = 0; i < 8; i++) {
- new_loc = loc + dir_offset[i];
+ loc_t new_loc = loc + dir_offset[i];
if (map[new_loc].on_board /* can we move here? */
&& strchr (terrain, map[new_loc].contents)) {
@@ -851,8 +851,6 @@
void
transport_move(piece_info_t *obj)
{
- void tt_do_move();
-
loc_t new_loc;
/* empty transports can attack */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/control new/vms-empire-1.14/control
--- old/vms-empire-1.13/control 2014-12-14 23:00:00.000000000 +0100
+++ new/vms-empire-1.14/control 2015-04-08 19:51:01.000000000 +0200
@@ -3,7 +3,7 @@
Package: vms-empire
-Description: The ancestor of all 4x (expand/explore/exploit/exterminate) games.
+Description: The ancestor of all expand/explore/exploit/exterminate games.
Empire is a simulation of a full-scale war between two emperors, the
computer and you. Naturally, there is only room for one, so the
object of the game is to destroy the other. The computer plays by the
@@ -11,17 +11,21 @@
expand/explore/exploit/exterminate games, including Civilization and
Master of Orion.
-XBS-Destinations: freecode
+#XBS-Destinations: freshcode
Homepage: http://www.catb.org/~esr/vms-empire
XBS-HTML-Target: index.html
-XBS-Gitorious-URL: https://gitorious.org/vms-empire
+XBS-Repository-URL: http://thyrsus.com/gitweb/?p=vms-empire.git
-XBS-Ohloh-URL: https://www.ohloh.net/p/vms-empire
+XBS-Developer-Clone: git@thyrsus.com:vms-empire
-XBS-Freecode-Tags: Games/Entertainment
+XBS-Anonymous-Clone: git://thyrsus.com/repositories/vms-empire.git
+
+XBS-OpenHub-URL: https://www.openhub.net/p/vms-empire
+
+#XBS-Project-Tags: Games/Entertainment
XBS-Logo: vms-empire.png
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/display.c new/vms-empire-1.14/display.c
--- old/vms-empire-1.13/display.c 2013-08-27 17:00:47.000000000 +0200
+++ new/vms-empire-1.14/display.c 2014-12-15 17:26:35.000000000 +0100
@@ -232,7 +232,7 @@
print_sector(int whose, view_map_t vmap[], int sector)
/* whose is USER or COMP, vmap is map to display, sector is sector to display */
{
- void display_screen();
+ void display_screen(view_map_t []);
int first_row, first_col, last_row, last_col;
int display_rows, display_cols;
@@ -437,7 +437,7 @@
void
print_zoom(view_map_t *vmap)
{
- void print_zoom_cell ();
+ void print_zoom_cell (view_map_t *, int, int, int, int);
int row_inc, col_inc;
int r, c;
@@ -485,7 +485,7 @@
void
print_pzoom(char *s, path_map_t *pmap, view_map_t *vmap)
{
- void print_pzoom_cell();
+ void print_pzoom_cell(path_map_t *, view_map_t *, int, int, int, int);
int row_inc, col_inc;
int r, c;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/edit.c new/vms-empire-1.14/edit.c
--- old/vms-empire-1.13/edit.c 2014-05-28 20:47:13.000000000 +0200
+++ new/vms-empire-1.14/edit.c 2014-12-15 01:46:31.000000000 +0100
@@ -22,22 +22,24 @@
void
edit(loc_t edit_cursor)
{
- char e_cursor();
- void e_leave(), e_print(), e_random();
- void e_stasis(), e_end(), e_wake(), e_sleep();
- void e_info(), e_prod(), e_help(), e_explore();
- void e_fill(), e_land(), e_city_func(), e_transport();
- void e_attack(), e_repair();
+ char e_cursor(loc_t *);
+ void e_leave(void), e_print(loc_t *), e_random(loc_t);
+ void e_stasis(loc_t), e_end(loc_t *, loc_t, int);
+ void e_wake(loc_t), e_sleep(loc_t);
+ void e_info(loc_t), e_prod(loc_t), e_help(void), e_explore(loc_t);
+ void e_fill(loc_t), e_land(loc_t), e_transport(loc_t);
+ void e_city_func(loc_t *, loc_t, int *);
+ void e_attack(loc_t), e_repair(loc_t);
loc_t path_start;
int path_type;
- char e;
path_start = -1; /* not building a path yet */
comment ("Edit mode...");
for (;;) { /* until user gives command to leave */
+ char e;
display_loc_u (edit_cursor); /* position cursor */
e = e_cursor (&edit_cursor); /* handle cursor movement */
@@ -117,7 +119,6 @@
e_cursor(loc_t *edit_cursor)
{
chtype e;
- int p;
/* set up terminal */
(void) crmode ();
@@ -126,6 +127,7 @@
topini (); /* clear any error messages */
for (;;) {
+ int p;
p = direction (e);
if (p == -1) break;
@@ -353,10 +355,10 @@
{
city_info_t *cityp;
piece_info_t *obj;
- int i;
cityp = find_city (loc);
if (cityp != NULL) {
+ int i;
for (i = 0; i < NUM_OBJECTS; i++)
cityp->func[i] = NOFUNC;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/empire.6 new/vms-empire-1.14/empire.6
--- old/vms-empire-1.13/empire.6 2014-05-21 15:00:44.000000000 +0200
+++ new/vms-empire-1.14/empire.6 2016-01-05 07:50:42.000000000 +0100
@@ -2,12 +2,12 @@
.\" Title: Empire
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 05/21/2014
+.\" Date: 01/05/2016
.\" Manual: Games
.\" Source: empire
.\" Language: English
.\"
-.TH "EMPIRE" "6" "05/21/2014" "empire" "Games"
+.TH "EMPIRE" "6" "01/05/2016" "empire" "Games"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -313,13 +313,15 @@
The following table gives the probability that the piece listed on the side will defeat the piece listed at the top in a battle\&. (The table assumes that both pieces are undamaged\&.)
.TS
allbox center tab(:);
-l c c c c c
+c l c c c c
l c c c c c
l c c c c c
l c c c c c
l c c c c c
l c c c c c.
T{
+\ \&
+T}:T{
AFPT
T}:T{
D
@@ -329,8 +331,6 @@
C
T}:T{
B
-T}:T{
-\ \&
T}
T{
AFPT
@@ -889,6 +889,8 @@
.PP
No doubt numerous\&.
.PP
+The savefile format changed incompatibly after version 1\&.13\&.
+.PP
Satellites are not completely implemented\&. You should be able to move to a square that contains a satellite, but the program won\*(Aqt let you\&. Enemy satellites should not cause your pieces to awaken\&.
.SH "AUTHORS"
.PP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/empire.c new/vms-empire-1.14/empire.c
--- old/vms-empire-1.13/empire.c 2014-05-28 20:46:10.000000000 +0200
+++ new/vms-empire-1.14/empire.c 2014-12-15 17:26:35.000000000 +0100
@@ -28,7 +28,7 @@
empire(void)
{
void do_command(char);
- void print_zoom();
+ void print_zoom(view_map_t *);
char order;
int turn = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/game.c new/vms-empire-1.14/game.c
--- old/vms-empire-1.13/game.c 2013-08-27 17:00:47.000000000 +0200
+++ new/vms-empire-1.14/game.c 2014-12-15 17:36:24.000000000 +0100
@@ -174,13 +174,15 @@
{
count_t regen_land();
- count_t placed, i;
- loc_t loc;
+ count_t placed;
count_t num_land;
num_land = 0; /* nothing in land array yet */
placed = 0; /* nothing placed yet */
while (placed < NUM_CITY) {
+ count_t i;
+ loc_t loc;
+
while (num_land == 0) num_land = regen_land (placed);
i = irand (num_land-1); /* select random piece of land */
loc = land[i];
@@ -302,7 +304,7 @@
{
void find_cont(void), make_pair(void);
- loc_t compi, useri;
+ loc_t compi;
city_info_t *compp, *userp;
int comp_cont, user_cont;
int pair;
@@ -324,7 +326,7 @@
compp = cont_tab[comp_cont].cityp[compi];
do { /* select different user city */
- useri = irand ((long)cont_tab[user_cont].ncity);
+ loc_t useri = irand ((long)cont_tab[user_cont].ncity);
userp = cont_tab[user_cont].cityp[useri];
} while (userp == compp);
@@ -507,6 +509,10 @@
#define wbuf(buf) if (!xwrite (f, (char *)buf, sizeof (buf))) return
#define wval(val) if (!xwrite (f, (char *)&val, sizeof (val))) return
+#define SAVECOOKIE "EMPSAVE 1\n" /* increase digit when format changes */
+
+static char buf[32];
+
void save_game(void)
{
FILE *f; /* file to save game in */
@@ -516,6 +522,7 @@
perror ("Cannot save saved game");
return;
}
+ wbuf(SAVECOOKIE);
wbuf (map);
wbuf (comp_map);
wbuf (user_map);
@@ -547,7 +554,7 @@
int restore_game(void)
{
- void read_embark();
+ void read_embark(piece_info_t *, int);
FILE *f; /* file to save game in */
long i;
@@ -559,6 +566,11 @@
perror ("Cannot open saved game");
return (false);
}
+ if (fgets(buf, sizeof(buf), f) == NULL)
+ return false;
+ else if (strcmp(buf, SAVECOOKIE) != 0)
+ return false;
+ i = fread(buf, 1, sizeof(char), f); /* skip trailing nul after cookie */
rbuf (map);
rbuf (comp_map);
rbuf (user_map);
@@ -639,10 +651,9 @@
piece_info_t *ship;
piece_info_t *obj;
- int count;
for (ship = list; ship != NULL; ship = ship->piece_link.next) {
- count = ship->count; /* get # of pieces we need */
+ int count = ship->count; /* get # of pieces we need */
if (count < 0) inconsistent ();
ship->count = 0; /* nothing on board yet */
for (obj = map[ship->loc].objp; obj && count;
@@ -749,10 +760,9 @@
void
replay_movie(void)
{
- void print_movie_cell();
+ void print_movie_cell(char *, int, int, int, int);
FILE *f; /* file to save game in */
- int row_inc, col_inc;
int r, c;
int round;
@@ -765,6 +775,7 @@
round = 0;
clear_screen ();
for (;;) {
+ int row_inc, col_inc;
if (fread ((char *)mapbuf, 1, sizeof (mapbuf), f) != sizeof (mapbuf))
break;
round += 1;
@@ -803,12 +814,11 @@
count_t i;
int counts[2*NUM_OBJECTS+2];
int user_cost, comp_cost;
- char *p;
(void) memset ((char *)counts, '\0', sizeof (counts));
for (i = 0; i < MAP_SIZE; i++) {
- p = strchr (pieces, mbuf[i]);
+ char *p = strchr (pieces, mbuf[i]);
if (p) counts[p-pieces] += 1;
}
user_cost = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/map.c new/vms-empire-1.14/map.c
--- old/vms-empire-1.13/map.c 2013-08-27 17:00:47.000000000 +0200
+++ new/vms-empire-1.14/map.c 2014-12-15 17:26:35.000000000 +0100
@@ -1003,7 +1003,7 @@
loc_t loc, char *terrain, char *adj_char)
{
int i, count, bestcount;
- loc_t bestloc, new_loc;
+ loc_t bestloc;
int path_count, bestpath;
char *p;
@@ -1015,7 +1015,7 @@
bestloc = loc;
for (i = 0; i < 8; i++) { /* for each adjacent square */
- new_loc = loc + dir_offset[order[i]];
+ loc_t new_loc = loc + dir_offset[order[i]];
if (path_map[new_loc].terrain == T_PATH) { /* which is on path */
p = strchr (terrain, vmap[new_loc].contents);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/object.c new/vms-empire-1.14/object.c
--- old/vms-empire-1.13/object.c 2013-12-31 23:19:01.000000000 +0100
+++ new/vms-empire-1.14/object.c 2014-12-15 01:57:48.000000000 +0100
@@ -120,12 +120,10 @@
find_transport(int owner, loc_t loc)
{
int i;
- loc_t new_loc;
- piece_info_t *t;
for (i = 0; i < 8; i++) { /* look around */
- new_loc = loc + dir_offset[i];
- t = find_nfull (TRANSPORT, new_loc);
+ loc_t new_loc = loc + dir_offset[i];
+ piece_info_t *t = find_nfull (TRANSPORT, new_loc);
if (t != NULL && t->owner == owner) return (new_loc);
}
return (loc); /* no tt found */
@@ -182,7 +180,7 @@
void kill_obj(piece_info_t *obj, loc_t loc)
{
- void kill_one();
+ void kill_one(piece_info_t **, piece_info_t *);
piece_info_t **list;
view_map_t *vmap;
@@ -217,11 +215,9 @@
void kill_city(city_info_t *cityp)
{
- view_map_t *vmap;
piece_info_t *p;
piece_info_t *next_p;
piece_info_t **list;
- int i;
/* change ownership of hardware at this location; but not satellites */
for (p = map[cityp->loc].objp; p; p = next_p) {
@@ -246,7 +242,8 @@
}
if (cityp->owner != UNOWNED) {
- vmap = MAP(cityp->owner);
+ view_map_t *vmap = MAP(cityp->owner);
+ int i;
cityp->owner = UNOWNED;
cityp->work = 0;
cityp->prod = NOPIECE;
@@ -512,10 +509,9 @@
void
scan(view_map_t vmap[], loc_t loc)
{
- void update(), check(void);
+ void update(view_map_t [], loc_t), check(void);
int i;
- loc_t xloc;
#ifdef DEBUG
check (); /* perform a consistency check */
@@ -523,7 +519,7 @@
ASSERT (map[loc].on_board); /* passed loc must be on board */
for (i = 0; i < 8; i++) { /* for each surrounding cell */
- xloc = loc + dir_offset[i];
+ loc_t xloc = loc + dir_offset[i];
update (vmap, xloc);
}
update (vmap, loc); /* update current location as well */
@@ -537,12 +533,11 @@
scan_sat(view_map_t vmap[], loc_t loc)
{
int i;
- loc_t xloc;
ASSERT (map[loc].on_board);
for (i = 0; i < 8; i++) { /* for each surrounding cell */
- xloc = loc + 2 * dir_offset[i];
+ loc_t xloc = loc + 2 * dir_offset[i];
if (xloc >= 0 && xloc < MAP_SIZE && map[xloc].on_board)
scan (vmap, xloc);
}
@@ -590,12 +585,12 @@
void
set_prod(city_info_t *cityp)
{
- int i;
-
scan (user_map, cityp->loc);
display_loc_u (cityp->loc);
for (;;) {
+ int i;
+
prompt ("What do you want the city at %d to produce? ",loc_disp(cityp->loc));
i = get_piece_name ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/term.c new/vms-empire-1.14/term.c
--- old/vms-empire-1.13/term.c 2014-01-09 02:41:07.000000000 +0100
+++ new/vms-empire-1.14/term.c 2014-12-15 17:26:35.000000000 +0100
@@ -323,9 +323,9 @@
bool
getyn(char *message)
{
- char c;
-
for (;;) {
+ char c;
+
prompt (message,0,0,0,0,0,0,0,0);
c = get_chx ();
@@ -343,10 +343,8 @@
int
get_range(char *message, int low, int high)
{
- int result;
-
for (;;) {
- result = getint (message);
+ int result = getint (message);
if (result >= low && result <= high) return (result);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/usermove.c new/vms-empire-1.14/usermove.c
--- old/vms-empire-1.13/usermove.c 2013-08-27 17:00:47.000000000 +0200
+++ new/vms-empire-1.14/usermove.c 2014-12-15 17:26:35.000000000 +0100
@@ -24,9 +24,9 @@
void
user_move(void)
{
- void piece_move();
+ void piece_move(piece_info_t *);
- int i, j, sec, sec_start;
+ int i, j, sec_start;
piece_info_t *obj, *next_obj;
int prod;
@@ -74,7 +74,7 @@
/* loop through sectors, moving every piece in the sector */
for (i = sec_start; i < sec_start + NUM_SECTORS; i++) {
- sec = i % NUM_SECTORS;
+ int sec = i % NUM_SECTORS;
sector_change (); /* allow screen to be redrawn */
for (j = 0; j < NUM_OBJECTS; j++) /* loop through obj lists */
@@ -104,16 +104,16 @@
void
piece_move(piece_info_t *obj)
{
- void move_random(), move_fill(), move_land(), move_explore();
- void move_path(), move_dir(), move_armyload(), ask_user();
- void move_armyattack(), move_ttload(), move_repair();
- void move_transport();
+ void move_random(piece_info_t *), move_fill(piece_info_t *);
+ void move_land(piece_info_t *), move_explore(piece_info_t *);
+ void move_path(piece_info_t *), move_dir(piece_info_t *);
+ void move_armyload(piece_info_t *), ask_user(piece_info_t *);
+ void move_armyattack(piece_info_t *), move_ttload(piece_info_t *);
+ void move_repair(piece_info_t *), move_transport(piece_info_t *);
bool changed_loc;
int speed, max_hits;
- int saved_moves;
bool need_input;
- loc_t saved_loc;
city_info_t *cityp;
/* set func for piece if on city */
@@ -128,8 +128,8 @@
need_input = false; /* don't require user input yet */
while (obj->moved < obj_moves (obj)) {
- saved_moves = obj->moved; /* save moves made */
- saved_loc = obj->loc; /* remember starting location */
+ int saved_moves = obj->moved; /* save moves made */
+ loc_t saved_loc = obj->loc; /* remember starting location */
if (awake (obj) || need_input){ /* need user input? */
ask_user (obj);
@@ -208,12 +208,11 @@
{
loc_t loc_list[8];
int i, nloc;
- loc_t loc;
nloc = 0;
for (i = 0; i < 8; i++) {
- loc = obj->loc + dir_offset[i];
+ loc_t loc = obj->loc + dir_offset[i];
if (good_loc (obj, loc)) {
loc_list[nloc] = loc; /* remember this location */
nloc++; /* count locations we can move to */
@@ -406,13 +405,12 @@
{
long best_dist;
loc_t best_loc;
- long new_dist;
piece_info_t *p;
best_dist = find_nearest_city (obj->loc, USER, &best_loc);
for (p = user_obj[CARRIER]; p != NULL; p = p->piece_link.next) {
- new_dist = dist (obj->loc, p->loc);
+ long new_dist = dist (obj->loc, p->loc);
if (new_dist < best_dist) {
best_dist = new_dist;
best_loc = p->loc;
@@ -504,16 +502,19 @@
void ask_user(piece_info_t *obj)
{
- void user_skip(), user_fill(), user_dir(), user_set_dir();
- void user_wake(), user_set_city_func(), user_cancel_auto();
- void user_redraw(), user_random(), user_land(), user_sentry();
- void user_help(), reset_func(), user_explore();
- void user_build(), user_transport();
- void user_armyattack(), user_repair();
-
- char c;
+ void user_skip(piece_info_t *), user_fill(piece_info_t *);
+ void user_dir(piece_info_t *, int), user_set_dir(piece_info_t *);
+ void user_wake(piece_info_t *), user_set_city_func(piece_info_t *);
+ void user_cancel_auto(void), user_redraw(void);
+ void user_random(piece_info_t *), user_land(piece_info_t *);
+ void user_sentry(piece_info_t *), user_help(void);
+ void reset_func(piece_info_t *), user_explore(piece_info_t *);
+ void user_build(piece_info_t *), user_transport(piece_info_t *);
+ void user_armyattack(piece_info_t *), user_repair(piece_info_t *);
for (;;) {
+ char c;
+
display_loc_u (obj->loc); /* display piece to move */
describe_obj (obj); /* describe object to be moved */
display_score (); /* show current score */
@@ -738,9 +739,13 @@
void
user_set_city_func(piece_info_t *obj)
{
- void e_city_fill(), e_city_explore(), e_city_stasis();
- void e_city_wake(), e_city_random(), e_city_repair();
- void e_city_attack();
+ void e_city_fill(city_info_t *, int);
+ void e_city_explore(city_info_t *, int);
+ void e_city_stasis(city_info_t *, int);
+ void e_city_wake(city_info_t *, int);
+ void e_city_random(city_info_t *, int);
+ void e_city_repair(city_info_t *, int);
+ void e_city_attack(city_info_t *, int);
int type;
char e;
@@ -814,7 +819,9 @@
void
user_dir(piece_info_t *obj, int dir)
{
- void user_dir_army(), user_dir_fighter(), user_dir_ship();
+ void user_dir_army(piece_info_t *, loc_t);
+ void user_dir_fighter(piece_info_t *, loc_t);
+ void user_dir_ship(piece_info_t *, loc_t);
loc_t loc;
@@ -1037,7 +1044,6 @@
awake(piece_info_t *obj)
{
int i;
- char c;
long t;
if (obj->type == ARMY && vmap_at_sea (user_map, obj->loc)) {
@@ -1054,7 +1060,7 @@
return (true);
}
for (i = 0; i < 8; i++) { /* for each surrounding cell */
- c = user_map[obj->loc+dir_offset[i]].contents;
+ char c = user_map[obj->loc+dir_offset[i]].contents;
if (islower (c) || c == MAP_CITY || c == 'X') {
if (obj->func < 0) obj->func = NOFUNC; /* awaken */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/util.c new/vms-empire-1.14/util.c
--- old/vms-empire-1.13/util.c 2013-08-27 17:00:47.000000000 +0200
+++ new/vms-empire-1.14/util.c 2014-12-15 01:46:53.000000000 +0100
@@ -80,7 +80,9 @@
void
check(void)
{
- void check_cargo(), check_obj(), check_obj_cargo();
+ void check_cargo(piece_info_t *, int);
+ void check_obj(piece_info_t **, int);
+ void check_obj_cargo(piece_info_t **);
long i, j;
piece_info_t *p;
@@ -212,10 +214,10 @@
check_cargo(piece_info_t *list, int cargo_type)
{
piece_info_t *p, *q;
- long j, count;
+ long j;
for (p = list; p != NULL; p = p->piece_link.next) {
- count = 0;
+ long count = 0;
for (q = p->cargo; q != NULL; q = q->cargo_link.next) {
count += 1; /* count items in list */
ASSERT (q->type == cargo_type);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vms-empire-1.13/vms-empire.xml new/vms-empire-1.14/vms-empire.xml
--- old/vms-empire-1.13/vms-empire.xml 2013-12-31 23:19:01.000000000 +0100
+++ new/vms-empire-1.14/vms-empire.xml 2016-01-05 07:41:16.000000000 +0100
@@ -351,12 +351,12 @@
<colspec colname='c6'/>
<tbody>
<row rowsep='1'>
+ <entry align='center'></entry>
<entry align='left' colsep='1'>AFPT</entry>
<entry align='center' colsep='1'>D</entry>
<entry align='center' colsep='1'>S</entry>
<entry align='center' colsep='1'>C</entry>
<entry align='center' colsep='1'>B</entry>
- <entry align='center'></entry>
</row>
<row>
<entry align='left' colsep='1'>AFPT</entry>
@@ -1066,6 +1066,8 @@
<para>No doubt numerous.</para>
+<para>The savefile format changed incompatibly after version 1.13.</para>
+
<para>Satellites are not completely implemented. You should be able to
move to a square that contains a satellite, but the program won't
let you. Enemy satellites should not cause your pieces to awaken.</para>
1
0
Hello community,
here is the log from the commit of package python3-aiohttp for openSUSE:Factory checked in at 2016-01-20 09:55:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-aiohttp (Old)
and /work/SRC/openSUSE:Factory/.python3-aiohttp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-aiohttp"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-aiohttp/python3-aiohttp.changes 2016-01-05 09:41:49.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-aiohttp.new/python3-aiohttp.changes 2016-01-20 09:55:12.000000000 +0100
@@ -1,0 +2,12 @@
+Tue Jan 19 02:03:05 UTC 2016 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+
+- update to version 0.20.2:
+ * Enable use of await for a class based view #717
+ * Check address family to fill wsgi env properly #718
+ * Fix memory leak in headers processing (thanks to Marco Paolini)
+ #723
+
+-------------------------------------------------------------------
Old:
----
aiohttp-0.20.1.tar.gz
New:
----
aiohttp-0.20.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-aiohttp.spec ++++++
--- /var/tmp/diff_new_pack.i9FYLO/_old 2016-01-20 09:55:14.000000000 +0100
+++ /var/tmp/diff_new_pack.i9FYLO/_new 2016-01-20 09:55:14.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-aiohttp
#
-# 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: python3-aiohttp
-Version: 0.20.1
+Version: 0.20.2
Release: 0
Url: https://pypi.python.org/pypi/aiohttp
Summary: Http client/server for asyncio
++++++ aiohttp-0.20.1.tar.gz -> aiohttp-0.20.2.tar.gz ++++++
++++ 6467 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python3-html2text for openSUSE:Factory checked in at 2016-01-20 09:55:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-html2text (Old)
and /work/SRC/openSUSE:Factory/.python3-html2text.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-html2text"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-html2text/python3-html2text.changes 2015-11-08 11:26:25.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-html2text.new/python3-html2text.changes 2016-01-20 09:55:11.000000000 +0100
@@ -1,0 +2,12 @@
+Sun Jan 17 00:04:08 UTC 2016 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+
+- update to version 2016.1.8:
+ * Feature #99: Removed duplicated initialisation.
+ * Fix #100: Get element style key error.
+ * Fix #101: Fix error end tag pop exception
+ * <s>, <strike>, <del> now rendered as ~~text~~.
+
+-------------------------------------------------------------------
Old:
----
html2text-2015.11.4.tar.gz
New:
----
html2text-2016.1.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-html2text.spec ++++++
--- /var/tmp/diff_new_pack.hQFr1W/_old 2016-01-20 09:55:12.000000000 +0100
+++ /var/tmp/diff_new_pack.hQFr1W/_new 2016-01-20 09:55:12.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-html2text
#
-# 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: python3-html2text
-Version: 2015.11.4
+Version: 2016.1.8
Release: 0
Url: https://github.com/Alir3z4/html2text/
Summary: Turn HTML into equivalent Markdown-structured text
++++++ html2text-2015.11.4.tar.gz -> html2text-2016.1.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/html2text-2015.11.4/ChangeLog.rst new/html2text-2016.1.8/ChangeLog.rst
--- old/html2text-2015.11.4/ChangeLog.rst 2015-11-04 15:48:46.000000000 +0100
+++ new/html2text-2016.1.8/ChangeLog.rst 2016-01-08 17:35:35.000000000 +0100
@@ -1,3 +1,13 @@
+2016.1.8
+=========
+----
+
+* Feature #99: Removed duplicated initialisation.
+* Fix #100: Get element style key error.
+* Fix #101: Fix error end tag pop exception
+* <s>, <strike>, <del> now rendered as ~~text~~.
+
+
2015.11.4
=========
----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/html2text-2015.11.4/PKG-INFO new/html2text-2016.1.8/PKG-INFO
--- old/html2text-2015.11.4/PKG-INFO 2015-11-04 16:23:02.000000000 +0100
+++ new/html2text-2016.1.8/PKG-INFO 2016-01-08 17:40:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: html2text
-Version: 2015.11.4
+Version: 2016.1.8
Summary: Turn HTML into equivalent Markdown-structured text.
Home-page: https://github.com/Alir3z4/html2text/
Author: Alireza Savand
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/html2text-2015.11.4/html2text/__init__.py new/html2text-2016.1.8/html2text/__init__.py
--- old/html2text-2015.11.4/html2text/__init__.py 2015-11-04 15:48:14.000000000 +0100
+++ new/html2text-2016.1.8/html2text/__init__.py 2016-01-08 17:39:25.000000000 +0100
@@ -29,7 +29,7 @@
skipwrap
)
-__version__ = (2015, 11, 4)
+__version__ = (2016, 1, 8)
# TODO:
@@ -72,8 +72,6 @@
self.use_automatic_links = config.USE_AUTOMATIC_LINKS # covered in cli
self.hide_strikethrough = False # covered in cli
self.mark_code = config.MARK_CODE
- self.single_line_break = config.SINGLE_LINE_BREAK
- self.use_automatic_links = config.USE_AUTOMATIC_LINKS
self.wrap_links = config.WRAP_LINKS # covered in cli
self.tag_callback = None
@@ -306,7 +304,7 @@
tag_style = element_style(attrs, self.style_def, parent_style)
self.tag_stack.append((tag, attrs, tag_style))
else:
- dummy, attrs, tag_style = self.tag_stack.pop()
+ dummy, attrs, tag_style = self.tag_stack.pop() if self.tag_stack else (None, {}, {})
if self.tag_stack:
parent_style = self.tag_stack[-1][2]
@@ -367,9 +365,9 @@
self.o(self.strong_mark)
if tag in ['del', 'strike', 's']:
if start:
- self.o("<" + tag + ">")
+ self.o('~~')
else:
- self.o("</" + tag + ">")
+ self.o('~~')
if self.google_doc:
if not self.inheader:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/html2text-2015.11.4/html2text/utils.py new/html2text-2016.1.8/html2text/utils.py
--- old/html2text-2015.11.4/html2text/utils.py 2015-11-04 15:32:38.000000000 +0100
+++ new/html2text-2016.1.8/html2text/utils.py 2016-01-08 17:31:01.000000000 +0100
@@ -80,7 +80,7 @@
style = parent_style.copy()
if 'class' in attrs:
for css_class in attrs['class'].split():
- css_style = style_def['.' + css_class]
+ css_style = style_def.get('.' + css_class, {})
style.update(css_style)
if 'style' in attrs:
immediate_style = dumb_property_dict(attrs['style'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/html2text-2015.11.4/html2text.egg-info/PKG-INFO new/html2text-2016.1.8/html2text.egg-info/PKG-INFO
--- old/html2text-2015.11.4/html2text.egg-info/PKG-INFO 2015-11-04 16:23:02.000000000 +0100
+++ new/html2text-2016.1.8/html2text.egg-info/PKG-INFO 2016-01-08 17:39:59.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: html2text
-Version: 2015.11.4
+Version: 2016.1.8
Summary: Turn HTML into equivalent Markdown-structured text.
Home-page: https://github.com/Alir3z4/html2text/
Author: Alireza Savand
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/html2text-2015.11.4/test/decript_tage.md new/html2text-2016.1.8/test/decript_tage.md
--- old/html2text-2015.11.4/test/decript_tage.md 2015-11-04 15:32:38.000000000 +0100
+++ new/html2text-2016.1.8/test/decript_tage.md 2016-01-08 17:31:01.000000000 +0100
@@ -1,2 +1,2 @@
-<del>something</del> <strike>something</strike> <s>something</s>
+~~something~~ ~~something~~ ~~something~~
1
0
Hello community,
here is the log from the commit of package python3-traitlets for openSUSE:Factory checked in at 2016-01-20 09:54:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-traitlets (Old)
and /work/SRC/openSUSE:Factory/.python3-traitlets.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-traitlets"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-traitlets/python3-traitlets.changes 2015-09-30 05:49:19.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python3-traitlets.new/python3-traitlets.changes 2016-01-20 09:55:10.000000000 +0100
@@ -1,0 +2,26 @@
+Sat Jan 16 21:00:20 UTC 2016 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+
+- update to version 4.1.0:
+ * Traitlets 4.1 introduces a totally new decorator-based API for
+ configuring traitlets. Highlights:
+ + Decorators are used, rather than magic method names, for
+ registering trait-related methods. See Using Traitlets and
+ Migration from Traitlets 4.0 to Traitlets 4.1 for more info.
+ + Deprecate Trait(config=True) in favor of
+ Trait().tag(config=True). In general, metadata is added via tag
+ instead of the constructor.
+ * Other changes:
+ + Trait attributes initialized with read_only=True can only be set
+ with the set_trait method. Attempts to directly modify a read-only
+ trait attribute raises a TraitError.
+ + The directional link now takes an optional transform attribute
+ allowing the modification of the value.
+ + Various fixes and improvements to config-file generation (fixed
+ ordering, Undefined showing up, etc.)
+ + Warn on unrecognized traits that aren’t configurable, to avoid
+ silently ignoring mistyped config.
+
+-------------------------------------------------------------------
Old:
----
traitlets-4.0.0.tar.gz
New:
----
traitlets-4.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-traitlets.spec ++++++
--- /var/tmp/diff_new_pack.bq07Tv/_old 2016-01-20 09:55:11.000000000 +0100
+++ /var/tmp/diff_new_pack.bq07Tv/_new 2016-01-20 09:55:11.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-traitlets
#
-# 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: python3-traitlets
-Version: 4.0.0
+Version: 4.1.0
Release: 0
Summary: Traitlets Python config system
License: BSD-3-Clause
++++++ traitlets-4.0.0.tar.gz -> traitlets-4.1.0.tar.gz ++++++
++++ 3979 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package gnuradio for openSUSE:Factory checked in at 2016-01-20 09:54:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnuradio (Old)
and /work/SRC/openSUSE:Factory/.gnuradio.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnuradio"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnuradio/gnuradio.changes 2015-11-08 11:27:18.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gnuradio.new/gnuradio.changes 2016-01-20 09:55:06.000000000 +0100
@@ -1,0 +2,5 @@
+Thu Dec 31 09:40:42 UTC 2015 - wk(a)ire.pw.edu.pl
+
+- update to version 3.7.9
+
+-------------------------------------------------------------------
Old:
----
gnuradio-3.7.8.1.tar.gz
New:
----
gnuradio-3.7.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnuradio.spec ++++++
--- /var/tmp/diff_new_pack.VrfYQ0/_old 2016-01-20 09:55:08.000000000 +0100
+++ /var/tmp/diff_new_pack.VrfYQ0/_new 2016-01-20 09:55:08.000000000 +0100
@@ -17,10 +17,10 @@
Name: gnuradio
-Version: 3.7.8.1
+Version: 3.7.9
Release: 0
-%define soname 3_7_8-0_0_0
-%define soname_volk 1_1_1
+%define soname 3_7_9-0_0_0
+%define soname_volk 1_2
Summary: GNU software radio
License: GPL-3.0+
Group: Productivity/Hamradio/Other
@@ -239,6 +239,7 @@
%{_datadir}/gnuradio/grc/
%{_datadir}/gnuradio/modtool/
%{_datadir}/gnuradio/themes/
+%{_datadir}/gnuradio/fec/
%{_datadir}/icons/hicolor/*/apps/gnuradio-grc.png
%{_datadir}/applications/gnuradio-grc.desktop
%{python_sitearch}/*
++++++ gnuradio-3.7.8.1.tar.gz -> gnuradio-3.7.9.tar.gz ++++++
++++ 112896 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-exceptions for openSUSE:Factory checked in at 2016-01-20 09:54:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-exceptions (Old)
and /work/SRC/openSUSE:Factory/.ghc-exceptions.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-exceptions"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-exceptions/ghc-exceptions.changes 2015-05-21 08:10:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-exceptions.new/ghc-exceptions.changes 2016-01-20 09:55:02.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Jan 18 10:29:23 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.8.2.1
+* Support for throwing in the template-haskell Q monad
+* Support for transformers 0.5
+
+-------------------------------------------------------------------
Old:
----
exceptions-0.8.0.2.tar.gz
New:
----
exceptions-0.8.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-exceptions.spec ++++++
--- /var/tmp/diff_new_pack.N1Mr3i/_old 2016-01-20 09:55:04.000000000 +0100
+++ /var/tmp/diff_new_pack.N1Mr3i/_new 2016-01-20 09:55:04.000000000 +0100
@@ -18,8 +18,8 @@
%global pkg_name exceptions
-Name: ghc-%{pkg_name}
-Version: 0.8.0.2
+Name: ghc-exceptions
+Version: 0.8.2.1
Release: 0
Summary: Exceptions library
License: BSD-3-Clause
@@ -33,6 +33,7 @@
# Begin cabal-rpm deps:
BuildRequires: ghc-mtl-devel
BuildRequires: ghc-stm-devel
+BuildRequires: ghc-template-haskell-devel
BuildRequires: ghc-transformers-compat-devel
BuildRequires: ghc-transformers-devel
# End cabal-rpm deps
++++++ exceptions-0.8.0.2.tar.gz -> exceptions-0.8.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exceptions-0.8.0.2/CHANGELOG.markdown new/exceptions-0.8.2.1/CHANGELOG.markdown
--- old/exceptions-0.8.0.2/CHANGELOG.markdown 2015-03-14 17:50:47.000000000 +0100
+++ new/exceptions-0.8.2.1/CHANGELOG.markdown 2016-01-16 22:18:37.000000000 +0100
@@ -1,3 +1,8 @@
+0.8.1
+-----
+* Support for throwing in the `template-haskell` `Q` monad
+* Support for `transformers` 0.5
+
0.8.0.1
-------
* Resolved warnings on GHC 7.10 and with transformers 0.4.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exceptions-0.8.0.2/README.markdown new/exceptions-0.8.2.1/README.markdown
--- old/exceptions-0.8.0.2/README.markdown 2015-03-14 17:50:47.000000000 +0100
+++ new/exceptions-0.8.2.1/README.markdown 2016-01-16 22:18:37.000000000 +0100
@@ -1,7 +1,7 @@
exceptions
==========
-[![Build Status](https://secure.travis-ci.org/ekmett/exceptions.png?branch=master)](…
+[![Hackage](https://img.shields.io/hackage/v/exceptions.svg)](https://hackage.haskell.org/package/exceptions) [![Build Status](https://secure.travis-ci.org/ekmett/exceptions.png?branch=master)](…
This package provides (optionally pure) extensible exceptions that are compatible with the monad transformer library.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exceptions-0.8.0.2/exceptions.cabal new/exceptions-0.8.2.1/exceptions.cabal
--- old/exceptions-0.8.0.2/exceptions.cabal 2015-03-14 17:50:47.000000000 +0100
+++ new/exceptions-0.8.2.1/exceptions.cabal 2016-01-16 22:18:37.000000000 +0100
@@ -1,6 +1,6 @@
name: exceptions
category: Control, Exceptions, Monad
-version: 0.8.0.2
+version: 0.8.2.1
cabal-version: >= 1.8
license: BSD3
license-file: LICENSE
@@ -35,8 +35,9 @@
build-depends:
base >= 4.3 && < 5,
stm >= 2.2 && < 3,
- transformers >= 0.2 && < 0.5,
- transformers-compat >= 0.3 && < 0.5,
+ template-haskell >= 2.2 && < 2.12,
+ transformers >= 0.2 && < 0.6,
+ transformers-compat >= 0.3 && < 0.6,
mtl >= 2.0 && < 2.3
exposed-modules:
@@ -55,9 +56,10 @@
build-depends:
base,
stm,
+ template-haskell,
transformers,
transformers-compat,
mtl,
test-framework >= 0.8 && < 0.9,
test-framework-quickcheck2 >= 0.3 && < 0.4,
- QuickCheck >= 2.5 && < 2.8
+ QuickCheck >= 2.5 && < 2.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exceptions-0.8.0.2/src/Control/Monad/Catch/Pure.hs new/exceptions-0.8.2.1/src/Control/Monad/Catch/Pure.hs
--- old/exceptions-0.8.0.2/src/Control/Monad/Catch/Pure.hs 2015-03-14 17:50:47.000000000 +0100
+++ new/exceptions-0.8.2.1/src/Control/Monad/Catch/Pure.hs 2016-01-16 22:18:37.000000000 +0100
@@ -105,7 +105,7 @@
(<*>) = ap
instance Monad m => Monad (CatchT m) where
- return a = CatchT (return (Right a))
+ return = pure
CatchT m >>= k = CatchT $ m >>= \ea -> case ea of
Left e -> return (Left e)
Right a -> runCatchT (k a)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/exceptions-0.8.0.2/src/Control/Monad/Catch.hs new/exceptions-0.8.2.1/src/Control/Monad/Catch.hs
--- old/exceptions-0.8.0.2/src/Control/Monad/Catch.hs 2015-03-14 17:50:47.000000000 +0100
+++ new/exceptions-0.8.2.1/src/Control/Monad/Catch.hs 2016-01-16 22:18:37.000000000 +0100
@@ -39,7 +39,7 @@
-- This is very similar to 'ErrorT' and 'MonadError', but based on features of
-- "Control.Exception". In particular, it handles the complex case of
-- asynchronous exceptions by including 'mask' in the typeclass. Note that the
--- extensible extensions feature relies on the RankNTypes language extension.
+-- extensible exceptions feature relies on the RankNTypes language extension.
--------------------------------------------------------------------
module Control.Monad.Catch (
@@ -93,6 +93,8 @@
import Control.Monad.Trans.Identity
import Control.Monad.Reader as Reader
+import Language.Haskell.TH.Syntax (Q)
+
#if __GLASGOW_HASKELL__ < 706
import Prelude hiding (catch, foldr)
import Data.Foldable
@@ -183,6 +185,8 @@
throwM _ = Nothing
instance e ~ SomeException => MonadThrow (Either e) where
throwM = Left . toException
+instance MonadThrow Q where
+ throwM = fail . show
instance MonadThrow IO where
throwM = ControlException.throwIO
1
0
Hello community,
here is the log from the commit of package ghc-half for openSUSE:Factory checked in at 2016-01-20 09:54:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-half (Old)
and /work/SRC/openSUSE:Factory/.ghc-half.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-half"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-half/ghc-half.changes 2015-12-23 08:49:36.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-half.new/ghc-half.changes 2016-01-20 09:55:00.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Jan 18 10:38:45 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 0.2.2.3
+* Avoid the new warnings for missing pattern synonym signatures on GHC 8
+
+-------------------------------------------------------------------
Old:
----
half-0.2.2.2.tar.gz
New:
----
half-0.2.2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-half.spec ++++++
--- /var/tmp/diff_new_pack.e5vuET/_old 2016-01-20 09:55:01.000000000 +0100
+++ /var/tmp/diff_new_pack.e5vuET/_new 2016-01-20 09:55:01.000000000 +0100
@@ -18,7 +18,7 @@
%global pkg_name half
Name: ghc-half
-Version: 0.2.2.2
+Version: 0.2.2.3
Release: 0
Summary: Half-precision floating-point
Group: System/Libraries
++++++ half-0.2.2.2.tar.gz -> half-0.2.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/half-0.2.2.2/CHANGELOG.markdown new/half-0.2.2.3/CHANGELOG.markdown
--- old/half-0.2.2.2/CHANGELOG.markdown 2015-12-09 17:59:50.000000000 +0100
+++ new/half-0.2.2.3/CHANGELOG.markdown 2016-01-17 01:40:32.000000000 +0100
@@ -1,3 +1,7 @@
+0.2.2.3
+-------
+* Avoid the new warnings for missing pattern synonym signatures on GHC 8
+
0.2.2.2
-------
* Fixed an issue with `Storable` that was causing crashing for some users.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/half-0.2.2.2/half.cabal new/half-0.2.2.3/half.cabal
--- old/half-0.2.2.2/half.cabal 2015-12-09 17:59:50.000000000 +0100
+++ new/half-0.2.2.3/half.cabal 2016-01-17 01:40:32.000000000 +0100
@@ -1,6 +1,6 @@
name: half
category: Numeric
-version: 0.2.2.2
+version: 0.2.2.3
license: BSD3
cabal-version: >= 1.8
license-file: LICENSE
@@ -30,4 +30,8 @@
c-sources: cbits/half.c
build-depends: base >= 4.3 && < 5
ghc-options: -Wall -fwarn-tabs -O2
+
+ if impl(ghc >= 8)
+ ghc-options: -fno-warn-missing-pat-syn-sigs
+
exposed-modules: Numeric.Half
1
0
Hello community,
here is the log from the commit of package ghc-StateVar for openSUSE:Factory checked in at 2016-01-20 09:54:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-StateVar (Old)
and /work/SRC/openSUSE:Factory/.ghc-StateVar.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-StateVar"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-StateVar/ghc-StateVar.changes 2016-01-05 21:54:57.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-StateVar.new/ghc-StateVar.changes 2016-01-20 09:54:59.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Jan 18 11:53:15 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.1.0.3
+* Removed a couple of redundant typeclass constraints.
+
+-------------------------------------------------------------------
Old:
----
StateVar-1.1.0.2.tar.gz
New:
----
StateVar-1.1.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-StateVar.spec ++++++
--- /var/tmp/diff_new_pack.lPDLy6/_old 2016-01-20 09:55:00.000000000 +0100
+++ /var/tmp/diff_new_pack.lPDLy6/_new 2016-01-20 09:55:00.000000000 +0100
@@ -18,7 +18,7 @@
%global pkg_name StateVar
Name: ghc-StateVar
-Version: 1.1.0.2
+Version: 1.1.0.3
Release: 0
Summary: State variables
Group: System/Libraries
++++++ StateVar-1.1.0.2.tar.gz -> StateVar-1.1.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/StateVar-1.1.0.2/CHANGELOG.md new/StateVar-1.1.0.3/CHANGELOG.md
--- old/StateVar-1.1.0.2/CHANGELOG.md 2015-12-22 09:40:28.000000000 +0100
+++ new/StateVar-1.1.0.3/CHANGELOG.md 2016-01-17 01:35:24.000000000 +0100
@@ -1,3 +1,7 @@
+1.1.0.3
+-------
+* Removed a couple of redundant typeclass constraints.
+
1.1.0.2
-------
* Relaxed upper version bound for `transformers`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/StateVar-1.1.0.2/StateVar.cabal new/StateVar-1.1.0.3/StateVar.cabal
--- old/StateVar-1.1.0.2/StateVar.cabal 2015-12-22 09:40:28.000000000 +0100
+++ new/StateVar-1.1.0.3/StateVar.cabal 2016-01-17 01:35:24.000000000 +0100
@@ -1,5 +1,5 @@
name: StateVar
-version: 1.1.0.2
+version: 1.1.0.3
synopsis: State variables
description:
This package contains state variables, which are references in the IO monad,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/StateVar-1.1.0.2/src/Data/StateVar.hs new/StateVar-1.1.0.3/src/Data/StateVar.hs
--- old/StateVar-1.1.0.2/src/Data/StateVar.hs 2015-12-22 09:40:28.000000000 +0100
+++ new/StateVar-1.1.0.3/src/Data/StateVar.hs 2016-01-17 01:35:24.000000000 +0100
@@ -197,13 +197,13 @@
-- | Transform the contents of a state variable with a given funtion.
($~) :: MonadIO m => t -> (a -> b) -> m ()
#if USE_DEFAULT_SIGNATURES
- default ($~) :: (MonadIO m, a ~ b, HasGetter t a, HasSetter t a) => t -> (a -> b) -> m ()
+ default ($~) :: (MonadIO m, a ~ b, HasGetter t a) => t -> (a -> b) -> m ()
($~) = defaultUpdate
#endif
-- | This is a variant of '$~' which is strict in the transformed value.
($~!) :: MonadIO m => t -> (a -> b) -> m ()
#if USE_DEFAULT_SIGNATURES
- default ($~!) :: (MonadIO m, a ~ b, HasGetter t a, HasSetter t a) => t -> (a -> b) -> m ()
+ default ($~!) :: (MonadIO m, a ~ b, HasGetter t a) => t -> (a -> b) -> m ()
($~!) = defaultUpdateStrict
#endif
1
0
Hello community,
here is the log from the commit of package perf for openSUSE:Factory checked in at 2016-01-20 09:54:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perf (Old)
and /work/SRC/openSUSE:Factory/.perf.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perf"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perf/perf.changes 2015-10-14 16:45:07.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perf.new/perf.changes 2016-01-20 09:54:57.000000000 +0100
@@ -1,0 +2,5 @@
+Mon Jan 11 11:10:36 UTC 2016 - tonyj(a)suse.com
+
+- Support strace/data.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perf.spec ++++++
--- /var/tmp/diff_new_pack.Klats4/_old 2016-01-20 09:54:58.000000000 +0100
+++ /var/tmp/diff_new_pack.Klats4/_new 2016-01-20 09:54:58.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package perf
#
-# 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
@@ -87,6 +87,7 @@
%endif
%attr(0644, -, -) %{_sysconfdir}/bash_completion.d/perf
%{_libexecdir}/%{name}-core
+%{_datarootdir}/%{name}-core
%{_mandir}/man1/perf*
%changelog
1
0
Hello community,
here is the log from the commit of package ghc-hashable for openSUSE:Factory checked in at 2016-01-20 09:54:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-hashable (Old)
and /work/SRC/openSUSE:Factory/.ghc-hashable.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-hashable"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-hashable/ghc-hashable.changes 2015-06-30 10:19:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-hashable.new/ghc-hashable.changes 2016-01-20 09:54:55.000000000 +0100
@@ -1,0 +2,7 @@
+Sun Jan 17 10:13:24 UTC 2016 - mimi.vx(a)gmail.com
+
+- update to 1.2.4.0
+* Add instances for: Unique, Version, Fixed, NonEmpty, Min, Max, Arg,
+ First, Last, WrappedMonoid, Option
+
+-------------------------------------------------------------------
Old:
----
hashable-1.2.3.3.tar.gz
New:
----
hashable-1.2.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-hashable.spec ++++++
--- /var/tmp/diff_new_pack.9y6nja/_old 2016-01-20 09:54:57.000000000 +0100
+++ /var/tmp/diff_new_pack.9y6nja/_new 2016-01-20 09:54:57.000000000 +0100
@@ -19,7 +19,7 @@
%global pkg_name hashable
Name: ghc-hashable
-Version: 1.2.3.3
+Version: 1.2.4.0
Release: 0
Summary: A class for types that can be converted to a hash value
License: BSD-3-Clause
++++++ hashable-1.2.3.3.tar.gz -> hashable-1.2.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hashable-1.2.3.3/CHANGES.md new/hashable-1.2.4.0/CHANGES.md
--- old/hashable-1.2.3.3/CHANGES.md 2015-06-26 08:04:55.000000000 +0200
+++ new/hashable-1.2.4.0/CHANGES.md 2016-01-14 20:32:59.000000000 +0100
@@ -1,3 +1,10 @@
+## Version 1.2.4.0
+
+ * Add instances for: Unique, Version, Fixed, NonEmpty, Min, Max, Arg,
+ First, Last, WrappedMonoid, Option
+
+ * Support GHC 8.0
+
## Version 1.2.3.3
* Support integer-simple.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hashable-1.2.3.3/Data/Hashable/Class.hs new/hashable-1.2.4.0/Data/Hashable/Class.hs
--- old/hashable-1.2.3.3/Data/Hashable/Class.hs 2015-06-26 08:04:55.000000000 +0200
+++ new/hashable-1.2.4.0/Data/Hashable/Class.hs 2016-01-14 20:32:59.000000000 +0100
@@ -38,7 +38,7 @@
) where
import Control.Exception (assert)
-import Data.Bits (bitSize, shiftL, shiftR, xor)
+import Data.Bits (shiftL, shiftR, xor)
import qualified Data.ByteString as B
import qualified Data.ByteString.Internal as B
import qualified Data.ByteString.Lazy as BL
@@ -51,7 +51,8 @@
import qualified Data.Text.Internal as T
import qualified Data.Text.Lazy as TL
import Data.Typeable
-import Data.Word (Word, Word8, Word16, Word32, Word64)
+import Data.Version (Version(..))
+import Data.Word (Word8, Word16, Word32, Word64)
import Foreign.C (CString)
import Foreign.Marshal.Utils (with)
import Foreign.Ptr (Ptr, castPtr)
@@ -61,6 +62,11 @@
import GHC.Prim (ThreadId#)
import System.IO.Unsafe (unsafePerformIO)
import System.Mem.StableName
+import Data.Unique (Unique, hashUnique)
+
+#if MIN_VERSION_base(4,7,0)
+import Data.Fixed (Fixed(..))
+#endif
#ifdef GENERICS
import GHC.Generics
@@ -81,7 +87,17 @@
import Foreign.C.Types (CInt)
#endif
-#if !MIN_VERSION_bytestring(0,10,0)
+#if !(MIN_VERSION_base(4,8,0))
+import Data.Word (Word)
+#endif
+
+#if MIN_VERSION_base(4,7,0)
+import Data.Bits (finiteBitSize)
+#else
+import Data.Bits (bitSize)
+#endif
+
+#if !(MIN_VERSION_bytestring(0,10,0))
import qualified Data.ByteString.Lazy.Internal as BL -- foldlChunks
#endif
@@ -109,6 +125,11 @@
import GHC.Exts (Word(..))
#endif
+#if MIN_VERSION_base(4,9,0)
+import qualified Data.List.NonEmpty as NE
+import Data.Semigroup
+#endif
+
#include "MachDeps.h"
infixl 0 `hashWithSalt`
@@ -215,7 +236,11 @@
instance Hashable Int64 where
hash n
+#if MIN_VERSION_base(4,7,0)
+ | finiteBitSize (undefined :: Int) == 64 = fromIntegral n
+#else
| bitSize (undefined :: Int) == 64 = fromIntegral n
+#endif
| otherwise = fromIntegral (fromIntegral n `xor`
(fromIntegral n `shiftR` 32 :: Word64))
hashWithSalt = defaultHashWithSalt
@@ -238,7 +263,11 @@
instance Hashable Word64 where
hash n
+#if MIN_VERSION_base(4,7,0)
+ | finiteBitSize (undefined :: Int) == 64 = fromIntegral n
+#else
| bitSize (undefined :: Int) == 64 = fromIntegral n
+#endif
| otherwise = fromIntegral (n `xor` (n `shiftR` 32))
hashWithSalt = defaultHashWithSalt
@@ -322,7 +351,12 @@
inBounds x = x >= fromIntegral (minBound :: Int) && x <= maxInt
#endif
+#if MIN_VERSION_base(4,9,0)
+-- Starting with base-4.9, numerator/denominator don't need 'Integral' anymore
+instance Hashable a => Hashable (Ratio a) where
+#else
instance (Integral a, Hashable a) => Hashable (Ratio a) where
+#endif
{-# SPECIALIZE instance Hashable (Ratio Integer) #-}
hash a = hash (numerator a) `hashWithSalt` denominator a
hashWithSalt s a = s `hashWithSalt` numerator a `hashWithSalt` denominator a
@@ -412,9 +446,15 @@
hash = hashStableName
hashWithSalt = defaultHashWithSalt
+-- Auxillary type for Hashable [a] definition
+data SPInt = SP !Int !Int
+
instance Hashable a => Hashable [a] where
{-# SPECIALIZE instance Hashable [Char] #-}
- hashWithSalt = foldl' hashWithSalt
+ hashWithSalt salt arr = finalise (foldl' step (SP salt 0) arr)
+ where
+ finalise (SP s l) = hashWithSalt s l
+ step (SP s l) x = SP (hashWithSalt s x) (l + 1)
instance Hashable B.ByteString where
hashWithSalt salt bs = B.inlinePerformIO $
@@ -533,3 +573,43 @@
-- identity.
combine :: Int -> Int -> Int
combine h1 h2 = (h1 * 16777619) `xor` h2
+
+instance Hashable Unique where
+ hash = hashUnique
+ hashWithSalt = defaultHashWithSalt
+
+instance Hashable Version where
+ hashWithSalt salt (Version branch tags) =
+ salt `hashWithSalt` branch `hashWithSalt` tags
+
+#if MIN_VERSION_base(4,7,0)
+instance Hashable (Fixed a) where
+ hashWithSalt salt (MkFixed i) = hashWithSalt salt i
+#endif
+
+-- instances formerly provided by 'semigroups' package
+#if MIN_VERSION_base(4,9,0)
+instance Hashable a => Hashable (NE.NonEmpty a) where
+ hashWithSalt p (a NE.:| as) = p `hashWithSalt` a `hashWithSalt` as
+
+instance Hashable a => Hashable (Min a) where
+ hashWithSalt p (Min a) = hashWithSalt p a
+
+instance Hashable a => Hashable (Max a) where
+ hashWithSalt p (Max a) = hashWithSalt p a
+
+instance (Hashable a, Hashable b) => Hashable (Arg a b) where
+ hashWithSalt p (Arg a b) = hashWithSalt p a `hashWithSalt` b
+
+instance Hashable a => Hashable (First a) where
+ hashWithSalt p (First a) = hashWithSalt p a
+
+instance Hashable a => Hashable (Last a) where
+ hashWithSalt p (Last a) = hashWithSalt p a
+
+instance Hashable a => Hashable (WrappedMonoid a) where
+ hashWithSalt p (WrapMonoid a) = hashWithSalt p a
+
+instance Hashable a => Hashable (Option a) where
+ hashWithSalt p (Option a) = hashWithSalt p a
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hashable-1.2.3.3/Data/Hashable/Generic.hs new/hashable-1.2.4.0/Data/Hashable/Generic.hs
--- old/hashable-1.2.3.3/Data/Hashable/Generic.hs 2015-06-26 08:04:55.000000000 +0200
+++ new/hashable-1.2.4.0/Data/Hashable/Generic.hs 2016-01-14 20:32:59.000000000 +0100
@@ -17,7 +17,7 @@
(
) where
-import Data.Bits (Bits, shiftR)
+import Data.Bits (shiftR)
import Data.Hashable.Class
import GHC.Generics
@@ -43,12 +43,11 @@
class GSum f where
hashSum :: Int -> Int -> Int -> f a -> Int
-instance (GSum a, GSum b, GHashable a, GHashable b,
- SumSize a, SumSize b) => GHashable (a :+: b) where
+instance (GSum a, GSum b, SumSize a, SumSize b) => GHashable (a :+: b) where
ghashWithSalt salt = hashSum salt 0 size
where size = unTagged (sumSize :: Tagged (a :+: b))
-instance (GSum a, GSum b, GHashable a, GHashable b) => GSum (a :+: b) where
+instance (GSum a, GSum b) => GSum (a :+: b) where
hashSum !salt !code !size s = case s of
L1 x -> hashSum salt code sizeL x
R1 x -> hashSum salt (code + sizeL) sizeR x
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hashable-1.2.3.3/Data/Hashable/SipHash.hs new/hashable-1.2.4.0/Data/Hashable/SipHash.hs
--- old/hashable-1.2.3.3/Data/Hashable/SipHash.hs 2015-06-26 08:04:55.000000000 +0200
+++ new/hashable-1.2.4.0/Data/Hashable/SipHash.hs 2016-01-14 20:32:59.000000000 +0100
@@ -153,7 +153,7 @@
return (fromWord64 w)
#endif
-#if !MIN_VERSION_base(4,5,0)
+#if !(MIN_VERSION_base(4,5,0))
unsafeShiftL :: Word64 -> Int -> Word64
unsafeShiftL = shiftL
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hashable-1.2.3.3/benchmarks/Benchmarks.hs new/hashable-1.2.4.0/benchmarks/Benchmarks.hs
--- old/hashable-1.2.3.3/benchmarks/Benchmarks.hs 2015-06-26 08:04:55.000000000 +0200
+++ new/hashable-1.2.4.0/benchmarks/Benchmarks.hs 2016-01-14 20:32:59.000000000 +0100
@@ -98,13 +98,13 @@
withForeignPtr fp1Mb $ \ p1Mb ->
defaultMain
[ bgroup "hashPtr"
- [ bench "5" $ hashPtr p5 5
- , bench "8" $ hashPtr p8 8
- , bench "11" $ hashPtr p11 11
- , bench "40" $ hashPtr p40 40
- , bench "128" $ hashPtr p128 128
- , bench "512" $ hashPtr p512 512
- , bench "2^20" $ hashPtr p1Mb mb
+ [ bench "5" $ whnfIO $ hashPtr p5 5
+ , bench "8" $ whnfIO $ hashPtr p8 8
+ , bench "11" $ whnfIO $ hashPtr p11 11
+ , bench "40" $ whnfIO $ hashPtr p40 40
+ , bench "128" $ whnfIO $ hashPtr p128 128
+ , bench "512" $ whnfIO $ hashPtr p512 512
+ , bench "2^20" $ whnfIO $ hashPtr p1Mb mb
]
, bgroup "hashByteArray"
[ bench "5" $ whnf (hashByteArray ba5 0) 5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hashable-1.2.3.3/hashable.cabal new/hashable-1.2.4.0/hashable.cabal
--- old/hashable-1.2.3.3/hashable.cabal 2015-06-26 08:04:55.000000000 +0200
+++ new/hashable-1.2.4.0/hashable.cabal 2016-01-14 20:32:59.000000000 +0100
@@ -1,5 +1,5 @@
Name: hashable
-Version: 1.2.3.3
+Version: 1.2.4.0
Synopsis: A class for types that can be converted to a hash value
Description: This package defines a class, 'Hashable', for types that
can be converted to a hash value. This class
@@ -39,7 +39,7 @@
Library
Exposed-modules: Data.Hashable
Other-modules: Data.Hashable.Class
- Build-depends: base >= 4.0 && < 4.9,
+ Build-depends: base >= 4.0 && < 4.10,
bytestring >= 0.9 && < 0.11
if impl(ghc)
Build-depends: ghc-prim,
@@ -104,7 +104,7 @@
build-depends:
base,
bytestring,
- criterion,
+ criterion >= 1.0,
ghc-prim,
siphash,
text
1
0
Hello community,
here is the log from the commit of package mksusecd for openSUSE:Factory checked in at 2016-01-20 09:54:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mksusecd (Old)
and /work/SRC/openSUSE:Factory/.mksusecd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mksusecd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mksusecd/mksusecd.changes 2015-12-09 22:24:58.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mksusecd.new/mksusecd.changes 2016-01-20 09:54:54.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Jan 18 10:00:16 UTC 2016 - snwint(a)suse.com
+
+- fix typo
+- 1.37
+
+-------------------------------------------------------------------
Old:
----
mksusecd-1.36.tar.xz
New:
----
mksusecd-1.37.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mksusecd.spec ++++++
--- /var/tmp/diff_new_pack.ESlhdB/_old 2016-01-20 09:54:55.000000000 +0100
+++ /var/tmp/diff_new_pack.ESlhdB/_new 2016-01-20 09:54:55.000000000 +0100
@@ -18,7 +18,7 @@
Name: mksusecd
-Version: 1.36
+Version: 1.37
Release: 0
Summary: Create SUSE Linux installation ISOs
License: GPL-3.0+
++++++ mksusecd-1.36.tar.xz -> mksusecd-1.37.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.36/VERSION new/mksusecd-1.37/VERSION
--- old/mksusecd-1.36/VERSION 2015-12-08 11:38:36.000000000 +0100
+++ new/mksusecd-1.37/VERSION 2016-01-18 10:59:38.000000000 +0100
@@ -1 +1 @@
-1.36
+1.37
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.36/changelog new/mksusecd-1.37/changelog
--- old/mksusecd-1.36/changelog 2015-12-08 11:38:36.000000000 +0100
+++ new/mksusecd-1.37/changelog 2016-01-18 10:59:38.000000000 +0100
@@ -1,3 +1,6 @@
+2016-01-18: 1.37
+ - fix typo
+
2015-12-08: 1.36
- add hashes for license and control file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.36/mksusecd new/mksusecd-1.37/mksusecd
--- old/mksusecd-1.36/mksusecd 2015-12-08 11:38:36.000000000 +0100
+++ new/mksusecd-1.37/mksusecd 2016-01-18 10:59:38.000000000 +0100
@@ -929,7 +929,7 @@
my $f = fname($_->{$t}{base});
my $s = -s $f;
$s = (($s + 2047) >> 11) << 2;
- $s = 1 if $s == 0 || $s >> 0xffff;
+ $s = 1 if $s == 0 || $s > 0xffff;
push @{$mkisofs->{sort}}, "$f 1000001";
$mkisofs->{options} .=
" -eltorito-alt-boot -no-emul-boot -boot-load-size $s -b $_->{$t}{base}";
1
0
Hello community,
here is the log from the commit of package syncthing for openSUSE:Factory checked in at 2016-01-20 09:54:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/syncthing (Old)
and /work/SRC/openSUSE:Factory/.syncthing.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "syncthing"
Changes:
--------
--- /work/SRC/openSUSE:Factory/syncthing/syncthing.changes 2016-01-12 16:14:05.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.syncthing.new/syncthing.changes 2016-01-20 09:54:51.000000000 +0100
@@ -1,0 +2,12 @@
+Sun Jan 17 23:12:21 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to 0.12.15 (changes since 0.12.12):
+ * Add support for themes.
+ * Don't leak sendIndexes on disconnect.
+ * Always run relaying when enabled.
+ * Update 'Edit' menu to 'Action' menu.
+ * Handle race within the job queue.
+ * Improve API/GUI shutdown handling.
+ * Don't crash on directory remove while pulling.
+
+-------------------------------------------------------------------
Old:
----
syncthing-source-v0.12.12.tar.gz
New:
----
syncthing-source-v0.12.15.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ syncthing.spec ++++++
--- /var/tmp/diff_new_pack.Fx83fo/_old 2016-01-20 09:54:52.000000000 +0100
+++ /var/tmp/diff_new_pack.Fx83fo/_new 2016-01-20 09:54:52.000000000 +0100
@@ -17,7 +17,7 @@
Name: syncthing
-Version: 0.12.12
+Version: 0.12.15
Release: 0
Summary: FOSS Continuous File Synchronisation
License: MPL-2.0
++++++ syncthing-source-v0.12.12.tar.gz -> syncthing-source-v0.12.15.tar.gz ++++++
++++ 46746 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package mk-configure for openSUSE:Factory checked in at 2016-01-20 09:54:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mk-configure (Old)
and /work/SRC/openSUSE:Factory/.mk-configure.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mk-configure"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mk-configure/mk-configure.changes 2014-12-03 22:49:06.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mk-configure.new/mk-configure.changes 2016-01-20 09:54:49.000000000 +0100
@@ -1,0 +2,7 @@
+Sun Jan 17 20:05:56 UTC 2016 - mpluskal(a)suse.com
+
+- Update to 0.29.1
+ * FIX: features "progname", "warn", "err" and "fgetln" as well
+ as _mkcfake.c file were added to the list of installed ones.
+
+-------------------------------------------------------------------
Old:
----
mk-configure-0.29.0.tar.gz
New:
----
mk-configure-0.29.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mk-configure.spec ++++++
--- /var/tmp/diff_new_pack.6hSLm7/_old 2016-01-20 09:54:50.000000000 +0100
+++ /var/tmp/diff_new_pack.6hSLm7/_new 2016-01-20 09:54:50.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package mk-configure
#
-# Copyright (c) 2014 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
@@ -17,7 +17,7 @@
Name: mk-configure
-Version: 0.29.0
+Version: 0.29.1
Release: 0
Summary: Lightweight replacement for GNU autotools
License: BSD-2-Clause and BSD-2-Clause and MIT and ISC
++++++ mk-configure-0.29.0.tar.gz -> mk-configure-0.29.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/Makefile.inc new/mk-configure-0.29.1/Makefile.inc
--- old/mk-configure-0.29.0/Makefile.inc 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/Makefile.inc 2015-11-11 22:12:52.000000000 +0100
@@ -1,4 +1,4 @@
-VERSION = 0.29.0
+VERSION = 0.29.1
BIRTHDATE = 2009-02-21
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/doc/NEWS new/mk-configure-0.29.1/doc/NEWS
--- old/mk-configure-0.29.0/doc/NEWS 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/doc/NEWS 2015-11-11 22:12:53.000000000 +0100
@@ -1,4 +1,10 @@
======================================================================
+Version 0.29.1, by Aleksey Cheusov, Wed, 11 Nov 2015 00:35:49 +0300
+
+ FIX: features "progname", "warn", "err" and "fgetln" as well as
+ _mkcfake.c file were added to the list of installed ones.
+
+======================================================================
Version 0.29.0, by Aleksey Cheusov, Sun, 30 Nov 2014 15:35:42 +0300
mkc.configure.mk:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/features/Makefile new/mk-configure-0.29.1/features/Makefile
--- old/mk-configure-0.29.0/features/Makefile 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/features/Makefile 2015-11-11 22:12:53.000000000 +0100
@@ -1,4 +1,4 @@
-.for f in strlcat strlcpy getline
+.for f in strlcat strlcpy getline progname warn err fgetln
FILES += mkc_${f}.h mkc_imp.f_${f}.mk ${f}/${f}.c
FILESDIR_mkc_imp.f_${f}.mk = ${MKFILESDIR}
FILESDIR_mkc_${f}.h = ${FEATURESDIR}
@@ -11,7 +11,7 @@
FILESDIR_mkc_${f}.h = ${FEATURESDIR}
.endfor
-.for f in netbsd_sys_queue.h netbsd_sys_tree.h
+.for f in netbsd_sys_queue.h netbsd_sys_tree.h _mkcfake.c
FILES += ${f}
FILESDIR_${f} = ${FEATURESDIR}
.endfor
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/features/_mkcfake.c new/mk-configure-0.29.1/features/_mkcfake.c
--- old/mk-configure-0.29.0/features/_mkcfake.c 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/features/_mkcfake.c 2015-11-11 22:12:53.000000000 +0100
@@ -1,3 +1,4 @@
-static void _mkcfake(void)
+void _mkcfake(void);
+void _mkcfake(void)
{
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/mk/mkc_imp.preinit.mk new/mk-configure-0.29.1/mk/mkc_imp.preinit.mk
--- old/mk-configure-0.29.0/mk/mkc_imp.preinit.mk 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/mk/mkc_imp.preinit.mk 2015-11-11 22:12:53.000000000 +0100
@@ -10,7 +10,7 @@
BMAKE_REQD ?= 20110606
.ifdef MAKE_VERSION
-_bmake_ok != test ${MAKE_VERSION} -ge ${BMAKE_REQD} && echo 1 || echo 0
+_bmake_ok != test ${MAKE_VERSION:Q} -ge ${BMAKE_REQD:Q} && echo 1 || echo 0
.else
_bmake_ok = 0
.endif
Files old/mk-configure-0.29.0/presentation/presentation.pdf and new/mk-configure-0.29.1/presentation/presentation.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/tests/reqd/expect.out new/mk-configure-0.29.1/tests/reqd/expect.out
--- old/mk-configure-0.29.0/tests/reqd/expect.out 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/tests/reqd/expect.out 2015-11-11 22:12:53.000000000 +0100
@@ -1 +1 @@
-ERROR: We need mk-configure v.999.0.0 while 0.29.0 is detected
+ERROR: We need mk-configure v.999.0.0 while 0.29.1 is detected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/tests/reqd2/expect.out new/mk-configure-0.29.1/tests/reqd2/expect.out
--- old/mk-configure-0.29.0/tests/reqd2/expect.out 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/tests/reqd2/expect.out 2015-11-11 22:12:53.000000000 +0100
@@ -1 +1 @@
-ERROR: We need mk-configure v.999.0.0 while 0.29.0 is detected
+ERROR: We need mk-configure v.999.0.0 while 0.29.1 is detected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/tests/reqd3/expect.out new/mk-configure-0.29.1/tests/reqd3/expect.out
--- old/mk-configure-0.29.0/tests/reqd3/expect.out 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/tests/reqd3/expect.out 2015-11-11 22:12:53.000000000 +0100
@@ -1 +1 @@
-ERROR: We need mk-configure v.999.0.0 while 0.29.0 is detected
+ERROR: We need mk-configure v.999.0.0 while 0.29.1 is detected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mk-configure-0.29.0/tests/reqd4/expect.out new/mk-configure-0.29.1/tests/reqd4/expect.out
--- old/mk-configure-0.29.0/tests/reqd4/expect.out 2014-11-30 13:36:52.000000000 +0100
+++ new/mk-configure-0.29.1/tests/reqd4/expect.out 2015-11-11 22:12:53.000000000 +0100
@@ -1,4 +1,4 @@
-ERROR: We need mk-configure v.999.0.0 while 0.29.0 is detected
+ERROR: We need mk-configure v.999.0.0 while 0.29.1 is detected
"bmake-20110606 or newer is required"
=========== all ============
/objdir/Makefile
1
0
Hello community,
here is the log from the commit of package libxmp for openSUSE:Factory checked in at 2016-01-20 09:54:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libxmp (Old)
and /work/SRC/openSUSE:Factory/.libxmp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libxmp"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libxmp/libxmp.changes 2015-06-30 10:16:36.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libxmp.new/libxmp.changes 2016-01-20 09:54:48.000000000 +0100
@@ -1,0 +2,26 @@
+Sun Jan 17 18:28:43 UTC 2016 - jengelh(a)inai.de
+
+- Update to new upstream release 4.3.10
+* fix out of bounds access in IT/XM/MDL/IMF envelopes, OOB read
+ in STX effect decoding
+* fix AC1D converter number of patterns underflow; PRU2 usage of
+ uninitialized data; Vorbis depacker usage of uninitialized
+ data; negative array index read when setting position; JVS
+ command parameter in MED synth; 669 effect decoding; and a
+ memory violation in LZX decompressor.
+* add sanity check to smix sample loading, PP21 format converter,
+ P40 and P61A format converters, Zen Packer format converter,
+ TP3 format converter
+* prevent division by zero in memory I/O
+* change IFF info ID from string to binary buffer
+* Fix problems caused by fuzz files:
+* add sanity checks to LHA depacker, MED3 loader, ABK loader,
+ Fuchs converter, GMC converter
+* Other changes:
+* fix IT envelope release + fadeout; SFX effects 5, 6, 7, and 8;
+ pattern loading in Galaxy 4 and 5; fix tone portamento target
+ setting; IT autovibrato depth; IMS sample loop start; LIQ pan
+ setting and surround channel
+* disable ST3 sample size limit
+
+-------------------------------------------------------------------
Old:
----
libxmp-4.3.9.tar.gz
New:
----
libxmp-4.3.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libxmp.spec ++++++
--- /var/tmp/diff_new_pack.xG3C9l/_old 2016-01-20 09:54:49.000000000 +0100
+++ /var/tmp/diff_new_pack.xG3C9l/_new 2016-01-20 09:54:49.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libxmp
#
-# 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 @@
Name: libxmp
%define lname libxmp4
-Version: 4.3.9
+Version: 4.3.10
Release: 0
Summary: Module Player library for MOD, S3M, IT and others
License: LGPL-2.1
++++++ libxmp-4.3.9.tar.gz -> libxmp-4.3.10.tar.gz ++++++
++++ 6896 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package pcre2 for openSUSE:Factory checked in at 2016-01-20 09:54:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcre2 (Old)
and /work/SRC/openSUSE:Factory/.pcre2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pcre2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/pcre2/pcre2.changes 2015-08-01 11:34:05.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pcre2.new/pcre2.changes 2016-01-20 09:54:45.000000000 +0100
@@ -1,0 +2,36 @@
+Sun Jan 17 14:30:53 UTC 2016 - jengelh(a)inai.de
+
+- Update to new upstream release 10.21
+* Improve JIT matching speed of patterns starting with + or *.
+* Use memchr() to find the first character in an unanchored match
+ in 8-bit mode in the interpreter. This gives a significant speed
+ improvement.
+* 10.20 broke the handling of [[:>:]] and [[:<:]] in that
+ processing them could involve a buffer overflow if the
+ following character was an opening parenthesis.
+* 10.20 also introduced a bug in processing this pattern:
+ /((?x)(*:0))#(?'/, which was fixed.
+* A callout with a string argument containing an opening square
+ bracket, for example /(?C$[$)(?<]/, was incorrectly processed and
+ could provoke a buffer overflow.
+* A possessively repeated conditional group that could match an empty
+ string, for example, /(?(R))*+/, was incorrectly compiled.
+* The Unicode tables have been updated to Unicode 8.0.0.
+* An empty comment (?#) in a pattern was incorrectly processed and
+ could provoke a buffer overflow.
+* Fix infinite recursion in the JIT compiler when certain patterns
+ /such as (?:|a|){100}x/ are analysed.
+* Some patterns with character classes involving [: and \\ were
+ incorrectly compiled and could cause reading from uninitialized
+ memory or an incorrect error diagnosis. Examples are:
+ /[[:\\](?<[::]/ and /[[:\\](?'abc')[a:].
+* A missing closing parenthesis for a callout with a string argument
+ was not being diagnosed, possibly leading to a buffer overflow.
+* If (?R was followed by - or + incorrect behaviour happened instead
+ of a diagnostic.
+* Fixed an issue when \p{Any} inside an xclass did not read the current
+ character.
+* About 80 more fixes, which you can read about in the ChangeLog
+ shipped with the libpcre2-8-0 package.
+
+-------------------------------------------------------------------
Old:
----
pcre2-10.20.tar.bz2
pcre2-10.20.tar.bz2.sig
New:
----
pcre2-10.21.tar.bz2
pcre2-10.21.tar.bz2.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pcre2.spec ++++++
--- /var/tmp/diff_new_pack.i5kB2D/_old 2016-01-20 09:54:46.000000000 +0100
+++ /var/tmp/diff_new_pack.i5kB2D/_new 2016-01-20 09:54:46.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package pcre2
#
-# 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: pcre2
-Version: 10.20
+Version: 10.21
Release: 0
Summary: A library for Perl-compatible regular expressions
License: BSD-3-Clause
++++++ pcre2-10.20.tar.bz2 -> pcre2-10.21.tar.bz2 ++++++
++++ 76481 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package fwts for openSUSE:Factory checked in at 2016-01-20 09:54:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fwts (Old)
and /work/SRC/openSUSE:Factory/.fwts.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fwts"
Changes:
--------
--- /work/SRC/openSUSE:Factory/fwts/fwts.changes 2015-12-24 12:16:38.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.fwts.new/fwts.changes 2016-01-20 09:54:42.000000000 +0100
@@ -1,0 +2,35 @@
+Sun Jan 17 13:37:39 UTC 2016 - mpluskal(a)suse.com
+
+- Update to 16.01.00
+ * ACPICA: Update to version 20160108
+ * acpi: method: add _PTC test
+ * sync with uefi 2.5 global variables
+ + uefidump: add dumping global variabl AuditMode
+ + uefidump: add dumping global variabl DeployedMode
+ + uefidump: add dumping global variable OsRecoveryOrder
+ + uefidump: add dumping global variable PlatformRecovery####
+ + uefidump: add dumping global variable SysPrepOrder
+ + uefidump: add dumping global variable SysPrep####
+ * ACPICA: Update to version 20151218
+ * esrtdump: add dumping for esrt table
+ * fixed bugs:
+ + Fix spelling mistakes of "ACPI"
+ + method: update method status
+ + utilities: kernelscan: fix memory leaks and a segfault
+ + acpi: cstates: fix clang build warning on zero CPUs.
+ + acpi: s3, s3power, s4: replace cleanup free with explicit
+ frees
+ + data: klog.json: add in some more kernel error messages for
+ 4.4
+ + acpi: hpet: fwts_mmap failure is FWTS_MAP_FAILED and not NULL
+ + acpi: pcc: fwts_mmap failure is FWTS_MAP_FAILED and not NULL
+ + bios: ebdadump: fwts_mmap failure is FWTS_MAP_FAILED and not
+ MAP_FAILED
+ + acpi: syntaxcheck: ASL_MSG_COMPILER_RESERVED failure should
+ be an info
+ + Update copyright year to 2016
+ + dmi: dmicheck: fix reserved bits mask for Processor
+ Information
+ + uefirtvariable: fix decalred VLA have zero size
+
+-------------------------------------------------------------------
Old:
----
fwts-V15.12.00.tar.gz
New:
----
fwts-V16.01.00.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ fwts.spec ++++++
--- /var/tmp/diff_new_pack.t6BNwC/_old 2016-01-20 09:54:44.000000000 +0100
+++ /var/tmp/diff_new_pack.t6BNwC/_new 2016-01-20 09:54:44.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package fwts
#
-# 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: fwts
-Version: 15.12.00
+Version: 16.01.00
Release: 0
Summary: Firmware Test Suite
License: GPL-2.0+
++++++ fwts-V15.12.00.tar.gz -> fwts-V16.01.00.tar.gz ++++++
++++ 14085 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package smplayer for openSUSE:Factory checked in at 2016-01-20 09:54:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/smplayer (Old)
and /work/SRC/openSUSE:Factory/.smplayer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "smplayer"
Changes:
--------
--- /work/SRC/openSUSE:Factory/smplayer/smplayer.changes 2015-12-01 09:19:48.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.smplayer.new/smplayer.changes 2016-01-20 09:54:36.000000000 +0100
@@ -1,0 +2,11 @@
+Sun Jan 17 00:18:46 UTC 2016 - sor.alexei(a)meowr.ru
+
+- Update to 16.1.0:
+ * Fix for YouTube.
+ * The screenshots work again with older versions of MPV/MPlayer.
+ * Possibility to add bookmarks (menu Browse), which allows to
+ mark your favourite parts of the video for a quick access.
+ * New option 'Prevent window to get outside of screen' in
+ Preferences -> Interface.
+
+-------------------------------------------------------------------
Old:
----
smplayer-15.11.0.tar.bz2
New:
----
smplayer-16.1.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ smplayer.spec ++++++
--- /var/tmp/diff_new_pack.ESGzHj/_old 2016-01-20 09:54:38.000000000 +0100
+++ /var/tmp/diff_new_pack.ESGzHj/_new 2016-01-20 09:54:38.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package smplayer
#
-# 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: smplayer
-Version: 15.11.0
+Version: 16.1.0
Release: 0
Summary: Complete frontend for MPV
License: GPL-2.0+
++++++ smplayer-15.11.0.tar.bz2 -> smplayer-16.1.0.tar.bz2 ++++++
++++ 182906 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package dovecot22 for openSUSE:Factory checked in at 2016-01-20 09:54:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dovecot22 (Old)
and /work/SRC/openSUSE:Factory/.dovecot22.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dovecot22"
Changes:
--------
--- /work/SRC/openSUSE:Factory/dovecot22/dovecot22.changes 2015-12-23 08:50:08.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.dovecot22.new/dovecot22.changes 2016-01-20 09:54:33.000000000 +0100
@@ -1,0 +2,40 @@
+Fri Jan 8 23:01:00 UTC 2016 - mrueckert(a)suse.de
+
+- update pigeonhole to 0.4.11
+ no noticable changes compared to rc1
+
+-------------------------------------------------------------------
+Mon Jan 4 08:33:16 UTC 2016 - mrueckert(a)suse.de
+
+- update pigeonhole to 0.4.11.rc1
+ - Sieve mime extension: Fixed the header :mime :anychild test to
+ work properly outside a foreverypart loop.
+ - Several fixes in message body part handling:
+ - Fixed assert failure occurring when text extraction is
+ attempted on an empty or broken text part.
+ - Fixed assert failure in handling of body parts that are
+ converted to text.
+ - Fixed header unfolding for (mime) headers parsed from any
+ mime part.
+ - Fixed trimming for (mime) headers parsed from any mime part.
+ - Fixed erroneous changes to the message part tree structure
+ performed when re-parsing the message.
+ - LDA Sieve plugin: Fixed logging of actions; sometimes the
+ configured log format was not followed.
+ - LDA Sieve plugin: Fixed bug in error handling of script storage
+ initialization.
+ - Sieve Extprograms plugin: Ignored ENOTCONN error in
+ shutdown(fd, SHUT_WR) call.
+ - Fixed duplication of discard actions in the script result. Each
+ discard was counted as a separate action, which means that
+ action limit would be crossed too early.
+ - Made sure that quota errors never get logged as errors in
+ syslog.
+ - Fixed handling of implicit keep for a partially executed
+ transaction that yielded a temporary failure.
+ - Fixed handling of global errors. If master and user error
+ handler were identical, in some cases the log message could be
+ lost.
+ - Fixed AIX compile issue in message body parser.
+
+-------------------------------------------------------------------
Old:
----
dovecot-2.2-pigeonhole-0.4.10.tar.gz
New:
----
dovecot-2.2-pigeonhole-0.4.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dovecot22.spec ++++++
--- /var/tmp/diff_new_pack.2BKaHU/_old 2016-01-20 09:54:35.000000000 +0100
+++ /var/tmp/diff_new_pack.2BKaHU/_new 2016-01-20 09:54:35.000000000 +0100
@@ -21,7 +21,7 @@
Release: 0
%define pkg_name dovecot
%define dovecot_version 2.2.21
-%define dovecot_pigeonhole_version 0.4.10
+%define dovecot_pigeonhole_version 0.4.11
%define dovecot_branch 2.2
%define dovecot_pigeonhole_source_dir %{pkg_name}-%{dovecot_branch}-pigeonhole-%{dovecot_pigeonhole_version}
%define dovecot_pigeonhole_docdir %{_docdir}/%{pkg_name}/dovecot-pigeonhole
++++++ dovecot-2.2-pigeonhole-0.4.10.tar.gz -> dovecot-2.2-pigeonhole-0.4.11.tar.gz ++++++
++++ 27003 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-libnacl for openSUSE:Factory checked in at 2016-01-20 09:54:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-libnacl (Old)
and /work/SRC/openSUSE:Factory/.python-libnacl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-libnacl"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-libnacl/python-libnacl.changes 2016-01-12 16:12:14.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-libnacl.new/python-libnacl.changes 2016-01-20 09:54:31.000000000 +0100
@@ -1,0 +2,13 @@
+Thu Jan 14 13:07:31 UTC 2016 - dmacvicar(a)suse.de
+
+- remove the escaped epoch to prevent the build service to
+ auto replace it and break the macro.
+
+-------------------------------------------------------------------
+Thu Jan 14 09:31:03 UTC 2016 - dmacvicar(a)suse.de
+
+- Add libnacl-1.4.4-libsodium18.patch to find libsodium 1.0.8
+- Fix BuildRequires to avoid building with a newer version
+ of libsodium than 1.0.8
+
+-------------------------------------------------------------------
New:
----
libnacl-1.4.4-libsodium18.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-libnacl.spec ++++++
--- /var/tmp/diff_new_pack.xVGaFt/_old 2016-01-20 09:54:33.000000000 +0100
+++ /var/tmp/diff_new_pack.xVGaFt/_new 2016-01-20 09:54:33.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-libnacl
#
-# 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
@@ -15,26 +15,30 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+
Name: python-libnacl
Version: 1.4.4
Release: 0
-License: Apache-2.0
Summary: Python bindings for libsodium based on ctypes
-Url: https://github.com/saltstack/libnacl
+License: Apache-2.0
Group: Development/Languages/Python
+Url: https://github.com/saltstack/libnacl
Source0: https://pypi.python.org/packages/source/l/libnacl/libnacl-%{version}.tar.gz
-BuildRoot: %{_tmppath}/libnacl-%{version}-build
+# PATCH-FIX-OPENSUSE libnacl-1.4.4-libsodium18.patch find libsodium 1.0.8
+Patch0: libnacl-1.4.4-libsodium18.patch
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: python
-BuildRequires: python-setuptools
BuildRequires: python-devel
-BuildRequires: libsodium-devel
-
+BuildRequires: python-setuptools
+# libnacl/__init__.py only looks for sonames 17, 13, 10, 5, 4
+# plus 18 with Patch0
+BuildRequires: libsodium-devel <= 1.0.8
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
# make sure we require the libsodium version we were built with
# this is extracted from the requires_eq macro because we need the -a parameter to expand the wildcard in the package name.
-%(LC_ALL=C rpm -q -a --qf "Requires: %%{name}(%{__isa}) = %%{epoch}:%%{version}\n" 'libsodium*' | grep -v libsodium-devel | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
+%(LC_ALL=C rpm -q -a --qf "Requires: %%{name}(%{__isa}) = %%{version}\n" 'libsodium*' | grep -v libsodium-devel | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
%description
This library is used to gain direct access to the functions exposed by Daniel J. Bernstein's nacl library via libsodium.
@@ -43,6 +47,7 @@
%prep
%setup -q -n libnacl-%{version}
+%patch0 -p1
%build
python setup.py build
++++++ libnacl-1.4.4-libsodium18.patch ++++++
Index: libnacl-1.4.4/libnacl/__init__.py
===================================================================
--- libnacl-1.4.4.orig/libnacl/__init__.py
+++ libnacl-1.4.4/libnacl/__init__.py
@@ -9,7 +9,7 @@ from libnacl.version import __version__
import ctypes
import sys
-__SONAMES = (17, 13, 10, 5, 4)
+__SONAMES = (18, 17, 13, 10, 5, 4)
def _get_nacl():
1
0
Hello community,
here is the log from the commit of package raspberrypi-firmware for openSUSE:Factory checked in at 2016-01-20 09:54:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/raspberrypi-firmware (Old)
and /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "raspberrypi-firmware"
Changes:
--------
--- /work/SRC/openSUSE:Factory/raspberrypi-firmware/raspberrypi-firmware.changes 2015-12-20 10:52:41.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new/raspberrypi-firmware.changes 2016-01-20 09:54:29.000000000 +0100
@@ -1,0 +2,5 @@
+Thu Jan 14 10:58:53 UTC 2016 - guillaume(a)opensuse.org
+
+- Update to 7147575 (2016-01-13)
+
+-------------------------------------------------------------------
Old:
----
raspberrypi-firmware-2015.12.08.tar.bz2
New:
----
raspberrypi-firmware-2016.01.13.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ raspberrypi-firmware.spec ++++++
--- /var/tmp/diff_new_pack.ecu1Ko/_old 2016-01-20 09:54:31.000000000 +0100
+++ /var/tmp/diff_new_pack.ecu1Ko/_new 2016-01-20 09:54:31.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package raspberrypi-firmware
#
-# 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: raspberrypi-firmware
-Version: 2015.12.08
+Version: 2016.01.13
Release: 0
Summary: Binary bootloader and firmware files for Raspberry Pi
License: SUSE-Firmware
++++++ raspberrypi-firmware-2015.12.08.tar.bz2 -> raspberrypi-firmware-2016.01.13.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/raspberrypi-firmware/raspberrypi-firmware-2015.12.08.tar.bz2 /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new/raspberrypi-firmware-2016.01.13.tar.bz2 differ: char 11, line 1
1
0