openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2016
- 1 participants
- 1722 discussions
Hello community,
here is the log from the commit of package enigmail for openSUSE:Factory checked in at 2016-05-04 08:20:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/enigmail (Old)
and /work/SRC/openSUSE:Factory/.enigmail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "enigmail"
Changes:
--------
--- /work/SRC/openSUSE:Factory/enigmail/enigmail.changes 2016-04-11 10:26:26.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.enigmail.new/enigmail.changes 2016-05-04 08:20:21.000000000 +0200
@@ -1,0 +2,11 @@
+Tue May 3 08:08:26 UTC 2016 - astieger(a)suse.com
+
+- enigmail 1.9.2:
+ * Add support for Zimbra OpenPGP encrypted messages
+ * Fix decrypt loop with S/MIME signed mails
+ * Fix silently failing import of revocation certificate
+ * Fix E-Mail saved as draft and reopened will show empty message
+ * Fix multipart/signed mail without micalg parameter blank body
+ * Fix display of changed key expiration date
+
+-------------------------------------------------------------------
Old:
----
enigmail-1.9.1.tar.gz
enigmail-1.9.1.tar.gz.asc
New:
----
enigmail-1.9.2.tar.gz
enigmail-1.9.2.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ enigmail.spec ++++++
--- /var/tmp/diff_new_pack.LDgWHa/_old 2016-05-04 08:20:22.000000000 +0200
+++ /var/tmp/diff_new_pack.LDgWHa/_new 2016-05-04 08:20:22.000000000 +0200
@@ -18,7 +18,7 @@
Name: enigmail
-Version: 1.9.1
+Version: 1.9.2
Release: 0
Summary: OpenPGP addon for Thunderbird and SeaMonkey
License: MPL-1.1 or GPL-2.0+
++++++ enigmail-1.9.1.tar.gz -> enigmail-1.9.2.tar.gz ++++++
++++ 2106 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package armadillo for openSUSE:Factory checked in at 2016-05-04 08:20:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/armadillo (Old)
and /work/SRC/openSUSE:Factory/.armadillo.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "armadillo"
Changes:
--------
--- /work/SRC/openSUSE:Factory/armadillo/armadillo.changes 2016-04-28 17:02:26.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.armadillo.new/armadillo.changes 2016-05-04 08:20:19.000000000 +0200
@@ -1,0 +2,6 @@
+Tue May 3 03:07:50 UTC 2016 - badshah400(a)gmail.com
+
+- Update to version 6.700.6:
+ + Undocumented bug fixes.
+
+-------------------------------------------------------------------
Old:
----
armadillo-6.700.5.tar.gz
New:
----
armadillo-6.700.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ armadillo.spec ++++++
--- /var/tmp/diff_new_pack.kLvacY/_old 2016-05-04 08:20:20.000000000 +0200
+++ /var/tmp/diff_new_pack.kLvacY/_new 2016-05-04 08:20:20.000000000 +0200
@@ -19,7 +19,7 @@
%define soname libarmadillo6
Name: armadillo
-Version: 6.700.5
+Version: 6.700.6
Release: 0
Summary: Fast C++ matrix library with interfaces to LAPACK and ATLAS
License: MPL-2.0
++++++ armadillo-6.700.5.tar.gz -> armadillo-6.700.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/CMakeLists.txt new/armadillo-6.700.6/CMakeLists.txt
--- old/armadillo-6.700.5/CMakeLists.txt 2016-04-24 04:32:22.000000000 +0200
+++ new/armadillo-6.700.6/CMakeLists.txt 2016-04-29 10:35:06.000000000 +0200
@@ -16,7 +16,7 @@
set(ARMA_MAJOR 6)
set(ARMA_MINOR 700)
-set(ARMA_PATCH 5)
+set(ARMA_PATCH 6)
set(ARMADILLO_VERSION ${ARMA_MAJOR}.${ARMA_MINOR}.${ARMA_PATCH})
message(STATUS "Configuring Armadillo ${ARMADILLO_VERSION}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/README.txt new/armadillo-6.700.6/README.txt
--- old/armadillo-6.700.5/README.txt 2016-04-24 04:32:22.000000000 +0200
+++ new/armadillo-6.700.6/README.txt 2016-05-02 05:30:02.000000000 +0200
@@ -9,7 +9,7 @@
1: Introduction
2: Citation Details
- 3: Open Source and Commercial Licenses
+ 3: Licenses
4: Technical Support
5: Requirements
@@ -78,46 +78,24 @@
-3: Open Source and Commercial Licenses
-======================================
+3: Licenses
+===========
Armadillo is available under 2 licenses:
-(a) Open source, under the restrictions of the Mozilla Public License (MPL) 2.0.
- The file "LICENSE.txt" contains a copy of the MPL.
-
-(b) Commercial license (not open source), available for purchase.
- Please contact Conrad Sanderson for more information:
- http://conradsanderson.id.au
-
-
-The main restrictions of the open source license (MPL) are:
+- Open source, under the restrictions of the Mozilla Public License (MPL) 2.0.
+ See the "LICENSE.txt" file for details.
- - any derived works, modifications and extensions of Armadillo
- are automatically licensed under the MPL
-
- - if you distribute any part of Armadillo in executable form
- (in software or hardware products), then you must also provide
- the source code of Armadillo and all derived works, modifications
- or extensions
-
-
-The commercial license has the following terms:
-
- - valid in perpetuity and royalty-free
-
- - Armadillo and derived works can be integrated into products
- (software & hardware), without releasing the source code
-
- - one year of service/support is included (bug fixes and updates);
- the service/support can be renewed annually
+- Commercial license (not open source), available for purchase.
+ Please contact Conrad Sanderson for more information:
+ http://conradsanderson.id.au
4: Technical Support
====================
-You can purchase the commercial license (see above) which comes with technical support.
+Technical support can be obtained by purchasing the commercial license (see above).
Please contact Conrad Sanderson for more information:
http://conradsanderson.id.au
@@ -231,7 +209,7 @@
If you want to use Armadillo without installation (not recommended),
compile along these lines:
- g++ example1.cpp -o example1 -O2 -I /home/blah/armadillo-6.700.5/include -DARMA_DONT_USE_WRAPPER -lblas -llapack
+ g++ example1.cpp -o example1 -O2 -I /home/blah/armadillo-6.700.6/include -DARMA_DONT_USE_WRAPPER -lblas -llapack
The above command line assumes that you have unpacked the armadillo archive into /home/blah/
You will need to adjust this for later versions of Armadillo,
@@ -403,8 +381,8 @@
Documentation of functions and classes is available at:
http://arma.sourceforge.net/docs.html
-
-The documentation is also in the "docs.html" file in this archive,
+
+The documentation is also in the "docs.html" file in this folder,
which can be viewed with a web browser.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/docs.html new/armadillo-6.700.6/docs.html
--- old/armadillo-6.700.5/docs.html 2016-04-12 05:06:40.000000000 +0200
+++ new/armadillo-6.700.6/docs.html 2016-05-01 16:25:52.000000000 +0200
@@ -197,7 +197,7 @@
</li>
<br>
<li>
-If you use Armadillo in commercial products (software or hardware),
+If you use Armadillo in products,
please obtain the <a href="http://arma.sourceforge.net/faq.html#licenses">commercial license</a>
</li>
</ul>
@@ -10616,10 +10616,10 @@
<div class="pagebreak"></div><div class="noprint"><hr class="greyline"><br></div>
<a name="solve"></a>
<b>X = solve( A, B )</b>
-<br><b>X = solve( A, B, options )</b> (version 6.300+)
+<br><b>X = solve( A, B, settings )</b> (version 6.300+)
<br>
<br><b>solve( X, A, B )</b>
-<br><b>solve( X, A, B, options )</b> (version 6.300+)
+<br><b>solve( X, A, B, settings )</b> (version 6.300+)
<ul>
<li>Solve a <b>dense</b> system of linear equations, <i>A*X = B</i>, where <i>X</i> is unknown;
similar functionality to the \ operator in Matlab/Octave, ie. <i>X = A \ B</i>
@@ -10636,31 +10636,28 @@
The number of rows in <i>A</i> and <i>B</i> must be the same
</li>
<br>
-<li>The <i>options</i> argument is optional; it is one or a combination of the following:
-<ul>
+<li>The <i>settings</i> argument is optional; it is one of the following, or a combination thereof:
+<br>
<br>
<table>
<tbody>
-<tr><td><code>solve_opts::fast</code></td><td> </td><td>do not apply iterative refinement and/or equilibration</td></tr>
+<tr><td><code>solve_opts::fast</code></td><td> </td><td>fast mode: do not apply iterative refinement and/or equilibration</td></tr>
<tr><td><code>solve_opts::equilibrate</code></td><td> </td><td>equilibrate the system before solving (matrix <i>A</i> must be square)</td></tr>
<tr><td><code>solve_opts::no_approx</code></td><td> </td><td>do not find approximate solutions for rank deficient systems</td></tr>
</tbody>
</table>
<br>
-<li>
-Options can be combined using the <code>+</code> operator; for example: <code>solve_opts::fast + solve_opts::no_approx</code>
+the above settings can be combined using the <code>+</code> operator; for example: <code>solve_opts::fast + solve_opts::no_approx</code>
</li>
<br>
<li>
-<b>Caveat:</b> <code>solve_opts::fast</code> is recommended only for well-conditioned systems
-</li>
-</ul>
+<b>Caveat:</b> using <i><code>solve_opts::fast</code></i> will speed up finding the solution, but for poorly conditioned systems the solution may have lower quality
</li>
<br>
<li>
If <i>A</i> is known to be a triangular matrix,
the solution can be computed faster by explicitly indicating that <i>A</i> is triangular through <a href="#trimat">trimatu()</a> or <a href="#trimat">trimatl()</a>;
-<br>indicating a triangular matrix also implies that <code>solve_opts::fast</code> is enabled
+<br>indicating a triangular matrix also implies that <i><code>solve_opts::fast</code></i> is enabled
</li>
<br>
<li>
@@ -10686,7 +10683,7 @@
mat X1 = solve(A, B);
-mat X2 = solve(A, B, solve_opts::fast);
+mat X2 = solve(A, B, solve_opts::fast); // enable fast mode
mat X3 = solve(trimatu(A), B); // indicate that A is triangular
</pre>
@@ -15492,11 +15489,11 @@
<a name="version_6700"></a>
<li>Version 6.700:
<ul>
-<li>added <a href="#logmat">logmat()</a> for calcuating the matrix logarithm</li>
+<li>added <a href="#trapz">trapz()</a> for numerical integration</li>
+<li>added <a href="#logmat">logmat()</a> for calculating the matrix logarithm</li>
<li>added <a href="#regspace">regspace()</a> for generating vectors with regularly spaced elements</li>
<li>added <a href="#logspace">logspace()</a> for generating vectors with logarithmically spaced elements</li>
<li>added <a href="#approx_equal">approx_equal()</a> for determining approximate equality</li>
-<li>added <a href="#trapz">trapz()</a> for numerical integration</li>
<li>expanded <a href="#save_load_mat">.save()</a> and <a href="#save_load_mat">.load()</a> with <i>hdf5_binary_trans</i> file type, to save/load data with columns transposed to rows
</ul>
</li>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/include/armadillo_bits/arma_ostream_bones.hpp new/armadillo-6.700.6/include/armadillo_bits/arma_ostream_bones.hpp
--- old/armadillo-6.700.5/include/armadillo_bits/arma_ostream_bones.hpp 2015-11-10 05:42:43.000000000 +0100
+++ new/armadillo-6.700.6/include/armadillo_bits/arma_ostream_bones.hpp 2016-04-29 10:32:43.000000000 +0200
@@ -1,4 +1,4 @@
-// Copyright (C) 2008-2014 National ICT Australia (NICTA)
+// Copyright (C) 2008-2016 National ICT Australia (NICTA)
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -46,18 +46,18 @@
template<typename eT> arma_inline static void print_elem(std::ostream& o, const eT& x, const bool modify);
template<typename T> inline static void print_elem(std::ostream& o, const std::complex<T>& x, const bool modify);
- template<typename eT> inline static void print(std::ostream& o, const Mat<eT>& m, const bool modify);
- template<typename eT> inline static void print(std::ostream& o, const Cube<eT>& m, const bool modify);
+ template<typename eT> arma_cold inline static void print(std::ostream& o, const Mat<eT>& m, const bool modify);
+ template<typename eT> arma_cold inline static void print(std::ostream& o, const Cube<eT>& m, const bool modify);
- template<typename oT> inline static void print(std::ostream& o, const field<oT>& m);
- template<typename oT> inline static void print(std::ostream& o, const subview_field<oT>& m);
+ template<typename oT> arma_cold inline static void print(std::ostream& o, const field<oT>& m);
+ template<typename oT> arma_cold inline static void print(std::ostream& o, const subview_field<oT>& m);
- template<typename eT> inline static void print_dense(std::ostream& o, const SpMat<eT>& m, const bool modify);
- template<typename eT> inline static void print(std::ostream& o, const SpMat<eT>& m, const bool modify);
+ template<typename eT> arma_cold inline static void print_dense(std::ostream& o, const SpMat<eT>& m, const bool modify);
+ template<typename eT> arma_cold inline static void print(std::ostream& o, const SpMat<eT>& m, const bool modify);
- inline static void print(std::ostream& o, const SizeMat& S);
- inline static void print(std::ostream& o, const SizeCube& S);
+ arma_cold inline static void print(std::ostream& o, const SizeMat& S);
+ arma_cold inline static void print(std::ostream& o, const SizeCube& S);
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/include/armadillo_bits/arma_ostream_meat.hpp new/armadillo-6.700.6/include/armadillo_bits/arma_ostream_meat.hpp
--- old/armadillo-6.700.5/include/armadillo_bits/arma_ostream_meat.hpp 2016-02-29 07:36:18.000000000 +0100
+++ new/armadillo-6.700.6/include/armadillo_bits/arma_ostream_meat.hpp 2016-04-29 06:11:35.000000000 +0200
@@ -401,6 +401,7 @@
//! Print a matrix to the specified stream
template<typename eT>
+arma_cold
inline
void
arma_ostream::print(std::ostream& o, const Mat<eT>& m, const bool modify)
@@ -462,6 +463,7 @@
//! Print a cube to the specified stream
template<typename eT>
+arma_cold
inline
void
arma_ostream::print(std::ostream& o, const Cube<eT>& x, const bool modify)
@@ -495,6 +497,7 @@
//! Print a field to the specified stream
//! Assumes type oT can be printed, i.e. oT has std::ostream& operator<< (std::ostream&, const oT&)
template<typename oT>
+arma_cold
inline
void
arma_ostream::print(std::ostream& o, const field<oT>& x)
@@ -563,6 +566,7 @@
//! Print a subfield to the specified stream
//! Assumes type oT can be printed, i.e. oT has std::ostream& operator<< (std::ostream&, const oT&)
template<typename oT>
+arma_cold
inline
void
arma_ostream::print(std::ostream& o, const subview_field<oT>& x)
@@ -628,6 +632,7 @@
template<typename eT>
+arma_cold
inline
void
arma_ostream::print_dense(std::ostream& o, const SpMat<eT>& m, const bool modify)
@@ -733,6 +738,7 @@
template<typename eT>
+arma_cold
inline
void
arma_ostream::print(std::ostream& o, const SpMat<eT>& m, const bool modify)
@@ -803,6 +809,7 @@
+arma_cold
inline
void
arma_ostream::print(std::ostream& o, const SizeMat& S)
@@ -824,6 +831,7 @@
+arma_cold
inline
void
arma_ostream::print(std::ostream& o, const SizeCube& S)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/include/armadillo_bits/arma_version.hpp new/armadillo-6.700.6/include/armadillo_bits/arma_version.hpp
--- old/armadillo-6.700.5/include/armadillo_bits/arma_version.hpp 2016-04-24 04:32:22.000000000 +0200
+++ new/armadillo-6.700.6/include/armadillo_bits/arma_version.hpp 2016-04-29 10:35:06.000000000 +0200
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2015 National ICT Australia (NICTA)
+// Copyright (C) 2009-2016 National ICT Australia (NICTA)
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -15,7 +15,7 @@
#define ARMA_VERSION_MAJOR 6
#define ARMA_VERSION_MINOR 700
-#define ARMA_VERSION_PATCH 5
+#define ARMA_VERSION_PATCH 6
#define ARMA_VERSION_NAME "Catabolic Amalgamator Deluxe"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/include/armadillo_bits/fn_kron.hpp new/armadillo-6.700.6/include/armadillo_bits/fn_kron.hpp
--- old/armadillo-6.700.5/include/armadillo_bits/fn_kron.hpp 2015-11-10 05:42:43.000000000 +0100
+++ new/armadillo-6.700.6/include/armadillo_bits/fn_kron.hpp 2016-04-28 09:56:56.000000000 +0200
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2010 National ICT Australia (NICTA)
+// Copyright (C) 2009-2016 National ICT Australia (NICTA)
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -87,4 +87,47 @@
+// template<typename T1, typename T2>
+// inline
+// SpMat<typename T1::elem_type>
+// kron(const SpBase<typename T1::elem_type, T1>& A_expr, const SpBase<typename T1::elem_type, T2>& B_expr)
+// {
+// arma_extra_debug_sigprint();
+//
+// typedef typename T1::elem_type eT;
+//
+// const unwrap_spmat<T1> UA(A_expr.get_ref());
+// const unwrap_spmat<T2> UB(B_expr.get_ref());
+//
+// const SpMat<eT>& A = UA.M;
+// const SpMat<eT>& B = UB.M;
+//
+// const uword A_rows = A.n_rows;
+// const uword A_cols = A.n_cols;
+// const uword B_rows = B.n_rows;
+// const uword B_cols = B.n_cols;
+//
+// SpMat<eT> out(A_rows*B_rows, A_cols*B_cols);
+//
+// if(out.is_empty() == false)
+// {
+// typename SpMat<eT>::const_iterator it = A.begin();
+// typename SpMat<eT>::const_iterator it_end = A.end();
+//
+// for(; it != it_end; ++it)
+// {
+// const uword i = it.row();
+// const uword j = it.col();
+//
+// const eT A_val = (*it);
+//
+// out.submat(i*B_rows, j*B_cols, (i+1)*B_rows-1, (j+1)*B_cols-1) = A_val * B;
+// }
+// }
+//
+// return out;
+// }
+
+
+
//! @}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/include/armadillo_bits/glue_kron_meat.hpp new/armadillo-6.700.6/include/armadillo_bits/glue_kron_meat.hpp
--- old/armadillo-6.700.5/include/armadillo_bits/glue_kron_meat.hpp 2015-11-10 05:42:43.000000000 +0100
+++ new/armadillo-6.700.6/include/armadillo_bits/glue_kron_meat.hpp 2016-04-28 09:25:13.000000000 +0200
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2013 National ICT Australia (NICTA)
+// Copyright (C) 2009-2016 National ICT Australia (NICTA)
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -30,6 +30,8 @@
out.set_size(A_rows*B_rows, A_cols*B_cols);
+ if(out.is_empty()) { return; }
+
for(uword j = 0; j < A_cols; j++)
{
for(uword i = 0; i < A_rows; i++)
@@ -60,6 +62,8 @@
out.set_size(A_rows*B_rows, A_cols*B_cols);
+ if(out.is_empty()) { return; }
+
Mat<eT> tmp_B = conv_to< Mat<eT> >::from(B);
for(uword j = 0; j < A_cols; j++)
@@ -90,6 +94,8 @@
out.set_size(A_rows*B_rows, A_cols*B_cols);
+ if(out.is_empty()) { return; }
+
for(uword j = 0; j < A_cols; j++)
{
for(uword i = 0; i < A_rows; i++)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.700.5/include/armadillo_bits/op_find_meat.hpp new/armadillo-6.700.6/include/armadillo_bits/op_find_meat.hpp
--- old/armadillo-6.700.5/include/armadillo_bits/op_find_meat.hpp 2015-11-10 05:42:43.000000000 +0100
+++ new/armadillo-6.700.6/include/armadillo_bits/op_find_meat.hpp 2016-04-29 05:15:30.000000000 +0200
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2014 National ICT Australia (NICTA)
+// Copyright (C) 2010-2016 National ICT Australia (NICTA)
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -118,7 +118,7 @@
else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero_i = (tpi >= val); }
else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero_i = (tpi == val); }
else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero_i = (tpi != val); }
- else not_zero_i = false;
+ else { not_zero_i = false; }
if(is_same_type<op_type, op_rel_lt_pre >::yes) { not_zero_j = (val < tpj); }
else if(is_same_type<op_type, op_rel_lt_post >::yes) { not_zero_j = (tpj < val); }
@@ -130,7 +130,7 @@
else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero_j = (tpj >= val); }
else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero_j = (tpj == val); }
else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero_j = (tpj != val); }
- else not_zero_j = false;
+ else { not_zero_j = false; }
if(not_zero_i == true) { indices_mem[n_nz] = i; ++n_nz; }
if(not_zero_j == true) { indices_mem[n_nz] = j; ++n_nz; }
@@ -152,7 +152,7 @@
else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero = (tmp >= val); }
else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero = (tmp == val); }
else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero = (tmp != val); }
- else not_zero = false;
+ else { not_zero = false; }
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; }
}
@@ -181,7 +181,7 @@
else if(is_same_type<op_type, op_rel_gteq_post>::yes) { not_zero = (tmp >= val); }
else if(is_same_type<op_type, op_rel_eq >::yes) { not_zero = (tmp == val); }
else if(is_same_type<op_type, op_rel_noteq >::yes) { not_zero = (tmp != val); }
- else not_zero = false;
+ else { not_zero = false; }
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; }
@@ -235,7 +235,7 @@
if(is_same_type<op_type, op_rel_eq >::yes) { not_zero = (tmp == val); }
else if(is_same_type<op_type, op_rel_noteq>::yes) { not_zero = (tmp != val); }
- else not_zero = false;
+ else { not_zero = false; }
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; }
}
@@ -256,7 +256,7 @@
if(is_same_type<op_type, op_rel_eq >::yes) { not_zero = (tmp == val); }
else if(is_same_type<op_type, op_rel_noteq>::yes) { not_zero = (tmp != val); }
- else not_zero = false;
+ else { not_zero = false; }
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; }
@@ -322,7 +322,7 @@
else if(is_same_type<glue_type, glue_rel_noteq >::yes) { not_zero = (tmp1 != tmp2); }
else if(is_same_type<glue_type, glue_rel_and >::yes) { not_zero = (tmp1 && tmp2); }
else if(is_same_type<glue_type, glue_rel_or >::yes) { not_zero = (tmp1 || tmp2); }
- else not_zero = false;
+ else { not_zero = false; }
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; }
}
@@ -376,7 +376,7 @@
if(is_same_type<glue_type, glue_rel_eq >::yes) { not_zero = (PA[i] == PB[i]); }
else if(is_same_type<glue_type, glue_rel_noteq >::yes) { not_zero = (PA[i] != PB[i]); }
- else not_zero = false;
+ else { not_zero = false; }
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; }
}
@@ -395,7 +395,7 @@
if(is_same_type<glue_type, glue_rel_eq >::yes) { not_zero = (A.at(row,col) == B.at(row,col)); }
else if(is_same_type<glue_type, glue_rel_noteq >::yes) { not_zero = (A.at(row,col) != B.at(row,col)); }
- else not_zero = false;
+ else { not_zero = false; }
if(not_zero == true) { indices_mem[n_nz] = i; ++n_nz; }
1
0
Hello community,
here is the log from the commit of package docker for openSUSE:Factory checked in at 2016-05-04 08:20:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/docker (Old)
and /work/SRC/openSUSE:Factory/.docker.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker"
Changes:
--------
--- /work/SRC/openSUSE:Factory/docker/docker.changes 2016-04-12 19:38:28.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.docker.new/docker.changes 2016-05-04 08:20:17.000000000 +0200
@@ -1,0 +2,228 @@
+Mon May 2 07:40:22 UTC 2016 - asarai(a)suse.de
+
+* Remove conditional Patch directive for SUSE secrets, since conditionally
+ including patches results in incompatible .src.rpms. The patch is still
+ applied conditionally.
+
+-------------------------------------------------------------------
+Fri Apr 29 09:04:54 UTC 2016 - asarai(a)suse.de
+
+* Update to Docker 1.11.1. Changelog from upstream:
+
+ * Distribution
+ - Fix schema2 manifest media type to be of type `application/vnd.docker.container.image.v1+json` ([#21949](https://github.com/docker/docker/pull/21949))
+
+ * Documentation
+ + Add missing API documentation for changes introduced with 1.11.0 ([#22048](https://github.com/docker/docker/pull/22048))
+
+ * Builder
+ * Append label passed to `docker build` as arguments as an implicit `LABEL` command at the end of the processed `Dockerfile` ([#22184](https://github.com/docker/docker/pull/22184))
+
+ * Networking
+ - Fix a panic that would occur when forwarding DNS query ([#22261](https://github.com/docker/docker/pull/22261))
+ - Fix an issue where OS threads could end up within an incorrect network namespace when using user defined networks ([#22261](https://github.com/docker/docker/pull/22261))
+
+ * Runtime
+ - Fix a bug preventing labels configuration to be reloaded via the config file ([#22299](https://github.com/docker/docker/pull/22299))
+ - Fix a regression where container mounting `/var/run` would prevent other containers from being removed ([#22256](https://github.com/docker/docker/pull/22256))
+ - Fix an issue where it would be impossible to update both `memory-swap` and `memory` value together ([#22255](https://github.com/docker/docker/pull/22255))
+ - Fix a regression from 1.11.0 where the `/auth` endpoint would not initialize `serveraddress` if it is not provided ([#22254](https://github.com/docker/docker/pull/22254))
+ - Add missing cleanup of container temporary files when cancelling a schedule restart ([#22237](https://github.com/docker/docker/pull/22237))
+ - Removed scary error message when no restart policy is specified ([#21993](https://github.com/docker/docker/pull/21993))
+ - Fix a panic that would occur when the plugins were activated via the json spec ([#22191](https://github.com/docker/docker/pull/22191))
+ - Fix restart backoff logic to correctly reset delay if container ran for at least 10secs ([#22125](https://github.com/docker/docker/pull/22125))
+ - Remove error message when a container restart get cancelled ([#22123](https://github.com/docker/docker/pull/22123))
+ - Fix an issue where `docker` would not correcly clean up after `docker exec` ([#22121](https://github.com/docker/docker/pull/22121))
+ - Fix a panic that could occur when servicing concurrent `docker stats` commands ([#22120](https://github.com/docker/docker/pull/22120))`
+ - Revert deprecation of non-existing host directories auto-creation ([#22065](https://github.com/docker/docker/pull/22065))
+ - Hide misleading rpc error on daemon shutdown ([#22058](https://github.com/docker/docker/pull/22058))
+
+-------------------------------------------------------------------
+Fri Apr 22 10:43:37 UTC 2016 - asarai(a)suse.de
+
+- Add patch to fix vulnerability in Docker <= 1.11.0. This patch is upstream,
+ but was merged after the 1.11.0 merge window. CVE-2016-3697. bsc#976777.
+ + cve-2016-3697-numeric-uid.patch
+ The upstream PR is here[1] and was vendored into Docker here[2].
+
+ [1]: https://github.com/opencontainers/runc/pull/708
+ [2]: https://github.com/docker/docker/pull/21665
+
+-------------------------------------------------------------------
+Mon Apr 18 19:33:56 UTC 2016 - mpluskal(a)suse.com
+
+- Supplemnent zsh from zsh-completion
+ * zsh-completion will be automatically installed if zsh and
+ docker are installed
+
+-------------------------------------------------------------------
+Mon Apr 18 15:44:11 UTC 2016 - jmassaguerpla(a)suse.com
+
+- Remove gcc5_socker_workaround.patch: This patch is not needed anymore
+ since gcc5 has been updated in all platforms
+
+-------------------------------------------------------------------
+Mon Apr 18 06:19:18 UTC 2016 - asarai(a)suse.de
+
+* Removed patches that have been fixed upstream and in gcc-go:
+ - boltdb_bolt_powerpc.patch
+ - fix-apparmor.patch
+ - fix-btrfs-ioctl-structure.patch
+ - fix-docker-init.patch
+ - libnetwork_drivers_bridge_powerpc.patch
+ - ignore-dockerinit-checksum.patch
+* Require containerd, as it is the only currently supported Docker execdriver.
+* Update docker.socket to require containerd.socket and use --containerd in
+ docker.service so that the services are self-contained.
+* Update to Docker 1.11.0. Changelog from upstream:
+
+ * Builder
+ - Fix a bug where Docker would not used the correct uid/gid when processing the `WORKDIR` command ([#21033](https://github.com/docker/docker/pull/21033))
+ - Fix a bug where copy operations with userns would not use the proper uid/gid ([#20782](https://github.com/docker/docker/pull/20782), [#21162](https://github.com/docker/docker/pull/21162))
+
+ * Client
+ * Usage of the `:` separator for security option has been deprecated. `=` should be used instead ([#21232](https://github.com/docker/docker/pull/21232))
+ + The client user agent is now passed to the registry on `pull`, `build`, `push`, `login` and `search` operations ([#21306](https://github.com/docker/docker/pull/21306), [#21373](https://github.com/docker/docker/pull/21373))
+ * Allow setting the Domainname and Hostname separately through the API ([#20200](https://github.com/docker/docker/pull/20200))
+ * Docker info will now warn users if it can not detect the kernel version or the operating system ([#21128](https://github.com/docker/docker/pull/21128))
+ - Fix an issue where `docker stats --no-stream` output could be all 0s ([#20803](https://github.com/docker/docker/pull/20803))
+ - Fix a bug where some newly started container would not appear in a running `docker stats` command ([#20792](https://github.com/docker/docker/pull/20792))
+ * Post processing is no longer enabled for linux-cgo terminals ([#20587](https://github.com/docker/docker/pull/20587))
+ - Values to `--hostname` are now refused if they do not comply with [RFC1123](https://tools.ietf.org/html/rfc1123) ([#20566](https://github.com/docker/docker/pull/20566))
+ + Docker learned how to use a SOCKS proxy ([#20366](https://github.com/docker/docker/pull/20366), [#18373](https://github.com/docker/docker/pull/18373))
+ + Docker now supports external credential stores ([#20107](https://github.com/docker/docker/pull/20107))
+ * `docker ps` now supports displaying the list of volumes mounted inside a container ([#20017](https://github.com/docker/docker/pull/20017))
+ * `docker info` now also report Docker's root directory location ([#19986](https://github.com/docker/docker/pull/19986))
+ - Docker now prohibits login in with an empty username (spaces are trimmed) ([#19806](https://github.com/docker/docker/pull/19806))
+ * Docker events attributes are now sorted by key ([#19761](https://github.com/docker/docker/pull/19761))
+ * `docker ps` no longer show exported port for stopped containers ([#19483](https://github.com/docker/docker/pull/19483))
+ - Docker now cleans after itself if a save/export command fails ([#17849](https://github.com/docker/docker/pull/17849))
+ * Docker load learned how to display a progress bar ([#17329](https://github.com/docker/docker/pull/17329), [#120078](https://github.com/docker/docker/pull/20078))
+
+ * Distribution
+ - Fix a panic that occurred when pulling an images with 0 layers ([#21222](https://github.com/docker/docker/pull/21222))
+ - Fix a panic that could occur on error while pushing to a registry with a misconfigured token service ([#21212](https://github.com/docker/docker/pull/21212))
+ + All first-level delegation roles are now signed when doing a trusted push ([#21046](https://github.com/docker/docker/pull/21046))
+ + OAuth support for registries was added ([#20970](https://github.com/docker/docker/pull/20970))
+ * `docker login` now handles token using the implementation found in [docker/distribution](https://github.com/docker/distribution) ([#20832](https://github.com/docker/docker/pull/20832))
+ * `docker login` will no longer prompt for an email ([#20565](https://github.com/docker/docker/pull/20565))
+ * Docker will now fallback to registry V1 if no basic auth credentials are available ([#20241](https://github.com/docker/docker/pull/20241))
+ * Docker will now try to resume layer download where it left off after a network error/timeout ([#19840](https://github.com/docker/docker/pull/19840))
+ - Fix generated manifest mediaType when pushing cross-repository ([#19509](https://github.com/docker/docker/pull/19509))
+ - Fix docker requesting additional push credentials when pulling an image if Content Trust is enabled ([#20382](https://github.com/docker/docker/pull/20382))
+
+ * Logging
+ - Fix a race in the journald log driver ([#21311](https://github.com/docker/docker/pull/21311))
+ * Docker syslog driver now uses the RFC-5424 format when emitting logs ([#20121](https://github.com/docker/docker/pull/20121))
+ * Docker GELF log driver now allows to specify the compression algorithm and level via the `gelf-compression-type` and `gelf-compression-level` options ([#19831](https://github.com/docker/docker/pull/19831))
+ * Docker daemon learned to output uncolorized logs via the `--raw-logs` options ([#19794](https://github.com/docker/docker/pull/19794))
+ + Docker, on Windows platform, now includes an ETW (Event Tracing in Windows) logging driver named `etwlogs` ([#19689](https://github.com/docker/docker/pull/19689))
+ * Journald log driver learned how to handle tags ([#19564](https://github.com/docker/docker/pull/19564))
+ + The fluentd log driver learned the following options: `fluentd-address`, `fluentd-buffer-limit`, `fluentd-retry-wait`, `fluentd-max-retries` and `fluentd-async-connect` ([#19439](https://github.com/docker/docker/pull/19439))
+ + Docker learned to send log to Google Cloud via the new `gcplogs` logging driver. ([#18766](https://github.com/docker/docker/pull/18766))
+
+ * Misc
+ + When saving linked images together with `docker save` a subsequent `docker load` will correctly restore their parent/child relationship ([#21385](https://github.com/docker/docker/pull/c))
+ + Support for building the Docker cli for OpenBSD was added ([#21325](https://github.com/docker/docker/pull/21325))
+ + Labels can now be applied at network, volume and image creation ([#21270](https://github.com/docker/docker/pull/21270))
+ * The `dockremap` is now created as a system user ([#21266](https://github.com/docker/docker/pull/21266))
+ - Fix a few response body leaks ([#21258](https://github.com/docker/docker/pull/21258))
+ - Docker, when run as a service with systemd, will now properly manage its processes cgroups ([#20633](https://github.com/docker/docker/pull/20633))
+ * Docker info now reports the value of cgroup KernelMemory or emits a warning if it is not supported ([#20863](https://github.com/docker/docker/pull/20863))
+ * Docker info now also reports the cgroup driver in use ([#20388](https://github.com/docker/docker/pull/20388))
+ * Docker completion is now available on PowerShell ([#19894](https://github.com/docker/docker/pull/19894))
+ * `dockerinit` is no more ([#19490](https://github.com/docker/docker/pull/19490),[#19851](https://github.com/docker/docker/pull/19851))
+ + Support for building Docker on arm64 was added ([#19013](https://github.com/docker/docker/pull/19013))
+ + Experimental support for building docker.exe in a native Windows Docker installation ([#18348](https://github.com/docker/docker/pull/18348))
+
+ * Networking
+ - Fix panic if a node is forcibly removed from the cluster ([#21671](https://github.com/docker/docker/pull/21671))
+ - Fix "error creating vxlan interface" when starting a container in a Swarm cluster ([#21671](https://github.com/docker/docker/pull/21671))
+ * `docker network inspect` will now report all endpoints whether they have an active container or not ([#21160](https://github.com/docker/docker/pull/21160))
+ + Experimental support for the MacVlan and IPVlan network drivers have been added ([#21122](https://github.com/docker/docker/pull/21122))
+ * Output of `docker network ls` is now sorted by network name ([#20383](https://github.com/docker/docker/pull/20383))
+ - Fix a bug where Docker would allow a network to be created with the reserved `default` name ([#19431](https://github.com/docker/docker/pull/19431))
+ * `docker network inspect` returns whether a network is internal or not ([#19357](https://github.com/docker/docker/pull/19357))
+ + Control IPv6 via explicit option when creating a network (`docker network create --ipv6`). This shows up as a new `EnableIPv6` field in `docker network inspect` ([#17513](https://github.com/docker/docker/pull/17513))
+ * Support for AAAA Records (aka IPv6 Service Discovery) in embedded DNS Server ([#21396](https://github.com/docker/docker/pull/21396))
+ - Fix to not forward docker domain IPv6 queries to external servers ([#21396](https://github.com/docker/docker/pull/21396))
+ * Multiple A/AAAA records from embedded DNS Server for DNS Round robin ([#21019](https://github.com/docker/docker/pull/21019))
+ - Fix endpoint count inconsistency after an ungraceful dameon restart ([#21261](https://github.com/docker/docker/pull/21261))
+ - Move the ownership of exposed ports and port-mapping options from Endpoint to Sandbox ([#21019](https://github.com/docker/docker/pull/21019))
+ - Fixed a bug which prevents docker reload when host is configured with ipv6.disable=1 ([#21019](https://github.com/docker/docker/pull/21019))
+ - Added inbuilt nil IPAM driver ([#21019](https://github.com/docker/docker/pull/21019))
+ - Fixed bug in iptables.Exists() logic [#21019](https://github.com/docker/docker/pull/21019)
+ - Fixed a Veth interface leak when using overlay network ([#21019](https://github.com/docker/docker/pull/21019))
+ - Fixed a bug which prevents docker reload after a network delete during shutdown ([#20214](https://github.com/docker/docker/pull/20214))
+ - Make sure iptables chains are recreated on firewalld reload ([#20419](https://github.com/docker/docker/pull/20419))
+ - Allow to pass global datastore during config reload ([#20419](https://github.com/docker/docker/pull/20419))
+ - For anonymous containers use the alias name for IP to name mapping, ie:DNS PTR record ([#21019](https://github.com/docker/docker/pull/21019))
+ - Fix a panic when deleting an entry from /etc/hosts file ([#21019](https://github.com/docker/docker/pull/21019))
+ - Source the forwarded DNS queries from the container net namespace ([#21019](https://github.com/docker/docker/pull/21019))
+ - Fix to retain the network internal mode config for bridge networks on daemon reload ([#21780] (https://github.com/docker/docker/pull/21780))
+ - Fix to retain IPAM driver option configs on daemon reload ([#21914] (https://github.com/docker/docker/pull/21914))
+
+ * Plugins
+ - Fix a file descriptor leak that would occur every time plugins were enumerated ([#20686](https://github.com/docker/docker/pull/20686))
+ - Fix an issue where Authz plugin would corrupt the payload body when faced with a large amount of data ([#20602](https://github.com/docker/docker/pull/20602))
+
+ * Runtime
+ - Fix a panic that could occur when cleanup after a container started with invalid parameters ([#21716](https://github.com/docker/docker/pull/21716))
+ - Fix a race with event timers stopping early ([#21692](https://github.com/docker/docker/pull/21692))
+ - Fix race conditions in the layer store, potentially corrupting the map and crashing the process ([#21677](https://github.com/docker/docker/pull/21677))
+ - Un-deprecate auto-creation of host directories for mounts. This feature was marked deprecated in ([#21666](https://github.com/docker/docker/pull/21666))
+ Docker 1.9, but was decided to be too much of an backward-incompatible change, so it was decided to keep the feature.
+ + It is now possible for containers to share the NET and IPC namespaces when `userns` is enabled ([#21383](https://github.com/docker/docker/pull/21383))
+ + `docker inspect <image-id>` will now expose the rootfs layers ([#21370](https://github.com/docker/docker/pull/21370))
+ + Docker Windows gained a minimal `top` implementation ([#21354](https://github.com/docker/docker/pull/21354))
+ * Docker learned to report the faulty exe when a container cannot be started due to its condition ([#21345](https://github.com/docker/docker/pull/21345))
+ * Docker with device mapper will now refuse to run if `udev sync` is not available ([#21097](https://github.com/docker/docker/pull/21097))
+ - Fix a bug where Docker would not validate the config file upon configuration reload ([#21089](https://github.com/docker/docker/pull/21089))
+ - Fix a hang that would happen on attach if initial start was to fail ([#21048](https://github.com/docker/docker/pull/21048))
+ - Fix an issue where registry service options in the daemon configuration file were not properly taken into account ([#21045](https://github.com/docker/docker/pull/21045))
+ - Fix a race between the exec and resize operations ([#21022](https://github.com/docker/docker/pull/21022))
+ - Fix an issue where nanoseconds were not correctly taken in account when filtering Docker events ([#21013](https://github.com/docker/docker/pull/21013))
+ - Fix the handling of Docker command when passed a 64 bytes id ([#21002](https://github.com/docker/docker/pull/21002))
+ * Docker will now return a `204` (i.e http.StatusNoContent) code when it successfully deleted a network ([#20977](https://github.com/docker/docker/pull/20977))
+ - Fix a bug where the daemon would wait indefinitely in case the process it was about to killed had already exited on its own ([#20967](https://github.com/docker/docker/pull/20967)
+ * The devmapper driver learned the `dm.min_free_space` option. If the mapped device free space reaches the passed value, new device creation will be prohibited. ([#20786](https://github.com/docker/docker/pull/20786))
+ + Docker can now prevent processes in container to gain new privileges via the `--security-opt=no-new-privileges` flag ([#20727](https://github.com/docker/docker/pull/20727))
+ - Starting a container with the `--device` option will now correctly resolves symlinks ([#20684](https://github.com/docker/docker/pull/20684))
+ + Docker now relies on [`containerd`](https://github.com/docker/containerd) and [`runc`](https://github.com/opencontainers/runc) to spawn containers. ([#20662](https://github.com/docker/docker/pull/20662))
+ - Fix docker configuration reloading to only alter value present in the given config file ([#20604](https://github.com/docker/docker/pull/20604))
+ + Docker now allows setting a container hostname via the `--hostname` flag when `--net=host` ([#20177](https://github.com/docker/docker/pull/20177))
+ + Docker now allows executing privileged container while running with `--userns-remap` if both `--privileged` and the new `--userns=host` flag are specified ([#20111](https://github.com/docker/docker/pull/20111))
+ - Fix Docker not cleaning up correctly old containers upon restarting after a crash ([#19679](https://github.com/docker/docker/pull/19679))
+ * Docker will now error out if it doesn't recognize a configuration key within the config file ([#19517](https://github.com/docker/docker/pull/19517))
+ - Fix container loading, on daemon startup, when they depends on a plugin running within a container ([#19500](https://github.com/docker/docker/pull/19500))
++++ 400 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/docker/docker.changes
++++ and /work/SRC/openSUSE:Factory/.docker.new/docker.changes
Old:
----
boltdb_bolt_powerpc.patch
docker-1.10.3.tar.xz
fix-apparmor.patch
fix-btrfs-ioctl-structure.patch
fix-docker-init.patch
gcc5_socket_workaround.patch
ignore-dockerinit-checksum.patch
libnetwork_drivers_bridge_powerpc.patch
New:
----
cve-2016-3697-numeric-uid.patch
docker-1.11.1.tar.xz
docker-mount-secrets.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ docker.spec ++++++
--- /var/tmp/diff_new_pack.n7u6hl/_old 2016-05-04 08:20:18.000000000 +0200
+++ /var/tmp/diff_new_pack.n7u6hl/_new 2016-05-04 08:20:18.000000000 +0200
@@ -22,8 +22,10 @@
%define git_version 9e83765
%define go_arches %ix86 x86_64 aarch64
+%define version_unconverted 1.11.1
+
Name: docker
-Version: 1.10.3
+Version: 1.11.1
Release: 0
Summary: The Linux container runtime
License: Apache-2.0
@@ -45,22 +47,16 @@
Source8: docker-audit.rules
# TODO: remove once we figure out what is wrong with iptables on ppc64le
Source100: sysconfig.docker.ppc64le
-Patch1: gcc5_socket_workaround.patch
-Patch2: fix-docker-init.patch
-Patch3: fix-apparmor.patch
-# TODO: Remove this once we update to Docker 1.11.0. This has been merged in
-# https://github.com/docker/docker/pull/21723
-Patch4: fix-btrfs-ioctl-structure.patch
+# The mount-secrets patch is be a SLE-specific feature. As such, it is disabled by default on openSUSE.
+# PATCH-FEATURE-SLE docker-mount-secrets.patch -- pass the SCC machine credentials and the /etc/SUSEConnect file to containers
+Patch200: docker-mount-secrets.patch
# Required to overcome some limitations of gcc-go: https://groups.google.com/forum/#!msg/golang-nuts/SlGCPYkjxo4/4DjcjXRCqAkJ
-# Right now docker passes the sha1sum of the dockerinit binary to the docker binary at build time
-# We cannot do that, right now a quick and really dirty way to get it running is
-# to simply disable this check
-Patch100: ignore-dockerinit-checksum.patch
Patch101: gcc-go-patches.patch
Patch102: netlink_gcc_go.patch
Patch103: netlink_netns_powerpc.patch
-Patch104: boltdb_bolt_powerpc.patch
-Patch105: libnetwork_drivers_bridge_powerpc.patch
+# This fixes bsc#976777. While the fix is upstream, it isn't in Docker 1.10.3 or
+# Docker 1.11.0. This patch was squashed and cherry-picked from runc#708.
+Patch301: cve-2016-3697-numeric-uid.patch
BuildRequires: audit
BuildRequires: bash-completion
BuildRequires: device-mapper-devel >= 1.2.68
@@ -90,6 +86,8 @@
Requires: procps
Requires: tar >= 1.26
Requires: xz >= 4.9
+# Containerd is required as it is the only currently supported execdriver of Docker.
+Requires: containerd
# Not necessary, but must be installed to have a smooth upgrade.
Recommends: docker-image-migrator
Conflicts: lxc < 1.0
@@ -97,7 +95,9 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExcludeArch: %ix86
ExcludeArch: s390
+%if 0%{?is_opensuse}
ExcludeArch: s390x
+%endif
ExcludeArch: ppc
%description
@@ -123,7 +123,7 @@
Summary: Zsh Completion for %{name}
Group: System/Management
Requires: %{name} = %{version}
-Requires: zsh
+Supplements: packageand(docker:zsh)
BuildArch: noarch
%description zsh-completion
@@ -155,27 +155,18 @@
%prep
%setup -q -n %{name}-%{version}
-# 1330 is Tumbleweed after leap has been released
-# gcc5-go in Tumbleweed includes this commit
-# https://github.com/golang/gofrontend/commit/a850225433a66a58613c22185c3b096…
-# Which "fixes" the data type for RawSockaddr.Data
-# However, docker now expects the "wrong" data type, since docker had a workaround
-# for that issue.
-# Thus, we need to workaround the workaroundn in tumbleweed
-%if 0%{?suse_version} >= 1330 && 0%{?is_opensuse} == 1
-%patch1 -p1
-%endif
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
+%if 0%{?is_opensuse}
+# nothing
+%else
+%patch200 -p1
+%endif
%ifnarch %go_arches
%patch101 -p1
%patch102 -p1
%patch103 -p1
-%patch104 -p1
-%patch105 -p1
-%patch100 -p1
%endif
+# bsc#976777
+%patch301 -p1
cp %{SOURCE7} .
%build
@@ -211,10 +202,8 @@
install -d %{buildroot}%{_bindir}
%ifarch %go_arches
install -D -m755 bundles/%{version}/dynbinary/%{name}-%{version} %{buildroot}/%{_bindir}/%{name}
-install -D -m755 bundles/%{version}/dynbinary/dockerinit-%{version} %{buildroot}/%{_prefix}/lib/docker/dockerinit
%else
install -D -m755 bundles/%{version}/dyngccgo/%{name}-%{version} %{buildroot}/%{_bindir}/%{name}
-install -D -m755 bundles/%{version}/dyngccgo/dockerinit-%{version} %{buildroot}/%{_prefix}/lib/docker/dockerinit
%endif
install -d %{buildroot}/%{_prefix}/lib/docker
install -Dd -m 0755 \
@@ -349,7 +338,6 @@
%{_bindir}/docker
%{_sbindir}/rcdocker
%{_prefix}/lib/docker/
-%{_prefix}/lib/docker/dockerinit
%{_unitdir}/%{name}.service
%{_unitdir}/%{name}.socket
%config %{_sysconfdir}/audit/rules.d/%{name}.rules
++++++ _service ++++++
--- /var/tmp/diff_new_pack.n7u6hl/_old 2016-05-04 08:20:18.000000000 +0200
+++ /var/tmp/diff_new_pack.n7u6hl/_new 2016-05-04 08:20:18.000000000 +0200
@@ -3,8 +3,8 @@
<param name="url">https://github.com/docker/docker.git</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="versionformat">1.10.3</param>
- <param name="revision">v1.10.3</param>
+ <param name="versionformat">1.11.1</param>
+ <param name="revision">v1.11.1</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">docker-*.tar</param>
++++++ cve-2016-3697-numeric-uid.patch ++++++
>From d67c0bf0caf26358f5345d6c0ac039026c46bd1e Mon Sep 17 00:00:00 2001
From: Aleksa Sarai <asarai(a)suse.de>
Date: Fri, 22 Apr 2016 20:36:43 +1000
Subject: [PATCH] libcontainer: user: always treat numeric ids numerically
Most shadow-related tools don't treat numeric ids as potential
usernames, so change our behaviour to match that. Previously, using an
explicit specification like 111:222 could result in the UID and GID not
being 111 and 222 respectively (which is confusing).
Some of the code was quite confusing inside libcontainer/user, so
refactor and comment it so future maintainers can understand what's
going and what edge cases we have to deal with.
This fixes CVE-2016-3697.
Signed-off-by: Aleksa Sarai <asarai(a)suse.de>
---
.../runc/libcontainer/user/lookup.go | 3 +
.../opencontainers/runc/libcontainer/user/user.go | 149 ++++++++++++---------
2 files changed, 89 insertions(+), 63 deletions(-)
diff --git a/vendor/src/github.com/opencontainers/runc/libcontainer/user/lookup.go b/vendor/src/github.com/opencontainers/runc/libcontainer/user/lookup.go
index 6f8a982..7062940 100644
--- a/vendor/src/github.com/opencontainers/runc/libcontainer/user/lookup.go
+++ b/vendor/src/github.com/opencontainers/runc/libcontainer/user/lookup.go
@@ -9,6 +9,9 @@ import (
var (
// The current operating system does not provide the required data for user lookups.
ErrUnsupported = errors.New("user lookup: operating system does not provide passwd-formatted data")
+ // No matching entries found in file.
+ ErrNoPasswdEntries = errors.New("no matching entries in passwd file")
+ ErrNoGroupEntries = errors.New("no matching entries in group file")
)
func lookupUser(filter func(u User) bool) (User, error) {
diff --git a/vendor/src/github.com/opencontainers/runc/libcontainer/user/user.go b/vendor/src/github.com/opencontainers/runc/libcontainer/user/user.go
index e6375ea..43fd39e 100644
--- a/vendor/src/github.com/opencontainers/runc/libcontainer/user/user.go
+++ b/vendor/src/github.com/opencontainers/runc/libcontainer/user/user.go
@@ -15,7 +15,7 @@ const (
)
var (
- ErrRange = fmt.Errorf("Uids and gids must be in range %d-%d", minId, maxId)
+ ErrRange = fmt.Errorf("uids and gids must be in range %d-%d", minId, maxId)
)
type User struct {
@@ -42,29 +42,30 @@ func parseLine(line string, v ...interface{}) {
parts := strings.Split(line, ":")
for i, p := range parts {
+ // Ignore cases where we don't have enough fields to populate the arguments.
+ // Some configuration files like to misbehave.
if len(v) <= i {
- // if we have more "parts" than we have places to put them, bail for great "tolerance" of naughty configuration files
break
}
+ // Use the type of the argument to figure out how to parse it, scanf() style.
+ // This is legit.
switch e := v[i].(type) {
case *string:
- // "root", "adm", "/bin/bash"
*e = p
case *int:
- // "0", "4", "1000"
- // ignore string to int conversion errors, for great "tolerance" of naughty configuration files
+ // "numbers", with conversion errors ignored because of some misbehaving configuration files.
*e, _ = strconv.Atoi(p)
case *[]string:
- // "", "root", "root,adm,daemon"
+ // Comma-separated lists.
if p != "" {
*e = strings.Split(p, ",")
} else {
*e = []string{}
}
default:
- // panic, because this is a programming/logic error, not a runtime one
- panic("parseLine expects only pointers! argument " + strconv.Itoa(i) + " is not a pointer!")
+ // Someone goof'd when writing code using this function. Scream so they can hear us.
+ panic(fmt.Sprintf("parseLine only accepts {*string, *int, *[]string} as arguments! %#v is not a pointer!", e))
}
}
}
@@ -106,8 +107,8 @@ func ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) {
return nil, err
}
- text := strings.TrimSpace(s.Text())
- if text == "" {
+ line := strings.TrimSpace(s.Text())
+ if line == "" {
continue
}
@@ -117,10 +118,7 @@ func ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) {
// root:x:0:0:root:/root:/bin/bash
// adm:x:3:4:adm:/var/adm:/bin/false
p := User{}
- parseLine(
- text,
- &p.Name, &p.Pass, &p.Uid, &p.Gid, &p.Gecos, &p.Home, &p.Shell,
- )
+ parseLine(line, &p.Name, &p.Pass, &p.Uid, &p.Gid, &p.Gecos, &p.Home, &p.Shell)
if filter == nil || filter(p) {
out = append(out, p)
@@ -135,6 +133,7 @@ func ParseGroupFile(path string) ([]Group, error) {
if err != nil {
return nil, err
}
+
defer group.Close()
return ParseGroup(group)
}
@@ -178,10 +177,7 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) {
// root:x:0:root
// adm:x:4:root,adm,daemon
p := Group{}
- parseLine(
- text,
- &p.Name, &p.Pass, &p.Gid, &p.List,
- )
+ parseLine(text, &p.Name, &p.Pass, &p.Gid, &p.List)
if filter == nil || filter(p) {
out = append(out, p)
@@ -192,9 +188,10 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) {
}
type ExecUser struct {
- Uid, Gid int
- Sgids []int
- Home string
+ Uid int
+ Gid int
+ Sgids []int
+ Home string
}
// GetExecUserPath is a wrapper for GetExecUser. It reads data from each of the
@@ -235,12 +232,12 @@ func GetExecUserPath(userSpec string, defaults *ExecUser, passwdPath, groupPath
// * "uid:gid
// * "user:gid"
// * "uid:group"
+//
+// It should be noted that if you specify a numeric user or group id, they will
+// not be evaluated as usernames (only the metadata will be filled). So attempting
+// to parse a user with user.Name = "1337" will produce the user with a UID of
+// 1337.
func GetExecUser(userSpec string, defaults *ExecUser, passwd, group io.Reader) (*ExecUser, error) {
- var (
- userArg, groupArg string
- name string
- )
-
if defaults == nil {
defaults = new(ExecUser)
}
@@ -258,87 +255,113 @@ func GetExecUser(userSpec string, defaults *ExecUser, passwd, group io.Reader) (
user.Sgids = []int{}
}
- // allow for userArg to have either "user" syntax, or optionally "user:group" syntax
+ // Allow for userArg to have either "user" syntax, or optionally "user:group" syntax
+ var userArg, groupArg string
parseLine(userSpec, &userArg, &groupArg)
+ // Convert userArg and groupArg to be numeric, so we don't have to execute
+ // Atoi *twice* for each iteration over lines.
+ uidArg, uidErr := strconv.Atoi(userArg)
+ gidArg, gidErr := strconv.Atoi(groupArg)
+
+ // Find the matching user.
users, err := ParsePasswdFilter(passwd, func(u User) bool {
if userArg == "" {
+ // Default to current state of the user.
return u.Uid == user.Uid
}
- return u.Name == userArg || strconv.Itoa(u.Uid) == userArg
+
+ if uidErr == nil {
+ // If the userArg is numeric, always treat it as a UID.
+ return uidArg == u.Uid
+ }
+
+ return u.Name == userArg
})
+
+ // If we can't find the user, we have to bail.
if err != nil && passwd != nil {
if userArg == "" {
userArg = strconv.Itoa(user.Uid)
}
- return nil, fmt.Errorf("Unable to find user %v: %v", userArg, err)
+ return nil, fmt.Errorf("unable to find user %s: %v", userArg, err)
}
- haveUser := users != nil && len(users) > 0
- if haveUser {
- // if we found any user entries that matched our filter, let's take the first one as "correct"
- name = users[0].Name
+ var matchedUserName string
+ if len(users) > 0 {
+ // First match wins, even if there's more than one matching entry.
+ matchedUserName = users[0].Name
user.Uid = users[0].Uid
user.Gid = users[0].Gid
user.Home = users[0].Home
} else if userArg != "" {
- // we asked for a user but didn't find them... let's check to see if we wanted a numeric user
- user.Uid, err = strconv.Atoi(userArg)
- if err != nil {
- // not numeric - we have to bail
- return nil, fmt.Errorf("Unable to find user %v", userArg)
+ // If we can't find a user with the given username, the only other valid
+ // option is if it's a numeric username with no associated entry in passwd.
+
+ if uidErr != nil {
+ // Not numeric.
+ return nil, fmt.Errorf("unable to find user %s: %v", userArg, ErrNoPasswdEntries)
}
+ user.Uid = uidArg
// Must be inside valid uid range.
if user.Uid < minId || user.Uid > maxId {
return nil, ErrRange
}
- // if userArg couldn't be found in /etc/passwd but is numeric, just roll with it - this is legit
+ // Okay, so it's numeric. We can just roll with this.
}
- if groupArg != "" || name != "" {
+ // On to the groups. If we matched a username, we need to do this because of
+ // the supplementary group IDs.
+ if groupArg != "" || matchedUserName != "" {
groups, err := ParseGroupFilter(group, func(g Group) bool {
- // Explicit group format takes precedence.
- if groupArg != "" {
- return g.Name == groupArg || strconv.Itoa(g.Gid) == groupArg
+ // If the group argument isn't explicit, we'll just search for it.
+ if groupArg == "" {
+ // Check if user is a member of this group.
+ for _, u := range g.List {
+ if u == matchedUserName {
+ return true
+ }
+ }
+ return false
}
- // Check if user is a member.
- for _, u := range g.List {
- if u == name {
- return true
- }
+ if gidErr == nil {
+ // If the groupArg is numeric, always treat it as a GID.
+ return gidArg == g.Gid
}
- return false
+ return g.Name == groupArg
})
if err != nil && group != nil {
- return nil, fmt.Errorf("Unable to find groups for user %v: %v", users[0].Name, err)
+ return nil, fmt.Errorf("unable to find groups for spec %v: %v", matchedUserName, err)
}
- haveGroup := groups != nil && len(groups) > 0
+ // Only start modifying user.Gid if it is in explicit form.
if groupArg != "" {
- if haveGroup {
- // if we found any group entries that matched our filter, let's take the first one as "correct"
+ if len(groups) > 0 {
+ // First match wins, even if there's more than one matching entry.
user.Gid = groups[0].Gid
- } else {
- // we asked for a group but didn't find id... let's check to see if we wanted a numeric group
- user.Gid, err = strconv.Atoi(groupArg)
- if err != nil {
- // not numeric - we have to bail
- return nil, fmt.Errorf("Unable to find group %v", groupArg)
+ } else if groupArg != "" {
+ // If we can't find a group with the given name, the only other valid
+ // option is if it's a numeric group name with no associated entry in group.
+
+ if gidErr != nil {
+ // Not numeric.
+ return nil, fmt.Errorf("unable to find group %s: %v", groupArg, ErrNoGroupEntries)
}
+ user.Gid = gidArg
- // Ensure gid is inside gid range.
+ // Must be inside valid gid range.
if user.Gid < minId || user.Gid > maxId {
return nil, ErrRange
}
- // if groupArg couldn't be found in /etc/group but is numeric, just roll with it - this is legit
+ // Okay, so it's numeric. We can just roll with this.
}
- } else if haveGroup {
- // If implicit group format, fill supplementary gids.
+ } else if len(groups) > 0 {
+ // Supplementary group ids only make sense if in the implicit form.
user.Sgids = make([]int, len(groups))
for i, group := range groups {
user.Sgids[i] = group.Gid
--
2.8.1
++++++ docker-1.10.3.tar.xz -> docker-1.11.1.tar.xz ++++++
/work/SRC/openSUSE:Factory/docker/docker-1.10.3.tar.xz /work/SRC/openSUSE:Factory/.docker.new/docker-1.11.1.tar.xz differ: char 25, line 1
++++++ docker-mount-secrets.patch ++++++
>From fb84d5a3fbc3f1fad7dfc961b5dace3915eae7f9 Mon Sep 17 00:00:00 2001
From: Aleksa Sarai <asarai(a)suse.de>
Date: Mon, 11 Apr 2016 22:54:35 +1000
Subject: [PATCH] SUSE: implement SUSE container secrets
This allows for us to pass in host credentials to a container, allowing
for SUSEConnect to work with containers.
THIS PATCH IS NOT TO BE UPSTREAMED, DUE TO THE FACT THAT IT IS
SUSE-SPECIFIC, AND UPSTREAM DOES NOT APPROVE OF THIS CONCEPT BECAUSE IT
MAKES BUILDS NOT ENTIRELY REPRODUCIBLE.
Signed-off-by: Aleksa Sarai <asarai(a)suse.de>
---
container/container_unix.go | 63 ++++++++++++
daemon/container_operations_unix.go | 50 ++++++++++
daemon/daemon_unix.go | 6 +-
daemon/oci_linux.go | 7 ++
daemon/start.go | 6 ++
daemon/suse_secrets.go | 184 ++++++++++++++++++++++++++++++++++++
6 files changed, 314 insertions(+), 2 deletions(-)
create mode 100644 daemon/suse_secrets.go
Index: docker-1.11.0/container/container_unix.go
===================================================================
--- docker-1.11.0.orig/container/container_unix.go
+++ docker-1.11.0/container/container_unix.go
@@ -34,6 +34,8 @@ type Container struct {
HostsPath string
ShmPath string
ResolvConfPath string
+ // SUSE:secrets :: We need to add the container-specific secrets path here.
+ SuseSecretsPath string
SeccompProfile string
NoNewPrivileges bool
}
@@ -243,6 +245,67 @@ func (container *Container) IpcMounts()
return mounts
}
+// SUSE:secrets :: SuseSecretsResourcePath returns the path to the container's
+// personal /run/secrets tmpfs.
+func (container *Container) SuseSecretsResourcePath() (string, error) {
+ return container.GetRootResourcePath("suse:secrets")
+}
+
+// SUSE:secrets :: SuseSecretMounts returns the list of mounts required for the
+// SUSE-specific /run/secrets patch. The container's personal /run/secrets tmpfs
+// has already been set up at this point.
+func (container *Container) SuseSecretMounts() []Mount {
+ var mounts []Mount
+
+ logrus.WithFields(logrus.Fields{
+ "container": container.ID,
+ "path": container.SuseSecretsPath,
+ "hasmount": container.HasMountFor("/run/secrets"),
+ }).Debug("SUSE:secrets :: adding container secrets to mountpoint")
+
+ // TODO(SUSE): How do we register for HasMountFor().
+ if !container.HasMountFor("/run/secrets") {
+ label.SetFileLabel(container.SuseSecretsPath, container.MountLabel)
+ mounts = append(mounts, Mount{
+ Source: container.SuseSecretsPath,
+ Destination: "/run/secrets",
+ Writable: true,
+ Propagation: volume.DefaultPropagationMode,
+ })
+ }
+
+ return mounts
+}
+
+// SUSE:secrets :: Unmounts the container's personal /run/secrets tmpfs using the
+// provided function. This is done to clean up the mountpoints properly.
+func (container *Container) UnmountSuseSecretMounts(unmount func(string) error) {
+ logrus.WithFields(logrus.Fields{
+ "container": container.ID,
+ "hasmount": container.HasMountFor("/run/secrets"),
+ }).Debug("SUSE:secrets :: requested to clean up container secrets")
+
+ if !container.HasMountFor("/run/secrets") {
+ logrus.Debugf("SUSE:secrets :: cleaning up secrets mount for container")
+
+ suseSecretsPath, err := container.SuseSecretsResourcePath()
+ if err != nil {
+ logrus.Error("SUSE:secrets :: failed to clean up secrets mounts: no secrets resource path found for container %v: %v", container.ID, err)
+ }
+
+ if suseSecretsPath != "" {
+ logrus.WithFields(logrus.Fields{
+ "path": suseSecretsPath,
+ }).Debugf("SUSE:secrets :: actually unmounting conatiner secrets")
+
+ if err := unmount(suseSecretsPath); err != nil && !os.IsNotExist(err) {
+ // We can't error out here.
+ logrus.Warnf("SUSE:secrets :: failed to clean up secrets mounts: failed to umount %s: %v", suseSecretsPath, err)
+ }
+ }
+ }
+}
+
// UpdateContainer updates configuration of a container.
func (container *Container) UpdateContainer(hostConfig *containertypes.HostConfig) error {
container.Lock()
Index: docker-1.11.0/daemon/container_operations_unix.go
===================================================================
--- docker-1.11.0.orig/daemon/container_operations_unix.go
+++ docker-1.11.0/daemon/container_operations_unix.go
@@ -182,6 +182,56 @@ func (daemon *Daemon) getIpcContainer(co
return c, nil
}
+// SUSE:secrets :: Create a container's personal /run/secrets tmpfs and fill it
+// with the host's credentials.
+func (daemon *Daemon) setupSuseSecrets(c *container.Container) (err error) {
+ c.SuseSecretsPath, err = c.SuseSecretsResourcePath()
+ if err != nil {
+ return err
+ }
+
+ if !c.HasMountFor("/run/secrets") {
+ rootUID, rootGID := daemon.GetRemappedUIDGID()
+ if err = idtools.MkdirAllAs(c.SuseSecretsPath, 0700, rootUID, rootGID); err != nil {
+ return fmt.Errorf("SUSE:secrets :: failed to create container secret: %v", err)
+ }
+ if err = syscall.Mount("tmpfs", c.SuseSecretsPath, "tmpfs", uintptr(syscall.MS_NOEXEC|syscall.MS_NOSUID|syscall.MS_NODEV), label.FormatMountLabel("", c.GetMountLabel())); err != nil {
+ return fmt.Errorf("SUSE:secrets :: mounting secrets tmpfs: %v", err)
+ }
+ // We need to defer a cleanup, to make sure errors that occur before the container
+ // starts don't cause wasted memory due to tmpfs-es that aren't being used.
+ defer func() {
+ if err != nil {
+ logrus.Infof("SUSE::secrets :: cleaning up secrets mount due to failed setup")
+ c.UnmountSuseSecretMounts(detachMounted)
+ }
+ }()
+ if err = os.Chown(c.SuseSecretsPath, rootUID, rootGID); err != nil {
+ return fmt.Errorf("SUSE:secrets :: failed to chown container secret to (uid=%d,gid=%d): %v", rootUID, rootGID, err)
+ }
+
+ // Now we need to inject the credentials. But in order to play properly with
+ // user namespaces, they must be owned by rootUID:rootGID.
+
+ data, err := getHostSuseSecretData()
+ if err != nil {
+ return fmt.Errorf("SUSE:secrets :: failed to get host secret data: %v", err)
+ }
+
+ uidMap, gidMap := daemon.GetUIDGIDMaps()
+ for _, s := range data {
+ if err := s.SaveTo(c.SuseSecretsPath, uidMap, gidMap); err != nil {
+ logrus.WithFields(logrus.Fields{
+ "s.path": s.Path,
+ "path": c.SuseSecretsPath,
+ }).Errorf("SUSE:secrets :: failed to save secret data: %v", err)
+ }
+ }
+ }
+
+ return
+}
+
func (daemon *Daemon) setupIpcDirs(c *container.Container) error {
var err error
Index: docker-1.11.0/daemon/daemon_unix.go
===================================================================
--- docker-1.11.0.orig/daemon/daemon_unix.go
+++ docker-1.11.0/daemon/daemon_unix.go
@@ -786,8 +786,10 @@ func initBridgeDriver(controller libnetw
// the container from unwanted side-effects on the rw layer.
func setupInitLayer(initLayer string, rootUID, rootGID int) error {
for pth, typ := range map[string]string{
- "/dev/pts": "dir",
- "/dev/shm": "dir",
+ "/dev/pts": "dir",
+ "/dev/shm": "dir",
+ // SUSE:secrets :: We need to add the mountpoint in the init layer.
+ "/run/secrets": "dir",
"/proc": "dir",
"/sys": "dir",
"/.dockerenv": "file",
Index: docker-1.11.0/daemon/oci_linux.go
===================================================================
--- docker-1.11.0.orig/daemon/oci_linux.go
+++ docker-1.11.0/daemon/oci_linux.go
@@ -634,12 +634,19 @@ func (daemon *Daemon) createSpec(c *cont
return nil, err
}
+ // SUSE:secrets :: We need to set up the container-specific secrets tmpfs here.
+ if err := daemon.setupSuseSecrets(c); err != nil {
+ return nil, err
+ }
+
mounts, err := daemon.setupMounts(c)
if err != nil {
return nil, err
}
mounts = append(mounts, c.IpcMounts()...)
mounts = append(mounts, c.TmpfsMounts()...)
+ // SUSE:secrets :: We add the mounts to the OCI config which containerd then uses.
+ mounts = append(mounts, c.SuseSecretMounts()...)
if err := setMounts(daemon, &s, c, mounts); err != nil {
return nil, fmt.Errorf("linux mounts: %v", err)
}
Index: docker-1.11.0/daemon/start.go
===================================================================
--- docker-1.11.0.orig/daemon/start.go
+++ docker-1.11.0/daemon/start.go
@@ -164,6 +164,12 @@ func (daemon *Daemon) Cleanup(container
container.UnmountIpcMounts(detachMounted)
+ // TODO(SUSE): Make sure this gets called by containerCleanup. Do we need to
+ // port this part of the patch there as well?
+
+ // SUSE:secrets :: We need to unmount stuff here so that we clean up properly.
+ container.UnmountSuseSecretMounts(detachMounted)
+
if err := daemon.conditionalUnmountOnCleanup(container); err != nil {
// FIXME: remove once reference counting for graphdrivers has been refactored
// Ensure that all the mounts are gone
Index: docker-1.11.0/daemon/suse_secrets.go
===================================================================
--- /dev/null
+++ docker-1.11.0/daemon/suse_secrets.go
@@ -0,0 +1,184 @@
+package daemon
+
+// SUSE:secrets :: This is a set of functions to copy host credentials into a
+// container's /run/secrets.
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "syscall"
+
+ "github.com/Sirupsen/logrus"
+ "github.com/docker/docker/pkg/idtools"
+)
+
+// TODO(SUSE): We need to reimplement this to use tar. Immediately.
+
+// Creating a fake file.
+type SuseFakeFile struct {
+ Path string
+ Uid int
+ Gid int
+ Mode os.FileMode
+ Data []byte
+}
+
+func (s *SuseFakeFile) SaveTo(dir string, uidMap, gidMap []idtools.IDMap) error {
+ // Create non-existant path components with an owner of root (other FakeFiles
+ // will clean this up if the owner is critical).
+ rootUid, rootGid, err := idtools.GetRootUIDGID(uidMap, gidMap)
+
+ path := filepath.Join(dir, s.Path)
+ if err := idtools.MkdirAllNewAs(filepath.Dir(path), 0755, rootUid, rootGid); err != nil && !os.IsExist(err) {
+ return err
+ }
+
+ uid, err := idtools.ToHost(s.Uid, uidMap)
+ if err != nil {
+ return err
+ }
+
+ gid, err := idtools.ToHost(s.Gid, gidMap)
+ if err != nil {
+ return err
+ }
+
+ if s.Mode.IsDir() {
+ if err := idtools.MkdirAs(path, s.Mode, uid, gid); err != nil {
+ return err
+ }
+ } else {
+ if err := ioutil.WriteFile(path, s.Data, s.Mode); err != nil {
+ return err
+ }
+ }
+
+ return os.Chown(path, uid, gid)
+}
+
+// readDir will recurse into a directory prefix/dir, and return the set of secrets
+// in that directory. The Path attribute of each has the prefix stripped. Symlinks
+// are evaluated.
+func readDir(prefix, dir string) ([]*SuseFakeFile, error) {
+ var suseFiles []*SuseFakeFile
+
+ path := filepath.Join(prefix, dir)
+
+ fi, err := os.Stat(path)
+ if err != nil {
+ // Ignore dangling symlinks.
+ if os.IsNotExist(err) {
+ logrus.Warnf("SUSE:secrets :: dangling symlink: %s", path)
+ return suseFiles, nil
+ }
+ return nil, err
+ }
+
+ stat, ok := fi.Sys().(*syscall.Stat_t)
+ if !ok {
+ logrus.Warnf("SUSE:secrets :: failed to cast directory stat_t: defaulting to owned by root:root: %s", path)
+ }
+
+ suseFiles = append(suseFiles, &SuseFakeFile{
+ Path: dir,
+ Uid: int(stat.Uid),
+ Gid: int(stat.Gid),
+ Mode: fi.Mode(),
+ })
+
+ files, err := ioutil.ReadDir(path)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, f := range files {
+ subpath := filepath.Join(dir, f.Name())
+
+ if f.IsDir() {
+ secrets, err := readDir(prefix, subpath)
+ if err != nil {
+ return nil, err
+ }
+ suseFiles = append(suseFiles, secrets...)
+ } else {
+ secrets, err := readFile(prefix, subpath)
+ if err != nil {
+ return nil, err
+ }
+ suseFiles = append(suseFiles, secrets...)
+ }
+ }
+
+ return suseFiles, nil
+}
+
+func readFile(prefix, file string) ([]*SuseFakeFile, error) {
+ var suseFiles []*SuseFakeFile
+
+ path := filepath.Join(prefix, file)
+ fi, err := os.Stat(path)
+ if err != nil {
+ // Ignore dangling symlinks.
+ if os.IsNotExist(err) {
+ logrus.Warnf("SUSE:secrets :: dangling symlink: %s", path)
+ return suseFiles, nil
+ }
+ return nil, err
+ }
+
+ stat, ok := fi.Sys().(*syscall.Stat_t)
+ if !ok {
+ logrus.Warnf("SUSE:secrets :: failed to cast file stat_t: defaulting to owned by root:root: %s", path)
+ }
+
+ if fi.IsDir() {
+ secrets, err := readDir(prefix, file)
+ if err != nil {
+ return nil, err
+ }
+ suseFiles = append(suseFiles, secrets...)
+ } else {
+ bytes, err := ioutil.ReadFile(path)
+ if err != nil {
+ return nil, err
+ }
+ suseFiles = append(suseFiles, &SuseFakeFile{
+ Path: file,
+ Uid: int(stat.Uid),
+ Gid: int(stat.Gid),
+ Mode: fi.Mode(),
+ Data: bytes,
+ })
+ }
+
+ return suseFiles, nil
+}
+
+func getHostSuseSecretData() ([]*SuseFakeFile, error) {
+ secrets := []*SuseFakeFile{}
+
+ credentials, err := readDir("/etc/zypp", "credentials.d")
+ if err != nil {
+ if os.IsNotExist(err) {
+ credentials = []*SuseFakeFile{}
+ } else {
+ logrus.Errorf("SUSE:secrets :: error while reading zypp credentials: %s", err)
+ return nil, err
+ }
+ }
+ secrets = append(secrets, credentials...)
+
+ suseConnect, err := readFile("/etc", "SUSEConnect")
+ if err != nil {
+ if os.IsNotExist(err) {
+ suseConnect = []*SuseFakeFile{}
+ } else {
+ logrus.Errorf("SUSE:secrets :: error while reading /etc/SUSEConnect: %s", err)
+ return nil, err
+ }
+ }
+ secrets = append(secrets, suseConnect...)
+
+ return secrets, nil
+}
++++++ docker.service ++++++
--- /var/tmp/diff_new_pack.n7u6hl/_old 2016-05-04 08:20:18.000000000 +0200
+++ /var/tmp/diff_new_pack.n7u6hl/_new 2016-05-04 08:20:18.000000000 +0200
@@ -1,21 +1,15 @@
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
-After=network.target docker.socket
-Requires=docker.socket
+After=network.target docker.socket containerd.socket
+Requires=docker.socket containerd.socket
[Service]
-# the default is not to use systemd for cgroups because the delegate issues still
-# exists and systemd currently does not support the cgroup feature set required
-# for containers run by docker
EnvironmentFile=/etc/sysconfig/docker
-ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
-MountFlags=slave
+ExecStart=/usr/bin/docker daemon -H fd:// --containerd /run/containerd/containerd.sock $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
-# set delegate yes so that systemd does not reset the cgroups of docker containers
-Delegate=yes
[Install]
WantedBy=multi-user.target
1
0
Hello community,
here is the log from the commit of package python-oslo.concurrency for openSUSE:Factory checked in at 2016-05-04 08:20:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.concurrency (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.concurrency.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.concurrency"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.concurrency/python-oslo.concurrency.changes 2015-10-30 13:42:30.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-oslo.concurrency.new/python-oslo.concurrency.changes 2016-05-04 08:20:04.000000000 +0200
@@ -1,0 +2,46 @@
+Mon Apr 4 11:19:26 UTC 2016 - tbechtold(a)suse.com
+
+- update to 3.7.0:
+ * Updated from global requirements
+ * Update .gitreview for stable/mitaka
+- Adjust Requires
+
+-------------------------------------------------------------------
+Wed Mar 16 16:52:58 UTC 2016 - tbechtold(a)suse.com
+
+- Add python-enum34 as BuildRequires to fix tests
+
+-------------------------------------------------------------------
+Mon Feb 29 09:33:56 UTC 2016 - dmueller(a)suse.com
+
+- update to 3.6.0:
+ * Updated from global requirements
+ * Update translation setup
+ * Add prlimit parameter to execute()
+ * Imported Translations from Zanata
+ * Remove unnecessary package in setup.cfg
+
+-------------------------------------------------------------------
+Sun Feb 28 13:15:49 UTC 2016 - dmueller(a)suse.com
+
+- update to 3.2.0:
+ * Updated from global requirements
+ * Trival: Remove 'MANIFEST.in'
+ * Add complementary remove lock with prefix function
+ * Drop python 2.6 support
+ * Updated from global requirements
+ * Remove python 2.6 classifier
+ * Use versionadded and versionchanged in doc
+ * Updated from global requirements
+ * Imported Translations from Zanata
+ * Fix Tests to run under OSX
+ * Fix coverage configuration and execution
+ * Imported Translations from Zanata
+ * Move 'history' -> release notes section
+ * add auto-generated docs for config options
+ * Change ignore-errors to ignore_errors
+ * Updated from global requirements
+ * Imported Translations from Zanata
+ * Use int enumerations for log error constants
+
+-------------------------------------------------------------------
Old:
----
oslo.concurrency-2.6.0.tar.gz
New:
----
oslo.concurrency-3.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.concurrency.spec ++++++
--- /var/tmp/diff_new_pack.zkDOh7/_old 2016-05-04 08:20:05.000000000 +0200
+++ /var/tmp/diff_new_pack.zkDOh7/_new 2016-05-04 08:20:05.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-oslo.concurrency
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,8 +16,10 @@
#
+%define version_unconverted 3.7.0
+
Name: python-oslo.concurrency
-Version: 2.6.0
+Version: 3.7.0
Release: 0
Summary: OpenStack Oslo concurrency library
License: Apache-2.0
@@ -26,6 +28,7 @@
Source: https://pypi.python.org/packages/source/o/oslo.concurrency/oslo.concurrency…
BuildRequires: openstack-suse-macros
BuildRequires: python-devel
+BuildRequires: python-enum34
BuildRequires: python-eventlet
BuildRequires: python-fasteners
BuildRequires: python-fixtures
@@ -41,19 +44,16 @@
BuildRequires: python-sphinx
BuildRequires: python-testrepository
Requires: python-Babel >= 1.3
+Requires: python-enum34
Requires: python-fasteners >= 0.7
Requires: python-iso8601 >= 0.1.9
-Requires: python-oslo.config >= 2.3.0
-Requires: python-oslo.i18n >= 1.5.0
-Requires: python-oslo.utils >= 2.0.0
+Requires: python-oslo.config >= 3.7.0
+Requires: python-oslo.i18n >= 2.1.0
+Requires: python-oslo.utils >= 3.5.0
Requires: python-retrying >= 1.2.3
Requires: python-six >= 1.9.0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
BuildArch: noarch
-%endif
%description
Oslo concurrency library has utilities for safely running multi-thread,
@@ -85,8 +85,10 @@
%{__python2} setup.py install --skip-build --root %{buildroot}
%check
+%if "%_lib" == "lib64"
testr init
testr run --parallel
+%endif
%files
%defattr(-,root,root,-)
++++++ oslo.concurrency-2.6.0.tar.gz -> oslo.concurrency-3.7.0.tar.gz ++++++
++++ 2251 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-oslo.messaging for openSUSE:Factory checked in at 2016-05-04 08:20:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.messaging (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.messaging.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.messaging"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.messaging/python-oslo.messaging.changes 2015-10-30 13:42:07.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-oslo.messaging.new/python-oslo.messaging.changes 2016-05-04 08:20:03.000000000 +0200
@@ -1,0 +2,26 @@
+Mon Apr 4 11:29:25 UTC 2016 - tbechtold(a)suse.com
+
+- update to 4.6.1:
+ * Fix Break in Windows platforms
+ * Always delete exc_info tuple, even if reply fails
+ * Fail quickly if there on bad password
+ * Updated from global requirements
+ * Always set all socket timeouts
+- Adjust Requires
+
+-------------------------------------------------------------------
+Wed Mar 16 11:15:06 UTC 2016 - tbechtold(a)suse.com
+
+- update to 4.5.1:
+ * Bump rabbit_transient_queues_ttl to 30 mins
+ * Fix Notification listener blocking behavior
+ * Update .gitreview for stable/mitaka
+- Adjust Requires
+
+-------------------------------------------------------------------
+Sun Feb 28 13:17:45 UTC 2016 - dmueller(a)suse.com
+
+- update to 4.5.0:
+ * too long to include, see included changes
+
+-------------------------------------------------------------------
Old:
----
oslo.messaging-2.5.0.tar.gz
New:
----
oslo.messaging-4.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.messaging.spec ++++++
--- /var/tmp/diff_new_pack.jiumZT/_old 2016-05-04 08:20:04.000000000 +0200
+++ /var/tmp/diff_new_pack.jiumZT/_new 2016-05-04 08:20:04.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-oslo.messaging
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,8 +17,10 @@
%define component oslo_messaging
+%define version_unconverted 4.6.1
+
Name: python-oslo.messaging
-Version: 2.5.0
+Version: 4.6.1
Release: 0
Url: https://launchpad.net/oslo/
Summary: OpenStack Messaging API
@@ -45,24 +47,27 @@
BuildRequires: python-six
Requires: python-PyYAML >= 3.1.0
Requires: python-WebOb >= 1.2.3
-Requires: python-aioeventlet >= 0.4
Requires: python-amqp >= 1.4.0
Requires: python-cachetools >= 1.0.0
-Requires: python-eventlet >= 0.17.4
-Requires: python-futurist >= 0.1.2
+Requires: python-debtcollector >= 1.2.0
+Requires: python-eventlet >= 0.18.2
+Requires: python-futures >= 3.0
+Requires: python-futurist >= 0.11.0
Requires: python-greenlet >= 0.3.2
-Requires: python-kombu >= 3.0.7
-Requires: python-oslo.config >= 2.3.0
+Requires: python-kombu >= 3.0.25
+Requires: python-oslo.config >= 3.7.0
Requires: python-oslo.context >= 0.2.0
-Requires: python-oslo.i18n >= 1.5.0
-Requires: python-oslo.log >= 1.8.0
-Requires: python-oslo.middleware >= 2.8.0
-Requires: python-oslo.serialization >= 1.4.0
-Requires: python-oslo.service >= 0.7.0
-Requires: python-oslo.utils >= 2.0.0
+Requires: python-oslo.i18n >= 2.1.0
+Requires: python-oslo.log >= 1.14.0
+Requires: python-oslo.middleware >= 3.0.0
+Requires: python-oslo.serialization >= 1.10.0
+Requires: python-oslo.service >= 1.0.0
+Requires: python-oslo.utils >= 3.5.0
+Requires: python-pika >= 0.10.0
+Requires: python-pika-pool >= 0.1.3
+Requires: python-retrying >= 1.2.3
Requires: python-six >= 1.9.0
Requires: python-stevedore >= 1.5.0
-Requires: python-trollius >= 1.0
%if 0%{?suse_version} && 0%{?suse_version} <= 1110
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%else
@@ -107,7 +112,8 @@
%install
%{__python2} setup.py install --skip-build --root %{buildroot}
-
+# disabling git call for last modification date from git repo
+sed '/^html_last_updated_fmt.*/,/.)/ s/^/#/' -i doc/source/conf.py
# generate html docs
sphinx-build doc/source html
# remove the sphinx-build leftovers
@@ -118,7 +124,7 @@
%files
%defattr(-,root,root,-)
%doc LICENSE README.rst AUTHORS
-%{_bindir}/oslo-messaging-zmq-receiver
+%{_bindir}/oslo-messaging-zmq-broker
%{python2_sitelib}/oslo_messaging
%{python2_sitelib}/*.egg-info
++++++ oslo.messaging-2.5.0.tar.gz -> oslo.messaging-4.6.1.tar.gz ++++++
++++ 22274 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-oslotest for openSUSE:Factory checked in at 2016-05-04 08:20:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslotest (Old)
and /work/SRC/openSUSE:Factory/.python-oslotest.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslotest"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslotest/python-oslotest.changes 2015-09-02 07:54:07.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-oslotest.new/python-oslotest.changes 2016-05-04 08:20:00.000000000 +0200
@@ -1,0 +2,22 @@
+Thu Mar 3 07:14:29 UTC 2016 - tbechtold(a)suse.com
+
+- update to 2.0.0:
+ * Updated from global requirements
+ * Remove Python 2.6 classifier
+ * mockpatch: deprecate in favor of native fixtures
+ * Remove python 2.6 and cleanup tox.ini
+ * Updated from global requirements
+ * Fix coverage configuration and execution
+ * Updated from global requirements
+ * Add documentation about using oslo_debug_helper
+ * add oslo.config a test requirement
+ * clean up readme and doc title
+ * clean up toctree
+ * auto-generate API documentation
+ * Fix the home-page with Oslotest wikipage
+ * Fixup docstrings
+ * Updated from global requirements
+ * Updated from global requirements
+- Switch to .spec from rpm-packaging upstream project
+
+-------------------------------------------------------------------
Old:
----
oslotest-1.10.0.tar.gz
New:
----
oslotest-2.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslotest.spec ++++++
--- /var/tmp/diff_new_pack.8BZSR7/_old 2016-05-04 08:20:01.000000000 +0200
+++ /var/tmp/diff_new_pack.8BZSR7/_new 2016-05-04 08:20:01.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-oslotest
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,16 +17,18 @@
Name: python-oslotest
-Version: 1.10.0
+Version: 2.0.0
Release: 0
Summary: OpenStack test framework
License: Apache-2.0
Group: Development/Languages/Python
-Url: http://launchpad.net/oslo
+Url: https://launchpad.net/oslotest
Source: https://pypi.python.org/packages/source/o/oslotest/oslotest-%{version}.tar.…
+BuildRequires: openstack-macros
BuildRequires: python-devel
BuildRequires: python-pbr
# Test requirements:
+BuildRequires: python-debtcollector >= 0.3.0
BuildRequires: python-fixtures >= 0.3.14
BuildRequires: python-mock >= 1.0
BuildRequires: python-mox3 >= 0.7.0
@@ -34,7 +36,7 @@
BuildRequires: python-six
BuildRequires: python-testrepository >= 0.0.18
BuildRequires: python-testscenarios >= 0.4
-BuildRequires: python-testtools >= 0.9.34
+BuildRequires: python-testtools >= 1.4.0
Requires: python-fixtures >= 1.3.1
Requires: python-mock >= 1.0.1
Requires: python-mox3 >= 0.7.0
@@ -44,36 +46,31 @@
Requires: python-testrepository >= 0.0.18
Requires: python-testscenarios >= 0.4
Requires: python-testtools >= 1.4.0
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-BuildRequires: python-discover
-%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
BuildArch: noarch
-%endif
%description
-OpenStack test framework
+The Oslo Test framework provides common fixtures, support for debugging, and
+better support for mocking results.
%prep
%setup -q -n oslotest-%{version}
%build
-python setup.py build
+%{__python2} setup.py build
%install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%{__python2} setup.py install --prefix=%{_prefix} --root=%{buildroot}
%check
testr init && testr run
%files
-%defattr(-,root,root,-)
-%doc ChangeLog README.rst LICENSE AUTHORS
+%license LICENSE
+%doc ChangeLog README.rst AUTHORS
%{_bindir}/oslo_debug_helper
%{_bindir}/oslo_run_cross_tests
%{_bindir}/oslo_run_pre_release_tests
-
-%{python_sitelib}/*
+%{python2_sitelib}/oslotest
+%{python2_sitelib}/oslotest*egg-info
%changelog
++++++ oslotest-1.10.0.tar.gz -> oslotest-2.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/.coveragerc new/oslotest-2.0.0/.coveragerc
--- old/oslotest-1.10.0/.coveragerc 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/.coveragerc 2015-11-23 21:59:20.000000000 +0100
@@ -1,7 +1,8 @@
[run]
branch = True
-source = test
-omit = test/tests/*,test/openstack/*
+source = oslotest
+omit = oslotest/tests/*
[report]
-ignore-errors = True
\ No newline at end of file
+ignore_errors = True
+precision = 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/AUTHORS new/oslotest-2.0.0/AUTHORS
--- old/oslotest-1.10.0/AUTHORS 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/AUTHORS 2015-11-23 21:59:43.000000000 +0100
@@ -5,6 +5,7 @@
Ben Nemec <bnemec(a)redhat.com>
Brant Knudson <bknudson(a)us.ibm.com>
Chang Bo Guo <guochbo(a)cn.ibm.com>
+ChangBo Guo(gcb) <eric.guo(a)easystack.cn>
Christian Berendt <berendt(a)b1-systems.de>
Chuck Short <chuck.short(a)canonical.com>
Davanum Srinivas <davanum(a)gmail.com>
@@ -31,9 +32,11 @@
Monty Taylor <mordred(a)inaugust.com>
Noorul Islam K M <noorul(a)noorul.com>
Rajaram Mallya <rajarammallya(a)gmail.com>
+Ronald Bradford <ronald.bradford(a)gmail.com>
Sergey Kraynev <skraynev(a)mirantis.com>
Soren Hansen <soren(a)linux2go.dk>
Steve Martinelli <stevemar(a)ca.ibm.com>
Victor Stinner <vstinner(a)redhat.com>
Yuriy Taraday <yorik.sar(a)gmail.com>
Zhongyue Luo <zhongyue.nah(a)intel.com>
+venkatamahesh <venkatamaheshkotha(a)gmail.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/ChangeLog new/oslotest-2.0.0/ChangeLog
--- old/oslotest-1.10.0/ChangeLog 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/ChangeLog 2015-11-23 21:59:43.000000000 +0100
@@ -1,6 +1,34 @@
CHANGES
=======
+2.0.0
+-----
+
+* Updated from global requirements
+* Remove Python 2.6 classifier
+* mockpatch: deprecate in favor of native fixtures
+* Remove python 2.6 and cleanup tox.ini
+* Updated from global requirements
+
+1.12.0
+------
+
+* Fix coverage configuration and execution
+* Updated from global requirements
+* Add documentation about using oslo_debug_helper
+* add oslo.config a test requirement
+* clean up readme and doc title
+* clean up toctree
+* auto-generate API documentation
+* Fix the home-page with Oslotest wikipage
+* Fixup docstrings
+* Updated from global requirements
+
+1.11.0
+------
+
+* Updated from global requirements
+
1.10.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/PKG-INFO new/oslotest-2.0.0/PKG-INFO
--- old/oslotest-1.10.0/PKG-INFO 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/PKG-INFO 2015-11-23 21:59:43.000000000 +0100
@@ -1,14 +1,14 @@
Metadata-Version: 1.1
Name: oslotest
-Version: 1.10.0
+Version: 2.0.0
Summary: Oslo test framework
-Home-page: http://launchpad.net/oslo
+Home-page: http://wiki.openstack.org/wiki/Oslo#oslotest
Author: OpenStack
Author-email: openstack-dev(a)lists.openstack.org
License: UNKNOWN
-Description: ==========
- oslotest
- ==========
+Description: =======================================================
+ oslotest -- OpenStack Testing Framework and Utilities
+ =======================================================
The Oslo Test framework provides common fixtures, support for debugging, and
better support for mocking results.
@@ -28,6 +28,5 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/README.rst new/oslotest-2.0.0/README.rst
--- old/oslotest-1.10.0/README.rst 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/README.rst 2015-11-23 21:59:20.000000000 +0100
@@ -1,6 +1,6 @@
-==========
- oslotest
-==========
+=======================================================
+ oslotest -- OpenStack Testing Framework and Utilities
+=======================================================
The Oslo Test framework provides common fixtures, support for debugging, and
better support for mocking results.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/doc/source/api.rst new/oslotest-2.0.0/doc/source/api.rst
--- old/oslotest-1.10.0/doc/source/api.rst 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/doc/source/api.rst 1970-01-01 01:00:00.000000000 +0100
@@ -1,51 +0,0 @@
-=====
- API
-=====
-
-oslotest.base
-=============
-
-.. automodule:: oslotest.base
-
-.. autoclass:: oslotest.base.BaseTestCase
- :members:
-
-oslotest.createfile
-===================
-
-.. automodule:: oslotest.createfile
- :members:
- :special-members:
-
-oslotest.log
-============
-
-.. automodule:: oslotest.log
- :members:
- :special-members:
-
-oslotest.mockpatch
-==================
-
-.. automodule:: oslotest.mockpatch
- :members:
- :special-members:
-
-oslotest.moxstubout
-===================
-
-.. automodule:: oslotest.moxstubout
- :members:
-
-oslotest.output
-===================
-
-.. automodule:: oslotest.output
- :members:
-
-oslotest.timeout
-================
-
-.. automodule:: oslotest.timeout
- :members:
- :special-members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/doc/source/conf.py new/oslotest-2.0.0/doc/source/conf.py
--- old/oslotest-1.10.0/doc/source/conf.py 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/doc/source/conf.py 2015-11-23 21:59:20.000000000 +0100
@@ -29,6 +29,7 @@
# autodoc generation is a bit aggressive and a nuisance when doing heavy
# text edit cycles.
# execute "export SPHINX_DEBUG=1" in your terminal to disable
+modindex_common_prefix = ['oslotest.']
# The suffix of source filenames.
source_suffix = '.rst'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/doc/source/debugging.rst new/oslotest-2.0.0/doc/source/debugging.rst
--- old/oslotest-1.10.0/doc/source/debugging.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/oslotest-2.0.0/doc/source/debugging.rst 2015-11-23 21:59:20.000000000 +0100
@@ -0,0 +1,29 @@
+=================
+ Debugging Tests
+=================
+
+Running tests through testrepository_ makes it difficult to use pdb for
+debugging them. oslotest includes ``oslo_debug_helper`` to make using
+pdb simpler/possible.
+
+First, add a pdb call to the test code::
+
+ import pdb; pdb.set_trace()
+
+Then run the tests through ``oslo_debug_helper`` like
+
+::
+
+ $ oslo_debug_helper [tests to run]
+
+or
+
+::
+
+ $ tox -e venv -- oslo_debug_helper [tests to run]
+
+.. seealso::
+
+ * https://wiki.openstack.org/wiki/Testr
+
+.. _testrepository: https://pypi.python.org/pypi/testrepository
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/doc/source/index.rst new/oslotest-2.0.0/doc/source/index.rst
--- old/oslotest-1.10.0/doc/source/index.rst 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/doc/source/index.rst 2015-11-23 21:59:20.000000000 +0100
@@ -1,21 +1,32 @@
-Welcome to oslotest's documentation!
-====================================
-
-OpenStack test framework and test fixtures.
-
-Contents
-========
+=======================================================
+ oslotest -- OpenStack Testing Framework and Utilities
+=======================================================
.. toctree::
:maxdepth: 2
installation
- api
testing
features
cross-testing
+ debugging
resources
contributing
+
+API
+===
+
+.. toctree::
+ :maxdepth: 1
+
+ api/autoindex
+
+Release Notes
+=============
+
+.. toctree::
+ :maxdepth: 1
+
history
Indices and tables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/oslotest/mockpatch.py new/oslotest-2.0.0/oslotest/mockpatch.py
--- old/oslotest-1.10.0/oslotest/mockpatch.py 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/oslotest/mockpatch.py 2015-11-23 21:59:20.000000000 +0100
@@ -15,10 +15,16 @@
# License for the specific language governing permissions and limitations
# under the License.
+from debtcollector import removals
import fixtures
from six.moves import mock
+removals.removed_module("oslotest.mockpatch", replacement="fixtures",
+ version="1.13", removal_version="2.0",
+ message="Use fixtures.Mock* classes instead")
+
+
class _Base(fixtures.Fixture):
def setUp(self):
super(_Base, self).setUp()
@@ -28,11 +34,11 @@
class PatchObject(_Base):
- """Deal with code around mock.
+ """Deal with code around :func:`mock.patch.object`.
.. py:attribute:: mock
- The mock.
+ The mock as returned by :func:`mock.patch.object`.
"""
@@ -42,11 +48,11 @@
class Patch(_Base):
- """Deal with code around mock.
+ """Deal with code around :func:`mock.patch`.
.. py:attribute:: mock
- The mock.
+ The mock as returned by :func:`mock.patch`.
"""
@@ -56,12 +62,12 @@
class Multiple(_Base):
- """Deal with code around mock.patch.multiple.
+ """Deal with code around :func:`mock.patch.multiple`.
Pass name=value to replace obj.name with value.
- Pass name= :py:attr:`Multiple.DEFAULT` to replace obj.name with a MagicMock
- instance.
+ Pass name= :attr:`.DEFAULT` to replace obj.name with a
+ :class:`mock.MagicMock` instance.
:param obj: Object or name containing values being mocked.
:type obj: str or object
@@ -69,12 +75,14 @@
.. py:attribute:: mock
- The mock.
+ A :class:`dict`, where each key matches a kwarg parameter and the value
+ is the passed-in value or :class:`mock.MagicMock`.
"""
DEFAULT = mock.DEFAULT
- """Triggers a MagicMock to be created for a named attribute."""
+ """Triggers a :class:`mock.MagicMock` to be created for the named
+ attribute."""
def __init__(self, obj, **kwargs):
super(Multiple, self).__init__()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/oslotest.egg-info/PKG-INFO new/oslotest-2.0.0/oslotest.egg-info/PKG-INFO
--- old/oslotest-1.10.0/oslotest.egg-info/PKG-INFO 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/oslotest.egg-info/PKG-INFO 2015-11-23 21:59:43.000000000 +0100
@@ -1,14 +1,14 @@
Metadata-Version: 1.1
Name: oslotest
-Version: 1.10.0
+Version: 2.0.0
Summary: Oslo test framework
-Home-page: http://launchpad.net/oslo
+Home-page: http://wiki.openstack.org/wiki/Oslo#oslotest
Author: OpenStack
Author-email: openstack-dev(a)lists.openstack.org
License: UNKNOWN
-Description: ==========
- oslotest
- ==========
+Description: =======================================================
+ oslotest -- OpenStack Testing Framework and Utilities
+ =======================================================
The Oslo Test framework provides common fixtures, support for debugging, and
better support for mocking results.
@@ -28,6 +28,5 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/oslotest.egg-info/SOURCES.txt new/oslotest-2.0.0/oslotest.egg-info/SOURCES.txt
--- old/oslotest-1.10.0/oslotest.egg-info/SOURCES.txt 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/oslotest.egg-info/SOURCES.txt 2015-11-23 21:59:43.000000000 +0100
@@ -13,10 +13,10 @@
setup.py
test-requirements.txt
tox.ini
-doc/source/api.rst
doc/source/conf.py
doc/source/contributing.rst
doc/source/cross-testing.rst
+doc/source/debugging.rst
doc/source/features.rst
doc/source/history.rst
doc/source/index.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/oslotest.egg-info/pbr.json new/oslotest-2.0.0/oslotest.egg-info/pbr.json
--- old/oslotest-1.10.0/oslotest.egg-info/pbr.json 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/oslotest.egg-info/pbr.json 2015-11-23 21:59:43.000000000 +0100
@@ -1 +1 @@
-{"git_version": "358f5b3", "is_release": true}
\ No newline at end of file
+{"is_release": true, "git_version": "4dbb9e2"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/oslotest.egg-info/requires.txt new/oslotest-2.0.0/oslotest.egg-info/requires.txt
--- old/oslotest-1.10.0/oslotest.egg-info/requires.txt 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/oslotest.egg-info/requires.txt 2015-11-23 21:59:43.000000000 +0100
@@ -6,4 +6,5 @@
testtools>=1.4.0
mock>=1.2
mox3>=0.7.0
-os-client-config>=1.4.0
+os-client-config!=1.6.2,>=1.4.0
+debtcollector>=0.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/requirements.txt new/oslotest-2.0.0/requirements.txt
--- old/oslotest-1.10.0/requirements.txt 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/requirements.txt 2015-11-23 21:59:20.000000000 +0100
@@ -10,4 +10,5 @@
testtools>=1.4.0
mock>=1.2
mox3>=0.7.0
-os-client-config>=1.4.0
+os-client-config!=1.6.2,>=1.4.0
+debtcollector>=0.3.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/setup.cfg new/oslotest-2.0.0/setup.cfg
--- old/oslotest-1.10.0/setup.cfg 2015-08-03 19:21:15.000000000 +0200
+++ new/oslotest-2.0.0/setup.cfg 2015-11-23 21:59:43.000000000 +0100
@@ -5,7 +5,7 @@
README.rst
author = OpenStack
author-email = openstack-dev(a)lists.openstack.org
-home-page = http://launchpad.net/oslo
+home-page = http://wiki.openstack.org/wiki/Oslo#oslotest
classifier =
Environment :: OpenStack
Intended Audience :: Developers
@@ -15,7 +15,6 @@
Programming Language :: Python
Programming Language :: Python :: 2
Programming Language :: Python :: 2.7
- Programming Language :: Python :: 2.6
Programming Language :: Python :: 3
Programming Language :: Python :: 3.4
@@ -37,12 +36,13 @@
[pbr]
warnerrors = true
+autodoc_index_modules = true
[wheel]
universal = true
[egg_info]
-tag_date = 0
tag_build =
tag_svn_revision = 0
+tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/setup.py new/oslotest-2.0.0/setup.py
--- old/oslotest-1.10.0/setup.py 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/setup.py 2015-11-23 21:59:20.000000000 +0100
@@ -25,5 +25,5 @@
pass
setuptools.setup(
- setup_requires=['pbr>=1.3'],
+ setup_requires=['pbr>=1.8'],
pbr=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/test-requirements.txt new/oslotest-2.0.0/test-requirements.txt
--- old/oslotest-1.10.0/test-requirements.txt 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/test-requirements.txt 2015-11-23 21:59:20.000000000 +0100
@@ -11,4 +11,5 @@
# this is required for the docs build jobs
sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2
-oslosphinx>=2.5.0 # Apache-2.0
+oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0
+oslo.config>=2.7.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslotest-1.10.0/tox.ini new/oslotest-2.0.0/tox.ini
--- old/oslotest-1.10.0/tox.ini 2015-08-03 19:20:54.000000000 +0200
+++ new/oslotest-2.0.0/tox.ini 2015-11-23 21:59:20.000000000 +0100
@@ -1,12 +1,9 @@
[tox]
distribute = False
-envlist = py34,py26,py27,pep8
+envlist = py34,py27,pep8
[testenv]
-install_command = pip install -U {opts} {packages}
-setenv = VIRTUAL_ENV={envdir}
-deps = -r{toxinidir}/requirements.txt
- -r{toxinidir}/test-requirements.txt
+deps = -r{toxinidir}/test-requirements.txt
commands = python setup.py testr --slowest --testr-args='{posargs}'
[testenv:pep8]
@@ -15,7 +12,7 @@
[testenv:cover]
setenv = VIRTUAL_ENV={envdir}
commands =
- python setup.py testr --coverage
+ python setup.py test --coverage --testr-args='{posargs}'
[testenv:venv]
commands = {posargs}
1
0
Hello community,
here is the log from the commit of package python-oslo.service for openSUSE:Factory checked in at 2016-05-04 08:19:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.service (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.service.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.service"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.service/python-oslo.service.changes 2015-12-21 12:03:55.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-oslo.service.new/python-oslo.service.changes 2016-05-04 08:19:59.000000000 +0200
@@ -1,0 +2,71 @@
+Fri Apr 1 10:36:15 UTC 2016 - tbechtold(a)suse.com
+
+- update to 1.8.0:
+ * Updated from global requirements
+ * Update .gitreview for stable/mitaka
+
+-------------------------------------------------------------------
+Thu Mar 3 14:22:10 UTC 2016 - tbechtold(a)suse.com
+
+- update to 1.7.0:
+ * Updated from global requirements
+ * Correct some help text
+ * Fix typo in help text
+ * wsgi: decrease the default number of greenthreads in pool
+ * Updated from global requirements
+ * Updated from global requirements
+ * Allow the backdoor to serve from a local unix domain socket
+ * Updated from global requirements
+ * Use requests in TestWSGIServerWithSSL instead of raw socket client
+ * Updated from global requirements
+ * Updated from global requirements
+ * Fix misspelling and rewrite sentence
+ * Add a more useful/detailed frame dumping function
+ * Updated from global requirements
+ * Update translation setup
+ * Fix race condition on handling signals
+ * Updated from global requirements
+ * Updated from global requirements
+ * Updated from global requirements
+ * Updated from global requirements
+ * Fix artificial service.wait()
+ * Graceful shutdown added to ServiceLauncher
+ * Fix test execution on CentOS 7
+ * Updated from global requirements
+ * Fix some inconsistency in docstrings
+ * Refactoring of tests/eventlet_service.py
+ * Updated from global requirements
+ * Remove argument ServiceLauncher.wait() method
+ * fix a couple of assert issues
+ * Run sslutils and wsgi tests for python3
+ * Updated from global requirements
+ * Updated from global requirements
+ * Fix a race condition in signal handlers
+ * Enable py3 mock.patch of RuntimeError
+ * Delete python bytecode before every test run
+ * Trival: Remove 'MANIFEST.in'
+- Adjust Requires according to requirements.txt
+
+-------------------------------------------------------------------
+Wed Dec 9 15:52:45 UTC 2015 - dmueller(a)suse.com
+
+- update to 1.1.0:
+ * Avoid warning when time taken is close to zero
+ * Update the _i18n.py file and fix the domain value
+ * Add Bandit to tox for security static analysis
+ * Code refactoring of ThreadGroup::stop_timers()
+ * Updated from global requirements
+ * Add functionality for creating Unix domain WSGI servers
+ * Use reflection.get_class_name() from oslo.utils
+ * Remove Python 2.6 classifier
+ * Remove openstack-common.conf
+ * cleanup tox.ini
+ * Change "started child" messages to DEBUG
+ * Support for SSL protocol and cipher controls
+ * Default value of graceful_shutdown_timeout is set to 60sec
+ * Updated from global requirements
+ * Logger name argument was added into wsgi.Server constructor
+ * Avoid the dual-naming confusion
+ * Forbid launching services with 0 or negative number of workers
+
+-------------------------------------------------------------------
Old:
----
oslo.service-0.12.0.tar.gz
New:
----
oslo.service-1.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.service.spec ++++++
--- /var/tmp/diff_new_pack.esZrmU/_old 2016-05-04 08:20:00.000000000 +0200
+++ /var/tmp/diff_new_pack.esZrmU/_new 2016-05-04 08:20:00.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-oslo.service
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,8 +16,10 @@
#
+%define version_unconverted 1.8.0
+
Name: python-oslo.service
-Version: 0.12.0
+Version: 1.8.0
Release: 0
Summary: Oslo service library
License: Apache-2.0
@@ -32,14 +34,14 @@
Requires: python-PasteDeploy >= 1.5.0
Requires: python-Routes >= 1.12.3
Requires: python-WebOb >= 1.2.3
-Requires: python-eventlet >= 0.17.4
+Requires: python-eventlet >= 0.18.2
Requires: python-greenlet >= 0.3.2
-Requires: python-monotonic >= 0.3
-Requires: python-oslo.concurrency >= 2.3.0
-Requires: python-oslo.config >= 2.6.0
-Requires: python-oslo.i18n >= 1.5.0
-Requires: python-oslo.log >= 1.8.0
-Requires: python-oslo.utils >= 2.4.0
+Requires: python-monotonic >= 0.6
+Requires: python-oslo.concurrency >= 3.5.0
+Requires: python-oslo.config >= 3.7.0
+Requires: python-oslo.i18n >= 2.1.0
+Requires: python-oslo.log >= 1.14.0
+Requires: python-oslo.utils >= 3.5.0
Requires: python-six >= 1.9.0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ oslo.service-0.12.0.tar.gz -> oslo.service-1.8.0.tar.gz ++++++
++++ 2445 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package cpupower for openSUSE:Factory checked in at 2016-05-04 08:19:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cpupower (Old)
and /work/SRC/openSUSE:Factory/.cpupower.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cpupower"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cpupower/cpupower.changes 2016-04-28 16:58:28.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cpupower.new/cpupower.changes 2016-05-04 08:19:58.000000000 +0200
@@ -1,0 +2,9 @@
+Thu Apr 28 12:28:09 UTC 2016 - trenn(a)suse.de
+
+- Update turbostat to version 4.12
+- Update cpupower to latest sources
+- Let turbostat only build against a local msr-index.h
+ Also add the msr-index.h export to the tarball from git repo script
+*Delete make_header_file_passable_from_outside.patch
+
+-------------------------------------------------------------------
Old:
----
make_header_file_passable_from_outside.patch
msr-index.h
turbostat-4.8.tar.bz2
New:
----
turbostat-4.12.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cpupower.spec ++++++
--- /var/tmp/diff_new_pack.ZeOTjc/_old 2016-05-04 08:19:59.000000000 +0200
+++ /var/tmp/diff_new_pack.ZeOTjc/_new 2016-05-04 08:19:59.000000000 +0200
@@ -22,7 +22,7 @@
%define version %(rpm -q --qf '%{VERSION}' kernel-source)
Version: 4.6
Release: 0
-%define tsversion 4.8
+%define tsversion 4.12
Summary: Tools to determine and set CPU Power related Settings
License: GPL-2.0
Group: System/Base
@@ -30,15 +30,10 @@
Source: %{name}-%{version}.tar.bz2
Source1: turbostat-%{tsversion}.tar.bz2
Source2: cpupower_export_tarball_from_git.sh
-Source3: msr-index.h
Patch1: library_cleanup.patch
Patch20: turbostat_fix_man_perm.patch
-Patch21: make_header_file_passable_from_outside.patch
Patch22: turbostat_set_asm_header_fixed.patch
-%if 0%{?suse_version} > 1315
-BuildRequires: linux-glibc-devel
-%endif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: gettext-tools
BuildRequires: pciutils
@@ -86,10 +81,7 @@
%patch1 -p1
cd ../turbostat-%{tsversion}
%patch20 -p1
-%patch21 -p1
-%if 0%{?suse_version} <= 1315
%patch22 -p1
-%endif
%build
# This package failed when testing with -Wl,-as-needed being default.
@@ -101,10 +93,8 @@
%ifarch ix86 x86_64
cd ../turbostat-%{tsversion}
-%if 0%{?suse_version} <= 1315
-cp %{SOURCE3} .
-%endif
-CFLAGS="%optflags -I. -DMSRHEADER=\"<asm/msr-index.h>\"" make %{?_smp_mflags}
+export CFLAGS="%optflags -I ."
+make %{?_smp_mflags}
%endif
%install
++++++ cpupower-4.6.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpupower-4.6/Makefile new/cpupower-4.6/Makefile
--- old/cpupower-4.6/Makefile 2015-12-07 16:45:21.000000000 +0100
+++ new/cpupower-4.6/Makefile 2016-04-27 01:25:51.000000000 +0200
@@ -47,6 +47,11 @@
# cpufreq-bench benchmarking tool
CPUFREQ_BENCH ?= true
+# Do not build libraries, but build the code in statically
+# Libraries are still built, otherwise the Makefile code would
+# be rather ugly.
+export STATIC ?= false
+
# Prefix to the directories we're installing to
DESTDIR ?=
@@ -161,6 +166,12 @@
COMPILE_BENCH += compile-bench
endif
+ifeq ($(strip $(STATIC)),true)
+ UTIL_OBJS += $(LIB_OBJS)
+ UTIL_HEADERS += $(LIB_HEADERS)
+ UTIL_SRC += $(LIB_SRC)
+endif
+
CFLAGS += $(WARNINGS)
ifeq ($(strip $(V)),false)
@@ -209,7 +220,11 @@
$(OUTPUT)cpupower: $(UTIL_OBJS) $(OUTPUT)libcpupower.so.$(LIB_MAJ)
$(ECHO) " CC " $@
+ifeq ($(strip $(STATIC)),true)
+ $(QUIET) $(CC) $(CFLAGS) $(LDFLAGS) $(UTIL_OBJS) -lrt -lpci -L$(OUTPUT) -o $@
+else
$(QUIET) $(CC) $(CFLAGS) $(LDFLAGS) $(UTIL_OBJS) -lcpupower -lrt -lpci -L$(OUTPUT) -o $@
+endif
$(QUIET) $(STRIPCMD) $@
$(OUTPUT)po/$(PACKAGE).pot: $(UTIL_SRC)
@@ -291,7 +306,11 @@
@#DESTDIR must be set from outside to survive
@sbindir=$(sbindir) bindir=$(bindir) docdir=$(docdir) confdir=$(confdir) $(MAKE) -C bench O=$(OUTPUT) install
+ifeq ($(strip $(STATIC)),true)
+install: all install-tools install-man $(INSTALL_NLS) $(INSTALL_BENCH)
+else
install: all install-lib install-tools install-man $(INSTALL_NLS) $(INSTALL_BENCH)
+endif
uninstall:
- rm -f $(DESTDIR)${libdir}/libcpupower.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpupower-4.6/bench/Makefile new/cpupower-4.6/bench/Makefile
--- old/cpupower-4.6/bench/Makefile 2015-12-07 16:45:21.000000000 +0100
+++ new/cpupower-4.6/bench/Makefile 2016-04-27 01:25:51.000000000 +0200
@@ -5,9 +5,15 @@
endif
endif
+ifeq ($(strip $(STATIC)),true)
+LIBS = -L../ -L$(OUTPUT) -lm
+OBJS = $(OUTPUT)main.o $(OUTPUT)parse.o $(OUTPUT)system.o $(OUTPUT)benchmark.o \
+ $(OUTPUT)../lib/cpufreq.o $(OUTPUT)../lib/sysfs.o
+else
LIBS = -L../ -L$(OUTPUT) -lm -lcpupower
-
OBJS = $(OUTPUT)main.o $(OUTPUT)parse.o $(OUTPUT)system.o $(OUTPUT)benchmark.o
+endif
+
CFLAGS += -D_GNU_SOURCE -I../lib -DDEFAULT_CONFIG_FILE=\"$(confdir)/cpufreq-bench.conf\"
$(OUTPUT)%.o : %.c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpupower-4.6/utils/cpufreq-info.c new/cpupower-4.6/utils/cpufreq-info.c
--- old/cpupower-4.6/utils/cpufreq-info.c 2015-12-07 16:45:21.000000000 +0100
+++ new/cpupower-4.6/utils/cpufreq-info.c 2016-04-27 01:25:51.000000000 +0200
@@ -10,10 +10,12 @@
#include <errno.h>
#include <stdlib.h>
#include <string.h>
+#include <limits.h>
#include <getopt.h>
#include "cpufreq.h"
+#include "helpers/sysfs.h"
#include "helpers/helpers.h"
#include "helpers/bitmask.h"
@@ -244,149 +246,21 @@
return 0;
}
-static void debug_output_one(unsigned int cpu)
-{
- char *driver;
- struct cpufreq_affected_cpus *cpus;
- struct cpufreq_available_frequencies *freqs;
- unsigned long min, max, freq_kernel, freq_hardware;
- unsigned long total_trans, latency;
- unsigned long long total_time;
- struct cpufreq_policy *policy;
- struct cpufreq_available_governors *governors;
- struct cpufreq_stats *stats;
-
- if (cpufreq_cpu_exists(cpu))
- return;
-
- freq_kernel = cpufreq_get_freq_kernel(cpu);
- freq_hardware = cpufreq_get_freq_hardware(cpu);
-
- driver = cpufreq_get_driver(cpu);
- if (!driver) {
- printf(_(" no or unknown cpufreq driver is active on this CPU\n"));
- } else {
- printf(_(" driver: %s\n"), driver);
- cpufreq_put_driver(driver);
- }
-
- cpus = cpufreq_get_related_cpus(cpu);
- if (cpus) {
- printf(_(" CPUs which run at the same hardware frequency: "));
- while (cpus->next) {
- printf("%d ", cpus->cpu);
- cpus = cpus->next;
- }
- printf("%d\n", cpus->cpu);
- cpufreq_put_related_cpus(cpus);
- }
-
- cpus = cpufreq_get_affected_cpus(cpu);
- if (cpus) {
- printf(_(" CPUs which need to have their frequency coordinated by software: "));
- while (cpus->next) {
- printf("%d ", cpus->cpu);
- cpus = cpus->next;
- }
- printf("%d\n", cpus->cpu);
- cpufreq_put_affected_cpus(cpus);
- }
-
- latency = cpufreq_get_transition_latency(cpu);
- if (latency) {
- printf(_(" maximum transition latency: "));
- print_duration(latency);
- printf(".\n");
- }
-
- if (!(cpufreq_get_hardware_limits(cpu, &min, &max))) {
- printf(_(" hardware limits: "));
- print_speed(min);
- printf(" - ");
- print_speed(max);
- printf("\n");
- }
-
- freqs = cpufreq_get_available_frequencies(cpu);
- if (freqs) {
- printf(_(" available frequency steps: "));
- while (freqs->next) {
- print_speed(freqs->frequency);
- printf(", ");
- freqs = freqs->next;
- }
- print_speed(freqs->frequency);
- printf("\n");
- cpufreq_put_available_frequencies(freqs);
- }
-
- governors = cpufreq_get_available_governors(cpu);
- if (governors) {
- printf(_(" available cpufreq governors: "));
- while (governors->next) {
- printf("%s, ", governors->governor);
- governors = governors->next;
- }
- printf("%s\n", governors->governor);
- cpufreq_put_available_governors(governors);
- }
-
- policy = cpufreq_get_policy(cpu);
- if (policy) {
- printf(_(" current policy: frequency should be within "));
- print_speed(policy->min);
- printf(_(" and "));
- print_speed(policy->max);
-
- printf(".\n ");
- printf(_("The governor \"%s\" may"
- " decide which speed to use\n within this range.\n"),
- policy->governor);
- cpufreq_put_policy(policy);
- }
-
- if (freq_kernel || freq_hardware) {
- printf(_(" current CPU frequency is "));
- if (freq_hardware) {
- print_speed(freq_hardware);
- printf(_(" (asserted by call to hardware)"));
- } else
- print_speed(freq_kernel);
- printf(".\n");
- }
- stats = cpufreq_get_stats(cpu, &total_time);
- if (stats) {
- printf(_(" cpufreq stats: "));
- while (stats) {
- print_speed(stats->frequency);
- printf(":%.2f%%", (100.0 * stats->time_in_state) / total_time);
- stats = stats->next;
- if (stats)
- printf(", ");
- }
- cpufreq_put_stats(stats);
- total_trans = cpufreq_get_transitions(cpu);
- if (total_trans)
- printf(" (%lu)\n", total_trans);
- else
- printf("\n");
- }
- get_boost_mode(cpu);
-
-}
-
/* --freq / -f */
static int get_freq_kernel(unsigned int cpu, unsigned int human)
{
unsigned long freq = cpufreq_get_freq_kernel(cpu);
- if (!freq)
+ printf(_(" current CPU frequency: "));
+ if (!freq) {
+ printf(_(" Unable to call to kernel\n"));
return -EINVAL;
+ }
if (human) {
print_speed(freq);
- printf("\n");
} else
- printf("%lu\n", freq);
+ printf("%lu", freq);
+ printf(_(" (asserted by call to kernel)\n"));
return 0;
}
@@ -396,13 +270,16 @@
static int get_freq_hardware(unsigned int cpu, unsigned int human)
{
unsigned long freq = cpufreq_get_freq_hardware(cpu);
- if (!freq)
+ printf(_(" current CPU frequency: "));
+ if (!freq) {
+ printf("Unable to call hardware\n");
return -EINVAL;
+ }
if (human) {
print_speed(freq);
- printf("\n");
} else
- printf("%lu\n", freq);
+ printf("%lu", freq);
+ printf(_(" (asserted by call to hardware)\n"));
return 0;
}
@@ -411,9 +288,17 @@
static int get_hardware_limits(unsigned int cpu)
{
unsigned long min, max;
- if (cpufreq_get_hardware_limits(cpu, &min, &max))
+
+ printf(_(" hardware limits: "));
+ if (cpufreq_get_hardware_limits(cpu, &min, &max)) {
+ printf(_("Not Available\n"));
return -EINVAL;
- printf("%lu %lu\n", min, max);
+ }
+
+ print_speed(min);
+ printf(" - ");
+ print_speed(max);
+ printf("\n");
return 0;
}
@@ -422,9 +307,11 @@
static int get_driver(unsigned int cpu)
{
char *driver = cpufreq_get_driver(cpu);
- if (!driver)
+ if (!driver) {
+ printf(_(" no or unknown cpufreq driver is active on this CPU\n"));
return -EINVAL;
- printf("%s\n", driver);
+ }
+ printf(" driver: %s\n", driver);
cpufreq_put_driver(driver);
return 0;
}
@@ -434,9 +321,19 @@
static int get_policy(unsigned int cpu)
{
struct cpufreq_policy *policy = cpufreq_get_policy(cpu);
- if (!policy)
+ if (!policy) {
+ printf(_(" Unable to determine current policy\n"));
return -EINVAL;
- printf("%lu %lu %s\n", policy->min, policy->max, policy->governor);
+ }
+ printf(_(" current policy: frequency should be within "));
+ print_speed(policy->min);
+ printf(_(" and "));
+ print_speed(policy->max);
+
+ printf(".\n ");
+ printf(_("The governor \"%s\" may decide which speed to use\n"
+ " within this range.\n"),
+ policy->governor);
cpufreq_put_policy(policy);
return 0;
}
@@ -447,8 +344,12 @@
{
struct cpufreq_available_governors *governors =
cpufreq_get_available_governors(cpu);
- if (!governors)
+
+ printf(_(" available cpufreq governors: "));
+ if (!governors) {
+ printf(_("Not Available\n"));
return -EINVAL;
+ }
while (governors->next) {
printf("%s ", governors->governor);
@@ -465,8 +366,12 @@
static int get_affected_cpus(unsigned int cpu)
{
struct cpufreq_affected_cpus *cpus = cpufreq_get_affected_cpus(cpu);
- if (!cpus)
+
+ printf(_(" CPUs which need to have their frequency coordinated by software: "));
+ if (!cpus) {
+ printf(_("Not Available\n"));
return -EINVAL;
+ }
while (cpus->next) {
printf("%d ", cpus->cpu);
@@ -482,8 +387,12 @@
static int get_related_cpus(unsigned int cpu)
{
struct cpufreq_affected_cpus *cpus = cpufreq_get_related_cpus(cpu);
- if (!cpus)
+
+ printf(_(" CPUs which run at the same hardware frequency: "));
+ if (!cpus) {
+ printf(_("Not Available\n"));
return -EINVAL;
+ }
while (cpus->next) {
printf("%d ", cpus->cpu);
@@ -524,8 +433,12 @@
static int get_latency(unsigned int cpu, unsigned int human)
{
unsigned long latency = cpufreq_get_transition_latency(cpu);
- if (!latency)
+
+ printf(_(" maximum transition latency: "));
+ if (!latency || latency == UINT_MAX) {
+ printf(_(" Cannot determine or is not supported.\n"));
return -EINVAL;
+ }
if (human) {
print_duration(latency);
@@ -535,6 +448,36 @@
return 0;
}
+static void debug_output_one(unsigned int cpu)
+{
+ struct cpufreq_available_frequencies *freqs;
+
+ get_driver(cpu);
+ get_related_cpus(cpu);
+ get_affected_cpus(cpu);
+ get_latency(cpu, 1);
+ get_hardware_limits(cpu);
+
+ freqs = cpufreq_get_available_frequencies(cpu);
+ if (freqs) {
+ printf(_(" available frequency steps: "));
+ while (freqs->next) {
+ print_speed(freqs->frequency);
+ printf(", ");
+ freqs = freqs->next;
+ }
+ print_speed(freqs->frequency);
+ printf("\n");
+ cpufreq_put_available_frequencies(freqs);
+ }
+
+ get_available_governors(cpu);
+ get_policy(cpu);
+ if (get_freq_hardware(cpu, 1) < 0)
+ get_freq_kernel(cpu, 1);
+ get_boost_mode(cpu);
+}
+
static struct option info_opts[] = {
{"debug", no_argument, NULL, 'e'},
{"boost", no_argument, NULL, 'b'},
@@ -647,11 +590,14 @@
if (!bitmask_isbitset(cpus_chosen, cpu))
continue;
- if (cpufreq_cpu_exists(cpu)) {
- printf(_("couldn't analyze CPU %d as it doesn't seem to be present\n"), cpu);
+
+ printf(_("analyzing CPU %d:\n"), cpu);
+
+ if (sysfs_is_cpu_online(cpu) != 1) {
+ printf(_(" *is offline\n"));
+ printf("\n");
continue;
}
- printf(_("analyzing CPU %d:\n"), cpu);
switch (output_param) {
case 'b':
@@ -693,6 +639,7 @@
}
if (ret)
return ret;
+ printf("\n");
}
return ret;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpupower-4.6/utils/cpuidle-info.c new/cpupower-4.6/utils/cpuidle-info.c
--- old/cpupower-4.6/utils/cpuidle-info.c 2015-12-07 16:45:21.000000000 +0100
+++ new/cpupower-4.6/utils/cpuidle-info.c 2016-04-27 01:25:51.000000000 +0200
@@ -12,7 +12,6 @@
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
-#include <cpufreq.h>
#include "helpers/helpers.h"
#include "helpers/sysfs.h"
@@ -25,8 +24,6 @@
unsigned int idlestates, idlestate;
char *tmp;
- printf(_ ("Analyzing CPU %d:\n"), cpu);
-
idlestates = sysfs_get_idlestate_count(cpu);
if (idlestates == 0) {
printf(_("CPU %u: No idle states\n"), cpu);
@@ -71,7 +68,6 @@
printf(_("Duration: %llu\n"),
sysfs_get_idlestate_time(cpu, idlestate));
}
- printf("\n");
}
static void cpuidle_general_output(void)
@@ -189,10 +185,17 @@
for (cpu = bitmask_first(cpus_chosen);
cpu <= bitmask_last(cpus_chosen); cpu++) {
- if (!bitmask_isbitset(cpus_chosen, cpu) ||
- cpufreq_cpu_exists(cpu))
+ if (!bitmask_isbitset(cpus_chosen, cpu))
continue;
+ printf(_("analyzing CPU %d:\n"), cpu);
+
+ if (sysfs_is_cpu_online(cpu) != 1) {
+ printf(_(" *is offline\n"));
+ printf("\n");
+ continue;
+ }
+
switch (output_param) {
case 'o':
@@ -203,6 +206,7 @@
cpuidle_cpu_output(cpu, verbose);
break;
}
+ printf("\n");
}
return EXIT_SUCCESS;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpupower-4.6/utils/cpupower-info.c new/cpupower-4.6/utils/cpupower-info.c
--- old/cpupower-4.6/utils/cpupower-info.c 2015-12-07 16:45:21.000000000 +0100
+++ new/cpupower-4.6/utils/cpupower-info.c 2016-04-27 01:25:51.000000000 +0200
@@ -12,7 +12,6 @@
#include <string.h>
#include <getopt.h>
-#include <cpufreq.h>
#include "helpers/helpers.h"
#include "helpers/sysfs.h"
@@ -83,12 +82,16 @@
for (cpu = bitmask_first(cpus_chosen);
cpu <= bitmask_last(cpus_chosen); cpu++) {
- if (!bitmask_isbitset(cpus_chosen, cpu) ||
- cpufreq_cpu_exists(cpu))
+ if (!bitmask_isbitset(cpus_chosen, cpu))
continue;
printf(_("analyzing CPU %d:\n"), cpu);
+ if (sysfs_is_cpu_online(cpu) != 1){
+ printf(_(" *is offline\n"));
+ continue;
+ }
+
if (params.perf_bias) {
ret = msr_intel_get_perf_bias(cpu);
if (ret < 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cpupower-4.6/utils/cpupower-set.c new/cpupower-4.6/utils/cpupower-set.c
--- old/cpupower-4.6/utils/cpupower-set.c 2015-12-07 16:45:21.000000000 +0100
+++ new/cpupower-4.6/utils/cpupower-set.c 2016-04-27 01:25:51.000000000 +0200
@@ -12,7 +12,6 @@
#include <string.h>
#include <getopt.h>
-#include <cpufreq.h>
#include "helpers/helpers.h"
#include "helpers/sysfs.h"
#include "helpers/bitmask.h"
@@ -78,10 +77,15 @@
for (cpu = bitmask_first(cpus_chosen);
cpu <= bitmask_last(cpus_chosen); cpu++) {
- if (!bitmask_isbitset(cpus_chosen, cpu) ||
- cpufreq_cpu_exists(cpu))
+ if (!bitmask_isbitset(cpus_chosen, cpu))
continue;
+ if (sysfs_is_cpu_online(cpu) != 1){
+ fprintf(stderr, _("Cannot set values on CPU %d:"), cpu);
+ fprintf(stderr, _(" *is offline\n"));
+ continue;
+ }
+
if (params.perf_bias) {
ret = msr_intel_set_perf_bias(cpu, perf_bias);
if (ret) {
++++++ cpupower_export_tarball_from_git.sh ++++++
--- /var/tmp/diff_new_pack.ZeOTjc/_old 2016-05-04 08:19:59.000000000 +0200
+++ /var/tmp/diff_new_pack.ZeOTjc/_new 2016-05-04 08:19:59.000000000 +0200
@@ -56,18 +56,19 @@
popd
TDIR=`mktemp -d`
pushd "$TDIR"
-set -x
+
git archive --format=tar $GIT_TAG tools/power/x86/turbostat |tar -x
-mv tools/power/x86/turbostat turbostat${VERSION}
-mkdir turbostat${VERSION}/asm
+TURBOSTAT_VERSION=$(grep "turbostat version" tools/power/x86/turbostat/turbostat.c |grep fprintf |sed 's/.*turbostat version \([0-9].[0-9][0-9]\).*/\1/')
+TURBOSTAT_VERSION=$(echo "-$TURBOSTAT_VERSION")
+mv tools/power/x86/turbostat turbostat${TURBOSTAT_VERSION}
[ ! -e "$GIT_DIR"/../arch/x86/include/asm/msr-index.h ] && echo "msr-index.h does not exist" && exit 1
-cp "$GIT_DIR"/../arch/x86/include/uapi/asm/msr-index.h turbostat${VERSION}/asm
-tar -cvjf turbostat${VERSION}.tar.bz2 turbostat${VERSION}
+cp "$GIT_DIR"/../arch/x86/include/asm/msr-index.h turbostat${TURBOSTAT_VERSION}
+tar -cvjf turbostat${TURBOSTAT_VERSION}.tar.bz2 turbostat${TURBOSTAT_VERSION}
popd
mv "$DIR/cpupower${VERSION}".tar.bz2 .
rm -rf "$DIR"
-mv "$TDIR/turbostat${VERSION}".tar.bz2 .
+mv "$TDIR/turbostat${TURBOSTAT_VERSION}".tar.bz2 .
rm -rf "$TDIR"
# set +x
echo cpupower${VERSION}.tar.bz2
-echo turbostat${VERSION}.tar.bz2
+echo turbostat${TURBOSTAT_VERSION}.tar.bz2
++++++ library_cleanup.patch ++++++
--- /var/tmp/diff_new_pack.ZeOTjc/_old 2016-05-04 08:19:59.000000000 +0200
+++ /var/tmp/diff_new_pack.ZeOTjc/_new 2016-05-04 08:19:59.000000000 +0200
@@ -1,43 +1,8 @@
-cpupower: Add cpuidle parts into library
-
-cpupower was built from cpufrequtils and enhanced by quite some neat cpuidle
-userspace tools.
-
-Now the cpu idle functions have been separated and added to the cpupower.so
-library.
-
-Here again pasted for better review of the interfaces:
-
-======================================
-int cpuidle_is_state_disabled(unsigned int cpu,
- unsigned int idlestate);
-int cpuidle_state_disable(unsigned int cpu, unsigned int idlestate,
- unsigned int disable);
-unsigned long cpuidle_state_latency(unsigned int cpu,
- unsigned int idlestate);
-unsigned long cpuidle_state_usage(unsigned int cpu,
- unsigned int idlestate);
-unsigned long long cpuidle_state_time(unsigned int cpu,
- unsigned int idlestate);
-char *cpuidle_state_name(unsigned int cpu,
- unsigned int idlestate);
-char *cpuidle_state_desc(unsigned int cpu,
- unsigned int idlestate);
-unsigned int cpuidle_state_count(unsigned int cpu);
-
-char *cpuidle_get_governor(void);
-char *cpuidle_get_driver(void);
-
-======================================
-
-
-Signed-off-by: Thomas Renninger <trenn(a)suse.com>
-
diff --git a/Makefile b/Makefile
-index 2e2ba2e..1ca525d 100644
+index 0adaf0c..8358863 100644
--- a/Makefile
+++ b/Makefile
-@@ -58,7 +58,7 @@ DESTDIR ?=
+@@ -63,7 +63,7 @@ DESTDIR ?=
# and _should_ modify the PACKAGE_BUGREPORT definition
VERSION= $(shell ./utils/version-gen.sh)
@@ -46,7 +11,7 @@
LIB_MIN= 0
PACKAGE = cpupower
-@@ -124,7 +124,7 @@ WARNINGS += -Wshadow
+@@ -129,7 +129,7 @@ WARNINGS += -Wshadow
CFLAGS += -DVERSION=\"$(VERSION)\" -DPACKAGE=\"$(PACKAGE)\" \
-DPACKAGE_BUGREPORT=\"$(PACKAGE_BUGREPORT)\" -D_GNU_SOURCE
@@ -55,7 +20,7 @@
utils/helpers/sysfs.o utils/helpers/misc.o utils/helpers/cpuid.o \
utils/helpers/pci.o utils/helpers/bitmask.o \
utils/idle_monitor/nhm_idle.o utils/idle_monitor/snb_idle.o \
-@@ -143,9 +143,9 @@ UTIL_HEADERS = utils/helpers/helpers.h utils/idle_monitor/cpupower-monitor.h \
+@@ -148,9 +148,9 @@ UTIL_HEADERS = utils/helpers/helpers.h utils/idle_monitor/cpupower-monitor.h \
utils/helpers/bitmask.h \
utils/idle_monitor/idle_monitors.h utils/idle_monitor/idle_monitors.def
@@ -68,7 +33,7 @@
LIB_OBJS := $(addprefix $(OUTPUT),$(LIB_OBJS))
CFLAGS += -pipe
-@@ -265,6 +265,7 @@ install-lib:
+@@ -280,6 +280,7 @@ install-lib:
$(CP) $(OUTPUT)libcpupower.so* $(DESTDIR)${libdir}/
$(INSTALL) -d $(DESTDIR)${includedir}
$(INSTALL_DATA) lib/cpufreq.h $(DESTDIR)${includedir}/cpufreq.h
@@ -76,7 +41,7 @@
install-tools:
$(INSTALL) -d $(DESTDIR)${bindir}
-@@ -296,6 +297,7 @@ install: all install-lib install-tools install-man $(INSTALL_NLS) $(INSTALL_BENC
+@@ -315,6 +316,7 @@ endif
uninstall:
- rm -f $(DESTDIR)${libdir}/libcpupower.*
- rm -f $(DESTDIR)${includedir}/cpufreq.h
@@ -2337,28 +2302,6 @@
-extern int sysfs_modify_freq_policy_governor(unsigned int cpu, char *governor);
-extern int sysfs_set_frequency(unsigned int cpu,
- unsigned long target_frequency);
-diff --git a/utils/cpufreq-info.c b/utils/cpufreq-info.c
-index 0e67643..e9679f4 100644
---- a/utils/cpufreq-info.c
-+++ b/utils/cpufreq-info.c
-@@ -256,7 +256,7 @@ static void debug_output_one(unsigned int cpu)
- struct cpufreq_available_governors *governors;
- struct cpufreq_stats *stats;
-
-- if (cpufreq_cpu_exists(cpu))
-+ if (cpupower_is_cpu_online(cpu))
- return;
-
- freq_kernel = cpufreq_get_freq_kernel(cpu);
-@@ -647,7 +647,7 @@ int cmd_freq_info(int argc, char **argv)
-
- if (!bitmask_isbitset(cpus_chosen, cpu))
- continue;
-- if (cpufreq_cpu_exists(cpu)) {
-+ if (cpupower_is_cpu_online(cpu)) {
- printf(_("couldn't analyze CPU %d as it doesn't seem to be present\n"), cpu);
- continue;
- }
diff --git a/utils/cpufreq-set.c b/utils/cpufreq-set.c
index 0fbd1a2..b4bf769 100644
--- a/utils/cpufreq-set.c
@@ -2396,30 +2339,31 @@
printf(_("Setting cpu: %d\n"), cpu);
diff --git a/utils/cpuidle-info.c b/utils/cpuidle-info.c
-index 750c1d8..8473ec4 100644
+index 8bf8ab5..b59c85d 100644
--- a/utils/cpuidle-info.c
+++ b/utils/cpuidle-info.c
-@@ -13,9 +13,9 @@
+@@ -13,8 +13,10 @@
#include <string.h>
#include <getopt.h>
- #include <cpufreq.h>
-+#include <cpuidle.h>
- #include "helpers/helpers.h"
--#include "helpers/sysfs.h"
+-#include "helpers/helpers.h"
++#include <cpuidle.h>
++
+ #include "helpers/sysfs.h"
++#include "helpers/helpers.h"
#include "helpers/bitmask.h"
#define LINE_LEN 10
-@@ -27,7 +27,7 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
-
- printf(_ ("Analyzing CPU %d:\n"), cpu);
+@@ -24,7 +26,7 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
+ unsigned int idlestates, idlestate;
+ char *tmp;
- idlestates = sysfs_get_idlestate_count(cpu);
+ idlestates = cpuidle_state_count(cpu);
if (idlestates == 0) {
printf(_("CPU %u: No idle states\n"), cpu);
return;
-@@ -36,7 +36,7 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
+@@ -33,7 +35,7 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
printf(_("Number of idle states: %d\n"), idlestates);
printf(_("Available idle states:"));
for (idlestate = 0; idlestate < idlestates; idlestate++) {
@@ -2428,7 +2372,7 @@
if (!tmp)
continue;
printf(" %s", tmp);
-@@ -48,28 +48,28 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
+@@ -45,28 +47,28 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
return;
for (idlestate = 0; idlestate < idlestates; idlestate++) {
@@ -2461,9 +2405,9 @@
- sysfs_get_idlestate_time(cpu, idlestate));
+ cpuidle_state_time(cpu, idlestate));
}
- printf("\n");
}
-@@ -78,7 +78,7 @@ static void cpuidle_general_output(void)
+
+@@ -74,7 +76,7 @@ static void cpuidle_general_output(void)
{
char *tmp;
@@ -2472,7 +2416,7 @@
if (!tmp) {
printf(_("Could not determine cpuidle driver\n"));
return;
-@@ -87,7 +87,7 @@ static void cpuidle_general_output(void)
+@@ -83,7 +85,7 @@ static void cpuidle_general_output(void)
printf(_("CPUidle driver: %s\n"), tmp);
free(tmp);
@@ -2481,7 +2425,7 @@
if (!tmp) {
printf(_("Could not determine cpuidle governor\n"));
return;
-@@ -102,7 +102,7 @@ static void proc_cpuidle_cpu_output(unsigned int cpu)
+@@ -98,7 +100,7 @@ static void proc_cpuidle_cpu_output(unsigned int cpu)
long max_allowed_cstate = 2000000000;
unsigned int cstate, cstates;
@@ -2490,7 +2434,7 @@
if (cstates == 0) {
printf(_("CPU %u: No C-states info\n"), cpu);
return;
-@@ -117,11 +117,11 @@ static void proc_cpuidle_cpu_output(unsigned int cpu)
+@@ -113,11 +115,11 @@ static void proc_cpuidle_cpu_output(unsigned int cpu)
"type[C%d] "), cstate, cstate);
printf(_("promotion[--] demotion[--] "));
printf(_("latency[%03lu] "),
@@ -2505,15 +2449,6 @@
}
}
-@@ -190,7 +190,7 @@ int cmd_idle_info(int argc, char **argv)
- cpu <= bitmask_last(cpus_chosen); cpu++) {
-
- if (!bitmask_isbitset(cpus_chosen, cpu) ||
-- cpufreq_cpu_exists(cpu))
-+ cpupower_is_cpu_online(cpu))
- continue;
-
- switch (output_param) {
diff --git a/utils/cpuidle-set.c b/utils/cpuidle-set.c
index d6b6ae4..691c24d 100644
--- a/utils/cpuidle-set.c
@@ -2602,55 +2537,6 @@
(cpu, idlestate, 0);
if (ret == 0)
printf(_("Idlestate %u enabled on CPU %u\n"), idlestate, cpu);
-diff --git a/utils/cpupower-info.c b/utils/cpupower-info.c
-index 10299f2..0a02485 100644
---- a/utils/cpupower-info.c
-+++ b/utils/cpupower-info.c
-@@ -13,8 +13,9 @@
- #include <getopt.h>
-
- #include <cpufreq.h>
-+#include <cpuidle.h>
-+
- #include "helpers/helpers.h"
--#include "helpers/sysfs.h"
-
- static struct option set_opts[] = {
- {"perf-bias", optional_argument, NULL, 'b'},
-@@ -84,7 +85,7 @@ int cmd_info(int argc, char **argv)
- cpu <= bitmask_last(cpus_chosen); cpu++) {
-
- if (!bitmask_isbitset(cpus_chosen, cpu) ||
-- cpufreq_cpu_exists(cpu))
-+ cpupower_is_cpu_online(cpu))
- continue;
-
- printf(_("analyzing CPU %d:\n"), cpu);
-diff --git a/utils/cpupower-set.c b/utils/cpupower-set.c
-index 3e6f374..cf24c09 100644
---- a/utils/cpupower-set.c
-+++ b/utils/cpupower-set.c
-@@ -12,9 +12,9 @@
- #include <string.h>
- #include <getopt.h>
-
--#include <cpufreq.h>
-+#include <cpuidle.h>
-+
- #include "helpers/helpers.h"
--#include "helpers/sysfs.h"
- #include "helpers/bitmask.h"
-
- static struct option set_opts[] = {
-@@ -79,7 +79,7 @@ int cmd_set(int argc, char **argv)
- cpu <= bitmask_last(cpus_chosen); cpu++) {
-
- if (!bitmask_isbitset(cpus_chosen, cpu) ||
-- cpufreq_cpu_exists(cpu))
-+ cpupower_is_cpu_online(cpu))
- continue;
-
- if (params.perf_bias) {
diff --git a/utils/helpers/helpers.h b/utils/helpers/helpers.h
index aa9e954..afb66f8 100644
--- a/utils/helpers/helpers.h
++++++ turbostat-4.8.tar.bz2 -> turbostat-4.12.tar.bz2 ++++++
++++ 3512 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package runc for openSUSE:Factory checked in at 2016-05-04 08:19:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/runc (Old)
and /work/SRC/openSUSE:Factory/.runc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "runc"
Changes:
--------
New Changes file:
--- /dev/null 2016-04-07 01:36:33.300037506 +0200
+++ /work/SRC/openSUSE:Factory/.runc.new/runc.changes 2016-05-04 08:19:56.000000000 +0200
@@ -0,0 +1,73 @@
+-------------------------------------------------------------------
+Fri Apr 29 09:03:24 UTC 2016 - asarai(a)suse.de
+
+* Update to runC 0.1.1. Changelog from upstream:
+
+ This release includes a bug fix for adding the selinux mount label in the specification.
+
+-------------------------------------------------------------------
+Tue Apr 19 09:59:05 UTC 2016 - asarai(a)suse.de
+
+* Don't use gcc-go for aarch64, since gc has grown support for it and is more
+ stable.
+
+-------------------------------------------------------------------
+Fri Apr 15 10:46:04 UTC 2016 - asarai(a)suse.de
+
+* Disable seccomp entirely for aarch64 builds, since it is not provided on all
+ SUSE platforms.
+
+-------------------------------------------------------------------
+Wed Apr 13 12:03:09 UTC 2016 - asarai(a)suse.de
+
+* Update to runC 0.1.0. Changelog from upstream:
+
+ This release updates runc to the OCI runtime specification v0.5.0 and includes
+ various fixes and features.
+
+ Features:
+ + cgroups: pid limits and stats
+ + cgroups: kmem stats
+ + systemd cgroup support
+ + libcontainer specconv package
+ + no pivot root option
+ + numeric ids are treated as uid/gid
+ + hook improvements
+
+ Bug Fixes:
+ * log flushing
+ * atomic pid file creation
+ * init error recovery
+ * seccomp logging removed
+ * delete container on aborted start
+ * /dev bind mount handling
+
+-------------------------------------------------------------------
+Wed Mar 30 14:18:18 UTC 2016 - asarai(a)suse.de
+
+* Install to /usr/sbin. https://github.com/opencontainers/runc/pull/702
+
+-------------------------------------------------------------------
+Sun Mar 27 14:50:32 UTC 2016 - asarai(a)suse.de
+
+* Added runC man pages.
+* Recommended criu, since it's required for the checkpoint and restore
+ functionality.
+
+-------------------------------------------------------------------
+Sun Mar 27 10:14:32 UTC 2016 - asarai(a)suse.de
+
+* Small updates to method of compilation to better match Makefile.
+
+-------------------------------------------------------------------
+Mon Mar 21 12:04:59 UTC 2016 - asarai(a)suse.de
+
+* Make compilation work on gcc-go only systems (ppc and s390).
+
+-------------------------------------------------------------------
+Mon Mar 21 08:24:02 UTC 2016 - asarai(a)suse.de
+
+* initial import of runC 0.0.9
+* add patch seccomp-use-pkg-config.patch which allows us to build runC, since
+ they assume that the seccomp.h file lives at /usr/include/seccomp.h.
+
New:
----
_service
runc-0.1.1.tar.xz
runc.changes
runc.spec
seccomp-use-pkg-config.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ runc.spec ++++++
#
# spec file for package runc
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define go_arches %ix86 x86_64 aarch64
%ifarch %go_arches
%define go_tool go
%define GO_BUILD_FLAGS %{nil}
%else
%define go_tool go-5
%define GO_BUILD_FLAGS "-gccgoflags=-Wl,--add-needed -Wl,--no-as-needed -static-libgo -ldl -lseccomp -lselinux -lapparmor"
%endif
%define version_unconverted 0.1.1
Name: runc
Version: 0.1.1
Release: 0
Summary: Tool for spawning and running OCI containers
License: Apache-2.0
Group: System/Management
Url: https://github.com/opencontainers/runc
Source: %{name}-%{version}.tar.xz
Patch0: seccomp-use-pkg-config.patch
%ifarch %go_arches
BuildRequires: go >= 1.5
BuildRequires: go-go-md2man
%else
BuildRequires: gcc5-go >= 5.0
%endif
BuildRequires: libapparmor-devel
# Seccomp isn't supported on aarch64.
%ifnarch aarch64
BuildRequires: libseccomp-devel
%endif
BuildRequires: libselinux-devel
Recommends: criu
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
runc is a CLI tool for spawning and running containers according to the OCI
specification. It is designed to be as minimal as possible, and is the workhorse
of Docker. It was originally designed to be a replacement for LXC within Docker,
and has grown to become a separate project entirely.
%prep
%setup -q -n %{name}-%{version}
# Apply the vendor'd patch to the right subdirectory.
%patch0 -p1 -d Godeps/_workspace/src/github.com/seccomp/libseccomp-golang
%build
# Create buildir,
export GOPATH=$PWD/Godeps/_workspace
mkdir -pv $GOPATH/src/github.com/opencontainers/
ln -svfn $PWD $GOPATH/src/github.com/opencontainers/runc
# Build all features.
export BUILDTAGS="apparmor selinux"
# Seccomp isn't supported on aarch64.
%ifnarch aarch64
export BUILDTAGS="$BUILDTAGS seccomp"
%endif
# Build runc.
%go_tool build %GO_BUILD_FLAGS -tags "$BUILDTAGS" -x -o %{name}-%{version} github.com/opencontainers/%{name}
# Build man pages, this can only be done on arches where we can build go-md2man.
%ifarch %go_arches
man/md2man-all.sh
%endif
%install
%{__install} -D -m755 %{name}-%{version} %{buildroot}%{_sbindir}/%{name}
%ifarch %go_arches
%{__install} -d -m755 %{buildroot}%{_mandir}/man8
%{__install} -m644 man/man8/runc*.8 %{buildroot}%{_mandir}/man8
%endif
%files
%defattr(-,root,root)
%doc README.md LICENSE
%{_sbindir}/%{name}
%ifarch %go_arches
%{_mandir}/man8/runc*.8.gz
%endif
++++++ _service ++++++
<services>
<service name="tar_scm" mode="disabled">
<param name="url">https://github.com/opencontainers/runc.git</param>
<param name="scm">git</param>
<param name="filename">runc</param>
<param name="versionformat">0.1.1</param>
<param name="revision">v0.1.1</param>
<param name="exclude">.git</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="disabled">
<param name="basename">runc</param>
</service>
</services>
++++++ seccomp-use-pkg-config.patch ++++++
>From 37d7332d4b4159cc3ca09a020319da2492b66a4e Mon Sep 17 00:00:00 2001
From: Aleksa Sarai <asarai(a)suse.de>
Date: Mon, 21 Mar 2016 19:01:33 +1100
Subject: [PATCH] seccomp: use pkg-config for cgo flag generation
Not all distributions package libseccomp in the same way, but pkg-config
allows the same configuration to work on different distributions. Switch
to using pkg-config to automatically figure out what the correct
commandline flags are for libseccomp.
Signed-off-by: Aleksa Sarai <asarai(a)suse.de>
---
seccomp.go | 2 +-
seccomp_internal.go | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/seccomp.go b/seccomp.go
index cebafdfae841..de847378d927 100644
--- a/seccomp.go
+++ b/seccomp.go
@@ -20,7 +20,7 @@ import (
// C wrapping code
-// #cgo LDFLAGS: -lseccomp
+// #cgo pkg-config: libseccomp
// #include <stdlib.h>
// #include <seccomp.h>
import "C"
diff --git a/seccomp_internal.go b/seccomp_internal.go
index 306ed17570be..04095f664879 100644
--- a/seccomp_internal.go
+++ b/seccomp_internal.go
@@ -15,7 +15,7 @@ import (
// Get the seccomp header in scope
// Need stdlib.h for free() on cstrings
-// #cgo LDFLAGS: -lseccomp
+// #cgo pkg-config: libseccomp
/*
#include <stdlib.h>
#include <seccomp.h>
--
2.7.3
1
0
Hello community,
here is the log from the commit of package raspberrypi-firmware for openSUSE:Factory checked in at 2016-05-04 08:19:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/raspberrypi-firmware (Old)
and /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "raspberrypi-firmware"
Changes:
--------
--- /work/SRC/openSUSE:Factory/raspberrypi-firmware/raspberrypi-firmware.changes 2016-04-11 10:26:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new/raspberrypi-firmware.changes 2016-05-04 08:19:53.000000000 +0200
@@ -1,0 +2,5 @@
+Fri Apr 29 08:49:32 UTC 2016 - guillaume(a)opensuse.org
+
+- Update to 20958cd (2016-04-27)
+
+-------------------------------------------------------------------
Old:
----
raspberrypi-firmware-2016.04.05.tar.bz2
New:
----
raspberrypi-firmware-2016.04.27.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ raspberrypi-firmware.spec ++++++
--- /var/tmp/diff_new_pack.bHhexC/_old 2016-05-04 08:19:54.000000000 +0200
+++ /var/tmp/diff_new_pack.bHhexC/_new 2016-05-04 08:19:54.000000000 +0200
@@ -17,7 +17,7 @@
Name: raspberrypi-firmware
-Version: 2016.04.05
+Version: 2016.04.27
Release: 0
Summary: Binary bootloader and firmware files for Raspberry Pi
License: SUSE-Firmware
++++++ raspberrypi-firmware-2016.04.05.tar.bz2 -> raspberrypi-firmware-2016.04.27.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/raspberrypi-firmware/raspberrypi-firmware-2016.04.05.tar.bz2 /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new/raspberrypi-firmware-2016.04.27.tar.bz2 differ: char 11, line 1
1
0