openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
September 2019
- 1 participants
- 2151 discussions
Hello community,
here is the log from the commit of package screen-message for openSUSE:Factory checked in at 2019-09-30 15:59:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/screen-message (Old)
and /work/SRC/openSUSE:Factory/.screen-message.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "screen-message"
Mon Sep 30 15:59:46 2019 rev:2 rq:733873 version:0.25
Changes:
--------
--- /work/SRC/openSUSE:Factory/screen-message/screen-message.changes 2017-02-16 16:51:55.375424997 +0100
+++ /work/SRC/openSUSE:Factory/.screen-message.new.2352/screen-message.changes 2019-09-30 15:59:50.989144632 +0200
@@ -1,0 +2,10 @@
+Sat Sep 28 09:02:24 UTC 2019 - Sebastian Wagner <sebix+novell.com(a)sebix.at>
+
+- Update to version 0.25:
+ * No upsteam changelog available, from debian changelog:
+ * Repository location switched to github
+ * Support -i and Ctrl-I (Closes: #862056)
+- Remove _service file, git.nomeata.de is unreachable.
+- Add my_gdk_rgba_parse_void.patch to fix compilation error
+
+-------------------------------------------------------------------
Old:
----
_service
screen-message-0.23.tar.gz
New:
----
my_gdk_rgba_parse_void.patch
screen-message-0.25.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ screen-message.spec ++++++
--- /var/tmp/diff_new_pack.3k9uIX/_old 2019-09-30 15:59:51.701142737 +0200
+++ /var/tmp/diff_new_pack.3k9uIX/_new 2019-09-30 15:59:51.701142737 +0200
@@ -1,7 +1,7 @@
#
# spec file for package screen-message
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,25 +12,26 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: screen-message
-Version: 0.23
+Version: 0.25
Release: 0
Summary: Displays a short text fullscreen
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/X11/Utilities
-Url: http://darcs.nomeata.de/screen-message.debian
-Source: %{name}-%{version}.tar.gz
+URL: https://www.joachim-breitner.de/en/projects#screen-message
+Source: https://www.joachim-breitner.de/archive/screen-message/%{name}-%{version}.t…
Patch0: inst-dir.patch
+# PATCH-FIX-UPSTREAM my_gdk_rgba_parse_void.patch -- fix return value of function
+Patch1: my_gdk_rgba_parse_void.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gtk3-devel
BuildRequires: pango-devel
BuildRequires: update-desktop-files
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Screen Message is a small program to display a text as large as possible on your screen. You can edit the text while Screen Message is running. To blank the text, press Esc. To quit Screen Message, press Ctrl-Q or press Esc twice.
@@ -38,12 +39,12 @@
%prep
%setup -q
%patch0 -p1
+%patch1 -p1
%build
autoreconf --install
%configure --bindir=%{_bindir}
mv README.Win32 README
-mv debian/changelog ChangeLog
make %{?_smp_mflags}
%install
@@ -59,11 +60,10 @@
%icon_theme_cache_postun
%files
-%defattr(-,root,root)
-%doc README ChangeLog
+%doc README
%{_bindir}/sm
%{_datadir}/applications/sm.desktop
%{_datadir}/icons/hicolor/48x48/apps/sm.png
-%{_mandir}/man6/sm.6%{ext_man}
+%{_mandir}/man6/sm.6%{?ext_man}
%changelog
++++++ my_gdk_rgba_parse_void.patch ++++++
--- screen-message-0.25/sm.c.back 2019-09-28 14:16:10.431541670 +0200
+++ screen-message-0.25/sm.c 2019-09-28 14:16:46.543670556 +0200
@@ -281,7 +281,7 @@
printf("%s\n", PACKAGE_STRING);
}
-gboolean my_gdk_rgba_parse (GdkRGBA *rgba, const gchar *spec) {
+static void my_gdk_rgba_parse (GdkRGBA *rgba, const gchar *spec) {
gboolean ret = gdk_rgba_parse(rgba, spec);
if (!ret) {
fprintf (stderr, "Failed to parse color specification %s\n", spec);
++++++ screen-message-0.23.tar.gz -> screen-message-0.25.tar.gz ++++++
++++ 10852 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/README.Win32 new/screen-message-0.25/README.Win32
--- old/screen-message-0.23/README.Win32 1970-01-01 01:00:00.000000000 +0100
+++ new/screen-message-0.25/README.Win32 2017-05-09 14:16:24.000000000 +0200
@@ -0,0 +1,32 @@
+Screen Message 0.25
+
+(c) 2009 Joachim Breitner <mail(a)joachim-breitner.de>
+
+Screen Message is a small program to display a text as large as possible on your screen. You can edit the text while Screen Message is running.
+
+To blank the text, press Esc. To quit Screen Message, press Ctrl-Q or press Esc twice.
+
+License Information
+===================
+
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You can find a COPY of the GNU General Public License in the file LICENSE after setup is finished in the installation directory.
+
+Third party components
+======================
+
+This program uses and ships the following components from Free Software projects. You can find the source code at the respective websites:
+
+ * GTK+, ATK, Pango, GLib: http://www.gtk.org/
+ * Cairo: http://cairographics.org/
+ * Expat: http://expat.sourceforge.net/
+ * Fontconfig: http://www.fontconfig.org/
+ * Freetype2: http://www.freetype.org/
+ * libpng: http://www.libpng.org/pub/png/libpng.html
+ * zlib: http://www.zlib.net/
+
+This installer was created using Inno Setup: http://www.jrsoftware.org/isinfo.php
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/compile new/screen-message-0.25/compile
--- old/screen-message-0.23/compile 1970-01-01 01:00:00.000000000 +0100
+++ new/screen-message-0.25/compile 2017-05-09 14:04:29.000000000 +0200
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey(a)cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake(a)gnu.org> or send patches to
+# <automake-patches(a)gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
+case $1 in
+ '')
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake(a)gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no '-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # '.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/config.h.in new/screen-message-0.25/config.h.in
--- old/screen-message-0.23/config.h.in 1970-01-01 01:00:00.000000000 +0100
+++ new/screen-message-0.25/config.h.in 2017-05-09 14:16:24.000000000 +0200
@@ -0,0 +1,28 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/configure.ac new/screen-message-0.25/configure.ac
--- old/screen-message-0.23/configure.ac 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/configure.ac 2017-05-09 14:06:39.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT(screen-message, 0.23, mail(a)joachim-breitner.de)
+AC_INIT(screen-message, 0.25, mail(a)joachim-breitner.de)
AC_CONFIG_SRCDIR([sm.c])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_FILES([setup.iss README.Win32])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/debian/changelog new/screen-message-0.25/debian/changelog
--- old/screen-message-0.23/debian/changelog 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/debian/changelog 1970-01-01 01:00:00.000000000 +0100
@@ -1,211 +0,0 @@
-screen-message (0.23-1) unstable; urgency=medium
-
- * New upstream release:
-
- Disable temporary disabling of anti-aliasing
-
- It seems to have stopped working with recent versions of gtk3, and
- furthermore causes every second keypress to be ignored.
-
- -- Joachim Breitner <nomeata(a)debian.org> Tue, 23 Dec 2014 19:41:09 +0100
-
-screen-message (0.22.2-1) unstable; urgency=medium
-
- * New upstream release (Closes: 763429)
-
- -- Joachim Breitner <nomeata(a)debian.org> Tue, 30 Sep 2014 15:48:32 +0200
-
-screen-message (0.22.1-2) unstable; urgency=medium
-
- * New minor upstream release (fixes sm.desktop), thanks to Sebastian Pipping
- for the patch.
-
- -- Joachim Breitner <nomeata(a)debian.org> Fri, 30 May 2014 10:21:26 +0200
-
-screen-message (0.22-1) unstable; urgency=medium
-
- * New minor upstream release
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 22 May 2014 23:54:38 +0200
-
-screen-message (0.21-2) unstable; urgency=medium
-
- * Fix build-depends (Closes: #747772)
-
- -- Joachim Breitner <nomeata(a)debian.org> Mon, 12 May 2014 16:18:31 +0200
-
-screen-message (0.21-1) unstable; urgency=medium
-
- * New upstream release (use stock gtk fullscreen functionality)
-
- -- Joachim Breitner <nomeata(a)debian.org> Fri, 09 May 2014 09:45:46 +0200
-
-screen-message (0.20-2) unstable; urgency=low
-
- * Upload to unstable
-
- -- Joachim Breitner <nomeata(a)debian.org> Mon, 20 May 2013 12:11:24 +0200
-
-screen-message (0.20-1) experimental; urgency=low
-
- * Adjust VCS header
- * New upstream release
-
- -- Joachim Breitner <nomeata(a)debian.org> Sat, 24 Nov 2012 20:28:14 +0100
-
-screen-message (0.19-1) unstable; urgency=low
-
- * New upstream release
- + Fixes SIGSEGV by not using g_object_set (Closes: #581337)
- * Switch to 3.0 (quilt) source format
- * Bump standards version, no change.
-
- -- Joachim Breitner <nomeata(a)debian.org> Mon, 17 May 2010 18:13:34 +0200
-
-screen-message (0.18-1) unstable; urgency=low
-
- * New upstream release
- + Does not focus the hidden text input, avoiding unwanted pop-ups of
- a possible virtual keyboard.
- + Ship .desktop file
-
- -- Joachim Breitner <nomeata(a)debian.org> Fri, 24 Jul 2009 12:46:27 +0200
-
-screen-message (0.17-1) unstable; urgency=low
-
- * New upstream release
- + Properly hide entry when no data is provided
- * Bump standards version, no change
-
- -- Joachim Breitner <nomeata(a)debian.org> Mon, 20 Jul 2009 23:44:46 +0200
-
-screen-message (0.16-1) unstable; urgency=low
-
- * New upstream release
- + 3 second timeout, react on cursor movements (Closes: #496467), thanks to
- Paul Wise for the patch.
- + Avoid flicker when toggling the entry.
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 27 Nov 2008 14:37:00 +0100
-
-screen-message (0.15-1) unstable; urgency=low
-
- * New upstream release
- + Back to using a GtkDraw for the text, behaves better with matchbox
- + Show mouse pointer while entry is visible
-
- -- Joachim Breitner <nomeata(a)debian.org> Sat, 23 Aug 2008 23:50:10 +0200
-
-screen-message (0.14-1) unstable; urgency=low
-
- * New upstream release
- + Only show entry from start on when nothing is provided
- + Redraw screen on screen configuration changes
-
- -- Joachim Breitner <nomeata(a)debian.org> Sat, 16 Aug 2008 16:07:25 -0300
-
-screen-message (0.13-1) unstable; urgency=low
-
- * New upstream release
- + Floats and auto-hides text entry
- + Ignore trailing newlines on stdin (Closes: 494771), thanks
- to Chris Lamb for the patch.
- * Bump standards version, no change
-
- -- Joachim Breitner <nomeata(a)debian.org> Tue, 12 Aug 2008 01:35:39 -0300
-
-screen-message (0.12-1) unstable; urgency=low
-
- * New upstream release
- + --foreground, --background, --font, thx to Rhonda
- Closes: #432804
- + --rotate [0|1|2|3] for rotation
-
- -- Joachim Breitner <nomeata(a)debian.org> Tue, 05 Aug 2008 19:39:46 -0300
-
-screen-message (0.11-1) unstable; urgency=low
-
- * New upstream version
- + Manpage in section 6 (Closes: 476600 )
- + Binary moved in "upstream" source
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 17 Apr 2008 23:39:57 +0200
-
-screen-message (0.10-1) unstable; urgency=low
-
- * New upstream version
- + Includes an icon
- * Move binary to /usr/games
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 20 Mar 2008 14:15:49 +0100
-
-screen-message (0.9-1) unstable; urgency=low
-
- * New upstream Version:
- - Starts with text selected
- * add XS-Vcs-Browser header
-
- -- Joachim Breitner <nomeata(a)debian.org> Wed, 24 Oct 2007 00:53:43 +0200
-
-screen-message (0.8-1) unstable; urgency=low
-
- * New upstream Version
- + Make the initial text size the same as normal text
- + Pressing Esc when there is no text quits the program
- (Both changes thanks to Paul Wise)
- * Bump debhelper dependency
-
- -- Joachim Breitner <nomeata(a)debian.org> Mon, 22 Oct 2007 17:53:30 +0200
-
-screen-message (0.7-1) unstable; urgency=low
-
- * New upstream version:
- + Fixes: only first argument is used as the text (Closes: #432806)
- Thanks to Florian Ragwitz for the patch.
- + Sets the size to the size of the screen. This makes fullscren
- work with xmonad, please tell me if it causes problems with other
- WMs.
-
- -- Joachim Breitner <nomeata(a)debian.org> Sun, 21 Oct 2007 21:19:41 +0200
-
-screen-message (0.6-1) unstable; urgency=low
-
- * New upstream release:
- * Read from stdin if parameter is - (Closes: #429646)
- * Middle-Clicking anywhere works (Closes: #429648)
- * End program upon destory (Closes: 428893)
- * Fix colors to black/white independent of the theme
-
- -- Joachim Breitner <nomeata(a)debian.org> Tue, 19 Jun 2007 13:19:51 +0100
-
-screen-message (0.5-1) unstable; urgency=low
-
- * rename to screen-message, as there ∃ sm in Debian
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 14 Jun 2007 20:21:20 +0100
-
-sm (0.4-1) unstable; urgency=low
-
- * New upstream version (automakized)
- * Switched to cdbs
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 14 Jun 2007 18:07:53 +0100
-
-sm (0.3-1) unstable; urgency=low
-
- * Get rid of a warning (thx to Jérémy Bobbio <lunar(a)debian.org>)
- * Automake the whole thing
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 14 Jun 2007 16:51:22 +0100
-
-sm (0.2-1) unstable; urgency=low
-
- * Version ready for release
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 14 Jun 2007 14:24:19 +0100
-
-sm (0.1-1) UNRELEASED; urgency=low
-
- * Initial release.
-
- -- Joachim Breitner <nomeata(a)debian.org> Thu, 14 Jun 2007 13:33:54 +0100
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/debian/compat new/screen-message-0.25/debian/compat
--- old/screen-message-0.23/debian/compat 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/debian/compat 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/debian/control new/screen-message-0.25/debian/control
--- old/screen-message-0.23/debian/control 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/debian/control 1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-Source: screen-message
-Section: games
-Priority: optional
-Maintainer: Joachim Breitner <nomeata(a)debian.org>
-Build-Depends:
- debhelper (>= 5.0.51~),
- cdbs,
- pkg-config,
- libpango1.0-dev,
- libgtk-3-dev,
- imagemagick
-Standards-Version: 3.8.4
-Vcs-Darcs: http://darcs.nomeata.de/screen-message.debian
-Vcs-Browser: http://darcs.nomeata.de/cgi-bin/darcsweb.cgi?r=screen-message.debian;a=summ…
-
-Package: sm
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Displays a short text fullscreen
- Screen Message will display a given multi-line message as large as
- possible, fullscreen and black on white. You can specify the text either
- when launching sm, or edit it while the program is running.
- .
- It is useful to send messages across a room, e.g. during an university
- lecture. For fast startup, it is recommended to bind it to a key in your
- Desktop Environment.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/debian/copyright new/screen-message-0.25/debian/copyright
--- old/screen-message-0.23/debian/copyright 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/debian/copyright 1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-This package was debianized by Joachim Breitner <nomeata(a)debian.org> on
-Thu, 14 Jun 2007 13:44:35 +0100
-
-It was downloaded from http://darcs.nomeata.de/screen-message
-
-Copyright: © 2007-2009 Joachim Breitner <mail(a)joachim-breitner.de>
-
-License:
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
-The GPL is available in /usr/share/common-licenses/GPL-2 on Debian
-systems.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/debian/rules new/screen-message-0.25/debian/rules
--- old/screen-message-0.23/debian/rules 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/debian/rules 1970-01-01 01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-#!/usr/bin/make -f
-
-include /usr/share/cdbs/1/rules/debhelper.mk
-include /usr/share/cdbs/1/class/autotools.mk
-
-install/sm::
- dh_icons
- mkdir -p debian/sm/usr/share/pixmaps
- convert sm.png -resize 32x32 debian/sm/usr/share/pixmaps/sm.xpm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/debian/sm.menu new/screen-message-0.25/debian/sm.menu
--- old/screen-message-0.23/debian/sm.menu 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/debian/sm.menu 1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-?package(sm):needs="X11" section="Games/Toys"\
- title="sm" command="/usr/games/sm"\
- icon="/usr/share/pixmaps/sm.xpm"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/debian/source/format new/screen-message-0.25/debian/source/format
--- old/screen-message-0.23/debian/source/format 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/debian/source/format 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-3.0 (quilt)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/missing new/screen-message-0.25/missing
--- old/screen-message-0.23/missing 1970-01-01 01:00:00.000000000 +0100
+++ new/screen-message-0.25/missing 2017-05-09 14:04:29.000000000 +0200
@@ -0,0 +1,215 @@
+#! /bin/sh
+# Common wrapper for a few potentially missing GNU programs.
+
+scriptversion=2013-10-28.13; # UTC
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard(a)iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try '$0 --help' for more information"
+ exit 1
+fi
+
+case $1 in
+
+ --is-lightweight)
+ # Used by our autoconf macros to check whether the available missing
+ # script is modern enough.
+ exit 0
+ ;;
+
+ --run)
+ # Back-compat with the calling convention used by older automake.
+ shift
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+
+Supported PROGRAM values:
+ aclocal autoconf autoheader autom4te automake makeinfo
+ bison yacc flex lex help2man
+
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
+
+Send bug reports to <bug-automake(a)gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch. This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+ msg="probably too old"
+elif test $st -eq 127; then
+ # Program was missing.
+ msg="missing on your system"
+else
+ # Program was found and executed, but failed. Give up.
+ exit $st
+fi
+
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+ case $1 in
+ aclocal|automake)
+ echo "The '$1' program is part of the GNU Automake package:"
+ echo "<$gnu_software_URL/automake>"
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/autoconf>"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ autoconf|autom4te|autoheader)
+ echo "The '$1' program is part of the GNU Autoconf package:"
+ echo "<$gnu_software_URL/autoconf/>"
+ echo "It also requires GNU m4 and Perl in order to run:"
+ echo "<$gnu_software_URL/m4/>"
+ echo "<$perl_URL>"
+ ;;
+ esac
+}
+
+give_advice ()
+{
+ # Normalize program name to check for.
+ normalized_program=`echo "$1" | sed '
+ s/^gnu-//; t
+ s/^gnu//; t
+ s/^g//; t'`
+
+ printf '%s\n' "'$1' is $msg."
+
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+ case $normalized_program in
+ autoconf*)
+ echo "You should only need it if you modified 'configure.ac',"
+ echo "or m4 files included by it."
+ program_details 'autoconf'
+ ;;
+ autoheader*)
+ echo "You should only need it if you modified 'acconfig.h' or"
+ echo "$configure_deps."
+ program_details 'autoheader'
+ ;;
+ automake*)
+ echo "You should only need it if you modified 'Makefile.am' or"
+ echo "$configure_deps."
+ program_details 'automake'
+ ;;
+ aclocal*)
+ echo "You should only need it if you modified 'acinclude.m4' or"
+ echo "$configure_deps."
+ program_details 'aclocal'
+ ;;
+ autom4te*)
+ echo "You might have modified some maintainer files that require"
+ echo "the 'autom4te' program to be rebuilt."
+ program_details 'autom4te'
+ ;;
+ bison*|yacc*)
+ echo "You should only need it if you modified a '.y' file."
+ echo "You may want to install the GNU Bison package:"
+ echo "<$gnu_software_URL/bison/>"
+ ;;
+ lex*|flex*)
+ echo "You should only need it if you modified a '.l' file."
+ echo "You may want to install the Fast Lexical Analyzer package:"
+ echo "<$flex_URL>"
+ ;;
+ help2man*)
+ echo "You should only need it if you modified a dependency" \
+ "of a man page."
+ echo "You may want to install the GNU Help2man package:"
+ echo "<$gnu_software_URL/help2man/>"
+ ;;
+ makeinfo*)
+ echo "You should only need it if you modified a '.texi' file, or"
+ echo "any other file indirectly affecting the aspect of the manual."
+ echo "You might want to install the Texinfo package:"
+ echo "<$gnu_software_URL/texinfo/>"
+ echo "The spurious makeinfo call might also be the consequence of"
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+ echo "want to install GNU make:"
+ echo "<$gnu_software_URL/make/>"
+ ;;
+ *)
+ echo "You might have modified some files without having the proper"
+ echo "tools for further handling them. Check the 'README' file, it"
+ echo "often tells you about the needed prerequisites for installing"
+ echo "this package. You may also peek at any GNU archive site, in"
+ echo "case some other package contains this missing '$1' program."
+ ;;
+ esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+ -e '2,$s/^/ /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/sm.6 new/screen-message-0.25/sm.6
--- old/screen-message-0.23/sm.6 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/sm.6 2017-05-09 14:20:01.000000000 +0200
@@ -37,6 +37,8 @@
.PP
To clear the displayed text, press Escape.
.PP
+To invert the colors of the text and the background, press Ctrl-I.
+.PP
To quit the program, press Ctrl-Q, or Escape twice, or click the "Quit"-button.
.br
@@ -56,6 +58,10 @@
Define a different color to use for the background of the text to
display than white. For possible values, see above.
.TP
+.BI \-i,\ \-\-invert
+Switch the roles for foreground and background colors. Useful if you prefer
+white-on-black.
+.TP
.BI \-n,\ \-\-font= fontspec
Define a different font to use than the default sans-serif font of your
system. The fontspec be the complete name for a truetype font (like
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/sm.c new/screen-message-0.25/sm.c
--- old/screen-message-0.23/sm.c 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/sm.c 2017-05-09 14:22:22.000000000 +0200
@@ -20,6 +20,7 @@
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <pango/pango.h>
+#include <cairo.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
@@ -48,6 +49,8 @@
static PangoFontDescription *font;
static char *foreground = NULL;
static char *background = NULL;
+static int inverted = 0; // 0 = normal, 1 = foreground and background swapped
+static GdkRGBA white, black;
static char *fontdesc = NULL;
static int rotation = 0; // 0 = normal, 1 = left, 2 = inverted, 3 = right
static int alignment = 0; // 0 = centered, 1 = left-aligned, 2 = right-aligned
@@ -84,6 +87,11 @@
}
}
+static void invert_text(GtkAccelGroup *accel, GObject *window, guint keyval, GdkModifierType modifier) {
+ inverted = !inverted;
+ gtk_widget_queue_draw(draw);
+}
+
static char *get_text() {
GtkTextIter start, end;
gtk_text_buffer_get_start_iter(tb,&start);
@@ -94,8 +102,11 @@
static void redraw(GtkWidget *draw, cairo_t *cr, gpointer data) {
int q;
- const char *text = get_text();
+ gdk_cairo_set_source_rgba(cr, inverted ? &black : &white);
+ cairo_paint(cr);
+
+ const char *text = get_text();
if (strlen(text) > 0) {
int w1, h1;
static PangoLayout* layout;
@@ -119,6 +130,7 @@
pango_layout_set_alignment(layout,PANGO_ALIGN_CENTER);
}
+
pango_layout_get_pixel_size(layout, &w1, &h1);
if (w1>0 && h1>0) {
int w2 = gtk_widget_get_allocated_width(draw);
@@ -135,14 +147,6 @@
double s = min ((double)w2/rw1, (double)h2/rh1);
- cairo_save(cr);
-
- GdkRGBA color;
- gtk_style_context_get_color (gtk_widget_get_style_context(draw),
- GTK_STATE_NORMAL, &color);
- gdk_cairo_set_source_rgba(cr, &color);
-
-
if (alignment == 1) { // left align
cairo_translate(cr, (s * rw1)/2, h2/2);
} else if (alignment == 2) { // right align
@@ -153,9 +157,8 @@
cairo_rotate(cr, rotation * M_PI_2);
cairo_scale(cr, s, s);
cairo_translate(cr, -w1/2, -h1/2);
+ gdk_cairo_set_source_rgba(cr, inverted ? &white : &black);
pango_cairo_show_layout (cr, layout);
-
- cairo_restore(cr);
}
g_object_unref(layout);
}
@@ -263,6 +266,7 @@
{"version", no_argument, NULL, 'V'},
{"foreground", required_argument, NULL, 'f'},
{"background", required_argument, NULL, 'b'},
+ {"invert", required_argument, NULL, 'i'},
{"font", required_argument, NULL, 'n'},
{"rotate", required_argument, NULL, 'r'},
{"align", required_argument, NULL, 'a'},
@@ -270,19 +274,26 @@
};
static void usage(char *cmd) {
- printf("Usage: %s [-h|--help] [-V|--version] [-f|--foreground=colordesc] [-b|--background=colordesc] [-n|--font=fontdesc] [-r|--rotate=0,1,2,3] [-a|--align=0,1,2]\n", cmd);
+ printf("Usage: %s [-h|--help] [-V|--version] [-f|--foreground=colordesc] [-b|--background=colordesc] [-i|--inverted] [-n|--font=fontdesc] [-r|--rotate=0,1,2,3] [-a|--align=0,1,2]\n", cmd);
}
static void version() {
printf("%s\n", PACKAGE_STRING);
}
+gboolean my_gdk_rgba_parse (GdkRGBA *rgba, const gchar *spec) {
+ gboolean ret = gdk_rgba_parse(rgba, spec);
+ if (!ret) {
+ fprintf (stderr, "Failed to parse color specification %s\n", spec);
+ }
+}
+
int main(int argc, char **argv) {
GString *input;
int c;
int input_provided = 0;
- while ((c = getopt_long (argc, argv, "hVf:b:n:r:a:", long_options, (int *) 0)) != EOF) {
+ while ((c = getopt_long (argc, argv, "hVf:b:n:r:a:i", long_options, (int *) 0)) != EOF) {
switch (c) {
case 'h':
usage(argv[0]);
@@ -311,6 +322,9 @@
case 'a':
alignment = atoi(optarg);
break;
+ case 'i':
+ inverted = !inverted;
+ break;
default:
/* unknown switch received - at least
* give usage but continue and use the
@@ -328,23 +342,20 @@
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
- GdkRGBA white, black;
if (foreground != NULL) {
- gdk_rgba_parse(&black, foreground);
+ my_gdk_rgba_parse(&black, foreground);
} else {
- gdk_rgba_parse(&black, "black");
+ my_gdk_rgba_parse(&black, "black");
}
if (background != NULL) {
- gdk_rgba_parse(&white, background);
+ my_gdk_rgba_parse(&white, background);
} else {
- gdk_rgba_parse(&white, "white");
+ my_gdk_rgba_parse(&white, "white");
}
draw = gtk_drawing_area_new();
gtk_widget_set_events(draw, GDK_BUTTON_PRESS_MASK|GDK_KEY_PRESS_MASK);
gtk_widget_set_size_request(draw,400,400);
- gtk_widget_override_background_color(draw, GTK_STATE_NORMAL, &white);
- gtk_widget_override_color(draw, GTK_STATE_NORMAL, &black);
g_signal_connect(G_OBJECT(draw), "button-press-event", G_CALLBACK(text_clicked), NULL);
g_signal_connect(G_OBJECT(draw), "key-press-event", G_CALLBACK(text_keypress), NULL);
gtk_widget_set_can_focus(draw, TRUE);
@@ -420,6 +431,8 @@
gtk_accel_group_connect(accel, key, mod, 0, g_cclosure_new(G_CALLBACK(gtk_main_quit), NULL, NULL));
gtk_accelerator_parse("Escape", &key, &mod);
gtk_accel_group_connect(accel, key, mod, 0, g_cclosure_new(G_CALLBACK(clear_text), NULL, NULL));
+ gtk_accelerator_parse("<Ctrl>I", &key, &mod);
+ gtk_accel_group_connect(accel, key, mod, 0, g_cclosure_new(G_CALLBACK(invert_text), NULL, NULL));
gtk_window_add_accel_group(GTK_WINDOW(window), accel);
gtk_widget_show_all(window);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/screen-message-0.23/sm.html new/screen-message-0.25/sm.html
--- old/screen-message-0.23/sm.html 2014-12-23 19:41:16.000000000 +0100
+++ new/screen-message-0.25/sm.html 2017-05-09 14:03:33.000000000 +0200
@@ -26,7 +26,6 @@
left:0px;
width:100%;
height:100%;
- white-space:nowrap;
font-family: sans;
padding:0px;
margin:0px;
@@ -34,6 +33,11 @@
text-align:center;
overflow:hidden;
resize:none;
+ /*
+ This used to be here. Not sure why, but eventually,
+ it broke Firefox (newlines not wrapping lines)
+ white-space:nowrap;
+ */
}
/* disable focus border at Chrome */
@@ -167,7 +171,7 @@
You can <a href="#" onclick="window.navigator.mozApps.install('http://sm.nomeata.de/sm.webapp')">install it as a FireFox app</a>.
</p>
<p>
-For more information about the original program, see what <a href="http://debaday.debian.net/2007/07/18/screen-message-use-your-screen-to-comm…">Deb-a-Day</a> writes about it. You can download it from <a href="http://packages.debian.org/sid/sm">Debian</a> or <a href="http://darcs.nomeata.de/screen-message/">fetch the sourcecode</a>.
+For more information about the original program, see what <a href="http://debaday.debian.net/2007/07/18/screen-message-use-your-screen-to-comm…">Deb-a-Day</a> writes about it. You can download it from <a href="http://packages.debian.org/sid/sm">Debian</a> or <a href="http://github.com/nomeata/screen-message/">fetch the sourcecode</a>.
</p>
<p>
<strong>screen-message</strong> was created by <a href="http://www.joachim-breitner.de/">Joachim Breitner</a>.
1
0
Hello community,
here is the log from the commit of package python-xarray for openSUSE:Factory checked in at 2019-09-30 15:59:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-xarray (Old)
and /work/SRC/openSUSE:Factory/.python-xarray.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-xarray"
Mon Sep 30 15:59:42 2019 rev:15 rq:733869 version:0.13.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-xarray/python-xarray.changes 2019-08-06 15:12:02.631738881 +0200
+++ /work/SRC/openSUSE:Factory/.python-xarray.new.2352/python-xarray.changes 2019-09-30 15:59:45.185160077 +0200
@@ -1,0 +2,147 @@
+Sat Sep 21 19:53:35 UTC 2019 - Arun Persaud <arun(a)gmx.de>
+
+- update to version 0.13.0:
+ * Breaking changes
+ + This release increases the minimum required Python version from
+ 3.5.0 to 3.5.3 (GH3089). By Guido Imperiale.
+ + The isel_points and sel_points methods are removed, having been
+ deprecated since v0.10.0. These are redundant with the isel /
+ sel methods. See Vectorized Indexing for the details By
+ Maximilian Roos
+ + The inplace kwarg for public methods now raises an error, having
+ been deprecated since v0.11.0. By Maximilian Roos
+ + concat() now requires the dim argument. Its indexers, mode and
+ concat_over kwargs have now been removed. By Deepak Cherian
+ + Passing a list of colors in cmap will now raise an error, having
+ been deprecated since v0.6.1.
+ + Most xarray objects now define __slots__. This reduces overall
+ RAM usage by ~22% (not counting the underlying numpy buffers);
+ on CPython 3.7/x64, a trivial DataArray has gone down from 1.9kB
+ to 1.5kB.
+ Caveats:
+ o Pickle streams produced by older versions of xarray can’t be
+ loaded using this release, and vice versa.
+ o Any user code that was accessing the __dict__ attribute of
+ xarray objects will break. The best practice to attach custom
+ metadata to xarray objects is to use the attrs dictionary.
+ o Any user code that defines custom subclasses of xarray classes
+ must now explicitly define __slots__ itself. Subclasses that
+ don’t add any attributes must state so by defining __slots__ =
+ () right after the class header. Omitting __slots__ will now
+ cause a FutureWarning to be logged, and will raise an error in a
+ later release.
+ (GH3250) by Guido Imperiale.
+ + The default dimension for Dataset.groupby(), Dataset.resample(),
+ DataArray.groupby() and DataArray.resample() reductions is now
+ the grouping or resampling dimension.
+ + DataArray.to_dataset() requires name to be passed as a kwarg
+ (previously ambiguous positional arguments were deprecated)
+ + Reindexing with variables of a different dimension now raise an
+ error (previously deprecated)
+ + broadcast_array() is removed (previously deprecated in favor of
+ broadcast())
+ + Variable.expand_dims() is removed (previously deprecated in
+ favor of Variable.set_dims())
+ * New functions/methods
+ + xarray can now wrap around any NEP18 compliant numpy-like
+ library (important: read notes about
+ NUMPY_EXPERIMENTAL_ARRAY_FUNCTION in the above link). Added
+ explicit test coverage for sparse. (GH3117, GH3202). This
+ requires sparse>=0.8.0. By Nezar Abdennur and Guido Imperiale.
+ + from_dataframe() and from_series() now support sparse=True for
+ converting pandas objects into xarray objects wrapping sparse
+ arrays. This is particularly useful with sparsely populated
+ hierarchical indexes. (GH3206) By Stephan Hoyer.
+ + The xarray package is now discoverable by mypy (although typing
+ hints coverage is not complete yet). mypy type checking is now
+ enforced by CI. Libraries that depend on xarray and use mypy can
+ now remove from their setup.cfg the lines:
+ [mypy-xarray]
+ ignore_missing_imports = True
+ (GH2877, GH3088, GH3090, GH3112, GH3117, GH3207) By Guido
+ Imperiale and Maximilian Roos.
+ + Added DataArray.broadcast_like() and
+ Dataset.broadcast_like(). By Deepak Cherian and David Mertz.
+ + Dataset plotting API for visualizing dependencies between two
+ DataArrays! Currently only Dataset.plot.scatter() is
+ implemented. By Yohai Bar Sinai and Deepak Cherian
+ + Added DataArray.head(), DataArray.tail() and DataArray.thin();
+ as well as Dataset.head(), Dataset.tail() and Dataset.thin()
+ methods. (GH319) By Gerardo Rivera.
+ * Enhancements
+ + Multiple enhancements to concat() and open_mfdataset(). By
+ Deepak Cherian
+ + Added compat='override'. When merging, this option picks the
+ variable from the first dataset and skips all comparisons.
+ + Added join='override'. When aligning, this only checks that
+ index sizes are equal among objects and skips checking indexes
+ for equality.
+ + concat() and open_mfdataset() now support the join kwarg. It is
+ passed down to align().
+ + concat() now calls merge() on variables that are not
+ concatenated (i.e. variables without concat_dim when data_vars
+ or coords are "minimal"). concat() passes its new compat kwarg
+ down to merge(). (GH2064)
+ + Users can avoid a common bottleneck when using open_mfdataset()
+ on a large number of files with variables that are known to be
+ aligned and some of which need not be concatenated. Slow
+ equality comparisons can now be avoided, for e.g.:
+ data = xr.open_mfdataset(files, concat_dim='time',
+ data_vars='minimal',
+ coords='minimal', compat='override', join='override')
+ + In to_zarr(), passing mode is not mandatory if append_dim is
+ set, as it will automatically be set to 'a' internally. By David
+ Brochart.
+ + Added the ability to initialize an empty or full DataArray with
+ a single value. (GH277) By Gerardo Rivera.
+ + to_netcdf() now supports the invalid_netcdf kwarg when used with
+ engine="h5netcdf". It is passed to h5netcdf.File(). By Ulrich
+ Herter.
+ + drop() now supports keyword arguments; dropping index labels by
+ using both dim and labels or using a DataArrayCoordinates object
+ are deprecated (GH2910). By Gregory Gundersen.
+ + Added examples of Dataset.set_index() and DataArray.set_index(),
+ as well are more specific error messages when the user passes
+ invalid arguments (GH3176). By Gregory Gundersen.
+ + filter_by_attrs() now filters the coordinates as well as the
+ variables. By Spencer Jones.
+ * Bug fixes
+ + Improve “missing dimensions” error message for apply_ufunc()
+ (GH2078). By Rick Russotto.
+ + assign_coords() now supports dictionary arguments (GH3231). By
+ Gregory Gundersen.
+ + Fix regression introduced in v0.12.2 where copy(deep=True) would
+ convert unicode indices to dtype=object (GH3094). By Guido
+ Imperiale.
+ + Improved error handling and documentation for .expand_dims()
+ read-only view.
+ + Fix tests for big-endian systems (GH3125). By Graham Inggs.
+ + XFAIL several tests which are expected to fail on ARM systems
+ due to a datetime issue in NumPy (GH2334). By Graham Inggs.
+ + Fix KeyError that arises when using .sel method with float
+ values different from coords float type (GH3137). By Hasan
+ Ahmad.
+ + Fixed bug in combine_by_coords() causing a ValueError if the
+ input had an unused dimension with coordinates which were not
+ monotonic (GH3150). By Tom Nicholas.
+ + Fixed crash when applying distributed.Client.compute() to a
+ DataArray (GH3171). By Guido Imperiale.
+ + Better error message when using groupby on an empty DataArray
+ (GH3037). By Hasan Ahmad.
+ + Fix error that arises when using open_mfdataset on a series of
+ netcdf files having differing values for a variable attribute of
+ type list. (GH3034) By Hasan Ahmad.
+ + Prevent argmax() and argmin() from calling dask compute
+ (GH3237). By Ulrich Herter.
+ + Plots in 2 dimensions (pcolormesh, contour) now allow to specify
+ levels as numpy array (GH3284). By Mathias Hauser.
+ + Fixed bug in DataArray.quantile() failing to keep attributes
+ when keep_attrs was True (GH3304). By David Huard
+ https://github.com/huard.
+ * Documentation
+ + Created a PR checklist as a quick reference for tasks before
+ creating a new PR or pushing new commits. By Gregory Gundersen.
+ + Fixed documentation to clean up unwanted files created in
+ ipython examples (GH3227). By Gregory Gundersen.
+
+-------------------------------------------------------------------
Old:
----
xarray-0.12.3.tar.gz
New:
----
xarray-0.13.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-xarray.spec ++++++
--- /var/tmp/diff_new_pack.PL9EZ2/_old 2019-09-30 15:59:47.317154403 +0200
+++ /var/tmp/diff_new_pack.PL9EZ2/_new 2019-09-30 15:59:47.321154393 +0200
@@ -19,12 +19,12 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-xarray
-Version: 0.12.3
+Version: 0.13.0
Release: 0
Summary: N-D labeled arrays and datasets in Python
License: Apache-2.0
Group: Development/Languages/Python
-URL: http://github.com/pydata/xarray
+URL: https://github.com/pydata/xarray
Source: https://files.pythonhosted.org/packages/source/x/xarray/xarray-%{version}.t…
BuildRequires: %{python_module numpy-devel >= 1.12}
BuildRequires: %{python_module pandas >= 0.19.2}
++++++ xarray-0.12.3.tar.gz -> xarray-0.13.0.tar.gz ++++++
++++ 73728 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package youtube-dl for openSUSE:Factory checked in at 2019-09-30 15:59:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/youtube-dl (Old)
and /work/SRC/openSUSE:Factory/.youtube-dl.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "youtube-dl"
Mon Sep 30 15:59:36 2019 rev:116 rq:733833 version:2019.09.28
Changes:
--------
--- /work/SRC/openSUSE:Factory/youtube-dl/python-youtube-dl.changes 2019-09-13 15:00:44.217283385 +0200
+++ /work/SRC/openSUSE:Factory/.youtube-dl.new.2352/python-youtube-dl.changes 2019-09-30 15:59:40.941171371 +0200
@@ -1,0 +2,14 @@
+Sat Sep 28 08:21:22 UTC 2019 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 2019.09.28
+ * tv4: Fix extraction and extract series metadata
+ * zdf: Bypass geo restriction
+ * brightcove: delegate all supported BrightcoveLegacyIE URLs to BrightcoveNewIE
+ * mixcloud: allow uppercase letters in format URLs
+ * instagram: add support for tv URLs
+ * bilibili: add support audio albums and songs
+ * youtube: Add support for invidious.drycat.fr
+ * openload: Add support for oload.online
+ * nhk: Add support for clips
+
+-------------------------------------------------------------------
youtube-dl.changes: same change
Old:
----
youtube-dl-2019.09.12.1.tar.gz
youtube-dl-2019.09.12.1.tar.gz.sig
New:
----
youtube-dl-2019.09.28.tar.gz
youtube-dl-2019.09.28.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.MIGahf/_old 2019-09-30 15:59:42.577167018 +0200
+++ /var/tmp/diff_new_pack.MIGahf/_new 2019-09-30 15:59:42.581167007 +0200
@@ -19,7 +19,7 @@
%define modname youtube-dl
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-youtube-dl
-Version: 2019.09.12.1
+Version: 2019.09.28
Release: 0
Summary: A Python module for downloading from video sites for offline watching
License: SUSE-Public-Domain AND CC-BY-SA-3.0
++++++ youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.MIGahf/_old 2019-09-30 15:59:42.593166975 +0200
+++ /var/tmp/diff_new_pack.MIGahf/_new 2019-09-30 15:59:42.597166965 +0200
@@ -17,7 +17,7 @@
Name: youtube-dl
-Version: 2019.09.12.1
+Version: 2019.09.28
Release: 0
Summary: A tool for downloading from video sites for offline watching
License: SUSE-Public-Domain AND CC-BY-SA-3.0
++++++ youtube-dl-2019.09.12.1.tar.gz -> youtube-dl-2019.09.28.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/ChangeLog new/youtube-dl/ChangeLog
--- old/youtube-dl/ChangeLog 2019-09-11 21:53:49.000000000 +0200
+++ new/youtube-dl/ChangeLog 2019-09-27 19:30:24.000000000 +0200
@@ -1,3 +1,34 @@
+version 2019.09.28
+
+Core
+* [YoutubeDL] Honour all --get-* options with --flat-playlist (#22493)
+
+Extractors
+* [vk] Fix extraction (#22522)
+* [heise] Fix kaltura embeds extraction (#22514)
+* [ted] Check for resources validity and extract subtitled downloads (#22513)
++ [youtube] Add support for
+ owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya.b32.i2p (#22292)
++ [nhk] Add support for clips
+* [nhk] Fix video extraction (#22249, #22353)
+* [byutv] Fix extraction (#22070)
++ [openload] Add support for oload.online (#22304)
++ [youtube] Add support for invidious.drycat.fr (#22451)
+* [jwplatfom] Do not match video URLs (#20596, #22148)
+* [youtube:playlist] Unescape playlist uploader (#22483)
++ [bilibili] Add support audio albums and songs (#21094)
++ [instagram] Add support for tv URLs
++ [mixcloud] Allow uppercase letters in format URLs (#19280)
+* [brightcove] Delegate all supported legacy URLs to new extractor (#11523,
+ #12842, #13912, #15669, #16303)
+* [hotstar] Use native HLS downloader by default
++ [hotstar] Extract more formats (#22323)
+* [9now] Fix extraction (#22361)
+* [zdf] Bypass geo restriction
++ [tv4] Extract series metadata
+* [tv4] Fix extraction (#22443)
+
+
version 2019.09.12.1
Extractors
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 2019-09-11 21:53:52.000000000 +0200
+++ new/youtube-dl/docs/supportedsites.md 2019-09-27 19:30:30.000000000 +0200
@@ -98,6 +98,8 @@
- **Bigflix**
- **Bild**: Bild.de
- **BiliBili**
+ - **BilibiliAudio**
+ - **BilibiliAudioAlbum**
- **BioBioChileTV**
- **BIQLE**
- **BitChute**
Binary 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 2019-09-11 21:52:42.000000000 +0200
+++ new/youtube-dl/youtube_dl/YoutubeDL.py 2019-09-12 05:31:11.000000000 +0200
@@ -852,8 +852,9 @@
extract_flat = self.params.get('extract_flat', False)
if ((extract_flat == 'in_playlist' and 'playlist' in extra_info)
or extract_flat is True):
- if self.params.get('forcejson', False):
- self.to_stdout(json.dumps(ie_result))
+ self.__forced_printings(
+ ie_result, self.prepare_filename(ie_result),
+ incomplete=True)
return ie_result
if result_type == 'video':
@@ -1693,6 +1694,36 @@
subs[lang] = f
return subs
+ def __forced_printings(self, info_dict, filename, incomplete):
+ def print_mandatory(field):
+ if (self.params.get('force%s' % field, False)
+ and (not incomplete or info_dict.get(field) is not None)):
+ self.to_stdout(info_dict[field])
+
+ def print_optional(field):
+ if (self.params.get('force%s' % field, False)
+ and info_dict.get(field) is not None):
+ self.to_stdout(info_dict[field])
+
+ print_mandatory('title')
+ print_mandatory('id')
+ if self.params.get('forceurl', False) and not incomplete:
+ if info_dict.get('requested_formats') is not None:
+ for f in info_dict['requested_formats']:
+ self.to_stdout(f['url'] + f.get('play_path', ''))
+ else:
+ # For RTMP URLs, also include the playpath
+ self.to_stdout(info_dict['url'] + info_dict.get('play_path', ''))
+ print_optional('thumbnail')
+ print_optional('description')
+ if self.params.get('forcefilename', False) and filename is not None:
+ self.to_stdout(filename)
+ if self.params.get('forceduration', False) and info_dict.get('duration') is not None:
+ self.to_stdout(formatSeconds(info_dict['duration']))
+ print_mandatory('format')
+ if self.params.get('forcejson', False):
+ self.to_stdout(json.dumps(info_dict))
+
def process_info(self, info_dict):
"""Process a single resolved IE result."""
@@ -1703,9 +1734,8 @@
if self._num_downloads >= int(max_downloads):
raise MaxDownloadsReached()
+ # TODO: backward compatibility, to be removed
info_dict['fulltitle'] = info_dict['title']
- if len(info_dict['title']) > 200:
- info_dict['title'] = info_dict['title'][:197] + '...'
if 'format' not in info_dict:
info_dict['format'] = info_dict['ext']
@@ -1720,29 +1750,7 @@
info_dict['_filename'] = filename = self.prepare_filename(info_dict)
# Forced printings
- if self.params.get('forcetitle', False):
- self.to_stdout(info_dict['fulltitle'])
- if self.params.get('forceid', False):
- self.to_stdout(info_dict['id'])
- if self.params.get('forceurl', False):
- if info_dict.get('requested_formats') is not None:
- for f in info_dict['requested_formats']:
- self.to_stdout(f['url'] + f.get('play_path', ''))
- else:
- # For RTMP URLs, also include the playpath
- self.to_stdout(info_dict['url'] + info_dict.get('play_path', ''))
- if self.params.get('forcethumbnail', False) and info_dict.get('thumbnail') is not None:
- self.to_stdout(info_dict['thumbnail'])
- if self.params.get('forcedescription', False) and info_dict.get('description') is not None:
- self.to_stdout(info_dict['description'])
- if self.params.get('forcefilename', False) and filename is not None:
- self.to_stdout(filename)
- if self.params.get('forceduration', False) and info_dict.get('duration') is not None:
- self.to_stdout(formatSeconds(info_dict['duration']))
- if self.params.get('forceformat', False):
- self.to_stdout(info_dict['format'])
- if self.params.get('forcejson', False):
- self.to_stdout(json.dumps(info_dict))
+ self.__forced_printings(info_dict, filename, incomplete=False)
# Do nothing else if in simulate mode
if self.params.get('simulate', False):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/bilibili.py new/youtube-dl/youtube_dl/extractor/bilibili.py
--- old/youtube-dl/youtube_dl/extractor/bilibili.py 2019-09-11 21:52:43.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/bilibili.py 2019-09-12 05:31:11.000000000 +0200
@@ -15,6 +15,7 @@
float_or_none,
parse_iso8601,
smuggle_url,
+ str_or_none,
strip_jsonp,
unified_timestamp,
unsmuggle_url,
@@ -306,3 +307,115 @@
return self.playlist_result(
entries, bangumi_id,
season_info.get('bangumi_title'), season_info.get('evaluate'))
+
+
+class BilibiliAudioBaseIE(InfoExtractor):
+ def _call_api(self, path, sid, query=None):
+ if not query:
+ query = {'sid': sid}
+ return self._download_json(
+ 'https://www.bilibili.com/audio/music-service-c/web/' + path,
+ sid, query=query)['data']
+
+
+class BilibiliAudioIE(BilibiliAudioBaseIE):
+ _VALID_URL = r'https?://(?:www\.)?bilibili\.com/audio/au(?P<id>\d+)'
+ _TEST = {
+ 'url': 'https://www.bilibili.com/audio/au1003142',
+ 'md5': 'fec4987014ec94ef9e666d4d158ad03b',
+ 'info_dict': {
+ 'id': '1003142',
+ 'ext': 'm4a',
+ 'title': '【tsukimi】YELLOW / 神山羊',
+ 'artist': 'tsukimi',
+ 'comment_count': int,
+ 'description': 'YELLOW的mp3版!',
+ 'duration': 183,
+ 'subtitles': {
+ 'origin': [{
+ 'ext': 'lrc',
+ }],
+ },
+ 'thumbnail': r're:^https?://.+\.jpg',
+ 'timestamp': 1564836614,
+ 'upload_date': '20190803',
+ 'uploader': 'tsukimi-つきみぐー',
+ 'view_count': int,
+ },
+ }
+
+ def _real_extract(self, url):
+ au_id = self._match_id(url)
+
+ play_data = self._call_api('url', au_id)
+ formats = [{
+ 'url': play_data['cdns'][0],
+ 'filesize': int_or_none(play_data.get('size')),
+ }]
+
+ song = self._call_api('song/info', au_id)
+ title = song['title']
+ statistic = song.get('statistic') or {}
+
+ subtitles = None
+ lyric = song.get('lyric')
+ if lyric:
+ subtitles = {
+ 'origin': [{
+ 'url': lyric,
+ }]
+ }
+
+ return {
+ 'id': au_id,
+ 'title': title,
+ 'formats': formats,
+ 'artist': song.get('author'),
+ 'comment_count': int_or_none(statistic.get('comment')),
+ 'description': song.get('intro'),
+ 'duration': int_or_none(song.get('duration')),
+ 'subtitles': subtitles,
+ 'thumbnail': song.get('cover'),
+ 'timestamp': int_or_none(song.get('passtime')),
+ 'uploader': song.get('uname'),
+ 'view_count': int_or_none(statistic.get('play')),
+ }
+
+
+class BilibiliAudioAlbumIE(BilibiliAudioBaseIE):
+ _VALID_URL = r'https?://(?:www\.)?bilibili\.com/audio/am(?P<id>\d+)'
+ _TEST = {
+ 'url': 'https://www.bilibili.com/audio/am10624',
+ 'info_dict': {
+ 'id': '10624',
+ 'title': '每日新曲推荐(每日11:00更新)',
+ 'description': '每天11:00更新,为你推送最新音乐',
+ },
+ 'playlist_count': 19,
+ }
+
+ def _real_extract(self, url):
+ am_id = self._match_id(url)
+
+ songs = self._call_api(
+ 'song/of-menu', am_id, {'sid': am_id, 'pn': 1, 'ps': 100})['data']
+
+ entries = []
+ for song in songs:
+ sid = str_or_none(song.get('id'))
+ if not sid:
+ continue
+ entries.append(self.url_result(
+ 'https://www.bilibili.com/audio/au' + sid,
+ BilibiliAudioIE.ie_key(), sid))
+
+ if entries:
+ album_data = self._call_api('menu/info', am_id) or {}
+ album_title = album_data.get('title')
+ if album_title:
+ for entry in entries:
+ entry['album'] = album_title
+ return self.playlist_result(
+ entries, am_id, album_title, album_data.get('intro'))
+
+ return self.playlist_result(entries, am_id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/brightcove.py new/youtube-dl/youtube_dl/extractor/brightcove.py
--- old/youtube-dl/youtube_dl/extractor/brightcove.py 2019-09-11 21:52:43.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/brightcove.py 2019-09-12 05:31:11.000000000 +0200
@@ -2,7 +2,6 @@
from __future__ import unicode_literals
import base64
-import json
import re
import struct
@@ -11,14 +10,12 @@
from ..compat import (
compat_etree_fromstring,
compat_parse_qs,
- compat_str,
compat_urllib_parse_urlparse,
compat_urlparse,
compat_xml_parse_error,
compat_HTTPError,
)
from ..utils import (
- determine_ext,
ExtractorError,
extract_attributes,
find_xpath_attr,
@@ -27,18 +24,19 @@
js_to_json,
int_or_none,
parse_iso8601,
+ smuggle_url,
unescapeHTML,
unsmuggle_url,
update_url_query,
clean_html,
mimetype2ext,
+ UnsupportedError,
)
class BrightcoveLegacyIE(InfoExtractor):
IE_NAME = 'brightcove:legacy'
_VALID_URL = r'(?:https?://.*brightcove\.com/(services|viewer).*?\?|brightcove:)(?P<query>.*)'
- _FEDERATED_URL = 'http://c.brightcove.com/services/viewer/htmlFederated'
_TESTS = [
{
@@ -55,7 +53,8 @@
'timestamp': 1368213670,
'upload_date': '20130510',
'uploader_id': '1589608506001',
- }
+ },
+ 'skip': 'The player has been deactivated by the content owner',
},
{
# From http://medianetwork.oracle.com/video/player/1785452137001
@@ -70,6 +69,7 @@
'upload_date': '20120814',
'uploader_id': '1460825906',
},
+ 'skip': 'video not playable',
},
{
# From http://mashable.com/2013/10/26/thermoelectric-bracelet-lets-you-control-you…
@@ -79,7 +79,7 @@
'ext': 'mp4',
'title': 'This Bracelet Acts as a Personal Thermostat',
'description': 'md5:547b78c64f4112766ccf4e151c20b6a0',
- 'uploader': 'Mashable',
+ # 'uploader': 'Mashable',
'timestamp': 1382041798,
'upload_date': '20131017',
'uploader_id': '1130468786001',
@@ -124,6 +124,7 @@
'id': '3550319591001',
},
'playlist_mincount': 7,
+ 'skip': 'Unsupported URL',
},
{
# playlist with 'playlistTab' (https://github.com/ytdl-org/youtube-dl/issues/9965)
@@ -133,6 +134,7 @@
'title': 'Lesson 08',
},
'playlist_mincount': 10,
+ 'skip': 'Unsupported URL',
},
{
# playerID inferred from bcpid
@@ -141,12 +143,6 @@
'only_matching': True, # Tested in GenericIE
}
]
- FLV_VCODECS = {
- 1: 'SORENSON',
- 2: 'ON2',
- 3: 'H264',
- 4: 'VP8',
- }
@classmethod
def _build_brighcove_url(cls, object_str):
@@ -238,7 +234,8 @@
@classmethod
def _make_brightcove_url(cls, params):
- return update_url_query(cls._FEDERATED_URL, params)
+ return update_url_query(
+ 'http://c.brightcove.com/services/viewer/htmlFederated', params)
@classmethod
def _extract_brightcove_url(cls, webpage):
@@ -297,38 +294,12 @@
videoPlayer = query.get('@videoPlayer')
if videoPlayer:
# We set the original url as the default 'Referer' header
- referer = smuggled_data.get('Referer', url)
+ referer = query.get('linkBaseURL', [None])[0] or smuggled_data.get('Referer', url)
+ video_id = videoPlayer[0]
if 'playerID' not in query:
mobj = re.search(r'/bcpid(\d+)', url)
if mobj is not None:
query['playerID'] = [mobj.group(1)]
- return self._get_video_info(
- videoPlayer[0], query, referer=referer)
- elif 'playerKey' in query:
- player_key = query['playerKey']
- return self._get_playlist_info(player_key[0])
- else:
- raise ExtractorError(
- 'Cannot find playerKey= variable. Did you forget quotes in a shell invocation?',
- expected=True)
-
- def _brightcove_new_url_result(self, publisher_id, video_id):
- brightcove_new_url = 'http://players.brightcove.net/%s/default_default/index.html?videoId=%s' % (publisher_id, video_id)
- return self.url_result(brightcove_new_url, BrightcoveNewIE.ie_key(), video_id)
-
- def _get_video_info(self, video_id, query, referer=None):
- headers = {}
- linkBase = query.get('linkBaseURL')
- if linkBase is not None:
- referer = linkBase[0]
- if referer is not None:
- headers['Referer'] = referer
- webpage = self._download_webpage(self._FEDERATED_URL, video_id, headers=headers, query=query)
-
- error_msg = self._html_search_regex(
- r"<h1>We're sorry.</h1>([\s\n]*<p>.*?</p>)+", webpage,
- 'error message', default=None)
- if error_msg is not None:
publisher_id = query.get('publisherId')
if publisher_id and publisher_id[0].isdigit():
publisher_id = publisher_id[0]
@@ -339,6 +310,9 @@
else:
player_id = query.get('playerID')
if player_id and player_id[0].isdigit():
+ headers = {}
+ if referer:
+ headers['Referer'] = referer
player_page = self._download_webpage(
'http://link.brightcove.com/services/player/bcpid' + player_id[0],
video_id, headers=headers, fatal=False)
@@ -349,136 +323,16 @@
if player_key:
enc_pub_id = player_key.split(',')[1].replace('~', '=')
publisher_id = struct.unpack('>Q', base64.urlsafe_b64decode(enc_pub_id))[0]
- if publisher_id:
- return self._brightcove_new_url_result(publisher_id, video_id)
- raise ExtractorError(
- 'brightcove said: %s' % error_msg, expected=True)
-
- self.report_extraction(video_id)
- info = self._search_regex(r'var experienceJSON = ({.*});', webpage, 'json')
- info = json.loads(info)['data']
- video_info = info['programmedContent']['videoPlayer']['mediaDTO']
- video_info['_youtubedl_adServerURL'] = info.get('adServerURL')
-
- return self._extract_video_info(video_info)
-
- def _get_playlist_info(self, player_key):
- info_url = 'http://c.brightcove.com/services/json/experience/runtime/?command=get_progr…' % player_key
- playlist_info = self._download_webpage(
- info_url, player_key, 'Downloading playlist information')
-
- json_data = json.loads(playlist_info)
- if 'videoList' in json_data:
- playlist_info = json_data['videoList']
- playlist_dto = playlist_info['mediaCollectionDTO']
- elif 'playlistTabs' in json_data:
- playlist_info = json_data['playlistTabs']
- playlist_dto = playlist_info['lineupListDTO']['playlistDTOs'][0]
- else:
- raise ExtractorError('Empty playlist')
-
- videos = [self._extract_video_info(video_info) for video_info in playlist_dto['videoDTOs']]
-
- return self.playlist_result(videos, playlist_id='%s' % playlist_info['id'],
- playlist_title=playlist_dto['displayName'])
-
- def _extract_video_info(self, video_info):
- video_id = compat_str(video_info['id'])
- publisher_id = video_info.get('publisherId')
- info = {
- 'id': video_id,
- 'title': video_info['displayName'].strip(),
- 'description': video_info.get('shortDescription'),
- 'thumbnail': video_info.get('videoStillURL') or video_info.get('thumbnailURL'),
- 'uploader': video_info.get('publisherName'),
- 'uploader_id': compat_str(publisher_id) if publisher_id else None,
- 'duration': float_or_none(video_info.get('length'), 1000),
- 'timestamp': int_or_none(video_info.get('creationDate'), 1000),
- }
-
- renditions = video_info.get('renditions', []) + video_info.get('IOSRenditions', [])
- if renditions:
- formats = []
- for rend in renditions:
- url = rend['defaultURL']
- if not url:
- continue
- ext = None
- if rend['remote']:
- url_comp = compat_urllib_parse_urlparse(url)
- if url_comp.path.endswith('.m3u8'):
- formats.extend(
- self._extract_m3u8_formats(
- url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False))
- continue
- elif 'akamaihd.net' in url_comp.netloc:
- # This type of renditions are served through
- # akamaihd.net, but they don't use f4m manifests
- url = url.replace('control/', '') + '?&v=3.3.0&fp=13&r=FEEFJ&g=RTSJIMBMPFPB'
- ext = 'flv'
- if ext is None:
- ext = determine_ext(url)
- tbr = int_or_none(rend.get('encodingRate'), 1000)
- a_format = {
- 'format_id': 'http%s' % ('-%s' % tbr if tbr else ''),
- 'url': url,
- 'ext': ext,
- 'filesize': int_or_none(rend.get('size')) or None,
- 'tbr': tbr,
- }
- if rend.get('audioOnly'):
- a_format.update({
- 'vcodec': 'none',
- })
- else:
- a_format.update({
- 'height': int_or_none(rend.get('frameHeight')),
- 'width': int_or_none(rend.get('frameWidth')),
- 'vcodec': rend.get('videoCodec'),
- })
-
- # m3u8 manifests with remote == false are media playlists
- # Not calling _extract_m3u8_formats here to save network traffic
- if ext == 'm3u8':
- a_format.update({
- 'format_id': 'hls%s' % ('-%s' % tbr if tbr else ''),
- 'ext': 'mp4',
- 'protocol': 'm3u8_native',
- })
-
- formats.append(a_format)
- self._sort_formats(formats)
- info['formats'] = formats
- elif video_info.get('FLVFullLengthURL') is not None:
- info.update({
- 'url': video_info['FLVFullLengthURL'],
- 'vcodec': self.FLV_VCODECS.get(video_info.get('FLVFullCodec')),
- 'filesize': int_or_none(video_info.get('FLVFullSize')),
- })
-
- if self._downloader.params.get('include_ads', False):
- adServerURL = video_info.get('_youtubedl_adServerURL')
- if adServerURL:
- ad_info = {
- '_type': 'url',
- 'url': adServerURL,
- }
- if 'url' in info:
- return {
- '_type': 'playlist',
- 'title': info['title'],
- 'entries': [ad_info, info],
- }
- else:
- return ad_info
-
- if not info.get('url') and not info.get('formats'):
- uploader_id = info.get('uploader_id')
- if uploader_id:
- info.update(self._brightcove_new_url_result(uploader_id, video_id))
- else:
- raise ExtractorError('Unable to extract video url for %s' % video_id)
- return info
+ if publisher_id:
+ brightcove_new_url = 'http://players.brightcove.net/%s/default_default/index.html?videoId=%s' % (publisher_id, video_id)
+ if referer:
+ brightcove_new_url = smuggle_url(brightcove_new_url, {'referrer': referer})
+ return self.url_result(brightcove_new_url, BrightcoveNewIE.ie_key(), video_id)
+ # TODO: figure out if it's possible to extract playlistId from playerKey
+ # elif 'playerKey' in query:
+ # player_key = query['playerKey']
+ # return self._get_playlist_info(player_key[0])
+ raise UnsupportedError(url)
class BrightcoveNewIE(AdobePassIE):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/byutv.py new/youtube-dl/youtube_dl/extractor/byutv.py
--- old/youtube-dl/youtube_dl/extractor/byutv.py 2019-09-11 21:52:43.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/byutv.py 2019-09-12 05:31:11.000000000 +0200
@@ -3,7 +3,12 @@
import re
from .common import InfoExtractor
-from ..utils import parse_duration
+from ..utils import (
+ determine_ext,
+ merge_dicts,
+ parse_duration,
+ url_or_none,
+)
class BYUtvIE(InfoExtractor):
@@ -51,7 +56,7 @@
video_id = mobj.group('id')
display_id = mobj.group('display_id') or video_id
- info = self._download_json(
+ video = self._download_json(
'https://api.byutv.org/api3/catalog/getvideosforcontent',
display_id, query={
'contentid': video_id,
@@ -62,7 +67,7 @@
'x-byutv-platformkey': 'xsaaw9c7y5',
})
- ep = info.get('ooyalaVOD')
+ ep = video.get('ooyalaVOD')
if ep:
return {
'_type': 'url_transparent',
@@ -75,18 +80,38 @@
'thumbnail': ep.get('imageThumbnail'),
}
- ep = info['dvr']
- title = ep['title']
- formats = self._extract_m3u8_formats(
- ep['videoUrl'], video_id, 'mp4', entry_protocol='m3u8_native',
- m3u8_id='hls')
+ info = {}
+ formats = []
+ for format_id, ep in video.items():
+ if not isinstance(ep, dict):
+ continue
+ video_url = url_or_none(ep.get('videoUrl'))
+ if not video_url:
+ continue
+ ext = determine_ext(video_url)
+ if ext == 'm3u8':
+ formats.extend(self._extract_m3u8_formats(
+ video_url, video_id, 'mp4', entry_protocol='m3u8_native',
+ m3u8_id='hls', fatal=False))
+ elif ext == 'mpd':
+ formats.extend(self._extract_mpd_formats(
+ video_url, video_id, mpd_id='dash', fatal=False))
+ else:
+ formats.append({
+ 'url': video_url,
+ 'format_id': format_id,
+ })
+ merge_dicts(info, {
+ 'title': ep.get('title'),
+ 'description': ep.get('description'),
+ 'thumbnail': ep.get('imageThumbnail'),
+ 'duration': parse_duration(ep.get('length')),
+ })
self._sort_formats(formats)
- return {
+
+ return merge_dicts(info, {
'id': video_id,
'display_id': display_id,
- 'title': title,
- 'description': ep.get('description'),
- 'thumbnail': ep.get('imageThumbnail'),
- 'duration': parse_duration(ep.get('length')),
+ 'title': display_id,
'formats': formats,
- }
+ })
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/extractors.py new/youtube-dl/youtube_dl/extractor/extractors.py
--- old/youtube-dl/youtube_dl/extractor/extractors.py 2019-09-11 21:52:43.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/extractors.py 2019-09-12 05:31:11.000000000 +0200
@@ -104,6 +104,8 @@
from .bilibili import (
BiliBiliIE,
BiliBiliBangumiIE,
+ BilibiliAudioIE,
+ BilibiliAudioAlbumIE,
)
from .biobiochiletv import BioBioChileTVIE
from .bitchute import (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/heise.py new/youtube-dl/youtube_dl/extractor/heise.py
--- old/youtube-dl/youtube_dl/extractor/heise.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/heise.py 2019-09-12 05:31:11.000000000 +0200
@@ -105,8 +105,7 @@
webpage, default=None) or self._html_search_meta(
'description', webpage)
- kaltura_url = KalturaIE._extract_url(webpage)
- if kaltura_url:
+ def _make_kaltura_result(kaltura_url):
return {
'_type': 'url_transparent',
'url': smuggle_url(kaltura_url, {'source_url': url}),
@@ -115,6 +114,16 @@
'description': description,
}
+ kaltura_url = KalturaIE._extract_url(webpage)
+ if kaltura_url:
+ return _make_kaltura_result(kaltura_url)
+
+ kaltura_id = self._search_regex(
+ r'entry-id=(["\'])(?P<id>(?:(?!\1).)+)\1', webpage, 'kaltura id',
+ default=None, group='id')
+ if kaltura_id:
+ return _make_kaltura_result('kaltura:2238431:%s' % kaltura_id)
+
yt_urls = YoutubeIE._extract_urls(webpage)
if yt_urls:
return self.playlist_from_matches(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/hotstar.py new/youtube-dl/youtube_dl/extractor/hotstar.py
--- old/youtube-dl/youtube_dl/extractor/hotstar.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/hotstar.py 2019-09-12 05:31:11.000000000 +0200
@@ -3,6 +3,7 @@
import hashlib
import hmac
+import re
import time
import uuid
@@ -126,6 +127,8 @@
format_url = url_or_none(playback_set.get('playbackUrl'))
if not format_url:
continue
+ format_url = re.sub(
+ r'(?<=//staragvod)(\d)', r'web\1', format_url)
tags = str_or_none(playback_set.get('tagsCombination')) or ''
if tags and 'encryption:plain' not in tags:
continue
@@ -133,7 +136,8 @@
try:
if 'package:hls' in tags or ext == 'm3u8':
formats.extend(self._extract_m3u8_formats(
- format_url, video_id, 'mp4', m3u8_id='hls'))
+ format_url, video_id, 'mp4',
+ entry_protocol='m3u8_native', m3u8_id='hls'))
elif 'package:dash' in tags or ext == 'mpd':
formats.extend(self._extract_mpd_formats(
format_url, video_id, mpd_id='dash'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/instagram.py new/youtube-dl/youtube_dl/extractor/instagram.py
--- old/youtube-dl/youtube_dl/extractor/instagram.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/instagram.py 2019-09-12 05:31:11.000000000 +0200
@@ -22,7 +22,7 @@
class InstagramIE(InfoExtractor):
- _VALID_URL = r'(?P<url>https?://(?:www\.)?instagram\.com/p/(?P<id>[^/?#&]+))'
+ _VALID_URL = r'(?P<url>https?://(?:www\.)?instagram\.com/(?:p|tv)/(?P<id>[^/?#&]+))'
_TESTS = [{
'url': 'https://instagram.com/p/aye83DjauH/?foo=bar#abc',
'md5': '0d2da106a9d2631273e192b372806516',
@@ -92,6 +92,9 @@
}, {
'url': 'http://instagram.com/p/9o6LshA7zy/embed/',
'only_matching': True,
+ }, {
+ 'url': 'https://www.instagram.com/tv/aye83DjauH/',
+ 'only_matching': True,
}]
@staticmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/jwplatform.py new/youtube-dl/youtube_dl/extractor/jwplatform.py
--- old/youtube-dl/youtube_dl/extractor/jwplatform.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/jwplatform.py 2019-09-12 05:31:11.000000000 +0200
@@ -7,7 +7,7 @@
class JWPlatformIE(InfoExtractor):
- _VALID_URL = r'(?:https?://(?:content\.jwplatform|cdn\.jwplayer)\.com/(?:(?:feed|player|thumb|preview|video)s|jw6|v2/media)/|jwplatform:)(?P<id>[a-zA-Z0-9]{8})'
+ _VALID_URL = r'(?:https?://(?:content\.jwplatform|cdn\.jwplayer)\.com/(?:(?:feed|player|thumb|preview)s|jw6|v2/media)/|jwplatform:)(?P<id>[a-zA-Z0-9]{8})'
_TESTS = [{
'url': 'http://content.jwplatform.com/players/nPripu9l-ALJ3XQCI.js',
'md5': 'fa8899fa601eb7c83a64e9d568bdf325',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/mixcloud.py new/youtube-dl/youtube_dl/extractor/mixcloud.py
--- old/youtube-dl/youtube_dl/extractor/mixcloud.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/mixcloud.py 2019-09-12 05:31:11.000000000 +0200
@@ -164,7 +164,7 @@
def decrypt_url(f_url):
for k in (key, 'IFYOUWANTTHEARTISTSTOGETPAIDDONOTDOWNLOADFROMMIXCLOUD'):
decrypted_url = self._decrypt_xor_cipher(k, f_url)
- if re.search(r'^https?://[0-9a-z.]+/[0-9A-Za-z/.?=&_-]+$', decrypted_url):
+ if re.search(r'^https?://[0-9A-Za-z.]+/[0-9A-Za-z/.?=&_-]+$', decrypted_url):
return decrypted_url
for url_key in ('url', 'hlsUrl', 'dashUrl'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/nhk.py new/youtube-dl/youtube_dl/extractor/nhk.py
--- old/youtube-dl/youtube_dl/extractor/nhk.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/nhk.py 2019-09-12 05:31:11.000000000 +0200
@@ -10,6 +10,18 @@
# Content available only for a limited period of time. Visit
# https://www3.nhk.or.jp/nhkworld/en/ondemand/ for working samples.
_TESTS = [{
+ # clip
+ 'url': 'https://www3.nhk.or.jp/nhkworld/en/ondemand/video/9999011/',
+ 'md5': '256a1be14f48d960a7e61e2532d95ec3',
+ 'info_dict': {
+ 'id': 'a95j5iza',
+ 'ext': 'mp4',
+ 'title': "Dining with the Chef - Chef Saito's Family recipe: MENCHI-KATSU",
+ 'description': 'md5:5aee4a9f9d81c26281862382103b0ea5',
+ 'timestamp': 1565965194,
+ 'upload_date': '20190816',
+ },
+ }, {
'url': 'https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2015173/',
'only_matching': True,
}, {
@@ -19,7 +31,7 @@
'url': 'https://www3.nhk.or.jp/nhkworld/fr/ondemand/audio/plugin-20190404-1/',
'only_matching': True,
}]
- _API_URL_TEMPLATE = 'https://api.nhk.or.jp/nhkworld/%sodesdlist/v7/episode/%s/%s/all%s.json'
+ _API_URL_TEMPLATE = 'https://api.nhk.or.jp/nhkworld/%sod%slist/v7/episode/%s/%s/all%s.json'
def _real_extract(self, url):
lang, m_type, episode_id = re.match(self._VALID_URL, url).groups()
@@ -28,7 +40,10 @@
is_video = m_type == 'video'
episode = self._download_json(
- self._API_URL_TEMPLATE % ('v' if is_video else 'r', episode_id, lang, '/all' if is_video else ''),
+ self._API_URL_TEMPLATE % (
+ 'v' if is_video else 'r',
+ 'clip' if episode_id[:4] == '9999' else 'esd',
+ episode_id, lang, '/all' if is_video else ''),
episode_id, query={'apikey': 'EJfK8jdS57GqlupFgAfAAwr573q01y6k'})['data']['episodes'][0]
title = episode.get('sub_title_clean') or episode['sub_title']
@@ -60,8 +75,8 @@
if is_video:
info.update({
'_type': 'url_transparent',
- 'ie_key': 'Ooyala',
- 'url': 'ooyala:' + episode['vod_id'],
+ 'ie_key': 'Piksel',
+ 'url': 'https://player.piksel.com/v/refid/nhkworld/prefid/' + episode['vod_id'],
})
else:
audio = episode['audio']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/ninenow.py new/youtube-dl/youtube_dl/extractor/ninenow.py
--- old/youtube-dl/youtube_dl/extractor/ninenow.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/ninenow.py 2019-09-12 05:31:11.000000000 +0200
@@ -45,7 +45,11 @@
webpage = self._download_webpage(url, display_id)
page_data = self._parse_json(self._search_regex(
r'window\.__data\s*=\s*({.*?});', webpage,
- 'page data'), display_id)
+ 'page data', default='{}'), display_id, fatal=False)
+ if not page_data:
+ page_data = self._parse_json(self._parse_json(self._search_regex(
+ r'window\.__data\s*=\s*JSON\.parse\s*\(\s*(".+?")\s*\)\s*;',
+ webpage, 'page data'), display_id), display_id)
for kind in ('episode', 'clip'):
current_key = page_data.get(kind, {}).get(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/openload.py new/youtube-dl/youtube_dl/extractor/openload.py
--- old/youtube-dl/youtube_dl/extractor/openload.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/openload.py 2019-09-12 05:31:11.000000000 +0200
@@ -246,7 +246,7 @@
_DOMAINS = r'''
(?:
openload\.(?:co|io|link|pw)|
- oload\.(?:tv|best|biz|stream|site|xyz|win|download|cloud|cc|icu|fun|club|info|press|pw|life|live|space|services|website|vip)|
+ oload\.(?:tv|best|biz|stream|site|xyz|win|download|cloud|cc|icu|fun|club|info|online|press|pw|life|live|space|services|website|vip)|
oladblock\.(?:services|xyz|me)|openloed\.co
)
'''
@@ -363,6 +363,9 @@
'url': 'https://oload.services/embed/bs1NWj1dCag/',
'only_matching': True,
}, {
+ 'url': 'https://oload.online/f/W8o2UfN1vNY/',
+ 'only_matching': True,
+ }, {
'url': 'https://oload.press/embed/drTBl1aOTvk/',
'only_matching': True,
}, {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/piksel.py new/youtube-dl/youtube_dl/extractor/piksel.py
--- old/youtube-dl/youtube_dl/extractor/piksel.py 2019-09-11 21:52:44.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/piksel.py 2019-09-12 05:31:11.000000000 +0200
@@ -15,7 +15,7 @@
class PikselIE(InfoExtractor):
- _VALID_URL = r'https?://player\.piksel\.com/v/(?P<id>[a-z0-9]+)'
+ _VALID_URL = r'https?://player\.piksel\.com/v/(?:refid/[^/]+/prefid/)?(?P<id>[a-z0-9_]+)'
_TESTS = [
{
'url': 'http://player.piksel.com/v/ums2867l',
@@ -40,6 +40,11 @@
'timestamp': 1486171129,
'upload_date': '20170204'
}
+ },
+ {
+ # https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2019240/
+ 'url': 'http://player.piksel.com/v/refid/nhkworld/prefid/nw_vod_v_en_2019_240_20190…',
+ 'only_matching': True,
}
]
@@ -52,8 +57,11 @@
return mobj.group('url')
def _real_extract(self, url):
- video_id = self._match_id(url)
- webpage = self._download_webpage(url, video_id)
+ display_id = self._match_id(url)
+ webpage = self._download_webpage(url, display_id)
+ video_id = self._search_regex(
+ r'data-de-program-uuid=[\'"]([a-z0-9]+)',
+ webpage, 'program uuid', default=display_id)
app_token = self._search_regex([
r'clientAPI\s*:\s*"([^"]+)"',
r'data-de-api-key\s*=\s*"([^"]+)"'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/ted.py new/youtube-dl/youtube_dl/extractor/ted.py
--- old/youtube-dl/youtube_dl/extractor/ted.py 2019-09-11 21:52:45.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/ted.py 2019-09-12 05:31:11.000000000 +0200
@@ -182,20 +182,29 @@
title = talk_info['title'].strip()
- native_downloads = try_get(
- talk_info,
- (lambda x: x['downloads']['nativeDownloads'],
- lambda x: x['nativeDownloads']),
- dict) or {}
+ downloads = talk_info.get('downloads') or {}
+ native_downloads = downloads.get('nativeDownloads') or talk_info.get('nativeDownloads') or {}
formats = [{
'url': format_url,
'format_id': format_id,
- 'format': format_id,
} for (format_id, format_url) in native_downloads.items() if format_url is not None]
+
+ subtitled_downloads = downloads.get('subtitledDownloads') or {}
+ for lang, subtitled_download in subtitled_downloads.items():
+ for q in self._NATIVE_FORMATS:
+ q_url = subtitled_download.get(q)
+ if not q_url:
+ continue
+ formats.append({
+ 'url': q_url,
+ 'format_id': '%s-%s' % (q, lang),
+ 'language': lang,
+ })
+
if formats:
for f in formats:
- finfo = self._NATIVE_FORMATS.get(f['format_id'])
+ finfo = self._NATIVE_FORMATS.get(f['format_id'].split('-')[0])
if finfo:
f.update(finfo)
@@ -215,34 +224,7 @@
http_url = None
for format_id, resources in resources_.items():
- if format_id == 'h264':
- for resource in resources:
- h264_url = resource.get('file')
- if not h264_url:
- continue
- bitrate = int_or_none(resource.get('bitrate'))
- formats.append({
- 'url': h264_url,
- 'format_id': '%s-%sk' % (format_id, bitrate),
- 'tbr': bitrate,
- })
- if re.search(r'\d+k', h264_url):
- http_url = h264_url
- elif format_id == 'rtmp':
- streamer = talk_info.get('streamer')
- if not streamer:
- continue
- for resource in resources:
- formats.append({
- 'format_id': '%s-%s' % (format_id, resource.get('name')),
- 'url': streamer,
- 'play_path': resource['file'],
- 'ext': 'flv',
- 'width': int_or_none(resource.get('width')),
- 'height': int_or_none(resource.get('height')),
- 'tbr': int_or_none(resource.get('bitrate')),
- })
- elif format_id == 'hls':
+ if format_id == 'hls':
if not isinstance(resources, dict):
continue
stream_url = url_or_none(resources.get('stream'))
@@ -251,6 +233,36 @@
formats.extend(self._extract_m3u8_formats(
stream_url, video_name, 'mp4', m3u8_id=format_id,
fatal=False))
+ else:
+ if not isinstance(resources, list):
+ continue
+ if format_id == 'h264':
+ for resource in resources:
+ h264_url = resource.get('file')
+ if not h264_url:
+ continue
+ bitrate = int_or_none(resource.get('bitrate'))
+ formats.append({
+ 'url': h264_url,
+ 'format_id': '%s-%sk' % (format_id, bitrate),
+ 'tbr': bitrate,
+ })
+ if re.search(r'\d+k', h264_url):
+ http_url = h264_url
+ elif format_id == 'rtmp':
+ streamer = talk_info.get('streamer')
+ if not streamer:
+ continue
+ for resource in resources:
+ formats.append({
+ 'format_id': '%s-%s' % (format_id, resource.get('name')),
+ 'url': streamer,
+ 'play_path': resource['file'],
+ 'ext': 'flv',
+ 'width': int_or_none(resource.get('width')),
+ 'height': int_or_none(resource.get('height')),
+ 'tbr': int_or_none(resource.get('bitrate')),
+ })
m3u8_formats = list(filter(
lambda f: f.get('protocol') == 'm3u8' and f.get('vcodec') != 'none',
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 2019-09-11 21:52:45.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/tv4.py 2019-09-12 05:31:11.000000000 +0200
@@ -72,8 +72,13 @@
video_id = self._match_id(url)
info = self._download_json(
- 'http://www.tv4play.se/player/assets/%s.json' % video_id,
- video_id, 'Downloading video info JSON')
+ 'https://playback-api.b17g.net/asset/%s' % video_id,
+ video_id, 'Downloading video info JSON', query={
+ 'service': 'tv4',
+ 'device': 'browser',
+ 'protocol': 'hls,dash',
+ 'drm': 'widevine',
+ })['metadata']
title = info['title']
@@ -111,5 +116,9 @@
'timestamp': parse_iso8601(info.get('broadcast_date_time')),
'duration': int_or_none(info.get('duration')),
'thumbnail': info.get('image'),
- 'is_live': info.get('is_live') is True,
+ 'is_live': info.get('isLive') is True,
+ 'series': info.get('seriesTitle'),
+ 'season_number': int_or_none(info.get('seasonNumber')),
+ 'episode': info.get('episodeTitle'),
+ 'episode_number': int_or_none(info.get('episodeNumber')),
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/vk.py new/youtube-dl/youtube_dl/extractor/vk.py
--- old/youtube-dl/youtube_dl/extractor/vk.py 2019-09-11 21:52:46.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/vk.py 2019-09-12 05:31:11.000000000 +0200
@@ -403,8 +403,17 @@
data = self._parse_json(
self._search_regex(
r'var\s+playerParams\s*=\s*({.+?})\s*;\s*\n', info_page,
- 'player params'),
- video_id)['params'][0]
+ 'player params', default='{}'),
+ video_id)
+ if data:
+ data = data['params'][0]
+
+ # <!--{...}
+ if not data:
+ data = self._parse_json(
+ self._search_regex(
+ r'<!--\s*({.+})', info_page, 'payload'),
+ video_id)['payload'][-1][-1]['player']['params'][0]
title = unescapeHTML(data['md_title'])
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 2019-09-11 21:53:02.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/youtube.py 2019-09-12 05:31:11.000000000 +0200
@@ -387,6 +387,7 @@
(?:www\.)?invidious\.13ad\.de/|
(?:www\.)?invidious\.mastodon\.host/|
(?:www\.)?invidious\.nixnet\.xyz/|
+ (?:www\.)?invidious\.drycat\.fr/|
(?:www\.)?tube\.poal\.co/|
(?:www\.)?vid\.wxzm\.sx/|
(?:www\.)?yt\.elukerio\.org/|
@@ -396,6 +397,7 @@
(?:www\.)?c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid\.onion/|
(?:www\.)?fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad\.onion/|
(?:www\.)?invidious\.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd\.onion/|
+ (?:www\.)?owxfohz4kjyv25fvlqilyxast7inivgiktls3th44jhk3ej3i7ya\.b32\.i2p/|
youtube\.googleapis\.com/) # the various hostnames, with wildcard subdomains
(?:.*?\#/)? # handle anchor (#/) redirect urls
(?: # the various things that can precede the ID:
@@ -2740,7 +2742,7 @@
page, 'title', default=None)
_UPLOADER_BASE = r'class=["\']pl-header-details[^>]+>\s*<li>\s*<a[^>]+\bhref='
- uploader = self._search_regex(
+ uploader = self._html_search_regex(
r'%s["\']/(?:user|channel)/[^>]+>([^<]+)' % _UPLOADER_BASE,
page, 'uploader', default=None)
mobj = re.search(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/youtube-dl/youtube_dl/extractor/zdf.py new/youtube-dl/youtube_dl/extractor/zdf.py
--- old/youtube-dl/youtube_dl/extractor/zdf.py 2019-09-11 21:52:46.000000000 +0200
+++ new/youtube-dl/youtube_dl/extractor/zdf.py 2019-09-12 05:31:11.000000000 +0200
@@ -41,6 +41,7 @@
class ZDFIE(ZDFBaseIE):
_VALID_URL = r'https?://www\.zdf\.de/(?:[^/]+/)*(?P<id>[^/?]+)\.html'
_QUALITIES = ('auto', 'low', 'med', 'high', 'veryhigh')
+ _GEO_COUNTRIES = ['DE']
_TESTS = [{
'url': 'https://www.zdf.de/dokumentation/terra-x/die-magie-der-farben-von-koenigspu…',
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 2019-09-11 21:53:49.000000000 +0200
+++ new/youtube-dl/youtube_dl/version.py 2019-09-27 19:30:24.000000000 +0200
@@ -1,3 +1,3 @@
from __future__ import unicode_literals
-__version__ = '2019.09.12.1'
+__version__ = '2019.09.28'
1
0
Hello community,
here is the log from the commit of package sendmail for openSUSE:Factory checked in at 2019-09-30 15:59:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sendmail (Old)
and /work/SRC/openSUSE:Factory/.sendmail.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sendmail"
Mon Sep 30 15:59:31 2019 rev:90 rq:733805 version:8.15.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/sendmail/sendmail.changes 2019-09-09 12:39:37.797430644 +0200
+++ /work/SRC/openSUSE:Factory/.sendmail.new.2352/sendmail.changes 2019-09-30 15:59:34.257189159 +0200
@@ -1,0 +2,6 @@
+Sat Sep 28 07:32:14 UTC 2019 - Dr. Werner Fink <werner(a)suse.de>
+
+- Add patch sendmail-8.15.2-glibc-2.30.patch
+ * The former deprecated macro RES_USE_INET6 is gone with glibc 2.30
+
+-------------------------------------------------------------------
New:
----
sendmail-8.15.2-glibc-2.30.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sendmail.spec ++++++
--- /var/tmp/diff_new_pack.zQj6vr/_old 2019-09-30 15:59:36.009184497 +0200
+++ /var/tmp/diff_new_pack.zQj6vr/_new 2019-09-30 15:59:36.013184486 +0200
@@ -114,6 +114,8 @@
Patch7: sendmail-8.15.2-openssl-1.1.0-ecdhe-fix.patch
# PATCH-FIX-OPENSUSE: make build result reproducible
Patch8: sendmail-8.15.2-reproducible.patch
+# PATCH-FIX-OPENSUSE: The former deprecated macro RES_USE_INET6 is gone with glibc 2.30
+Patch9: sendmail-8.15.2-glibc-2.30.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%global _sysconfdir %{_sysconfdir}
%global _mailcnfdir %{_sysconfdir}/mail
@@ -214,6 +216,7 @@
fi
%patch0 -p0 -b .p0
%patch8 -p1 -b .reproducible
+%patch9 -p0 -b .use_inet6
tar --strip-components=1 -xf %{S:1}
set -f
cat <<-EOF > file-list
++++++ sendmail-8.15.2-glibc-2.30.patch ++++++
The former deprecated macro RES_USE_INET6 is gone with glibc 2.30
---
libmilter/sm_gethost.c | 6 ++++--
sendmail/conf.c | 6 ++++--
2 files changed, 8 insertions(+), 4 deletions(-)
--- libmilter/sm_gethost.c
+++ libmilter/sm_gethost.c 2019-09-28 07:27:46.512228011 +0000
@@ -51,18 +51,20 @@ sm_getipnodebyname(name, family, flags,
{
bool resv6 = true;
struct hostent *h;
-
+#ifdef RES_USE_INET6
if (family == AF_INET6)
{
/* From RFC2133, section 6.1 */
resv6 = bitset(RES_USE_INET6, _res.options);
_res.options |= RES_USE_INET6;
}
+#endif
SM_SET_H_ERRNO(0);
h = gethostbyname(name);
+#ifdef RES_USE_INET6
if (family == AF_INET6 && !resv6)
_res.options &= ~RES_USE_INET6;
-
+#endif
/* the function is supposed to return only the requested family */
if (h != NULL && h->h_addrtype != family)
{
--- sendmail/conf.c
+++ sendmail/conf.c 2019-09-28 07:28:39.103245002 +0000
@@ -4242,18 +4242,20 @@ sm_getipnodebyname(name, family, flags,
# else /* HAS_GETHOSTBYNAME2 */
bool resv6 = true;
-
+#ifdef RES_USE_INET6
if (family == AF_INET6)
{
/* From RFC2133, section 6.1 */
resv6 = bitset(RES_USE_INET6, _res.options);
_res.options |= RES_USE_INET6;
}
+#endif
SM_SET_H_ERRNO(0);
h = gethostbyname(name);
+#ifdef RES_USE_INET6
if (!resv6)
_res.options &= ~RES_USE_INET6;
-
+#endif
/* the function is supposed to return only the requested family */
if (h != NULL && h->h_addrtype != family)
{
1
0
Hello community,
here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2019-09-30 15:59:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Mon Sep 30 15:59:27 2019 rev:224 rq:733804 version:20190927.6cbf1e6a
Changes:
--------
--- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2019-09-27 14:53:46.023934950 +0200
+++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.2352/openSUSE-release-tools.changes 2019-09-30 15:59:31.693195983 +0200
@@ -1,0 +2,6 @@
+Fri Sep 27 10:15:44 UTC 2019 - opensuse-releaseteam(a)opensuse.org
+
+- Update to version 20190927.6cbf1e6a:
+ * Enable images repo once 000product was updated
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20190926.456b203a.obscpio
New:
----
openSUSE-release-tools-20190927.6cbf1e6a.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.GH7Ngr/_old 2019-09-30 15:59:32.429194024 +0200
+++ /var/tmp/diff_new_pack.GH7Ngr/_new 2019-09-30 15:59:32.429194024 +0200
@@ -20,7 +20,7 @@
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20190926.456b203a
+Version: 20190927.6cbf1e6a
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.GH7Ngr/_old 2019-09-30 15:59:32.469193918 +0200
+++ /var/tmp/diff_new_pack.GH7Ngr/_new 2019-09-30 15:59:32.469193918 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
- <param name="changesrevision">456b203a64f5ed67b1bb2e63f661ff2dc4d37c1e</param>
+ <param name="changesrevision">101a4c8646a030af471de068040a65624d1fb64c</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20190926.456b203a.obscpio -> openSUSE-release-tools-20190927.6cbf1e6a.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190926.456b203a/gocd/pkglistgen_staging.gocd.yaml new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/pkglistgen_staging.gocd.yaml
--- old/openSUSE-release-tools-20190926.456b203a/gocd/pkglistgen_staging.gocd.yaml 2019-09-26 18:56:27.000000000 +0200
+++ new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/pkglistgen_staging.gocd.yaml 2019-09-27 12:13:53.000000000 +0200
@@ -1090,6 +1090,13 @@
tasks:
- script: |-
./scripts/pkglistgen.py --debug -A $STAGING_API update_and_solve --staging $STAGING_PROJECT --force
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
"Leap.Staging.B":
environment_variables:
STAGING_PROJECT: openSUSE:Leap:15.2:Staging:B
@@ -1136,6 +1143,13 @@
tasks:
- script: |-
./scripts/pkglistgen.py --debug -A $STAGING_API update_and_solve --staging $STAGING_PROJECT --force
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
"Leap.Staging.C":
environment_variables:
STAGING_PROJECT: openSUSE:Leap:15.2:Staging:C
@@ -1182,6 +1196,13 @@
tasks:
- script: |-
./scripts/pkglistgen.py --debug -A $STAGING_API update_and_solve --staging $STAGING_PROJECT --force
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
"Leap.Staging.D":
environment_variables:
STAGING_PROJECT: openSUSE:Leap:15.2:Staging:D
@@ -1228,6 +1249,13 @@
tasks:
- script: |-
./scripts/pkglistgen.py --debug -A $STAGING_API update_and_solve --staging $STAGING_PROJECT --force
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
"Leap.Staging.E":
environment_variables:
STAGING_PROJECT: openSUSE:Leap:15.2:Staging:E
@@ -1275,3 +1303,10 @@
- script: |-
./scripts/pkglistgen.py --debug -A $STAGING_API update_and_solve --staging $STAGING_PROJECT --force
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190926.456b203a/gocd/pkglistgen_staging.gocd.yaml.erb new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/pkglistgen_staging.gocd.yaml.erb
--- old/openSUSE-release-tools-20190926.456b203a/gocd/pkglistgen_staging.gocd.yaml.erb 2019-09-26 18:56:27.000000000 +0200
+++ new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/pkglistgen_staging.gocd.yaml.erb 2019-09-27 12:13:53.000000000 +0200
@@ -153,4 +153,11 @@
tasks:
- script: |-
./scripts/pkglistgen.py --debug -A $STAGING_API update_and_solve --staging $STAGING_PROJECT --force
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
<% end %>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190926.456b203a/gocd/sle15sp2-stagings.gocd.yaml new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/sle15sp2-stagings.gocd.yaml
--- old/openSUSE-release-tools-20190926.456b203a/gocd/sle15sp2-stagings.gocd.yaml 2019-09-26 18:56:27.000000000 +0200
+++ new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/sle15sp2-stagings.gocd.yaml 2019-09-27 12:13:53.000000000 +0200
@@ -149,6 +149,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.B:
environment_variables:
@@ -205,6 +213,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.C:
environment_variables:
@@ -261,6 +277,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.D:
environment_variables:
@@ -317,6 +341,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.E:
environment_variables:
@@ -373,6 +405,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.F:
environment_variables:
@@ -429,6 +469,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.G:
environment_variables:
@@ -485,6 +533,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.H:
environment_variables:
@@ -541,6 +597,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.S:
environment_variables:
@@ -597,6 +661,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.V:
environment_variables:
@@ -653,6 +725,14 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
SLE15.SP2.Staging.Y:
environment_variables:
@@ -709,4 +789,12 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190926.456b203a/gocd/sle15sp2-stagings.gocd.yaml.erb new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/sle15sp2-stagings.gocd.yaml.erb
--- old/openSUSE-release-tools-20190926.456b203a/gocd/sle15sp2-stagings.gocd.yaml.erb 2019-09-26 18:56:27.000000000 +0200
+++ new/openSUSE-release-tools-20190927.6cbf1e6a/gocd/sle15sp2-stagings.gocd.yaml.erb 2019-09-27 12:13:53.000000000 +0200
@@ -82,4 +82,12 @@
./report-status.py -A $STAGING_API -p $STAGING_PROJECT -n packagelists -r standard -s failure
exit 1
fi
+
+ - Enable.images.repo:
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ osc -A $STAGING_API api -X POST "/source/$STAGING_PROJECT?cmd=remove_flag&repository=images&flag=build"
+
<% end -%>
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.GH7Ngr/_old 2019-09-30 15:59:32.989192534 +0200
+++ /var/tmp/diff_new_pack.GH7Ngr/_new 2019-09-30 15:59:32.993192524 +0200
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20190926.456b203a
-mtime: 1569516987
-commit: 456b203a64f5ed67b1bb2e63f661ff2dc4d37c1e
+version: 20190927.6cbf1e6a
+mtime: 1569579233
+commit: 6cbf1e6ac27e150c1c69c49450ce901dade35153
1
0
Hello community,
here is the log from the commit of package lua-luaposix for openSUSE:Factory checked in at 2019-09-30 15:59:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lua-luaposix (Old)
and /work/SRC/openSUSE:Factory/.lua-luaposix.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lua-luaposix"
Mon Sep 30 15:59:21 2019 rev:6 rq:733772 version:34.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/lua-luaposix/lua-luaposix.changes 2019-09-04 09:02:49.399042560 +0200
+++ /work/SRC/openSUSE:Factory/.lua-luaposix.new.2352/lua-luaposix.changes 2019-09-30 15:59:25.289213026 +0200
@@ -4 +4 @@
-- New version 34.1.1, please read NEWS.md for changes.
+- New version 34.1.1, please read NEWS.md for changes (jsc#SLE-8509)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Hello community,
here is the log from the commit of package python-pynetbox for openSUSE:Factory checked in at 2019-09-30 15:59:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pynetbox (Old)
and /work/SRC/openSUSE:Factory/.python-pynetbox.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pynetbox"
Mon Sep 30 15:59:16 2019 rev:2 rq:733771 version:4.0.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pynetbox/python-pynetbox.changes 2019-09-27 14:49:01.584674587 +0200
+++ /work/SRC/openSUSE:Factory/.python-pynetbox.new.2352/python-pynetbox.changes 2019-09-30 15:59:19.761227737 +0200
@@ -1,0 +2,6 @@
+Fri Sep 27 22:21:50 UTC 2019 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 4.0.8
+ * Returns ContentError when 2XX response but not JSON.
+
+-------------------------------------------------------------------
Old:
----
pynetbox-4.0.7.tar.gz
New:
----
pynetbox-4.0.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pynetbox.spec ++++++
--- /var/tmp/diff_new_pack.xoTHAI/_old 2019-09-30 15:59:20.649225374 +0200
+++ /var/tmp/diff_new_pack.xoTHAI/_new 2019-09-30 15:59:20.653225364 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pynetbox
-Version: 4.0.7
+Version: 4.0.8
Release: 0
Summary: NetBox API client library
License: Apache-2.0
++++++ pynetbox-4.0.7.tar.gz -> pynetbox-4.0.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynetbox-4.0.7/PKG-INFO new/pynetbox-4.0.8/PKG-INFO
--- old/pynetbox-4.0.7/PKG-INFO 2019-09-13 17:11:18.000000000 +0200
+++ new/pynetbox-4.0.8/PKG-INFO 2019-09-27 15:57:13.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pynetbox
-Version: 4.0.7
+Version: 4.0.8
Summary: NetBox API client library
Home-page: https://github.com/digitalocean/pynetbox
Author: Zach Moody
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynetbox-4.0.7/pynetbox/__init__.py new/pynetbox-4.0.8/pynetbox/__init__.py
--- old/pynetbox-4.0.7/pynetbox/__init__.py 2019-09-13 17:11:00.000000000 +0200
+++ new/pynetbox-4.0.8/pynetbox/__init__.py 2019-09-27 15:56:53.000000000 +0200
@@ -1,6 +1,6 @@
from pkg_resources import get_distribution, DistributionNotFound
-from pynetbox.core.query import RequestError
+from pynetbox.core.query import RequestError, AllocationError, ContentError
from pynetbox.api import Api as api
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynetbox-4.0.7/pynetbox/core/query.py new/pynetbox-4.0.8/pynetbox/core/query.py
--- old/pynetbox-4.0.7/pynetbox/core/query.py 2019-09-13 17:11:00.000000000 +0200
+++ new/pynetbox-4.0.8/pynetbox/core/query.py 2019-09-27 15:56:53.000000000 +0200
@@ -92,6 +92,29 @@
self.error = message
+class ContentError(Exception):
+ """Content Exception
+
+ If the API URL does not point to a valid NetBox API, the server may
+ return a valid response code, but the content is not json. This
+ exception is raised in those cases.
+ """
+
+ def __init__(self, message):
+ req = message
+
+ message = (
+ "The server returned invalid (non-json) data. Maybe not "
+ "a NetBox server?"
+ )
+
+ super(ContentError, self).__init__(message)
+ self.req = req
+ self.request_body = req.request.body
+ self.url = req.url
+ self.error = message
+
+
class Request(object):
"""Creates requests to the Netbox API
@@ -157,7 +180,10 @@
verify=self.ssl_verify,
)
if req.ok:
- return req.json()["session_key"]
+ try:
+ return req.json()["session_key"]
+ except json.JSONDecodeError:
+ raise ContentError(req)
else:
raise RequestError(req)
@@ -214,6 +240,7 @@
any paginated results.
:raises: RequestError if req.ok returns false.
+ :raises: ContentError if response is not json.
:Returns: List of `Response` objects returned from the
endpoint.
@@ -228,7 +255,10 @@
req = requests.get(url, headers=headers, verify=self.ssl_verify)
if req.ok:
- return req.json()
+ try:
+ return req.json()
+ except json.JSONDecodeError:
+ raise ContentError(req)
else:
raise RequestError(req)
@@ -266,6 +296,7 @@
:param data: (dict) Contains a dict that will be turned into a
json object and sent to the API.
:raises: RequestError if req.ok returns false.
+ :raises: ContentError if response is not json.
:returns: Dict containing the response from NetBox's API.
"""
headers = {
@@ -281,7 +312,10 @@
verify=self.ssl_verify,
)
if req.ok:
- return req.json()
+ try:
+ return req.json()
+ except json.JSONDecodeError:
+ raise ContentError(req)
else:
raise RequestError(req)
@@ -294,6 +328,10 @@
:param data: (dict) Contains a dict that will be turned into a
json object and sent to the API.
:raises: RequestError if req.ok returns false.
+ :raises: AllocationError if req.status_code is 204 (No Content)
+ as with available-ips and available-prefixes when there is
+ no room for the requested allocation.
+ :raises: ContentError if response is not json.
:Returns: Dict containing the response from NetBox's API.
"""
headers = {
@@ -311,7 +349,10 @@
if req.status_code == 204:
raise AllocationError(req)
elif req.ok:
- return req.json()
+ try:
+ return req.json()
+ except json.JSONDecodeError:
+ raise ContentError(req)
else:
raise RequestError(req)
@@ -346,6 +387,7 @@
:param data: (dict) Contains a dict that will be turned into a
json object and sent to the API.
:raises: RequestError if req.ok returns false.
+ :raises: ContentError if response is not json.
:returns: Dict containing the response from NetBox's API.
"""
headers = {
@@ -361,6 +403,9 @@
verify=self.ssl_verify,
)
if req.ok:
- return req.json()
+ try:
+ return req.json()
+ except json.JSONDecodeError:
+ raise ContentError(req)
else:
raise RequestError(req)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pynetbox-4.0.7/pynetbox.egg-info/PKG-INFO new/pynetbox-4.0.8/pynetbox.egg-info/PKG-INFO
--- old/pynetbox-4.0.7/pynetbox.egg-info/PKG-INFO 2019-09-13 17:11:18.000000000 +0200
+++ new/pynetbox-4.0.8/pynetbox.egg-info/PKG-INFO 2019-09-27 15:57:12.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pynetbox
-Version: 4.0.7
+Version: 4.0.8
Summary: NetBox API client library
Home-page: https://github.com/digitalocean/pynetbox
Author: Zach Moody
1
0
Hello community,
here is the log from the commit of package yast2-gpmc for openSUSE:Factory checked in at 2019-09-30 15:59:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-gpmc (Old)
and /work/SRC/openSUSE:Factory/.yast2-gpmc.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-gpmc"
Mon Sep 30 15:59:15 2019 rev:7 rq:733762 version:1.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-gpmc/yast2-gpmc.changes 2019-09-25 08:28:38.846382608 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-gpmc.new.2352/yast2-gpmc.changes 2019-09-30 15:59:15.925237946 +0200
@@ -1,0 +2,8 @@
+Fri Sep 27 21:18:31 UTC 2019 - dmulder(a)suse.com
+
+- Create a stub smb.conf for s3_lp if no smb.conf exists.
+- Fix broken gpo creation by reusing samba code; (bsc#1152357);
+- Use samba-tool code to delete links/gpos.
+- 1.5.0
+
+-------------------------------------------------------------------
Old:
----
yast2-gpmc-1.4.8.tar.bz2
New:
----
yast2-gpmc-1.5.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-gpmc.spec ++++++
--- /var/tmp/diff_new_pack.8ccH0b/_old 2019-09-30 15:59:16.433236594 +0200
+++ /var/tmp/diff_new_pack.8ccH0b/_new 2019-09-30 15:59:16.437236584 +0200
@@ -17,7 +17,7 @@
Name: yast2-gpmc
-Version: 1.4.8
+Version: 1.5.0
Release: 0
Summary: Group Policy Management Console for YaST
License: GPL-3.0-only
++++++ yast2-gpmc-1.4.8.tar.bz2 -> yast2-gpmc-1.5.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gpmc-1.4.8/package/yast2-gpmc.changes new/yast2-gpmc-1.5.0/package/yast2-gpmc.changes
--- old/yast2-gpmc-1.4.8/package/yast2-gpmc.changes 2019-09-23 22:44:08.000000000 +0200
+++ new/yast2-gpmc-1.5.0/package/yast2-gpmc.changes 2019-09-27 23:28:34.000000000 +0200
@@ -1,4 +1,12 @@
-------------------------------------------------------------------
+Fri Sep 27 21:18:31 UTC 2019 - dmulder(a)suse.com
+
+- Create a stub smb.conf for s3_lp if no smb.conf exists.
+- Fix broken gpo creation by reusing samba code; (bsc#1152357);
+- Use samba-tool code to delete links/gpos.
+- 1.5.0
+
+-------------------------------------------------------------------
Mon Sep 23 20:35:24 UTC 2019 - dmulder(a)suse.com
- Fix copy/paste typo in fix for bug 1151733; (bsc#1151738);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gpmc-1.4.8/package/yast2-gpmc.spec new/yast2-gpmc-1.5.0/package/yast2-gpmc.spec
--- old/yast2-gpmc-1.4.8/package/yast2-gpmc.spec 2019-09-23 22:44:08.000000000 +0200
+++ new/yast2-gpmc-1.5.0/package/yast2-gpmc.spec 2019-09-27 23:28:34.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-gpmc
-Version: 1.4.8
+Version: 1.5.0
Release: 0
Summary: Group Policy Management Console for YaST
License: GPL-3.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gpmc-1.4.8/src/include/gpmc/complex.py new/yast2-gpmc-1.5.0/src/include/gpmc/complex.py
--- old/yast2-gpmc-1.4.8/src/include/gpmc/complex.py 2019-09-23 22:44:08.000000000 +0200
+++ new/yast2-gpmc-1.5.0/src/include/gpmc/complex.py 2019-09-27 23:28:34.000000000 +0200
@@ -13,7 +13,6 @@
from samba.net import Net
from samba.dcerpc import nbt
from subprocess import Popen, PIPE
-import uuid
import re
import traceback
import ldb
@@ -30,6 +29,11 @@
from adcommon.yldap import Ldap, LdapException, SCOPE_SUBTREE, SCOPE_ONELEVEL, SCOPE_BASE, addlist, modlist
from adcommon.strings import strcmp, strcasecmp
from samba import NTSTATUSError
+from tempfile import NamedTemporaryFile
+from optparse import OptionParser
+from samba.netcmd import gpo
+from samba.netcmd import CommandError
+from samba import NTSTATUSError, WERRORError
def open_bytes(filename):
if six.PY3:
@@ -113,6 +117,25 @@
ret += "[LDAP://%s;%d]" % (g['dn'], g['options'])
return ret
+def smb_connection(dc_hostname, service, lp, creds, sign=False):
+ # SMB connect to DC
+ # the SMB bindings rely on having a s3 loadparm
+ s3_lp = s3param.get_context()
+ if lp.configfile:
+ s3_lp.load(lp.configfile)
+ else:
+ with NamedTemporaryFile('w') as smb_conf:
+ smb_conf.write('[global]\nREALM = %s' % lp.get('realm'))
+ s3_lp.load(smb_conf.name)
+ try:
+ conn = smb.Conn(dc_hostname, service, lp=s3_lp, creds=creds, sign=sign)
+ except Exception:
+ raise CommandError("Error connecting to '%s' using SMB" % dc_hostname)
+ return conn
+
+# The samba-tool smb_connection function doesn't handle a missing smb.conf
+gpo.smb_connection = smb_connection
+
class GPConnection(Ldap):
def __init__(self, lp, creds):
super().__init__(lp, creds)
@@ -142,10 +165,6 @@
res = self.ldap_search(self.__well_known_container('users'), SCOPE_SUBTREE, '(objectSID=%s)' % sid, stringify_ldap(attrs))
return res[0][1]
- def get_domain_sid(self):
- res = self.ldap_search(self.realm_to_dn(self.realm), SCOPE_BASE, "(objectClass=*)", [])
- return ndr_unpack(security.dom_sid, res[0][1]["objectSid"][0])
-
def gpo_list(self, displayName=None, attrs=[]):
result = None
res = self.__well_known_container('system')
@@ -160,125 +179,25 @@
self.ldap_modify(dn, stringify_ldap([(1, key, None), (0, key, value)]))
def create_gpo(self, displayName, container=None):
- msg = self.gpo_list(displayName)
- if len(msg) > 0:
- ycpbuiltins.y2debug("A GPO already existing with name '%s'" % displayName)
- return
-
- gpouuid = uuid.uuid4()
- realm_dn = self.realm_to_dn(self.realm)
- name = '{%s}' % str(gpouuid).upper()
- dn = 'CN=%s,CN=Policies,CN=System,%s' % (name, realm_dn)
- unc_path = "\\\\%s\\sysvol\\%s\\Policies\\%s" % (self.realm, self.realm, name)
- ldap_mod = { 'displayName': [displayName.encode('utf-8')], 'gPCFileSysPath': [unc_path.encode('utf-8')], 'objectClass': [b'groupPolicyContainer'], 'gPCFunctionalityVersion': [b'2'], 'flags': [b'0'], 'versionNumber': [b'0'] }
- # gPCMachineExtensionNames MUST be assigned as gpos are modified (currently not doing this!)
-
- machine_dn = 'CN=Machine,%s' % dn
- user_dn = 'CN=User,%s' % dn
- sub_ldap_mod = { 'objectClass': [b'container'] }
-
- gpo = GPOConnection(self.lp, self.creds, unc_path)
- try:
- self.ldap_add(dn, addlist(ldap_mod))
- self.ldap_add(machine_dn, addlist(stringify_ldap(sub_ldap_mod)))
- self.ldap_add(user_dn, addlist(stringify_ldap(sub_ldap_mod)))
- except LdapException as e:
- ycpbuiltins.y2error(traceback.format_exc())
- ycpbuiltins.y2error('ldap.add_s: %s\n' % e.info if e.info else e.msg)
- gpo.initialize_empty_gpo(displayName)
+ cmd_create = gpo_create(self.lp, self.creds, self)
+ ycpbuiltins.y2debug(cmd_create.run(displayName))
+ cmd_setlink = gpo_setlink(self.lp, self.creds, self)
if container:
- self.set_link(dn, container)
-
- def set_link(self, gpo_dn, container_dn, disabled=False, enforced=False):
- gplink_options = 0
- if disabled:
- gplink_options |= (1 << 0)
- if enforced:
- gplink_options |= (1 << 1)
-
- # Check if valid Container DN
- msg = self.ldap_search(container_dn, SCOPE_BASE,
- "(objectClass=*)",
- stringify_ldap(['gPLink']))[0][1]
-
- # Update existing GPlinks or Add new one
- existing_gplink = False
- if 'gPLink' in msg:
- gplist = parse_gplink(msg['gPLink'][0])
- gplist = [gplist[k] for k in gplist]
- existing_gplink = True
- found = False
- for g in gplist:
- if strcasecmp(g['dn'], gpo_dn):
- found = True
- break
- if found:
- ycpbuiltins.y2debug("GPO '%s' already linked to this container" % gpo)
- return
- else:
- gplist.insert(0, { 'dn' : gpo_dn, 'options' : gplink_options })
- else:
- gplist = []
- gplist.append({ 'dn' : gpo_dn, 'options' : gplink_options })
-
- gplink_str = encode_gplink(gplist)
-
- if existing_gplink:
- self.ldap_modify(container_dn, stringify_ldap([(1, 'gPLink', None), (0, 'gPLink', [gplink_str.encode('utf-8')])]))
- else:
- self.ldap_modify(container_dn, stringify_ldap([(0, 'gPLink', [gplink_str.encode('utf-8')])]))
+ ycpbuiltins.y2debug(cmd_setlink.run(container, cmd_create.get_name()))
def delete_link(self, gpo_dn, container_dn):
- # Check if valid Container DN
- msg = self.ldap_search(container_dn, SCOPE_BASE,
- "(objectClass=*)",
- stringify_ldap(['gPLink']))[0][1]
-
- found = False
- if 'gPLink' in msg:
- gplist = parse_gplink(msg['gPLink'][0])
- gplist = [gplist[k] for k in gplist]
- for g in gplist:
- if strcasecmp(g['dn'], gpo_dn):
- gplist.remove(g)
- found = True
- break
- else:
- raise Exception("No GPO(s) linked to this container")
-
- if not found:
- raise Exception("GPO '%s' not linked to this container" % gpo_dn)
-
- if gplist:
- gplink_str = encode_gplink(gplist)
- self.ldap_modify(container_dn, stringify_ldap([(1, 'gPLink', None), (0, 'gPLink', [gplink_str.encode('utf-8')])]))
- else:
- self.ldap_modify(container_dn, stringify_ldap([(1, 'gPLink', None)]))
+ cmd_dellink = gpo_dellink(self.lp, self.creds, self)
+ gpo_cn = re.split(',?\w\w=', gpo_dn)[1]
+ ycpbuiltins.y2debug(cmd_dellink.run(container_dn, gpo_cn))
def delete_gpo(self, displayName):
- msg = self.gpo_list(displayName)
+ msg = self.gpo_list(displayName, attrs=['cn'])
if len(msg) == 0:
raise Exception("GPO '%s' does not exist" % displayName)
+ gpo_cn = msg[0][1]['cn'][0]
- unc_path = msg[0][1]['gPCFileSysPath'][0]
- gpo_dn = msg[0][1]['distinguishedName'][0]
-
- # Remove links before deleting
- linked_containers = self.get_gpo_containers(gpo_dn)
- for container in linked_containers:
- self.delete_link(gpo_dn, container['distinguishedName'][0].decode())
-
- # Remove LDAP entries
- self.ldap_delete("CN=User,%s" % str(gpo_dn))
- self.ldap_delete("CN=Machine,%s" % str(gpo_dn))
- self.ldap_delete(gpo_dn)
- try:
- # Remove GPO files
- gpo = GPOConnection(self.lp, self.creds, unc_path)
- gpo.cleanup_gpo()
- except Exception as e:
- ycpbuiltins.y2error(traceback.format_exc())
- ycpbuiltins.y2error(str(e))
+ cmd_del = gpo_del(self.lp, self.creds, self)
+ ycpbuiltins.y2debug(cmd_del.run(gpo_cn))
def get_gpo_containers(self, gpo):
'''lists dn of containers for a GPO'''
@@ -327,15 +246,11 @@
self.name = gpo_path.split('\\')[-1]
self.realm_dn = self.realm_to_dn(self.realm)
self.gpo_dn = 'CN=%s,CN=Policies,CN=System,%s' % (self.name, self.realm_dn)
- # the SMB bindings rely on having a s3 loadparm
- s3_lp = s3param.get_context()
- s3_lp.load(self.lp.configfile)
- s3_lp.set('realm', self.lp.get('realm'))
try:
- self.conn = smb.Conn(self.dc_hostname, service, lp=s3_lp, creds=self.creds, sign=True)
- except Exception as e:
+ self.conn = smb_connection(self.dc_hostname, service, self.lp, self.creds, sign=True)
+ except CommandError as e:
ycpbuiltins.y2error(traceback.format_exc())
- ycpbuiltins.y2error("Exception %s"%str(e))
+ ycpbuiltins.y2error(e.args[-1])
self.conn = None
def update_machine_gpe_ini(self, extension):
@@ -359,32 +274,6 @@
ini_conf.set('General', 'MachineExtensionVersions', machine_extension_versions)
self.write('Group Policy\\GPE.INI', ini_conf)
- def initialize_empty_gpo(self, displayName):
- # Get new security descriptor
- ds_sd_flags = ( security.SECINFO_OWNER |
- security.SECINFO_GROUP |
- security.SECINFO_DACL )
- msg = self.gpo_list(displayName, attrs=stringify_ldap(['nTSecurityDescriptor']))
- ds_sd_ndr = msg[0][1]['nTSecurityDescriptor'][0]
- ds_sd = ndr_unpack(security.descriptor, ds_sd_ndr).as_sddl()
-
- # Create a file system security descriptor
- domain_sid = self.get_domain_sid()
- sddl = dsacl2fsacl(ds_sd, domain_sid)
- fs_sd = security.descriptor.from_sddl(sddl, domain_sid)
-
- self.__smb_mkdir_p('\\'.join([self.path, 'MACHINE']))
- self.__smb_mkdir_p('\\'.join([self.path, 'USER']))
-
- # Set ACL
- sio = ( security.SECINFO_OWNER |
- security.SECINFO_GROUP |
- security.SECINFO_DACL |
- security.SECINFO_PROTECTED_DACL )
- self.conn.set_acl(self.path, fs_sd, sio)
-
- self.__increment_gpt_ini()
-
def cleanup_gpo(self):
self.conn.deltree(self.path)
@@ -625,3 +514,96 @@
else:
ycpbuiltins.y2error(e.args[1])
return filename
+
+class SambaOptions():
+ def __init__(self, lp):
+ self.lp = lp
+
+ def get_loadparm(self):
+ return self.lp
+
+class CredentialsOptions():
+ def __init__(self, creds):
+ self.creds = creds
+
+ def get_credentials(self, *args, **kwargs):
+ return self.creds
+
+class gpo_create(gpo.cmd_create):
+ def __init__(self, lp, creds, samdb):
+ super().__init__()
+ self.sambaopts = SambaOptions(lp)
+ self.credopts = CredentialsOptions(creds)
+ self.samdb = samdb
+ self.outf = StringIO()
+
+ def samdb_connect(self):
+ pass # Our samdb is already connected
+
+ def get_name(self):
+ return self.gpo_name
+
+ def run(self, displayname):
+ try:
+ super().run(displayname, sambaopts=self.sambaopts, credopts=self.credopts)
+ except (CommandError, NTSTATUSError, WERRORError, Exception) as e:
+ ycpbuiltins.y2error(traceback.format_exc())
+ ycpbuiltins.y2error(str(e))
+ return self.outf.getvalue()
+
+class gpo_setlink(gpo.cmd_setlink):
+ def __init__(self, lp, creds, samdb):
+ super().__init__()
+ self.sambaopts = SambaOptions(lp)
+ self.credopts = CredentialsOptions(creds)
+ self.samdb = samdb
+ self.outf = StringIO()
+
+ def samdb_connect(self):
+ pass # Our samdb is already connected
+
+ def run(self, container_dn, gpo):
+ try:
+ super().run(container_dn, gpo, sambaopts=self.sambaopts, credopts=self.credopts)
+ except (CommandError, NTSTATUSError, WERRORError, Exception) as e:
+ ycpbuiltins.y2error(traceback.format_exc())
+ ycpbuiltins.y2error(str(e))
+ return self.outf.getvalue()
+
+class gpo_dellink(gpo.cmd_dellink):
+ def __init__(self, lp, creds, samdb):
+ super().__init__()
+ self.sambaopts = SambaOptions(lp)
+ self.credopts = CredentialsOptions(creds)
+ self.samdb = samdb
+ self.outf = StringIO()
+
+ def samdb_connect(self):
+ pass # Our samdb is already connected
+
+ def run(self, container, gpo):
+ try:
+ super().run(container, gpo, sambaopts=self.sambaopts, credopts=self.credopts)
+ except (CommandError, NTSTATUSError, WERRORError, Exception) as e:
+ ycpbuiltins.y2error(traceback.format_exc())
+ ycpbuiltins.y2error(str(e))
+ return self.outf.getvalue()
+
+class gpo_del(gpo.cmd_del):
+ def __init__(self, lp, creds, samdb):
+ super().__init__()
+ self.sambaopts = SambaOptions(lp)
+ self.credopts = CredentialsOptions(creds)
+ self.samdb = samdb
+ self.outf = StringIO()
+
+ def samdb_connect(self):
+ pass # Our samdb is already connected
+
+ def run(self, gpo):
+ try:
+ super().run(gpo, sambaopts=self.sambaopts, credopts=self.credopts)
+ except (CommandError, NTSTATUSError, WERRORError, Exception) as e:
+ ycpbuiltins.y2error(traceback.format_exc())
+ ycpbuiltins.y2error(str(e))
+ return self.outf.getvalue()
1
0
Hello community,
here is the log from the commit of package nextcloud-client for openSUSE:Factory checked in at 2019-09-30 15:59:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nextcloud-client (Old)
and /work/SRC/openSUSE:Factory/.nextcloud-client.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nextcloud-client"
Mon Sep 30 15:59:10 2019 rev:19 rq:733760 version:2.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/nextcloud-client/nextcloud-client.changes 2019-08-14 11:37:47.996692264 +0200
+++ /work/SRC/openSUSE:Factory/.nextcloud-client.new.2352/nextcloud-client.changes 2019-09-30 15:59:14.833240853 +0200
@@ -1,0 +2,33 @@
+Fri Sep 27 20:42:15 UTC 2019 - Mathias Homann <Mathias.Homann(a)opensuse.org>
+
+- Update to 2.6.0
+ * desktop#1222 Reinstate Debian build in the new Drone config
+ * desktop#1225 Typo
+ * desktop#1256 Marking unused strings as unstranslatable
+ * desktop#1275 Fixes #607
+ * desktop#1278 Fixes issue #878
+ * desktop#1342 Fixes issue #1187
+ * desktop#1347 Displays FileIgnored activities with an info icon
+ * desktop#1354 Minor text change in the link to help in the tab 'General'.
+ * desktop#1359 Update Qt 5.5 compatibility patch for Xenial
+ * desktop#1360 Remove Ubuntu Cosmic and add Eoan package
+ * desktop#1366 Add proper CA to client side certificate connection
+ * desktop#1372 Remove dependency on libgnome-keyring0 on Eoan
+ * desktop#1374 Read .sync_exclude.lst in each subdirectory
+ * desktop#1376 Updates ChangeLog.
+ * desktop#1384 Login flow v2
+ * desktop#1389 Adds SSL client cert storage to webflow + Login Flow v2
+ * desktop#1394 Windows: Workaround for CredWriteW used by QtKeychain
+ * desktop#1399 Integrated registry check on windows when hasDarkSystray is called.
+ * desktop#1401 Logo update
+ * desktop#1402 Updated .gitignore to integrate unwanted files when working with VSC …
+ * desktop#1405 Full-Scaled new logo in Windows 10 start menu tile
+ * desktop#1408 Qt5.5 compatiblity patch for login flow V2 + UI improvement (Use newer digest algorithms in TLS error dialog)
+ * desktop#1427 Fix for #1382 "linux client crashes for no discernable reason"
+ * desktop#1434 UI improvement: Message box: Delete / Keep all files
+ * desktop#1443 Improve wording of the context menu in the file manager extension.
+ * desktop#1447 Changes wording in the share context menu.
+ * Fix White Window issue on Windows by upgrading to Qt 5.12.5
+
+
+-------------------------------------------------------------------
Old:
----
nextcloud-client-2.5.3.tar.gz
New:
----
nextcloud-client-2.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nextcloud-client.spec ++++++
--- /var/tmp/diff_new_pack.nUstur/_old 2019-09-30 15:59:15.613238776 +0200
+++ /var/tmp/diff_new_pack.nUstur/_new 2019-09-30 15:59:15.613238776 +0200
@@ -19,7 +19,7 @@
%define soname libnextcloudsync
%define sover 0
Name: nextcloud-client
-Version: 2.5.3
+Version: 2.6.0
Release: 0
Summary: Nextcloud desktop synchronisation client
License: GPL-2.0-or-later AND LGPL-3.0-or-later
++++++ nextcloud-client-2.5.3.tar.gz -> nextcloud-client-2.6.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/nextcloud-client/nextcloud-client-2.5.3.tar.gz /work/SRC/openSUSE:Factory/.nextcloud-client.new.2352/nextcloud-client-2.6.0.tar.gz differ: char 27, line 1
1
0
Hello community,
here is the log from the commit of package lxc for openSUSE:Factory checked in at 2019-09-30 15:59:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lxc (Old)
and /work/SRC/openSUSE:Factory/.lxc.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lxc"
Mon Sep 30 15:59:09 2019 rev:88 rq:733750 version:3.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/lxc/lxc.changes 2019-09-16 10:52:28.199156164 +0200
+++ /work/SRC/openSUSE:Factory/.lxc.new.2352/lxc.changes 2019-09-30 15:59:10.809251561 +0200
@@ -3,0 +4,3 @@
+- Add backport of https://github.com/lxc/lxc/pull/3102 to fix build failures on
+ openSUSE Leap.
+ + 0001-tree-wide-initialize-all-auto-cleanup-variables.patch
New:
----
0001-tree-wide-initialize-all-auto-cleanup-variables.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lxc.spec ++++++
--- /var/tmp/diff_new_pack.O2cYfp/_old 2019-09-30 15:59:11.861248762 +0200
+++ /var/tmp/diff_new_pack.O2cYfp/_new 2019-09-30 15:59:11.865248751 +0200
@@ -46,6 +46,8 @@
Source3: lxc-createconfig.in
Source90: openSUSE-apparmor.conf
Source91: missing_setuid.txt.in
+# FIX-UPSTREAM: Backport of https://github.com/lxc/lxc/pull/3102.
+Patch1: 0001-tree-wide-initialize-all-auto-cleanup-variables.patch
BuildRequires: gcc
BuildRequires: automake
BuildRequires: libtool
@@ -127,6 +129,8 @@
%prep
%setup
+# Fix -Werror=maybe-uninitialized build errors.
+%patch1 -p1
%build
./autogen.sh
++++++ 0001-tree-wide-initialize-all-auto-cleanup-variables.patch ++++++
>From 6453ba565ed7e3be9b3c9fa74ac07cf8e06b9afc Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner(a)ubuntu.com>
Date: Tue, 23 Jul 2019 16:41:46 +0200
Subject: [PATCH] tree-wide: initialize all auto-cleanup variables
Closes: #3101.
Signed-off-by: Christian Brauner <christian.brauner(a)ubuntu.com>
---
src/lxc/cgroups/cgfsng.c | 2 +-
src/lxc/confile.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c
index 87e12d2ddd68..7b8fe6736fe1 100644
--- a/src/lxc/cgroups/cgfsng.c
+++ b/src/lxc/cgroups/cgfsng.c
@@ -1260,7 +1260,7 @@ static int mkdir_eexist_on_last(const char *dir, mode_t mode)
orig_len = strlen(dir);
do {
- __do_free char *makeme;
+ __do_free char *makeme = NULL;
int ret;
size_t cur_len;
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index 36d62cbcac14..c0cba7c54716 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -909,9 +909,9 @@ static int set_config_net_ipv6_gateway(const char *key, const char *value,
static int set_config_net_veth_ipv6_route(const char *key, const char *value,
struct lxc_conf *lxc_conf, void *data)
{
- __do_free char *valdup;
- __do_free struct lxc_inet6dev *inet6dev;
- __do_free struct lxc_list *list;
+ __do_free char *valdup = NULL;
+ __do_free struct lxc_inet6dev *inet6dev = NULL;
+ __do_free struct lxc_list *list = NULL;
int ret;
char *netmask, *slash;
struct lxc_netdev *netdev = data;
--
2.23.0
1
0