openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
August 2017
- 1 participants
- 2097 discussions
Hello community,
here is the log from the commit of package libxslt for openSUSE:Factory checked in at 2017-08-04 11:56:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libxslt (Old)
and /work/SRC/openSUSE:Factory/.libxslt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libxslt"
Fri Aug 4 11:56:48 2017 rev:52 rq:512954 version:1.1.29
Changes:
--------
--- /work/SRC/openSUSE:Factory/libxslt/libxslt-python.changes 2016-06-20 10:55:12.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libxslt.new/libxslt-python.changes 2017-08-04 11:56:49.213306360 +0200
@@ -1,0 +2,6 @@
+Fri Jul 28 18:49:10 UTC 2017 - mpluskal(a)suse.com
+
+- Add gpg signature
+- Cleanup spec file with spec-cleaner
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/libxslt/libxslt.changes 2017-05-10 20:32:06.946632913 +0200
+++ /work/SRC/openSUSE:Factory/.libxslt.new/libxslt.changes 2017-08-04 11:56:49.285296199 +0200
@@ -1,0 +2,6 @@
+Fri Jul 28 18:48:39 UTC 2017 - mpluskal(a)suse.com
+
+- Add gpg signature
+- Cleanup spec file with spec-cleaner
+
+-------------------------------------------------------------------
New:
----
libxslt-1.1.29.tar.gz.asc
libxslt.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libxslt-python.spec ++++++
--- /var/tmp/diff_new_pack.LM7KNn/_old 2017-08-04 11:56:50.537119510 +0200
+++ /var/tmp/diff_new_pack.LM7KNn/_new 2017-08-04 11:56:50.557116688 +0200
@@ -24,7 +24,9 @@
License: MIT
Group: Development/Libraries/Python
Url: http://xmlsoft.org/XSLT/
-Source: ftp://xmlsoft.org/libxslt/libxslt-%{version}.tar.gz
+Source0: ftp://xmlsoft.org/libxslt/libxslt-%{version}.tar.gz
+Source1: ftp://xmlsoft.org/libxslt/libxslt-%{version}.tar.gz.asc
+Source2: libxslt.keyring
Patch0: libxslt-1.1.24-linkflags.patch
# pbleser: don't build the doc subdir as it's broken and we don't install
# it anyway; neither build the xsltproc subdir (not packaged here, faster)
@@ -35,11 +37,10 @@
BuildRequires: libxml2-devel
BuildRequires: libxml2-python
BuildRequires: libxslt-tools
-#!BuildIgnore: python
BuildRequires: python-devel
BuildRequires: python-xml
+#!BuildIgnore: python
Requires: %{libname} = %{version}
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
The libxslt-python package contains a module that permits applications
@@ -81,7 +82,6 @@
make %{?_smp_mflags} tests -C python
%files
-%defattr(-, root, root)
%{py_sitedir}/*
%doc python/libxslt-python-api.xml
++++++ libxslt.spec ++++++
--- /var/tmp/diff_new_pack.LM7KNn/_old 2017-08-04 11:56:50.689098059 +0200
+++ /var/tmp/diff_new_pack.LM7KNn/_new 2017-08-04 11:56:50.701096365 +0200
@@ -22,12 +22,14 @@
Version: 1.1.29
Release: 0
Summary: XSL Transformation Library
-License: MIT and GPL-2.0+
+License: MIT AND GPL-2.0+
Group: System/Libraries
Url: http://xmlsoft.org/XSLT/
-Source: ftp://xmlsoft.org/libxslt/libxslt-%{version}.tar.gz
-Source2: baselibs.conf
+Source0: ftp://xmlsoft.org/libxslt/libxslt-%{version}.tar.gz
+Source1: ftp://xmlsoft.org/libxslt/libxslt-%{version}.tar.gz.asc
+Source2: %{name}.keyring
Source3: xslt-config.1
+Source99: baselibs.conf
Patch0: %{name}-1.1.24-no-net-autobuild.patch
Patch1: libxslt-config-fixes.patch
Patch2: 0009-Make-generate-id-deterministic.patch
@@ -40,7 +42,6 @@
BuildRequires: libtool
BuildRequires: libxml2-devel
BuildRequires: pkgconfig
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
This C library allows you to transform XML files into other XML files
@@ -89,7 +90,7 @@
%package tools
Summary: Extended Stylesheet Language (XSL) Transformation utilities
-License: MIT and GPL-2.0+
+License: MIT AND GPL-2.0+
Group: Development/Tools/Other
Provides: %{name} = %{version}
Provides: xsltproc = %{version}
@@ -122,7 +123,7 @@
%endif
%install
-make %{?_smp_mflags} DESTDIR=%{buildroot} install
+%make_install
# Unwanted doc stuff
rm -fr %{buildroot}%{_datadir}/doc
@@ -135,18 +136,15 @@
%postun -n %{libname} -p /sbin/ldconfig
%files -n %{libname}
-%defattr(-, root, root)
%{_libdir}/libxslt.so.*
%{_libdir}/libexslt.so.*
%files tools
-%defattr(-,root,root)
%doc AUTHORS NEWS README COPYING* Copyright TODO FEATURES
%{_bindir}/xsltproc
%{_mandir}/man1/xsltproc.1%{ext_man}
%files devel
-%defattr(-, root, root)
%{_libdir}/libxslt.so
%{_libdir}/libexslt.so
%{_libdir}/*.sh
1
0
Hello community,
here is the log from the commit of package pcre for openSUSE:Factory checked in at 2017-08-04 11:56:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcre (Old)
and /work/SRC/openSUSE:Factory/.pcre.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pcre"
Fri Aug 4 11:56:44 2017 rev:66 rq:512856 version:8.41
Changes:
--------
--- /work/SRC/openSUSE:Factory/pcre/pcre.changes 2017-06-12 15:10:00.466191328 +0200
+++ /work/SRC/openSUSE:Factory/.pcre.new/pcre.changes 2017-08-04 11:56:45.841782233 +0200
@@ -1,0 +2,27 @@
+Tue Jul 25 08:15:58 UTC 2017 - astieger(a)suse.com
+
+- pcre 8.41:
+ * If pcregrep in multiline mode with --only-matching matched
+ several lines, it restarted scanning at the next line instead
+ of moving on to the end of the matched string, which can be
+ several lines after the start.
+ * Fix a missing else in the JIT compiler reported by 'idaifish'.
+ CVE-2017-6004 bsc#1025709
+ * A (?# style comment is now ignored between a basic quantifier
+ and a following '+' or '?' (example: /X+(?#comment)?Y/.
+ * Avoid use of a potentially overflowing buffer in pcregrep
+ * Fix issues reported by fuzzers in pcretest:
+ - Check for values < 256 when calling isprint() in pcretest.
+ - Give an error for too big a number after \O.
+ * In the 32-bit library in non-UTF mode, an attempt to find a
+ Unicode property for a character with a code point greater than
+ 0x10ffff (the Unicode maximum) caused a crash.
+ CVE-2017-7186 bsc#1030066, CVE-2017-7244 bsc#1030807
+ * The alternative matching function, pcre_dfa_exec() misbehaved
+ if it encountered a character class with a possessive repeat,
+ for example [a-f]{3}+.
+ * When pcretest called pcre_copy_substring() in 32-bit mode, it
+ set the buffer length incorrectly, which could result in buffer
+ overflow. CVE-2017-7245 bsc#1030805, CVE-2017-7246 bsc#1030803
+
+-------------------------------------------------------------------
Old:
----
pcre-8.40.tar.bz2
pcre-8.40.tar.bz2.sig
New:
----
pcre-8.41.tar.bz2
pcre-8.41.tar.bz2.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pcre.spec ++++++
--- /var/tmp/diff_new_pack.ZgOJF5/_old 2017-08-04 11:56:46.837641672 +0200
+++ /var/tmp/diff_new_pack.ZgOJF5/_new 2017-08-04 11:56:46.841641107 +0200
@@ -17,7 +17,7 @@
Name: pcre
-Version: 8.40
+Version: 8.41
Release: 0
Summary: A library for Perl-compatible regular expressions
License: BSD-3-Clause
@@ -159,7 +159,7 @@
%if %{do_profiling}
make %{?_smp_mflags} CFLAGS="%{optflags} %{cflags_profile_generate}" V=1
make %{?_smp_mflags} CFLAGS="%{optflags} %{cflags_profile_generate}" check
- make clean
+ make %{?_smp_mflags} clean
make %{?_smp_mflags} CFLAGS="%{optflags} %{cflags_profile_feedback}" V=1
%else
make %{?_smp_mflags} CFLAGS="%{optflags}"
@@ -185,37 +185,30 @@
%postun -n libpcreposix0 -p /sbin/ldconfig
%files -n libpcre1
-%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog LICENCE NEWS README
%{_libdir}/libpcre.so.*
%files -n libpcre16-0
-%defattr(-,root,root)
%{_libdir}/libpcre16.so.*
%files -n libpcrecpp0
-%defattr(-,root,root)
%{_libdir}/libpcrecpp.so.*
%files -n libpcreposix0
-%defattr(-,root,root)
%{_libdir}/libpcreposix.so.*
%files tools
-%defattr(-,root,root)
%{_bindir}/pcregrep
%{_bindir}/pcretest
%{_mandir}/man1/pcregrep.1%{ext_man}
%{_mandir}/man1/pcretest.1%{ext_man}
%files doc
-%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog LICENCE NEWS README
%doc doc/html doc/*.txt
%doc %{_defaultdocdir}/pcre-doc
%files devel
-%defattr(-,root,root)
%{_bindir}/pcre-config
%{_includedir}/*
%{_libdir}/*.so
@@ -227,7 +220,6 @@
%{_mandir}/man3/pcre*.3*%{ext_man}
%files devel-static
-%defattr(-,root,root)
%{_libdir}/*.a
%changelog
++++++ pcre-8.40.tar.bz2 -> pcre-8.41.tar.bz2 ++++++
++++ 15638 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package rpm for openSUSE:Factory checked in at 2017-08-04 11:56:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpm (Old)
and /work/SRC/openSUSE:Factory/.rpm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpm"
Fri Aug 4 11:56:28 2017 rev:247 rq:512653 version:4.13.0.1
Changes:
--------
rpm-python.changes: same change
--- /work/SRC/openSUSE:Factory/rpm/rpm.changes 2017-06-18 13:48:28.950927105 +0200
+++ /work/SRC/openSUSE:Factory/.rpm.new/rpm.changes 2017-08-04 11:56:30.859896848 +0200
@@ -1,0 +2,46 @@
+Wed Jul 26 12:39:40 UTC 2017 - rguenther(a)suse.com
+
+- Amend finddebuginfo.diff to adjust readelf -Wn pattern matching
+ to account for fixed readelf no longer emitting spurious newlines
+ with -W.
+
+-------------------------------------------------------------------
+Mon Jul 10 12:03:08 UTC 2017 - dimstar(a)opensuse.org
+
+- Drop net-tools Requires from rpm-build: net-tools only ships
+ uninteresting binaries. Most people would probably rather have
+ net-tools-depreacted expected (e.g. ifconfig), but as we did not
+ pull this in neither, we can just ignore this.
+
+-------------------------------------------------------------------
+Wed Jul 5 16:28:46 CEST 2017 - ngompa13(a)gmail.com
+
+- Define %_sharedstatedir as /var/lib, which is the path for
+ shared state content in Red Hat/Fedora; Mageia; and Debian/Ubuntu.
+ The old path (/usr/com) isn't recognized by FHS, whereas /var/lib
+ is recognized as suitable for this purpose.
+- Change the RPM binary payload from old-lzma to xz,
+ in line with payload settings for RH/Fedora and Mageia
+- Backport upstream commit to read changelog entries with full
+ timestamps
+ New patch: changes-doc.diff
+
+-------------------------------------------------------------------
+Thu Jun 15 07:08:45 UTC 2017 - alarrosa(a)suse.com
+
+- Added a %rpm_vercmp macro which accepts two versions as parameters and
+ returns -1, 0, 1 if the first version is less than, equal or
+ greater than the second version respectively.
+- Added a %pkg_version macro that accepts a package or capability name
+ as argument and returns the version number of the installed package. If
+ no package provides the argument, it returns the string ~~~
+- Added a %pkg_vcmp macro that accepts 3 parameters. The first parameter
+ is a package name or provided capability name, the second argument is an
+ operator ( < <= = >= > != ) and the third parameter is a version string
+ to compare the installed version of the first argument with.
+- Added a %pkg_version_cmp macro which accepts a package or capability name
+ as first argument and a version number as second argument and returns
+ -1, 0, 1 or ~~~ . The number values have the same meaning as in %rpm_vercmp
+ and the ~~~ string is returned if the package or capability can't be found.
+
+-------------------------------------------------------------------
New:
----
changes-doc.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
rpm-python.spec: same change
++++++ rpm.spec ++++++
--- /var/tmp/diff_new_pack.6cQ0aZ/_old 2017-08-04 11:56:34.311409685 +0200
+++ /var/tmp/diff_new_pack.6cQ0aZ/_new 2017-08-04 11:56:34.319408556 +0200
@@ -146,6 +146,7 @@
Patch102: emptymanifest.diff
Patch103: find-lang-qt-qm.patch
Patch104: perlprov-package.diff
+Patch105: changes-doc.diff
Patch6464: auto-config-update-aarch64-ppc64le.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
#
@@ -199,7 +200,6 @@
Requires: grep
Requires: gzip
Requires: make
-Requires: net-tools
Requires: patch
Requires: perl-base
Requires: sed
@@ -241,7 +241,7 @@
%patch -P 70 -P 71 -P 73 -P 74 -P 75 -P 76 -P 77 -P 78 -P 79
%patch -P 80 -P 81 -P 82 -P 83 -P 85
%patch -P 92 -P 93 -P 94 -P 96 -P 98 -P 99
-%patch -P 100 -P 101 -P 102 -P 103 -P 104
+%patch -P 100 -P 101 -P 102 -P 103 -P 104 -P 105
%ifarch aarch64 ppc64le
%patch6464
@@ -289,7 +289,7 @@
autoreconf -fi
sed -i -e 's,{PYTHON_VERSION}mu,{PYTHON_VERSION}mu python${PYTHON_VERSION}m,' configure
./configure --disable-dependency-tracking --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
---libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --with-lua \
+--libdir=%{_libdir} --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --with-lua \
--with-vendor=suse \
--with-rundir=/run \
--without-archive \
++++++ changes-doc.diff ++++++
--- ./doc/rpm.8.orig 2017-07-05 14:31:21.186733161 +0000
+++ ./doc/rpm.8 2017-07-05 14:32:12.097733071 +0000
@@ -65,7 +65,7 @@ rpm \- RPM Package Manager
.PP
- [\fB--changelog\fR] [\fB-c,--configfiles\fR] [\fB--conflicts\fR]
+ [\fB--changelog\fR] [\fB--changes\fR] [\fB-c,--configfiles\fR] [\fB--conflicts\fR]
[\fB-d,--docfiles\fR] [\fB--dump\fR] [\fB--enhances\fR] [\fB--filesbypkg\fR]
[\fB-i,--info\fR] [\fB--last\fR] [\fB-l,--list\fR] [\fB--obsoletes\fR]
[\fB--provides\fR] [\fB--qf,--queryformat \fIQUERYFMT\fB\fR]
@@ -615,6 +615,9 @@ Query all packages that enhance \fICAPAB
\fB--changelog\fR
Display change information for the package.
.TP
+\fB--changes\fR
+Display change information for the package with full time stamps.
+.TP
\fB-c, --configfiles\fR
List only configuration files (implies \fB-l\fR).
.TP
++++++ finddebuginfo.diff ++++++
--- /var/tmp/diff_new_pack.6cQ0aZ/_old 2017-08-04 11:56:34.815338558 +0200
+++ /var/tmp/diff_new_pack.6cQ0aZ/_new 2017-08-04 11:56:34.815338558 +0200
@@ -1,5 +1,7 @@
---- ./scripts/find-debuginfo.sh.orig 2016-11-03 09:10:28.922784796 +0000
-+++ ./scripts/find-debuginfo.sh 2017-01-19 12:32:12.596821861 +0000
+Index: scripts/find-debuginfo.sh
+===================================================================
+--- scripts/find-debuginfo.sh.orig 2017-02-16 10:54:14.779025209 +0100
++++ scripts/find-debuginfo.sh 2017-07-26 14:39:24.338122534 +0200
@@ -224,6 +224,20 @@ make_id_dup_link()
debug_link "$file" "/$idfile"
}
@@ -100,6 +102,15 @@
# strip -g implies we have full symtab, don't add mini symtab in that case.
$strip_g || ($include_minidebug && add_minidebug "${debugfn}" "$f")
+@@ -366,7 +402,7 @@ if $run_dwz && type dwz >/dev/null 2>&1
+ rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null
+ if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then
+ id="`readelf -Wn "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" \
+- 2>/dev/null | sed -n 's/^ Build ID: \([0-9a-f]\+\)/\1/p'`"
++ 2>/dev/null | sed -n 's/^.* Build ID: \([0-9a-f]\+\)/\1/p'`"
+ [ -n "$id" ] \
+ && make_id_link "$id" "/usr/lib/debug/.dwz/${dwz_multifile_name}" .debug
+ fi
@@ -399,12 +435,14 @@ if [ -s "$SOURCEFILE" ]; then
# stupid cpio creates new directories in mode 0700, fixup
find "${RPM_BUILD_ROOT}/usr/src/debug" -type d -print0 |
++++++ macrosin.diff ++++++
--- /var/tmp/diff_new_pack.6cQ0aZ/_old 2017-08-04 11:56:34.931322188 +0200
+++ /var/tmp/diff_new_pack.6cQ0aZ/_new 2017-08-04 11:56:34.939321059 +0200
@@ -1,7 +1,5 @@
-Index: macros.in
-===================================================================
---- macros.in.orig 2017-02-16 10:40:09.908649457 +0100
-+++ macros.in 2017-03-06 13:35:44.504200409 +0100
+--- ./macros.in.orig 2017-02-16 09:40:09.908649457 +0000
++++ ./macros.in 2017-07-05 14:15:53.855734802 +0000
@@ -185,22 +185,22 @@
# Template for debug information sub-package.
@@ -43,7 +41,7 @@
#
#%_source_payload w9.gzdio
-#%_binary_payload w9.gzdio
-+%_binary_payload w5.lzdio
++%_binary_payload w5.xzdio
# Algorithm to use for generating file checksum digests on build.
# If not specified or 0, MD5 is used.
++++++ rpm-suse_macros ++++++
--- /var/tmp/diff_new_pack.6cQ0aZ/_old 2017-08-04 11:56:35.315267996 +0200
+++ /var/tmp/diff_new_pack.6cQ0aZ/_new 2017-08-04 11:56:35.315267996 +0200
@@ -264,3 +264,17 @@
%description %{-n:-n %{-n*}-}lang \
Provides translations for the \"%{name}\" package.
+# package version comparison macros
+
+# compare two versions, returns -1, 0, 1, ~~~
+%rpm_vercmp() %{lua:print(rpm.expand('%1') == '~~~' and '~~~' or rpm.vercmp(rpm.expand('%1'), rpm.expand('%2')))}
+
+# expand to the installed version of a package/provides
+%pkg_version() %(LC_ALL=C rpm -q --whatprovides --qf "%%{version}" "%1" | sed -e "s/^no package provides .*/~~~/")
+
+# compare the installed version to a value. returns -1, 0, 1, ~~~
+%pkg_version_cmp() %{expand:%{expand:%%%%{rpm_vercmp %%{pkg_version %1} %%2}}}
+
+# convenience/readability
+%pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0)
+
++++++ rpmpopt.diff ++++++
--- /var/tmp/diff_new_pack.6cQ0aZ/_old 2017-08-04 11:56:35.431251625 +0200
+++ /var/tmp/diff_new_pack.6cQ0aZ/_new 2017-08-04 11:56:35.431251625 +0200
@@ -1,6 +1,6 @@
---- ./rpmpopt.in.orig 2011-05-11 14:27:32.000000000 +0000
-+++ ./rpmpopt.in 2011-05-11 15:02:34.000000000 +0000
-@@ -101,7 +101,8 @@ Relocations : %|PREFIXES?{[%{PREFIXES} ]
+--- ./rpmpopt.in.orig 2017-02-16 09:40:09.969649413 +0000
++++ ./rpmpopt.in 2017-07-05 14:13:49.599735022 +0000
+@@ -100,12 +100,16 @@ Relocations : %|PREFIXES?{[%{PREFIXES} ]
%|URL?{URL : %{URL}\n}|\
%|BUGURL?{Bug URL : %{BUGURL}\n}|\
Summary : %{SUMMARY}\n\
@@ -10,3 +10,11 @@
--POPTdesc=$"list descriptive information from package(s)"
rpm alias --changelog --qf '[* %{CHANGELOGTIME:day} %{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]' \
+ --POPTdesc=$"list change logs for this package"
+
++rpm alias --changes --qf '[* %{CHANGELOGTIME:date} %{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]' \
++ --POPTdesc=$"list changes for this package with full time stamps"
++
+ rpm alias --xml --qf '[%{*:xml}\n]' \
+ --POPTdesc=$"list metadata in xml"
+
1
0
Hello community,
here is the log from the commit of package libssh for openSUSE:Factory checked in at 2017-08-02 11:30:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libssh (Old)
and /work/SRC/openSUSE:Factory/.libssh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libssh"
Wed Aug 2 11:30:45 2017 rev:44 rq:513154 version:0.7.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/libssh/libssh.changes 2017-04-18 13:47:49.600309297 +0200
+++ /work/SRC/openSUSE:Factory/.libssh.new/libssh.changes 2017-08-02 11:30:52.151266418 +0200
@@ -1,0 +2,5 @@
+Mon Jul 31 08:31:20 UTC 2017 - astieger(a)suse.com
+
+- add package keyring and verify source signature
+
+-------------------------------------------------------------------
New:
----
libssh-0.7.5.tar.asc
libssh.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libssh.spec ++++++
--- /var/tmp/diff_new_pack.R4T80L/_old 2017-08-02 11:30:53.923015941 +0200
+++ /var/tmp/diff_new_pack.R4T80L/_new 2017-08-02 11:30:53.939013680 +0200
@@ -24,7 +24,9 @@
Group: Development/Libraries/C and C++
Url: https://www.libssh.org
# Dynamic number: https://red.libssh.org/projects/libssh/files
-Source0: %{name}-%{version}.tar.xz
+Source0: https://red.libssh.org/attachments/download/218/%{name}-%{version}.tar.xz
+Source1: https://red.libssh.org/attachments/download/217/%{name}-%{version}.tar.asc
+Source2: https://cryptomilk.org/0xCC014E3D-asn@cryptomilk.org-gpg_key.asc#/%{name}.k…
Source99: baselibs.conf
BuildRequires: cmake
BuildRequires: doxygen
1
0
Hello community,
here is the log from the commit of package kdepim-addons for openSUSE:Factory checked in at 2017-08-02 11:30:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdepim-addons (Old)
and /work/SRC/openSUSE:Factory/.kdepim-addons.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdepim-addons"
Wed Aug 2 11:30:41 2017 rev:17 rq:513149 version:17.04.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/kdepim-addons/kdepim-addons.changes 2017-07-25 11:28:34.836458208 +0200
+++ /work/SRC/openSUSE:Factory/.kdepim-addons.new/kdepim-addons.changes 2017-08-02 11:30:43.108544812 +0200
@@ -1,0 +2,7 @@
+Sun Jul 30 09:11:58 UTC 2017 - wbauer(a)tmo.at
+
+- Fix saving the AdBlock plugin's settings if
+ ~/.local/share/adblock/ does not exist (boo#1013566)
+ Add fix-saving-adblock-settings.patch
+
+-------------------------------------------------------------------
New:
----
fix-saving-adblock-settings.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdepim-addons.spec ++++++
--- /var/tmp/diff_new_pack.4vaRAs/_old 2017-08-02 11:30:44.020415898 +0200
+++ /var/tmp/diff_new_pack.4vaRAs/_new 2017-08-02 11:30:44.024415332 +0200
@@ -29,6 +29,8 @@
Group: Productivity/Graphics/Other
Url: http://www.kde.org
Source0: %{name}-%{version}.tar.xz
+# PATCH-FIX-UPSTREAM
+Patch: fix-saving-adblock-settings.patch
# It can only build on the same platforms as Qt Webengine
ExclusiveArch: %ix86 x86_64 %arm aarch64 mips mips64
BuildRequires: akonadi-calendar-devel
@@ -85,6 +87,7 @@
%prep
%setup -q
+%patch -p1
%build
%cmake_kf5 -d build
++++++ fix-saving-adblock-settings.patch ++++++
>From 45191cfc8875ba4433ea6f35cbe85db89e703a67 Mon Sep 17 00:00:00 2001
From: Wolfgang Bauer <wbauer(a)tmo.at>
Date: Sun, 30 Jul 2017 10:57:50 +0200
Subject: Create ~/.local/share/adblock/ if it doesn't exist
Otherwise saving manual filters will fail, which will also result in the
general settings (Enable Ad Block, Hide filtered elements, Update
interval) not getting written at all.
Differential Revision: https://phabricator.kde.org/D6980
---
.../adblock/lib/widgets/adblocksettingwidget.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/plugins/webengineurlinterceptor/adblock/lib/widgets/adblocksettingwidget.cpp b/plugins/webengineurlinterceptor/adblock/lib/widgets/adblocksettingwidget.cpp
index 3e9abf2..8e90aae 100644
--- a/plugins/webengineurlinterceptor/adblock/lib/widgets/adblocksettingwidget.cpp
+++ b/plugins/webengineurlinterceptor/adblock/lib/widgets/adblocksettingwidget.cpp
@@ -57,6 +57,7 @@ using namespace PimCommon::ConfigureImmutableWidgetUtils;
#include <QTextStream>
#include <QStandardPaths>
#include <QRegularExpression>
+#include <QDir>
#include <KRun>
using namespace AdBlock;
@@ -289,6 +290,9 @@ void AdBlockSettingWidget::save()
config.deleteGroup(group);
}
+ // make sure the directory exists, otherwise saving the filters will fail
+ QDir().mkpath(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/adblock"));
+
const int numberItem(mUi->automaticFiltersListWidget->count());
for (int i = 0; i < numberItem; ++i) {
QListWidgetItem *subItem = mUi->automaticFiltersListWidget->item(i);
--
cgit v0.11.2
1
0
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2017-08-02 11:28:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Wed Aug 2 11:28:17 2017 rev:39 rq: version:unknown
Wed Aug 2 11:28:17 2017 rev:40 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
_service:product_converter:openSUSE-Addon-Lang-cd-cd-x86_64.kiwi: same change
_service:product_converter:openSUSE-Addon-Lang-release.spec: same change
_service:product_converter:openSUSE-Addon-NonOss-cd-addon-nonoss-i586_x86_64.kiwi: same change
_service:product_converter:openSUSE-Addon-NonOss-ftp-ftp-i586_x86_64.kiwi: same change
_service:product_converter:openSUSE-Addon-NonOss-release.spec: same change
++++++ _service:product_converter:openSUSE-Kubic-dvd5-DVD-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.543851617 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.543851617 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE-Kubic___20170801" schemaversion="4.1">
+<image name="OBS__openSUSE-Kubic___20170802" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -34,9 +34,9 @@
<productvar name="RUN_ISOHYBRID">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20170801</productvar>
+ <productvar name="VERSION">20170802</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-kubic:20170801,openSUSE Kubic</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-kubic:20170802,openSUSE Kubic</productinfo>
<productinfo name="LINGUAS">en_US </productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
++++++ _service:product_converter:openSUSE-Kubic-release.spec ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.571847659 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.579846528 +0200
@@ -20,7 +20,7 @@
Summary: openSUSE Kubic
License: GPL-2.0+
Group: System/Fhs
-Version: 20170801
+Version: 20170802
Release: 0
BuildRequires: skelcd-openSUSE
Recommends: branding
@@ -31,9 +31,9 @@
Provides: %name-%version
Provides: product() = openSUSE-Kubic
-Provides: product(openSUSE-Kubic) = 20170801-0
+Provides: product(openSUSE-Kubic) = 20170802-0
Provides: product-label() = openSUSE%20Kubic
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Dkubic%3A20170801
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Dkubic%3A20170802
Provides: product-url(releasenotes) = https%3A%2F%2Fwww.suse.com%2Freleasenotes%2F%{_target_cpu}%2FSUSE%2DCAASP%2F1.0%2Frelease%2Dnotes%2Dcaasp.rpm
Provides: product-endoflife()
@@ -90,7 +90,7 @@
PRETTY_NAME="openSUSE Kubic"
ID="opensuse-kubic"
ANSI_COLOR="0;32"
-CPE_NAME="cpe:/o:opensuse:opensuse-kubic:20170801"
+CPE_NAME="cpe:/o:opensuse:opensuse-kubic:20170802"
EOF
@@ -100,11 +100,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-Kubic</name>
- <version>20170801</version>
+ <version>20170802</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-kubic:20170801</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-kubic:20170802</cpeid>
<productline>openSUSE-Kubic</productline>
<register>
<target/>
++++++ _service:product_converter:openSUSE-cd-mini-i586.kiwi ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.599843701 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.599843701 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20170801" schemaversion="4.1">
+<image name="OBS__openSUSE___20170802" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -31,9 +31,9 @@
<productvar name="RUN_ISOHYBRID">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20170801</productvar>
+ <productvar name="VERSION">20170802</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170801,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170802,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de en en_GB en_US es fi fr hu it ja nb nl pl pt pt_BR ru sv zh zh_CN zh_TW </productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
_service:product_converter:openSUSE-cd-mini-x86_64.kiwi: same change
_service:product_converter:openSUSE-dvd5-dvd-i586.kiwi: same change
++++++ _service:product_converter:openSUSE-dvd5-dvd-promo-i586.kiwi ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.675832958 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.675832958 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20170801" schemaversion="4.1">
+<image name="OBS__openSUSE___20170802" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -32,9 +32,9 @@
<productvar name="RUN_MEDIA_CHECK">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20170801</productvar>
+ <productvar name="VERSION">20170802</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170801,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170802,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de en en_GB en_US es fi fr hu it ja nb nl pl pt pt_BR ru sv zh zh_CN zh_TW </productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
_service:product_converter:openSUSE-dvd5-dvd-promo-x86_64.kiwi: same change
++++++ _service:product_converter:openSUSE-dvd5-dvd-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.723826173 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.727825607 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20170801" schemaversion="4.1">
+<image name="OBS__openSUSE___20170802" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -34,9 +34,9 @@
<productvar name="RUN_ISOHYBRID">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20170801</productvar>
+ <productvar name="VERSION">20170802</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170801,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170802,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de en en_GB en_US es fi fr hu it ja nb nl pl pt pt_BR ru sv zh zh_CN zh_TW </productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
++++++ _service:product_converter:openSUSE-dvd9-dvd-biarch-i586_x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.767819953 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.767819953 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20170801" schemaversion="4.1">
+<image name="OBS__openSUSE___20170802" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -36,9 +36,9 @@
<productvar name="RUN_MEDIA_CHECK">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20170801</productvar>
+ <productvar name="VERSION">20170802</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170801,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170802,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de en en_GB en_US es fi fr hu it ja nb nl pl pt pt_BR ru sv zh zh_CN zh_TW </productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/suse-tumbleweed</productoption>
++++++ _service:product_converter:openSUSE-ftp-ftp-i586_x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.807814299 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.807814299 +0200
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20170801" schemaversion="4.1">
+<image name="OBS__openSUSE___20170802" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -23,7 +23,7 @@
<productoptions>
<productvar name="DISTNAME">openSUSE</productvar>
<productvar name="FLAVOR">ftp</productvar>
- <productvar name="MEDIUM_NAME">openSUSE-20170801-i586-x86_64</productvar>
+ <productvar name="MEDIUM_NAME">openSUSE-20170802-i586-x86_64</productvar>
<productvar name="MULTIPLE_MEDIA">true</productvar>
<productvar name="PRODUCT_DIR">/</productvar>
<productvar name="PRODUCT_NAME">$DISTNAME-$FLAVOR</productvar>
@@ -34,9 +34,9 @@
<productvar name="REPO_ONLY">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20170801</productvar>
+ <productvar name="VERSION">20170802</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170801,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20170802,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de en en_GB en_US es fi fr hu it ja nb nl pl pt pt_BR ru sv zh zh_CN zh_TW </productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="DEBUGMEDIUM">2</productoption>
++++++ _service:product_converter:openSUSE-release.spec ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:26.851808079 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:26.867805817 +0200
@@ -18,7 +18,7 @@
Name: openSUSE-release
%define product openSUSE
-Version: 20170801
+Version: 20170802
Release: 0
# 0 is the product release, not the build release of this package
Provides: aaa_version
@@ -28,7 +28,7 @@
Obsoletes: aaa_version
Obsoletes: openSUSE-Promo-release <= 11.1
Obsoletes: openSUSE-release-live <= 11.0
-Obsoletes: product_flavor(%{product}) < 20170801
+Obsoletes: product_flavor(%{product}) < 20170802
Conflicts: sles-release <= 10 sled-release <= 10 core-release <= 10
# bnc#826592
Provides: weakremover(kernel-default) < 3.11
@@ -46,7 +46,7 @@
BuildRequires: skelcd-openSUSE
Provides: %name-%version
Provides: product() = openSUSE
-Provides: product(openSUSE) = 20170801-0
+Provides: product(openSUSE) = 20170802-0
%ifarch x86_64
Provides: product-register-target() = openSUSE%2DTumbleweed%2Dx86_64
%endif
@@ -60,7 +60,7 @@
Provides: product-register-target() = openSUSE%2DTumbleweed%2Daarch64
%endif
Provides: product-label() = openSUSE
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20170801
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20170802
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ftumbleweed%2Frepo%2Foss%2F
@@ -8109,10 +8109,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20170801</version>
+ <version>20170802</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse:20170801</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse:20170802</cpeid>
<productline>openSUSE</productline>
<register>
%ifarch x86_64
openSUSE-release.spec: same change
++++++ openSUSE-Kubic.product ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:27.339739097 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:27.339739097 +0200
@@ -6,7 +6,7 @@
<name>openSUSE-Kubic</name>
<releasepkgname>openSUSE-Kubic-release</releasepkgname>
<endoflife/>
- <version>20170801</version>
+ <version>20170802</version>
<!-- release is no longer optional -->
<release>0</release>
<productline>openSUSE-Kubic</productline>
++++++ openSUSE.product ++++++
--- /var/tmp/diff_new_pack.DGQBhc/_old 2017-08-02 11:28:27.367735139 +0200
+++ /var/tmp/diff_new_pack.DGQBhc/_new 2017-08-02 11:28:27.367735139 +0200
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20170801</version>
+ <version>20170802</version>
<release>0</release>
<productline>openSUSE</productline>
1
0
Hello community,
here is the log from the commit of package perl-Minion for openSUSE:Factory checked in at 2017-08-02 11:28:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Minion (Old)
and /work/SRC/openSUSE:Factory/.perl-Minion.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Minion"
Wed Aug 2 11:28:02 2017 rev:28 rq:513793 version:7.04
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Minion/perl-Minion.changes 2017-07-11 08:27:12.587900575 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Minion.new/perl-Minion.changes 2017-08-02 11:28:04.986899277 +0200
@@ -1,0 +2,14 @@
+Wed Aug 2 05:55:12 UTC 2017 - coolo(a)suse.com
+
+- updated to 7.04
+ see /usr/share/doc/packages/perl-Minion/Changes
+
+ 7.04 2017-08-01
+ - Added foreground method to Minion.
+ - Added id option to dequeue methods in Minion::Worker and
+ Minion::Backend::Pg.
+ - Added attempts option to retry and retry_job methods in Minion::Job and
+ Minion::Backend::Pg.
+ - Added -f option to job command.
+
+-------------------------------------------------------------------
Old:
----
Minion-7.03.tar.gz
New:
----
Minion-7.04.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Minion.spec ++++++
--- /var/tmp/diff_new_pack.MJV4s8/_old 2017-08-02 11:28:05.674802023 +0200
+++ /var/tmp/diff_new_pack.MJV4s8/_new 2017-08-02 11:28:05.682800892 +0200
@@ -17,7 +17,7 @@
Name: perl-Minion
-Version: 7.03
+Version: 7.04
Release: 0
%define cpan_name Minion
Summary: Job queue
++++++ Minion-7.03.tar.gz -> Minion-7.04.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/Changes new/Minion-7.04/Changes
--- old/Minion-7.03/Changes 2017-07-06 23:55:07.000000000 +0200
+++ new/Minion-7.04/Changes 2017-08-01 11:50:57.000000000 +0200
@@ -1,4 +1,12 @@
+7.04 2017-08-01
+ - Added foreground method to Minion.
+ - Added id option to dequeue methods in Minion::Worker and
+ Minion::Backend::Pg.
+ - Added attempts option to retry and retry_job methods in Minion::Job and
+ Minion::Backend::Pg.
+ - Added -f option to job command.
+
7.03 2017-07-06
- Updated Mojo::Pg requirement to 4.0.
- Improved Minion::Backend::Pg to support sharing the database connection
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/MANIFEST.SKIP new/Minion-7.04/MANIFEST.SKIP
--- old/Minion-7.03/MANIFEST.SKIP 2017-06-24 15:01:28.000000000 +0200
+++ new/Minion-7.04/MANIFEST.SKIP 2017-07-28 12:05:57.000000000 +0200
@@ -5,3 +5,4 @@
^MYMETA\.
^blib
^pm_to_blib
+\B\.DS_Store
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/META.json new/Minion-7.04/META.json
--- old/Minion-7.03/META.json 2017-07-06 23:56:48.000000000 +0200
+++ new/Minion-7.04/META.json 2017-08-01 15:19:43.000000000 +0200
@@ -54,6 +54,6 @@
},
"x_IRC" : "irc://irc.perl.org/#mojo"
},
- "version" : "7.03",
+ "version" : "7.04",
"x_serialization_backend" : "JSON::PP version 2.94"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/META.yml new/Minion-7.04/META.yml
--- old/Minion-7.03/META.yml 2017-07-06 23:56:48.000000000 +0200
+++ new/Minion-7.04/META.yml 2017-08-01 15:19:43.000000000 +0200
@@ -27,5 +27,5 @@
homepage: http://mojolicious.org
license: http://www.opensource.org/licenses/artistic-license-2.0
repository: https://github.com/kraih/minion.git
-version: '7.03'
+version: '7.04'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/lib/Minion/Backend/Pg.pm new/Minion-7.04/lib/Minion/Backend/Pg.pm
--- old/Minion-7.03/lib/Minion/Backend/Pg.pm 2017-07-06 23:53:19.000000000 +0200
+++ new/Minion-7.04/lib/Minion/Backend/Pg.pm 2017-08-01 11:44:20.000000000 +0200
@@ -180,12 +180,13 @@
return !!$self->pg->db->query(
"update minion_jobs
- set delayed = (now() + (interval '1 second' * ?)),
+ set attempts = coalesce(?, attempts),
+ delayed = (now() + (interval '1 second' * ?)),
priority = coalesce(?, priority), queue = coalesce(?, queue),
retried = now(), retries = retries + 1, state = 'inactive'
where id = ? and retries = ?
- returning 1", $options->{delay} // 0, @$options{qw(priority queue)}, $id,
- $retries
+ returning 1", $options->{attempts}, $options->{delay} // 0,
+ @$options{qw(priority queue)}, $id, $retries
)->rows;
}
@@ -242,16 +243,17 @@
set started = now(), state = 'active', worker = ?
where id = (
select id from minion_jobs as j
- where delayed <= now() and (parents = '{}' or not exists (
- select 1 from minion_jobs
- where id = any (j.parents)
- and state in ('inactive', 'active', 'failed')
- )) and queue = any (?) and state = 'inactive' and task = any (?)
+ where delayed <= now() and id = coalesce(?, id)
+ and (parents = '{}' or not exists (
+ select 1 from minion_jobs
+ where id = any (j.parents)
+ and state in ('inactive', 'active', 'failed')
+ )) and queue = any (?) and state = 'inactive' and task = any (?)
order by priority desc, id
limit 1
for update skip locked
)
- returning id, args, retries, task", $id,
+ returning id, args, retries, task", $id, $options->{id},
$options->{queues} || ['default'], [keys %{$self->minion->tasks}]
)->expand->hash;
}
@@ -331,6 +333,12 @@
=over 2
+=item id
+
+ id => '10023'
+
+Dequeue a specific job.
+
=item queues
queues => ['important']
@@ -689,6 +697,12 @@
=over 2
+=item attempts
+
+ attempts => 25
+
+Number of times performing this job will be attempted.
+
=item delay
delay => 10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/lib/Minion/Backend.pm new/Minion-7.04/lib/Minion/Backend.pm
--- old/Minion-7.03/lib/Minion/Backend.pm 2017-06-25 19:45:15.000000000 +0200
+++ new/Minion-7.04/lib/Minion/Backend.pm 2017-08-01 11:44:46.000000000 +0200
@@ -110,6 +110,12 @@
=over 2
+=item id
+
+ id => '10023'
+
+Dequeue a specific job.
+
=item queues
queues => ['important']
@@ -468,6 +474,12 @@
=over 2
+=item attempts
+
+ attempts => 25
+
+Number of times performing this job will be attempted.
+
=item delay
delay => 10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/lib/Minion/Command/minion/job.pm new/Minion-7.04/lib/Minion/Command/minion/job.pm
--- old/Minion-7.03/lib/Minion/Command/minion/job.pm 2017-06-24 15:01:28.000000000 +0200
+++ new/Minion-7.04/lib/Minion/Command/minion/job.pm 2017-08-01 10:58:41.000000000 +0200
@@ -18,6 +18,7 @@
'b|broadcast=s' => (\my $command),
'd|delay=i' => \$options->{delay},
'e|enqueue=s' => \my $enqueue,
+ 'f|foreground' => \my $foreground,
'l|limit=i' => \(my $limit = 100),
'o|offset=i' => \(my $offset = 0),
'P|parent=s' => ($options->{parents} = []),
@@ -31,11 +32,11 @@
'w|workers' => \my $workers;
# Worker remote control command
- return $self->app->minion->backend->broadcast($command, $args, \@args)
- if $command;
+ my $minion = $self->app->minion;
+ return $minion->backend->broadcast($command, $args, \@args) if $command;
# Enqueue
- return say $self->app->minion->enqueue($enqueue, $args, $options) if $enqueue;
+ return say $minion->enqueue($enqueue, $args, $options) if $enqueue;
# Show stats
return $self->_stats if $stats;
@@ -45,7 +46,7 @@
return $id ? $self->_worker($id) : $self->_list_workers($offset, $limit)
if $workers;
return $self->_list_jobs($offset, $limit, $options) unless defined $id;
- die "Job does not exist.\n" unless my $job = $self->app->minion->job($id);
+ die "Job does not exist.\n" unless my $job = $minion->job($id);
# Remove job
return $job->remove || die "Job is active.\n" if $remove;
@@ -53,6 +54,9 @@
# Retry job
return $job->retry($options) || die "Job is active.\n" if $retry;
+ # Perform job in foreground
+ return $minion->foreground($id) || die "Job is not ready.\n" if $foreground;
+
# Job info
print dumper _datetime($job->info);
}
@@ -100,6 +104,7 @@
./myapp.pl minion job -w
./myapp.pl minion job -w 23
./myapp.pl minion job -s
+ ./myapp.pl minion job -f 10023
./myapp.pl minion job -q important -t foo -S inactive
./myapp.pl minion job -e foo -a '[23, "bar"]'
./myapp.pl minion job -e foo -P 10023 -P 10024 -p 5 -q important
@@ -117,6 +122,9 @@
workers
-d, --delay <seconds> Delay new job for this many seconds
-e, --enqueue <task> New job to be enqueued
+ -f, --foreground Retry job in "minion_foreground" queue and
+ perform it right away in the foreground (very
+ useful for debugging)
-h, --help Show this summary of available options
--home <path> Path to home directory of your application,
defaults to the value of MOJO_HOME or
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/lib/Minion/Command/minion/worker.pm new/Minion-7.04/lib/Minion/Command/minion/worker.pm
--- old/Minion-7.03/lib/Minion/Command/minion/worker.pm 2017-07-06 00:22:50.000000000 +0200
+++ new/Minion-7.04/lib/Minion/Command/minion/worker.pm 2017-07-27 23:12:21.000000000 +0200
@@ -37,10 +37,12 @@
stop => sub { $self->{jobs}{$_[1]}->stop if $self->{jobs}{$_[1] // ''} });
# Log fatal errors
- $app->log->debug("Worker $$ started");
+ my $log = $app->log;
+ $log->info("Worker $$ started");
eval { $self->_work until $self->{finished} && !keys %{$self->{jobs}}; 1 }
- or $app->log->fatal("Worker error: $@");
+ or $log->fatal("Worker error: $@");
$worker->unregister;
+ $log->info("Worker $$ stopped");
}
sub _work {
@@ -59,9 +61,10 @@
if ($self->{last_command} + $status->{command_interval}) < steady_time;
# Repair in regular intervals (randomize to avoid congestion)
+ my $app = $self->app;
+ my $log = $app->log;
if (($self->{last_repair} + $status->{repair_interval}) < steady_time) {
- my $app = $self->app;
- $app->log->debug('Checking worker registry and job queue');
+ $log->debug('Checking worker registry and job queue');
$app->minion->repair;
$self->{last_repair} = steady_time;
}
@@ -78,8 +81,7 @@
elsif (my $job = $worker->dequeue(5 => {queues => $status->{queues}})) {
$jobs->{my $id = $job->id} = $job->start;
my ($pid, $task) = ($job->pid, $job->task);
- $self->app->log->debug(
- qq{Performing job "$id" with task "$task" in process $pid});
+ $log->debug(qq{Process $pid is performing job "$id" with task "$task"});
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/lib/Minion/Job.pm new/Minion-7.04/lib/Minion/Job.pm
--- old/Minion-7.03/lib/Minion/Job.pm 2017-06-25 20:14:47.000000000 +0200
+++ new/Minion-7.04/lib/Minion/Job.pm 2017-08-01 11:46:27.000000000 +0200
@@ -55,19 +55,27 @@
return $self->emit(spawn => $pid) if $self->{pid} = $pid;
# Child
- eval {
+ $self->_run;
+ POSIX::_exit(0);
+}
+
+sub stop { kill 'KILL', shift->{pid} }
+
+sub _run {
+ my $self = shift;
+
+ return 1 if eval {
# Reset event loop
Mojo::IOLoop->reset;
$self->minion->tasks->{$self->emit('start')->task}->($self, @{$self->args});
1;
- } or $self->fail($@);
- POSIX::_exit(0);
+ };
+ $self->fail($@);
+ return undef;
}
-sub stop { kill 'KILL', shift->{pid} }
-
1;
=encoding utf8
@@ -397,6 +405,12 @@
=over 2
+=item attempts
+
+ attempts => 25
+
+Number of times performing this job will be attempted.
+
=item delay
delay => 10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/lib/Minion/Worker.pm new/Minion-7.04/lib/Minion/Worker.pm
--- old/Minion-7.03/lib/Minion/Worker.pm 2017-06-24 15:01:28.000000000 +0200
+++ new/Minion-7.04/lib/Minion/Worker.pm 2017-08-01 01:25:58.000000000 +0200
@@ -149,6 +149,12 @@
=over 2
+=item id
+
+ id => '10023'
+
+Dequeue a specific job.
+
=item queues
queues => ['important']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/lib/Minion.pm new/Minion-7.04/lib/Minion.pm
--- old/Minion-7.03/lib/Minion.pm 2017-07-06 20:08:57.000000000 +0200
+++ new/Minion-7.04/lib/Minion.pm 2017-08-01 15:18:17.000000000 +0200
@@ -16,7 +16,7 @@
has remove_after => 172800;
has tasks => sub { {} };
-our $VERSION = '7.03';
+our $VERSION = '7.04';
sub add_task { ($_[0]->tasks->{$_[1]} = $_[2]) and return $_[0] }
@@ -27,6 +27,21 @@
return $id;
}
+sub foreground {
+ my ($self, $id) = @_;
+
+ return undef unless my $job = $self->job($id);
+ return undef
+ unless $job->retry({attempts => 1, queue => 'minion_foreground'});
+
+ my $worker = $self->worker->register;
+ $job = $worker->dequeue(0 => {id => $id, queues => ['minion_foreground']});
+ $job->_run and $job->finish if $job;
+ $worker->unregister;
+
+ return !!$job;
+}
+
sub job {
my ($self, $id) = @_;
@@ -394,6 +409,13 @@
=back
+=head2 foreground
+
+ my $bool = $minion->foreground($id);
+
+Retry job in C<minion_foreground> queue, then perform it right away with a
+temporary worker in this process, very useful for debugging.
+
=head2 job
my $job = $minion->job($id);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-7.03/t/pg.t new/Minion-7.04/t/pg.t
--- old/Minion-7.03/t/pg.t 2017-06-25 19:45:35.000000000 +0200
+++ new/Minion-7.04/t/pg.t 2017-08-01 11:56:53.000000000 +0200
@@ -562,19 +562,29 @@
is $job->id, $id, 'right id';
is $job->retries, 0, 'job has not been retried';
$job->perform;
-is $job->info->{attempts}, 2, 'job will be attempted twice';
-is $job->info->{state}, 'inactive', 'right state';
-is $job->info->{result}, 'Non-zero exit status (1)', 'right result';
-ok $job->info->{retried} < $job->info->{delayed}, 'delayed timestamp';
+$info = $job->info;
+is $info->{attempts}, 2, 'job will be attempted twice';
+is $info->{state}, 'inactive', 'right state';
+is $info->{result}, 'Non-zero exit status (1)', 'right result';
+ok $info->{retried} < $job->info->{delayed}, 'delayed timestamp';
$minion->backend->pg->db->query(
'update minion_jobs set delayed = now() where id = ?', $id);
$job = $worker->register->dequeue(0);
is $job->id, $id, 'right id';
is $job->retries, 1, 'job has been retried once';
$job->perform;
-is $job->info->{attempts}, 2, 'job will be attempted twice';
-is $job->info->{state}, 'failed', 'right state';
-is $job->info->{result}, 'Non-zero exit status (1)', 'right result';
+$info = $job->info;
+is $info->{attempts}, 2, 'job will be attempted twice';
+is $info->{state}, 'failed', 'right state';
+is $info->{result}, 'Non-zero exit status (1)', 'right result';
+ok $job->retry({attempts => 3}), 'job retried';
+$job = $worker->register->dequeue(0);
+is $job->id, $id, 'right id';
+$job->perform;
+$info = $job->info;
+is $info->{attempts}, 3, 'job will be attempted three times';
+is $info->{state}, 'failed', 'right state';
+is $info->{result}, 'Non-zero exit status (1)', 'right result';
$worker->unregister;
# Multiple attempts during maintenance
@@ -701,6 +711,40 @@
ok $job->finish, 'job finished';
$worker->unregister;
+# Foreground
+$id = $minion->enqueue(test => [] => {attempts => 2});
+$id2 = $minion->enqueue('test');
+$id3 = $minion->enqueue(test => [] => {parents => [$id, $id2]});
+ok !$minion->foreground($id3 + 1), 'job does not exist';
+ok !$minion->foreground($id3), 'job is not ready yet';
+$info = $minion->job($id)->info;
+is $info->{attempts}, 2, 'job will be attempted twice';
+is $info->{state}, 'inactive', 'right state';
+is $info->{queue}, 'default', 'right queue';
+ok $minion->foreground($id), 'performed first job';
+$info = $minion->job($id)->info;
+is $info->{attempts}, 1, 'job will be attempted once';
+is $info->{retries}, 1, 'job has been retried';
+is $info->{state}, 'finished', 'right state';
+is $info->{queue}, 'minion_foreground', 'right queue';
+ok $minion->foreground($id2), 'performed second job';
+$info = $minion->job($id2)->info;
+is $info->{retries}, 1, 'job has been retried';
+is $info->{state}, 'finished', 'right state';
+is $info->{queue}, 'minion_foreground', 'right queue';
+ok $minion->foreground($id3), 'performed third job';
+$info = $minion->job($id3)->info;
+is $info->{retries}, 2, 'job has been retried twice';
+is $info->{state}, 'finished', 'right state';
+is $info->{queue}, 'minion_foreground', 'right queue';
+$id = $minion->enqueue('fail');
+$minion->foreground($id);
+$info = $minion->job($id)->info;
+is $info->{retries}, 1, 'job has been retried';
+is $info->{state}, 'failed', 'right state';
+is $info->{queue}, 'minion_foreground', 'right queue';
+is $info->{result}, "Intentional failure!\n", 'right result';
+
# Worker remote control commands
$worker = $minion->worker->register->process_commands;
$worker2 = $minion->worker->register;
1
0
Hello community,
here is the log from the commit of package adapta-gtk-theme for openSUSE:Factory checked in at 2017-08-02 11:27:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/adapta-gtk-theme (Old)
and /work/SRC/openSUSE:Factory/.adapta-gtk-theme.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "adapta-gtk-theme"
Wed Aug 2 11:27:59 2017 rev:3 rq:513741 version:3.91.1.29
Changes:
--------
--- /work/SRC/openSUSE:Factory/adapta-gtk-theme/adapta-gtk-theme.changes 2017-07-26 13:04:58.052869027 +0200
+++ /work/SRC/openSUSE:Factory/.adapta-gtk-theme.new/adapta-gtk-theme.changes 2017-08-02 11:28:02.715220441 +0200
@@ -1,0 +2,8 @@
+Tue Aug 1 19:51:39 UTC 2017 - matthias.eliasson(a)gmail.com
+
+- Version bump to 3.91.1.29
+ * Added some missing styling in Gnome-Builder's 'Preferences' stack (Gtk+ 3.22/4.0)
+ * Unset GtkButton inner-border from Xfce4-panel's buttons (Gtk+ 2.0)
+ * Reduced GtkButton's inner-border values in GtkToolBar's flat-buttons (Gtk+ 2.0)
+
+-------------------------------------------------------------------
Old:
----
adapta-gtk-theme-3.91.1.1.tar.gz
New:
----
adapta-gtk-theme-3.91.1.29.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ adapta-gtk-theme.spec ++++++
--- /var/tmp/diff_new_pack.VP4uiR/_old 2017-08-02 11:28:03.227148066 +0200
+++ /var/tmp/diff_new_pack.VP4uiR/_new 2017-08-02 11:28:03.231147501 +0200
@@ -21,7 +21,7 @@
%define gtk3_min_version 3.18
%define gtk2_min_version 2.24
Name: adapta-gtk-theme
-Version: 3.91.1.1
+Version: 3.91.1.29
Release: 0
Summary: An adaptive Gtk+ theme based on Material Design Guidelines
License: GPL-2.0 AND CC-BY-SA-4.0
++++++ adapta-gtk-theme-3.91.1.1.tar.gz -> adapta-gtk-theme-3.91.1.29.tar.gz ++++++
++++ 3201 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-relatorio for openSUSE:Factory checked in at 2017-08-02 11:27:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-relatorio (Old)
and /work/SRC/openSUSE:Factory/.python-relatorio.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-relatorio"
Wed Aug 2 11:27:53 2017 rev:3 rq:513733 version:0.7.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-relatorio/python-relatorio.changes 2017-04-20 20:48:56.724971168 +0200
+++ /work/SRC/openSUSE:Factory/.python-relatorio.new/python-relatorio.changes 2017-08-02 11:27:54.172428201 +0200
@@ -1,0 +2,8 @@
+Sun Jul 30 18:53:12 UTC 2017 - axel.braun(a)gmx.de
+
+- Version 0.7.0
+ * Replace hard-coded extensions by mimetypes guess
+ * Add more guess types: 'boolean', 'date', 'time' and 'void'
+ * Add support for Flat OpenDocument
+
+-------------------------------------------------------------------
Old:
----
relatorio-0.6.4.tar.gz
New:
----
relatorio-0.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-relatorio.spec ++++++
--- /var/tmp/diff_new_pack.eHgWlA/_old 2017-08-02 11:27:54.840333775 +0200
+++ /var/tmp/diff_new_pack.eHgWlA/_new 2017-08-02 11:27:54.844333209 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-relatorio
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2016 Dr. Axel Braun
#
# All modifications and additions to the file contributed by third parties
@@ -16,21 +16,22 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define mod_name relatorio
Name: python-relatorio
-Version: 0.6.4
+Version: 0.7.0
Release: 0
Summary: Python module to create reports from Python objects
License: GPL-3.0+
Group: Productivity/Office/Management
Url: https://pypi.python.org/pypi/relatorio
Source: https://pypi.io/packages/source/r/%{mod_name}/%{mod_name}-%{version}.tar.gz
-BuildRequires: python-rpm-macros
BuildRequires: %{python_module Genshi}
BuildRequires: %{python_module lxml}
BuildRequires: %{python_module setuptools}
+BuildRequires: python-rpm-macros
Requires: python-PyYAML
Requires: python-pycha
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -56,3 +57,4 @@
%doc README AUTHORS LICENSE
%{python_sitelib}/*
+%changelog
++++++ relatorio-0.6.4.tar.gz -> relatorio-0.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/CHANGES new/relatorio-0.7.0/CHANGES
--- old/relatorio-0.6.4/CHANGES 2016-12-18 14:32:18.000000000 +0100
+++ new/relatorio-0.7.0/CHANGES 2017-07-29 18:57:56.000000000 +0200
@@ -1,3 +1,8 @@
+0.7.0 - 20170729
+* Replace hard-coded extensions by mimetypes guess
+* Add more guess types: 'boolean', 'date', 'time' and 'void'
+* Add support for Flat OpenDocument
+
0.6.4 - 20161218
* Use StringIO instead of BytesIO for TextSerializer result
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/PKG-INFO new/relatorio-0.7.0/PKG-INFO
--- old/relatorio-0.6.4/PKG-INFO 2016-12-18 14:33:43.000000000 +0100
+++ new/relatorio-0.7.0/PKG-INFO 2017-07-29 19:00:04.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: relatorio
-Version: 0.6.4
+Version: 0.7.0
Summary: A templating library able to output odt and pdf files
Home-page: http://relatorio.tryton.org/
Author: Cedric Krier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/doc/conf.py new/relatorio-0.7.0/doc/conf.py
--- old/relatorio-0.6.4/doc/conf.py 2015-06-24 12:26:14.000000000 +0200
+++ new/relatorio-0.7.0/doc/conf.py 2017-07-13 17:27:10.000000000 +0200
@@ -48,9 +48,9 @@
# built documents.
#
# The short X.Y version.
-version = '0.6'
+version = '0.7'
# The full version, including alpha/beta/rc tags.
-release = '0.6.2'
+release = '0.7.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/doc/indepthexample.rst new/relatorio-0.7.0/doc/indepthexample.rst
--- old/relatorio-0.6.4/doc/indepthexample.rst 2015-06-24 13:25:53.000000000 +0200
+++ new/relatorio-0.7.0/doc/indepthexample.rst 2017-07-13 17:27:10.000000000 +0200
@@ -25,7 +25,7 @@
from relatorio.templates.opendocument import Template
- basic = Template(source=None, filepath='basic.odt')
+ basic = Template(source='', filepath='basic.odt')
file('bonham_basic.odt', 'wb').write(basic.generate(o=inv).render().getvalue())
Notice that the dictionary passed to `generate` is used to bind names to make
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/doc/quickexample.rst new/relatorio-0.7.0/doc/quickexample.rst
--- old/relatorio-0.6.4/doc/quickexample.rst 2015-06-24 13:27:53.000000000 +0200
+++ new/relatorio-0.7.0/doc/quickexample.rst 2017-07-13 17:27:10.000000000 +0200
@@ -35,7 +35,7 @@
from relatorio.templates.opendocument import Template
from data import bonham_invoice
- basic = Template(source=None, filepath='basic.odt')
+ basic = Template(source='', filepath='basic.odt')
basic_generated = basic.generate(o=bonham_invoice).render()
file('bonham_basic.odt', 'wb').write(basic_generated.getvalue())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/relatorio/__init__.py new/relatorio-0.7.0/relatorio/__init__.py
--- old/relatorio-0.6.4/relatorio/__init__.py 2016-06-29 23:16:51.000000000 +0200
+++ new/relatorio-0.7.0/relatorio/__init__.py 2017-07-13 17:27:10.000000000 +0200
@@ -12,5 +12,5 @@
from .reporting import MIMETemplateLoader, ReportRepository, Report
from . import templates
-__version__ = '0.6.4'
+__version__ = '0.7.0'
__all__ = ['MIMETemplateLoader', 'ReportRepository', 'Report', 'templates']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/relatorio/templates/opendocument.py new/relatorio-0.7.0/relatorio/templates/opendocument.py
--- old/relatorio-0.6.4/relatorio/templates/opendocument.py 2016-08-25 11:41:32.000000000 +0200
+++ new/relatorio-0.7.0/relatorio/templates/opendocument.py 2017-07-13 17:32:06.000000000 +0200
@@ -1,6 +1,6 @@
###############################################################################
#
-# Copyright (c) 2009-2014 Cedric Krier.
+# Copyright (c) 2009-2017 Cedric Krier.
# Copyright (c) 2007, 2008 OpenHex SPRL. (http://openhex.com) All Rights
# Reserved.
#
@@ -28,6 +28,8 @@
except ImportError:
from md5 import md5
+import base64
+import mimetypes
import time
import urllib
import zipfile
@@ -74,14 +76,6 @@
'with',
]
-EXTENSIONS = {'image/png': 'png',
- 'image/jpeg': 'jpg',
- 'image/bmp': 'bmp',
- 'image/gif': 'gif',
- 'image/tiff': 'tif',
- 'image/xbm': 'xbm',
- }
-
RELATORIO_URI = 'relatorio'
GENSHI_URI = 'http://genshi.edgewall.org/'
MANIFEST = 'META-INF/manifest.xml'
@@ -109,12 +103,6 @@
# parent node defines it. Unfortunately, lxml doesn't support this:
# the nsmap attribute of Element objects is (currently) readonly.
-def guess_type(val):
- if isinstance(val, (str, unicode)):
- return 'string'
- elif isinstance(val, (int, float, long, Decimal)):
- return 'float'
-
class OOTemplateError(genshi.template.base.TemplateSyntaxError):
"Error to raise when there is a SyntaxError in the genshi template"
@@ -139,7 +127,8 @@
bitstream.seek(0)
file_content = bitstream.read()
name = md5(file_content).hexdigest()
- path = 'Pictures/%s.%s' % (name, EXTENSIONS[mimetype])
+ path = 'Pictures/%s%s' % (
+ name, mimetypes.guess_extension(mimetype))
if path not in self.zip.namelist():
self.zip.writestr(path, file_content)
self.manifest.add_file_entry(path, mimetype)
@@ -266,7 +255,7 @@
source = self.filepath
self._source = source
self.filepath = None # Prevent zip content in traceback
- zf = zipfile.ZipFile(source)
+ zf = get_zip_file(source)
content = zf.read('content.xml')
styles = zf.read('styles.xml')
@@ -408,13 +397,6 @@
table_row_tag = '{%s}table-row' % table_namespace
table_cell_tag = '{%s}table-cell' % table_namespace
- office_name = '{%s}value' % self.namespaces['office']
- office_valuetype = '{%s}value-type' % self.namespaces['office']
- if 'calcext' in self.namespaces:
- calcext_valuetype = '{%s}value-type' % self.namespaces['calcext']
- else:
- calcext_valuetype = None
-
py_replace = '{%s}replace' % GENSHI_URI
r_statements, closing_tags = self._relatorio_statements(tree)
@@ -492,8 +474,12 @@
r_node.getparent().remove(r_node)
else:
# It's not a genshi statement it's a python expression
- parent = r_node.getparent().getparent()
- if parent is None or parent.tag != table_cell_tag:
+ parent = r_node.getparent()
+ grand_parent = parent.getparent()
+ # Guess type only if it is the only value in the cell
+ if (grand_parent is None
+ or grand_parent.tag != table_cell_tag
+ ) or len(parent) != 1:
r_node.attrib[py_replace] = expr
continue
@@ -502,20 +488,9 @@
cache_id)
# The grand-parent tag is a table cell we should set the
# correct value and type for this cell.
- dico = ("{'%s': __relatorio_store_cache(%s, %s), "
- "'%s': __relatorio_guess_type("
- "__relatorio_get_cache(%s))}")
- update_py_attrs(parent, dico %
- (office_name, cache_id, expr, office_valuetype,
- cache_id))
- parent.attrib.pop(office_valuetype, None)
- parent.attrib.pop(office_name, None)
- if (calcext_valuetype and
- parent.attrib.pop(calcext_valuetype, None)):
- update_py_attrs(parent,
- "{'%s': __relatorio_guess_type("
- "__relatorio_get_cache(%s))}" %
- (calcext_valuetype, cache_id))
+ dico = ('__relatorio_guess_type('
+ '__relatorio_store_cache(%s, %s))')
+ update_py_attrs(parent, dico % (cache_id, expr))
def _handle_column_loops(self, statement, ancestor, opening,
outer_o_node, outer_c_node):
@@ -741,6 +716,41 @@
if element.text:
element.text = element.text.replace(PREFIX, PREFIX * 2)
+ def _guess_type(self, val):
+ office_namespace = self.namespaces['office']
+ types = {'boolean': '{%s}boolean-value' % office_namespace,
+ 'currency': '{%s}currency' % office_namespace,
+ 'date': '{%s}date-value' % office_namespace,
+ 'float': '{%s}value' % office_namespace,
+ 'percentage': '{%s}value' % office_namespace,
+ 'string': '{%s}string-value' % office_namespace,
+ 'time': '{%s}time-value' % office_namespace,
+ 'void': '{%s}value' % office_namespace,
+ }
+ attrs = dict.fromkeys(types)
+ # Missing base type for currency and percentage
+ if isinstance(val, bool):
+ type_ = 'boolean'
+ val = str(val).lower()
+ elif isinstance(val, datetime.date):
+ type_ = 'date'
+ val = val.date()
+ elif isinstance(val, (int, float, long, Decimal)):
+ type_ = 'float'
+ elif isinstance(val, basestring):
+ type_ = 'string'
+ elif isinstance(val, datetime.timedelta):
+ type_ = 'time'
+ val = 'P%sD%sS' % (val.days, val.seconds)
+ else:
+ type_ = 'void'
+ val = None
+ attrs[types[type_]] = val
+ attrs['{%s}value-type' % office_namespace] = type_
+ if 'calcext' in self.namespaces:
+ attrs['{%s}value-type' % self.namespaces['calcext']] = type_
+ return attrs
+
def generate(self, *args, **kwargs):
"creates the RelatorioStream."
serializer = OOSerializer(self._source)
@@ -748,7 +758,7 @@
serializer.manifest,
kwargs)
kwargs['__relatorio_make_dimension'] = ImageDimension(self.namespaces)
- kwargs['__relatorio_guess_type'] = guess_type
+ kwargs['__relatorio_guess_type'] = self._guess_type
counter = ColumnCounter()
kwargs['__relatorio_reset_col_count'] = counter.reset
@@ -800,6 +810,85 @@
yield mark, (kind, data, pos)
+def get_zip_file(source):
+ try:
+ return zipfile.ZipFile(source)
+ except zipfile.BadZipfile:
+ # ZipFile modify the position
+ if hasattr(source, 'seek'):
+ source.seek(0)
+ return zipfile.ZipFile(fod2od(source))
+
+
+def fod2od(source):
+ "Convert Flat OpenDocument to OpenDocument"
+ odt_io = BytesIO()
+ odt_zip = zipfile.ZipFile(odt_io, mode='w')
+ fodt_tree = lxml.etree.parse(source)
+ fodt_root = fodt_tree.getroot()
+ office_ns = fodt_root.nsmap['office']
+ tag2files = {
+ '{%s}meta' % office_ns: ['meta'],
+ '{%s}settings' % office_ns: ['settings'],
+ '{%s}scripts' % office_ns: ['content'],
+ '{%s}font-face-decls' % office_ns: ['content', 'styles'],
+ '{%s}styles' % office_ns: ['styles'],
+ '{%s}automatic-styles' % office_ns: ['content', 'styles'],
+ '{%s}master-styles' % office_ns: ['styles'],
+ '{%s}body' % office_ns: ['content'],
+ }
+ mimetype = fodt_root.attrib['{%s}mimetype' % office_ns]
+ documents = {}
+ images = []
+ for child in fodt_root:
+ for fname in tag2files[child.tag]:
+ document = documents.get(fname)
+ if document is None:
+ document = lxml.etree.Element(
+ '{%s}document-%s' % (office_ns, fname),
+ nsmap=fodt_root.nsmap)
+ documents[fname] = document
+ child = deepcopy(child)
+ images.extend(extract_images(
+ child, fodt_root.nsmap, start=len(images)))
+ document.append(child)
+ manifest = Manifest(b'''<?xml version="1.0" encoding="UTF-8"?>
+ <manifest:manifest
+ xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"/>
+ ''')
+ manifest.add_file_entry('/', mimetype)
+ for fname, document in documents.iteritems():
+ document_string = lxml.etree.tostring(document, encoding='UTF-8',
+ xml_declaration=True)
+ odt_zip.writestr('%s.xml' % fname, document_string)
+ manifest.add_file_entry('%s.xml' % fname, 'text/xml')
+ for fname, data, mime_type in images:
+ odt_zip.writestr(fname, data)
+ manifest.add_file_entry(fname, mime_type)
+ odt_zip.writestr(MANIFEST, str(manifest))
+ odt_zip.writestr('mimetype', mimetype)
+ return odt_io
+
+
+def extract_images(child, namespaces, start=0):
+ "Extract draw:image with binary-data and replace by href"
+ import magic
+ images = []
+ for i, image in enumerate(
+ child.xpath('//draw:image', namespaces=namespaces), start):
+ binary_data, = image.xpath(
+ './office:binary-data', namespaces=namespaces)
+ data = base64.b64decode(binary_data.text)
+ mime_type = magic.from_buffer(data, mime=True)
+ name = 'Pictures/image%s%s' % (
+ i, mimetypes.guess_extension(mime_type))
+ image.remove(binary_data)
+ xlink_ns = namespaces['xlink']
+ image.attrib['{%s}href' % xlink_ns] = name
+ images.append((name, data, mime_type))
+ return images
+
+
class Manifest(object):
def __init__(self, content):
@@ -882,7 +971,7 @@
class OOSerializer:
def __init__(self, source):
- self.inzip = zipfile.ZipFile(source)
+ self.inzip = get_zip_file(source)
self.manifest = Manifest(self.inzip.read(MANIFEST))
self.meta = Meta(self.inzip.read(META))
self.new_oo = BytesIO()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/relatorio/tests/test.fodt new/relatorio-0.7.0/relatorio/tests/test.fodt
--- old/relatorio-0.6.4/relatorio/tests/test.fodt 1970-01-01 01:00:00.000000000 +0100
+++ new/relatorio-0.7.0/relatorio/tests/test.fodt 2017-07-13 17:27:10.000000000 +0200
@@ -0,0 +1,744 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta>
+ <meta:generator>LibreOffice/5.1.4.2$OpenBSD_X86_64 LibreOffice_project/10m0$Build-2</meta:generator>
+ <meta:creation-date>2007-10-29T16:21:35</meta:creation-date>
+
+ <dc:date>2016-11-01T21:50:57.076430449</dc:date>
+ <dc:language>en-US</dc:language>
+ <meta:editing-cycles>45</meta:editing-cycles>
+ <meta:editing-duration>PT1H1M</meta:editing-duration>
+
+
+
+
+
+ <meta:document-statistic meta:table-count="1" meta:image-count="1" meta:object-count="0" meta:page-count="1" meta:paragraph-count="24" meta:word-count="77" meta:character-count="406" meta:non-whitespace-character-count="361"/><meta:user-defined meta:name="Info 1"/><meta:user-defined meta:name="Info 2"/><meta:user-defined meta:name="Info 3"/><meta:user-defined meta:name="Info 4"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">6985</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">33842</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">15665</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">15404</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">15139</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">6985</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">33840</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">22648</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">true</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1812695</config:config-item>
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1812695</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="StarSymbol" svg:font-family="StarSymbol"/>
+ <style:font-face style:name="Noto Sans Devanagari1" svg:font-family="'Noto Sans Devanagari'" style:font-family-generic="swiss"/>
+ <style:font-face style:name="Bitstream Vera Sans" svg:font-family="'Bitstream Vera Sans'" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Bitstream Vera Sans1" svg:font-family="'Bitstream Vera Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans Devanagari" svg:font-family="'Noto Sans Devanagari'" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="3mm" draw:shadow-offset-y="3mm" draw:start-line-spacing-horizontal="2.83mm" draw:start-line-spacing-vertical="2.83mm" draw:end-line-spacing-horizontal="2.83mm" draw:end-line-spacing-vertical="2.83mm" style:flow-with-text="true"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties fo:color="#000000" style:font-name="Bitstream Vera Sans" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Bitstream Vera Sans1" style:font-size-asian="12pt" style:language-asian="en" style:country-asian="US" style:font-name-complex="Bitstream Vera Sans1" style:font-size-complex="12pt" style:language-complex="en" style:country-complex="US"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="20mm" style:writing-mode="lr-tb"/>
+ <style:text-properties fo:color="#000000" style:font-name="Bitstream Vera Sans" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Bitstream Vera Sans1" style:font-size-asian="12pt" style:language-asian="en" style:country-asian="US" style:font-name-complex="Bitstream Vera Sans1" style:font-size-complex="12pt" style:language-complex="en" style:country-complex="US" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="separating"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="4.23mm" fo:margin-bottom="2.12mm" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="DejaVu Sans" style:font-family-asian="'DejaVu Sans'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Noto Sans Devanagari" style:font-family-complex="'Noto Sans Devanagari'" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0mm" fo:margin-bottom="2.12mm" loext:contextual-spacing="false"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Noto Sans Devanagari1" style:font-family-complex="'Noto Sans Devanagari'" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="2.12mm" fo:margin-bottom="2.12mm" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Noto Sans Devanagari1" style:font-family-complex="'Noto Sans Devanagari'" style:font-family-generic-complex="swiss" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Noto Sans Devanagari1" style:font-family-complex="'Noto Sans Devanagari'" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <style:style style:name="Table_20_Heading" style:display-name="Table Heading" style:family="paragraph" style:parent-style-name="Table_20_Contents" style:class="extra">
+ <style:paragraph-properties fo:text-align="center" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0">
+ <style:tab-stops>
+ <style:tab-stop style:position="-20.02mm" style:type="right"/>
+ <style:tab-stop style:position="-9.98mm" style:type="center"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="extra"/>
+ <style:style style:name="Numbering_20_Symbols" style:display-name="Numbering Symbols" style:family="text"/>
+ <style:style style:name="Bullet_20_Symbols" style:display-name="Bullet Symbols" style:family="text">
+ <style:text-properties style:font-name="StarSymbol" fo:font-family="StarSymbol" fo:font-size="9pt" style:font-name-asian="StarSymbol" style:font-family-asian="StarSymbol" style:font-size-asian="9pt" style:font-name-complex="StarSymbol" style:font-family-complex="StarSymbol" style:font-size-complex="9pt"/>
+ </style:style>
+ <style:style style:name="Placeholder" style:family="text">
+ <style:text-properties fo:font-variant="small-caps" fo:color="#008080" style:text-underline-style="dotted" style:text-underline-width="auto" style:text-underline-color="font-color"/>
+ </style:style>
+ <style:style style:name="Internet_20_link" style:display-name="Internet link" style:family="text">
+ <style:text-properties fo:color="#000080" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/>
+ </style:style>
+ <style:style style:name="Frame" style:family="graphic">
+ <style:graphic-properties text:anchor-type="paragraph" svg:x="0mm" svg:y="0mm" fo:margin-left="2.01mm" fo:margin-right="2.01mm" fo:margin-top="2.01mm" fo:margin-bottom="2.01mm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:padding="1.5mm" fo:border="0.06pt solid #000000"/>
+ </style:style>
+ <style:style style:name="Graphics" style:family="graphic">
+ <style:graphic-properties text:anchor-type="paragraph" svg:x="0mm" svg:y="0mm" style:wrap="dynamic" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:min-label-distance="3.81mm"/>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="4.99mm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Table1" style:family="table">
+ <style:table-properties style:width="103.21mm" table:align="center"/>
+ </style:style>
+ <style:style style:name="Table1.A" style:family="table-column">
+ <style:table-column-properties style:column-width="50.82mm"/>
+ </style:style>
+ <style:style style:name="Table1.B" style:family="table-column">
+ <style:table-column-properties style:column-width="52.39mm"/>
+ </style:style>
+ <style:style style:name="Table1.A1" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0.97mm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
+ </style:style>
+ <style:style style:name="Table1.B1" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0.97mm" fo:border="0.05pt solid #000000"/>
+ </style:style>
+ <style:style style:name="Table1.A2" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0.97mm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
+ </style:style>
+ <style:style style:name="Table1.A3" style:family="table-cell">
+ <style:table-cell-properties fo:padding="0.97mm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Frame_20_contents">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="L1">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="L2">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="P5" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="L3">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text"/>
+ <style:style style:name="T2" style:family="text">
+ <style:text-properties fo:font-weight="normal" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="T3" style:family="text">
+ <style:text-properties fo:font-style="normal" fo:font-weight="normal" fo:background-color="transparent" loext:char-shading-value="0" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-style-complex="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
+ </style:style>
+ <style:style style:name="fr2" style:family="graphic" style:parent-style-name="Frame">
+ <style:graphic-properties style:vertical-pos="top" style:vertical-rel="baseline" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
+ </style:style>
+ <style:style style:name="fr3" style:family="graphic" style:parent-style-name="Graphics">
+ <style:graphic-properties style:wrap="none" style:horizontal-pos="center" style:horizontal-rel="paragraph" style:mirror="none" fo:clip="rect(0mm, 0mm, 0mm, 0mm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
+ </style:style>
+ <text:list-style style:name="L1">
+ <text:list-level-style-bullet text:level="1" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="6.35mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="2" text:style-name="Bullet_20_Symbols" text:bullet-char="○">
+ <style:list-level-properties text:space-before="12.7mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="3" text:style-name="Bullet_20_Symbols" text:bullet-char="■">
+ <style:list-level-properties text:space-before="19.05mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="4" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="25.4mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="5" text:style-name="Bullet_20_Symbols" text:bullet-char="○">
+ <style:list-level-properties text:space-before="31.75mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="6" text:style-name="Bullet_20_Symbols" text:bullet-char="■">
+ <style:list-level-properties text:space-before="38.1mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="7" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="44.45mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="8" text:style-name="Bullet_20_Symbols" text:bullet-char="○">
+ <style:list-level-properties text:space-before="50.8mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="9" text:style-name="Bullet_20_Symbols" text:bullet-char="■">
+ <style:list-level-properties text:space-before="57.15mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="10" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="63.5mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ </text:list-style>
+ <text:list-style style:name="L2">
+ <text:list-level-style-number text:level="1" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="6.35mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="2" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="12.7mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="3" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="19.05mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="4" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="25.4mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="5" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="31.75mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="6" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="38.1mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="7" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="44.45mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="8" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="50.8mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="9" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="57.15mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="10" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:space-before="63.5mm" text:min-label-width="6.35mm"/>
+ </text:list-level-style-number>
+ </text:list-style>
+ <text:list-style style:name="L3">
+ <text:list-level-style-bullet text:level="1" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="6.35mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="2" text:style-name="Bullet_20_Symbols" text:bullet-char="○">
+ <style:list-level-properties text:space-before="12.7mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="3" text:style-name="Bullet_20_Symbols" text:bullet-char="■">
+ <style:list-level-properties text:space-before="19.05mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="4" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="25.4mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="5" text:style-name="Bullet_20_Symbols" text:bullet-char="○">
+ <style:list-level-properties text:space-before="31.75mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="6" text:style-name="Bullet_20_Symbols" text:bullet-char="■">
+ <style:list-level-properties text:space-before="38.1mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="7" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="44.45mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="8" text:style-name="Bullet_20_Symbols" text:bullet-char="○">
+ <style:list-level-properties text:space-before="50.8mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="9" text:style-name="Bullet_20_Symbols" text:bullet-char="■">
+ <style:list-level-properties text:space-before="57.15mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="10" text:style-name="Bullet_20_Symbols" text:bullet-char="●">
+ <style:list-level-properties text:space-before="63.5mm" text:min-label-width="6.35mm"/>
+ <style:text-properties style:font-name="StarSymbol"/>
+ </text:list-level-style-bullet>
+ </text:list-style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="209.99mm" fo:page-height="296.99mm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="20mm" fo:margin-bottom="20mm" fo:margin-left="20mm" fo:margin-right="20mm" style:writing-mode="lr-tb" style:footnote-max-height="0mm">
+ <style:footnote-sep style:width="0.18mm" style:distance-before-sep="1.01mm" style:distance-after-sep="1.01mm" style:line-style="none" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style>
+ <style:header-footer-properties fo:min-height="4.99mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-top="0mm"/>
+ </style:footer-style>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1">
+ <style:footer>
+ <text:p text:style-name="Footer"><text:a xlink:type="simple" xlink:href="relatorio://footer" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">footer</text:a></text:p>
+ </style:footer>
+ </style:master-page>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Standard">Bonjour,</text:p>
+ <text:p text:style-name="Standard">Je suis un test de templating en odt.</text:p>
+ <text:p text:style-name="Standard">Je m'appelle : <text:a xlink:type="simple" xlink:href="relatorio://first_name" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link"><text:span text:style-name="T3">first_name</text:span></text:a><text:span text:style-name="T3"> </text:span><text:span text:style-name="T3"><text:placeholder text:placeholder-type="text"><last_name></text:placeholder></text:span><text:span text:style-name="T2">. J'habite à </text:span><text:span text:style-name="T2"><text:placeholder text:placeholder-type="text"><ville></text:placeholder></text:span><text:span text:style-name="T2">.</text:span></text:p>
+ <text:p text:style-name="Standard"/>
+ <text:p text:style-name="Standard">Mes collègues sont:</text:p>
+ <table:table table:name="Table1" table:style-name="Table1">
+ <table:table-column table:style-name="Table1.A"/>
+ <table:table-column table:style-name="Table1.B"/>
+ <table:table-header-rows>
+ <table:table-row>
+ <table:table-cell table:style-name="Table1.A1" office:value-type="string">
+ <text:p text:style-name="Table_20_Heading">Prénom</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Table1.B1" office:value-type="string">
+ <text:p text:style-name="Table_20_Heading">Nom</text:p>
+ </table:table-cell>
+ </table:table-row>
+ </table:table-header-rows>
+ <table:table-row>
+ <table:table-cell table:style-name="Table1.A2" table:number-columns-spanned="2" office:value-type="string">
+ <text:p text:style-name="Standard"><text:a xlink:type="simple" xlink:href="relatorio://for%20each=%22f%20in%20friends%22" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">for each="f in friends"</text:a></text:p>
+ </table:table-cell>
+ <table:covered-table-cell/>
+ </table:table-row>
+ <table:table-row>
+ <table:table-cell table:style-name="Table1.A3" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:a xlink:type="simple" xlink:href="relatorio://f.first_name" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">f.first_name</text:a></text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="Table1.A2" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:placeholder text:placeholder-type="text"><f.last_name></text:placeholder></text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row>
+ <table:table-cell table:style-name="Table1.A2" table:number-columns-spanned="2" office:value-type="string">
+ <text:p text:style-name="Table_20_Contents"><text:a xlink:type="simple" xlink:href="relatorio:///for" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">/for</text:a></text:p>
+ </table:table-cell>
+ <table:covered-table-cell/>
+ </table:table-row>
+ </table:table>
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P1">J'ai aussi des hobbies:</text:p>
+ <text:list xml:id="list7886922533460062764" text:style-name="L1">
+ <text:list-item>
+ <text:p text:style-name="P3"><text:a xlink:type="simple" xlink:href="relatorio://for%20each=%22h%20in%20hobbies%22" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">for each="h in hobbies"</text:a></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P3"><text:a xlink:type="simple" xlink:href="relatorio://h" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">h</text:a></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P3"><text:a xlink:type="simple" xlink:href="relatorio:///for" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">/for</text:a></text:p>
+ </text:list-item>
+ </text:list>
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P1">Et j'ai même des animaux :</text:p>
+ <text:list xml:id="list8457721859695998066" text:style-name="L2">
+ <text:list-item>
+ <text:p text:style-name="P4"><text:a xlink:type="simple" xlink:href="relatorio://for%20each=%22animal%20in%20animals%22" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">for each="animal in animals"</text:a></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P4"><text:placeholder text:placeholder-type="text"><animal></text:placeholder></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P4"><text:a xlink:type="simple" xlink:href="relatorio:///for" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">/for</text:a></text:p>
+ </text:list-item>
+ </text:list>
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P1">On peut aussi afficher des images:</text:p>
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P1"><draw:frame draw:style-name="fr1" draw:name="image: (oeuf, 'image/png')" text:anchor-type="paragraph" svg:width="20mm" draw:z-index="1">
+ <draw:text-box fo:min-height="4.99mm">
+ <text:p text:style-name="P2"/>
+ </draw:text-box>
+ </draw:frame></text:p>
+ <text:p text:style-name="P1"/>
+ <text:p text:style-name="P1"><draw:frame draw:style-name="fr3" draw:name="Image1" text:anchor-type="paragraph" svg:width="30.32mm" svg:height="44.43mm" draw:z-index="2"><draw:image>
+ <office:binary-data>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
+ </office:binary-data>
+ </draw:image>
+ </draw:frame></text:p>
+ <text:p text:style-name="P1">Et aussi dans des boucles:</text:p>
+ <text:list xml:id="list985105091880368092" text:style-name="L3">
+ <text:list-item>
+ <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="relatorio://for%20each=%22img%20in%20images%22" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">for each="img in images"</text:a></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P5"><draw:frame draw:style-name="fr2" draw:name="image: img" text:anchor-type="as-char" svg:width="17.32mm" svg:height="15.13mm" draw:z-index="0">
+ <draw:text-box>
+ <text:p text:style-name="P2"/>
+ </draw:text-box>
+ </draw:frame></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="relatorio:///for" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">/for</text:a></text:p>
+ </text:list-item>
+ </text:list>
+ </office:text>
+ </office:body>
+</office:document>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/relatorio/tests/test_odt.py new/relatorio-0.7.0/relatorio/tests/test_odt.py
--- old/relatorio-0.6.4/relatorio/tests/test_odt.py 2015-05-08 12:00:11.000000000 +0200
+++ new/relatorio-0.7.0/relatorio/tests/test_odt.py 2017-07-13 17:27:10.000000000 +0200
@@ -1,7 +1,7 @@
# -*- encoding: utf-8 -*-
###############################################################################
#
-# Copyright (c) 2014 Cedric Krier.
+# Copyright (c) 2014-2017 Cedric Krier.
# Copyright (c) 2007, 2008 OpenHex SPRL. (http://openhex.com) All Rights
# Reserved.
#
@@ -31,7 +31,7 @@
from genshi.template.eval import UndefinedError
from relatorio.templates.opendocument import Template, GENSHI_EXPR,\
- GENSHI_URI, RELATORIO_URI
+ GENSHI_URI, RELATORIO_URI, fod2od
OO_TABLE_NS = "urn:oasis:names:tc:opendocument:xmlns:table:1.0"
@@ -59,7 +59,8 @@
def setUp(self):
thisdir = os.path.dirname(__file__)
filepath = os.path.join(thisdir, 'test.odt')
- self.oot = Template(open(filepath, mode='rb'))
+ self._source = open(filepath, mode='rb')
+ self.oot = Template(self._source)
self.data = {'first_name': u'Trente',
'last_name': u'Møller',
'ville': u'Liège',
@@ -76,6 +77,12 @@
'oeuf': open(os.path.join(thisdir, 'egg.jpg'), 'rb'),
'footer': u'We sell stuff'}
+ def tearDown(self):
+ self._source.close()
+ for image in self.data['images']:
+ image[0].close()
+ self.data['oeuf'].close()
+
def test_init(self):
"Testing the correct handling of the styles.xml and content.xml files"
self.assertTrue(isinstance(self.oot.stream, list))
@@ -318,3 +325,17 @@
# another non matching expr
group = GENSHI_EXPR.match('formatLang("en")').groups()
self.assertEqual(group, (None, None, None, None))
+
+ def test_fodt2odt(self):
+ "Testing converter fodt to odt"
+ thisdir = os.path.dirname(__file__)
+ filepath = os.path.join(thisdir, 'test.fodt')
+ fod2od(filepath)
+
+ def test_generate_fod(self):
+ "Testing generate fod"
+ thisdir = os.path.dirname(__file__)
+ filepath = os.path.join(thisdir, 'test.fodt')
+ with open(filepath, mode='rb') as source:
+ oot = Template(source)
+ oot.generate(**self.data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/relatorio.egg-info/PKG-INFO new/relatorio-0.7.0/relatorio.egg-info/PKG-INFO
--- old/relatorio-0.6.4/relatorio.egg-info/PKG-INFO 2016-12-18 14:33:38.000000000 +0100
+++ new/relatorio-0.7.0/relatorio.egg-info/PKG-INFO 2017-07-29 19:00:00.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: relatorio
-Version: 0.6.4
+Version: 0.7.0
Summary: A templating library able to output odt and pdf files
Home-page: http://relatorio.tryton.org/
Author: Cedric Krier
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/relatorio.egg-info/SOURCES.txt new/relatorio-0.7.0/relatorio.egg-info/SOURCES.txt
--- old/relatorio-0.6.4/relatorio.egg-info/SOURCES.txt 2016-12-18 14:33:39.000000000 +0100
+++ new/relatorio-0.7.0/relatorio.egg-info/SOURCES.txt 2017-07-29 19:00:00.000000000 +0200
@@ -37,6 +37,7 @@
relatorio/tests/__init__.py
relatorio/tests/egg.jpg
relatorio/tests/one.jpg
+relatorio/tests/test.fodt
relatorio/tests/test.odt
relatorio/tests/test_api.py
relatorio/tests/test_odt.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/relatorio.egg-info/requires.txt new/relatorio-0.7.0/relatorio.egg-info/requires.txt
--- old/relatorio-0.6.4/relatorio.egg-info/requires.txt 2016-12-18 14:33:38.000000000 +0100
+++ new/relatorio-0.7.0/relatorio.egg-info/requires.txt 2017-07-29 19:00:00.000000000 +0200
@@ -4,3 +4,6 @@
[chart]
pycha >= 0.4.0
pyyaml
+
+[fodt]
+python-magic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/setup.cfg new/relatorio-0.7.0/setup.cfg
--- old/relatorio-0.6.4/setup.cfg 2016-12-18 14:33:43.000000000 +0100
+++ new/relatorio-0.7.0/setup.cfg 2017-07-29 19:00:04.000000000 +0200
@@ -1,5 +1,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/relatorio-0.6.4/setup.py new/relatorio-0.7.0/setup.py
--- old/relatorio-0.6.4/setup.py 2016-06-14 11:45:28.000000000 +0200
+++ new/relatorio-0.7.0/setup.py 2017-07-13 17:27:10.000000000 +0200
@@ -3,6 +3,7 @@
import codecs
from setuptools import setup, find_packages
+
def read(fname):
return codecs.open(
os.path.join(os.path.dirname(__file__), fname), 'r', 'utf-8').read()
@@ -26,7 +27,8 @@
version=get_version(),
packages=find_packages(exclude=['examples']),
package_data={
- 'relatorio.tests': ['*.jpg', '*.odt', '*.png', 'templates/*.tmpl'],
+ 'relatorio.tests': [
+ '*.jpg', '*.odt', '*.fodt', '*.png', 'templates/*.tmpl'],
},
install_requires=[
"Genshi >= 0.5",
@@ -34,6 +36,7 @@
],
extras_require={
'chart': ['pycha >= 0.4.0', 'pyyaml'], # pycairo
+ 'fodt': ['python-magic'],
},
classifiers=[
"Development Status :: 4 - Beta",
@@ -46,4 +49,5 @@
"Topic :: Text Processing",
],
test_suite="relatorio.tests",
+ tests_require=['python-magic'],
use_2to3=True)
1
0
Hello community,
here is the log from the commit of package python-pymod2pkg for openSUSE:Factory checked in at 2017-08-02 11:27:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pymod2pkg (Old)
and /work/SRC/openSUSE:Factory/.python-pymod2pkg.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pymod2pkg"
Wed Aug 2 11:27:50 2017 rev:6 rq:513721 version:0.8.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pymod2pkg/python-pymod2pkg.changes 2017-07-29 09:02:20.916850881 +0200
+++ /work/SRC/openSUSE:Factory/.python-pymod2pkg.new/python-pymod2pkg.changes 2017-08-02 11:27:52.400678687 +0200
@@ -1,0 +2,6 @@
+Tue Aug 1 15:12:14 UTC 2017 - cloud-devel(a)suse.de
+
+- update to version 0.8.3
+ - Add mappings for monasca-transform and monasca-ceilometer
+
+-------------------------------------------------------------------
Old:
----
pymod2pkg-0.8.2.tar.gz
New:
----
pymod2pkg-0.8.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pymod2pkg.spec ++++++
--- /var/tmp/diff_new_pack.673CQQ/_old 2017-08-02 11:27:53.816478525 +0200
+++ /var/tmp/diff_new_pack.673CQQ/_new 2017-08-02 11:27:53.820477959 +0200
@@ -18,7 +18,7 @@
%global sname pymod2pkg
Name: python-pymod2pkg
-Version: 0.8.2
+Version: 0.8.3
Release: 0
Summary: OpenStack Packaging - python module name to package name map
License: Apache-2.0
++++++ pymod2pkg-0.8.2.tar.gz -> pymod2pkg-0.8.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.2/AUTHORS new/pymod2pkg-0.8.3/AUTHORS
--- old/pymod2pkg-0.8.2/AUTHORS 2017-07-27 11:41:29.000000000 +0200
+++ new/pymod2pkg-0.8.3/AUTHORS 2017-07-28 14:16:44.000000000 +0200
@@ -13,6 +13,7 @@
Janonymous <janonymous.codevulture(a)gmail.com>
Javier Pena <jpena(a)redhat.com>
Jeremy Liu <liujiong(a)gohighsec.com>
+Joseph Davis <joseph.davis(a)suse.com>
Ondřej Nový <ondrej.novy(a)firma.seznam.cz>
Stefan Nica <snica(a)suse.com>
Thomas Bechtold <tbechtold(a)suse.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.2/ChangeLog new/pymod2pkg-0.8.3/ChangeLog
--- old/pymod2pkg-0.8.2/ChangeLog 2017-07-27 11:41:29.000000000 +0200
+++ new/pymod2pkg-0.8.3/ChangeLog 2017-07-28 14:16:44.000000000 +0200
@@ -1,11 +1,16 @@
CHANGES
=======
+0.8.3
+-----
+
+
0.8.2
-----
* Update home-page according to doc migration
* Add RDO and SUSE mappings for karbor
+* Add mappings for monasca-transform and monasca-ceilometer
0.8.1
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.2/PKG-INFO new/pymod2pkg-0.8.3/PKG-INFO
--- old/pymod2pkg-0.8.2/PKG-INFO 2017-07-27 11:41:30.000000000 +0200
+++ new/pymod2pkg-0.8.3/PKG-INFO 2017-07-28 14:16:44.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pymod2pkg
-Version: 0.8.2
+Version: 0.8.3
Summary: python module name to package name map
Home-page: https://docs.openstack.org/pymod2pkg/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.2/pymod2pkg/__init__.py new/pymod2pkg-0.8.3/pymod2pkg/__init__.py
--- old/pymod2pkg-0.8.2/pymod2pkg/__init__.py 2017-07-27 11:40:03.000000000 +0200
+++ new/pymod2pkg-0.8.3/pymod2pkg/__init__.py 2017-07-28 14:15:19.000000000 +0200
@@ -137,11 +137,11 @@
'ironic', 'ironic-discoverd', 'ironic-inspector',
'ironic-python-agent', 'karbor', 'keystone', 'magnum', 'manila',
'masakari', 'masakari-monitors', 'mistral', 'monasca-agent',
- 'monasca-api', 'monasca-log-api', 'monasca-notification',
- 'monasca-persister', 'murano', 'neutron', 'neutron-fwaas',
- 'neutron-lbaas', 'neutron-vpnaas', 'nova', 'octavia', 'rally',
- 'sahara', 'swift', 'Tempest', 'trove', 'tuskar',
- 'vitrage', 'zaqar'],
+ 'monasca-api', 'monasca-ceilometer', 'monasca-log-api',
+ 'monasca-notification', 'monasca-persister', 'monasca-transform',
+ 'murano', 'neutron', 'neutron-fwaas', 'neutron-lbaas',
+ 'neutron-vpnaas', 'nova', 'octavia', 'rally', 'sahara', 'swift',
+ 'Tempest', 'trove', 'tuskar', 'vitrage', 'zaqar'],
pkgfun=openstack_prefix_tr),
# Horizon plugins (normalized to openstack-<project>-ui)
RegexRule(pattern=r'\w+-(dashboard|ui)', pkgfun=rdo_horizon_plugins_tr),
@@ -163,10 +163,10 @@
mods=['ceilometer', 'cinder', 'designate', 'glance',
'heat', 'ironic', 'karbor', 'keystone', 'manila', 'masakari',
'masakari-monitors', 'mistral',
- 'monasca-agent', 'monasca-api', 'monasca-log-api',
- 'monasca-notification', 'monasca-persister',
- 'neutron', 'nova', 'rally', 'sahara', 'swift',
- 'Tempest', 'trove', 'tuskar', 'zaqar'],
+ 'monasca-agent', 'monasca-api', 'monasca-ceilometer',
+ 'monasca-log-api', 'monasca-notification', 'monasca-persister',
+ 'monasca-transform', 'neutron', 'nova', 'rally', 'sahara',
+ 'swift', 'Tempest', 'trove', 'tuskar', 'zaqar'],
pkgfun=openstack_prefix_tr),
# OpenStack clients
MultiRule(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.2/pymod2pkg.egg-info/PKG-INFO new/pymod2pkg-0.8.3/pymod2pkg.egg-info/PKG-INFO
--- old/pymod2pkg-0.8.2/pymod2pkg.egg-info/PKG-INFO 2017-07-27 11:41:29.000000000 +0200
+++ new/pymod2pkg-0.8.3/pymod2pkg.egg-info/PKG-INFO 2017-07-28 14:16:44.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: pymod2pkg
-Version: 0.8.2
+Version: 0.8.3
Summary: python module name to package name map
Home-page: https://docs.openstack.org/pymod2pkg/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.2/pymod2pkg.egg-info/pbr.json new/pymod2pkg-0.8.3/pymod2pkg.egg-info/pbr.json
--- old/pymod2pkg-0.8.2/pymod2pkg.egg-info/pbr.json 2017-07-27 11:41:29.000000000 +0200
+++ new/pymod2pkg-0.8.3/pymod2pkg.egg-info/pbr.json 2017-07-28 14:16:44.000000000 +0200
@@ -1 +1 @@
-{"git_version": "4dbe2ab", "is_release": true}
\ No newline at end of file
+{"git_version": "f1b4a9c", "is_release": true}
\ No newline at end of file
1
0