From e9d044d4b9b71200a96adfa280848858c0f468c9 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 13 Nov 2021 13:10:00 +0000 Subject: gentoo resync : 13.11.2021 --- media-gfx/blender/Manifest | 11 - media-gfx/blender/blender-2.83.15-r1.ebuild | 380 --------------------- media-gfx/blender/blender-2.83.16-r1.ebuild | 380 --------------------- media-gfx/blender/blender-2.83.17-r1.ebuild | 377 -------------------- .../blender/files/blender-2.83.13-ffmpeg-4_4.patch | 27 -- .../files/blender-2.83.6-constraints_test.patch | 13 - .../files/blender-2.83.6-fix_opevdb_abi.patch | 21 -- .../blender-2.83.6-libmv_eigen_alignment.patch | 219 ------------ 8 files changed, 1428 deletions(-) delete mode 100644 media-gfx/blender/blender-2.83.15-r1.ebuild delete mode 100644 media-gfx/blender/blender-2.83.16-r1.ebuild delete mode 100644 media-gfx/blender/blender-2.83.17-r1.ebuild delete mode 100644 media-gfx/blender/files/blender-2.83.13-ffmpeg-4_4.patch delete mode 100644 media-gfx/blender/files/blender-2.83.6-constraints_test.patch delete mode 100644 media-gfx/blender/files/blender-2.83.6-fix_opevdb_abi.patch delete mode 100644 media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch (limited to 'media-gfx/blender') diff --git a/media-gfx/blender/Manifest b/media-gfx/blender/Manifest index 83c89aad0f1f..deabbe10d054 100644 --- a/media-gfx/blender/Manifest +++ b/media-gfx/blender/Manifest @@ -1,18 +1,7 @@ -AUX blender-2.83.13-ffmpeg-4_4.patch 1102 BLAKE2B e035eab495dbbfc539f852619775f0be6c35cc3b120060fcea9839911404d2c2c11e54cacfd5dd1a4ef531f9ebff478ff7af3f3e35b387f1970dce9cb5063cc5 SHA512 28ad54493bb5385b9c116c349ffe2002997f88a70e1f30548ff57c9052fbb1398efcc82d031c3dbfd6cefdbdb8e24ada545ac5fd0717bdfb1be59b9928859299 -AUX blender-2.83.6-constraints_test.patch 706 BLAKE2B 13f31c98b537a09807fcd9bf7ca6033ebb6db36690fe08c71df726d67468eb747e9817306d434ec8b007f158b7670f00de6ac16a2d9c693d054627632c2eeb64 SHA512 96a660878dd65ea00bd263bd022d3c4b95a4c2dd5533d6bae55c87294296e794fa4e0a16f341d666ef62a2c09bef06fa4dc262792222a80b12e39e394bc2403f -AUX blender-2.83.6-fix_opevdb_abi.patch 587 BLAKE2B 90f22c522f2626442b68e2cb89e6129988a66d5c775d4eaaa217be0b424ec5f2ce1f72eae277e0fad5d8f979b75d0b4a4c1c4956c16793339b0455ea30a8346b SHA512 08c452e1d05aca8c67aeb925388f23f1f2c3ebad3efe501f9c69758a70dfdd8132575e344012ae2a468d0ad7330d820bc8c77df61c38c42b0e97befaf8eec705 -AUX blender-2.83.6-libmv_eigen_alignment.patch 6777 BLAKE2B 5a7cc33dc599a58f15fcda2110d1c7be9dd3bab4427f5f0ab09a5645248e4585b4e183dcd38e5a39b0827a8ef529e74e59126bc7dcecf2c208b428b5ad264e26 SHA512 8b52ab1bdeaa585b2211aa4b3e9e9c2384867e4011ac20cc1fa712b3c8823c5f42359d5728a094e509a7f40cc166f308cd020da1d35f9e2b0bc20e7bb7e5a461 -DIST blender-2.83.1-tests.tar.bz2 266633785 BLAKE2B 8d8102c3107480de95dfd9ef9dabba1cd82893aad553af2ff5ef1afadc831dc5ccf5553c41466511ecb2a1435bc79c936ad64a78bdd4375e3e30af85b69807c6 SHA512 3ffba6fa8401bba3e2bdbccf7067761114d516371c7778a2f6604a243fd8610e26a30b88a32728c26f7e6274182d298752f32b5e76abf8216be0ec4b3ce38cd9 -DIST blender-2.83.15.tar.xz 39125740 BLAKE2B 687097b45b76b474b1c172c9b8ccf5da1bfc24539d0db894d04c7837572b16c1f552757fd1482219d58afa56c573229878fb43bbecd95e3d61314f2ab05efafa SHA512 2836533691bae0a7942197e67232b396b892cd95c0f07ab561f7de8458b354fe4045453855585484dd533ae76588ea3888f880763b042a264fb813a43933fc25 -DIST blender-2.83.16.tar.xz 39135184 BLAKE2B 2515822373f6a9343c760ad656de732094ee58a9354423e0f3d7bf1042220fc54af7e1d9f5b59a170a23e8b1b57a4b7f09867a000a57a6e4e820ff5c6cdd47b6 SHA512 ef78278387ae981972942ee4724abcb11ca19da2b88a3c8bbe1e9aafb93f28d84d4c79d01542e11218bd58bfec80fcfdbffdfd28896d146edd34181a7439dbd5 -DIST blender-2.83.17.tar.xz 39128468 BLAKE2B 3a20f6125f94e0d6de4d78e7a784c5a37faf23603e055a28ee67e48a41d09d3715222b2ac4f04ed38619dca686e7e0985ad60c983ee3a15c96042e419f152e69 SHA512 1e4c9a1f604802fb94c8e844f3878756e2ba0a6c29a6fb8863bc21ada1c8e14e775b203ab21bc4d53e85eb4e909e889204bb9f5befcff56cec3d56c2e987c2a0 DIST blender-2.93.0-tests.tar.bz2 286918586 BLAKE2B a2c2c2e900e401a470208e8e5d0082d45e2f8db13b45213f31808d50ae5ea330360702b8e775bdb3307eb753aa7c3264803e9e470b3fb778f8bd87272cd72513 SHA512 0e5e4c67944c4f76df62cdbaf26ba284c415675074e66685c01ec9584a544c47f616bae8fb2ff2b7e03290620d54dc1033b4b0fc617acb1232a90439e96325fe DIST blender-2.93.0.tar.xz 42967016 BLAKE2B 1e7b54f08415de8a8908a285ae35c1e18558bf7cab42c5c135323d10ac9a73ec69aa0addd536355a4d19262438a615e03f09dc123b697cbab484e33350bb5ee3 SHA512 660962e5368c8ff52ed095aba97d63c22aa8e2fdcb2042b1299b6d6edeb7eb1f702a9ee95ee7e47824681f9f48b971d2e32ec32cc6264165a4196b5f36c4a66d DIST blender-2.93.1.tar.xz 42960100 BLAKE2B eda0a8c0414d1f7c89d21e34ba238b0cbe337ea755d6f10792e7c3bd5e15934184d3bd853ed636764776095ce1e3f081d63386b7c13fb7ac666580bf9eeb43c8 SHA512 b14e8cca248c53e4a93976d7fa1cd1ab92a7d18a3809b2a535881731aad2f68d8d155ad175b27aa1890714b81aa6648604a614cacc90e95b7269569661e393b1 DIST blender-2.93.2.tar.xz 43028440 BLAKE2B 02ffc5be190445c97e3cb14e4635969df7a7aaf0100ee5ba50f2d283b077ffebf1f139aec86034ed2df03d94290d5a8bb369f88c734db5103869ffa1d3f588a6 SHA512 5dac627b0e5f38af1f861d4fddb01f4ba1e992c704337c56e2ebbfdcbd62e6de83195e3541342603a1ae966e89a06ff98764c817e282401edd792857d577b989 -EBUILD blender-2.83.15-r1.ebuild 11659 BLAKE2B eed6e7e609c6e1184541bfeb8c318a40793f9c33983b158b107c4dfeec30a5b1c0da7049799d58d65bac01d4069e92f1c3e0c8c92be82b503067f7a3b763326e SHA512 a26bf43c05b89fe648ae96fdfb2f9a80bc1a67fca5a9deb13f06ffbc0376c4ab4a960d1ae176500dfda4c1148792e76568ecb4eddf39426f279b47f1fe9828c4 -EBUILD blender-2.83.16-r1.ebuild 11660 BLAKE2B cc7fe1970a21f4c0d4c6a3cd5b4e1229cc80cd205e44edbdad137f4b7be173f5615014d1181a2f2f66fd86b6ba7e1a56bb627f645ca5a552a8d7327451a79054 SHA512 6471c4f4c8006e046eebdd8da3e2696053c6fdf380f7297f0724794cdb7212b8edd7cf16f945a619be4db2b74315f4556121c671efdaa1ca072b6e03feb4a5e5 -EBUILD blender-2.83.17-r1.ebuild 11624 BLAKE2B 1a5ba28affb5519563638f641021a87377ee6d0fbff6d433243649452fe22265c751b34a74fc65ba30af7d886362f873a44b4d99a39d96dd612e82eed6865eb7 SHA512 a2741c7721020d3003cbac6df0e832efe083990f5dcb4227c7b586ce96bf149596ad07dd624df0d848f4657effbc82732721cff87c8fcdb39a1582c815d668b2 EBUILD blender-2.93.0-r1.ebuild 11815 BLAKE2B a7edc0c52fba0b9ebec6852aa84c264b28e4e2984ff47baf9d4117723d6a32634c976f4d80d0bd785a6d07b2fc08e6973d53f062505d3043eb7d56ca777acb73 SHA512 2eeae0099f41d11175502f000eb35a41f0351d358d9248f955168932cbfcfade48953a0c68456d3c75950d009f388ddebd8386368c274d3dc86ca820a1f09a7b EBUILD blender-2.93.1-r1.ebuild 11816 BLAKE2B 1044606914a9aa1f8bd00011addc31f71c3c9bed34e7b5215f4c15182fcfb895e248be3d55cbfc3d49ffea7a6212f38f232c410bf19c1634f3b1ef0c1392dd7a SHA512 b6ffc38f300260a66917c3507762e9830f6fbc0098e3f47c23e9d506ec201511aace83010c6213cc304c3643b63039ec54f3f7cbd9bc076383b0e3d6c1232419 EBUILD blender-2.93.2-r1.ebuild 11833 BLAKE2B 70435289cbde457dc6dd5cf6c8f0ecdaeecd5e44bb9afda6c0f36b75d9cadfb03dc72f2c31a013c34a0fdc7bdb5319a348dd6a9be282821af2479e62dda30a7f SHA512 6deb41bcf414687a2f2243eb24b8a4106c62df8b81c2286f820e95410cf7103b724d959eab43e927a871f77d2a9cfa682cffb41642a9c082f5179f9941baf779 diff --git a/media-gfx/blender/blender-2.83.15-r1.ebuild b/media-gfx/blender/blender-2.83.15-r1.ebuild deleted file mode 100644 index 6175ce975261..000000000000 --- a/media-gfx/blender/blender-2.83.15-r1.ebuild +++ /dev/null @@ -1,380 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -PYTHON_COMPAT=( python3_{7,8} ) - -inherit check-reqs cmake flag-o-matic pax-utils python-single-r1 toolchain-funcs xdg-utils - -DESCRIPTION="3D Creation/Animation/Publishing System" -HOMEPAGE="https://www.blender.org" - -if [[ ${PV} = *9999* ]] ; then - inherit git-r3 - EGIT_REPO_URI="https://git.blender.org/blender.git" -else - SRC_URI="https://download.blender.org/source/${P}.tar.xz" - TEST_TARBALL_VERSION=2.83.1 - SRC_URI+=" test? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-${TEST_TARBALL_VERSION}-tests.tar.bz2 )" - KEYWORDS="amd64 ~x86" -fi - -SLOT="${PV%.*}" -LICENSE="|| ( GPL-3 BL )" -IUSE="+bullet +dds +fluid +openexr +system-python +system-numpy +tbb \ - alembic collada +color-management cuda cycles \ - debug doc ffmpeg fftw headless jack jemalloc jpeg2k \ - man ndof nls openal opencl openimageio openmp opensubdiv \ - openvdb osl sdl sndfile standalone test tiff valgrind" -RESTRICT="!test? ( test )" - -REQUIRED_USE="${PYTHON_REQUIRED_USE} - alembic? ( openexr ) - cuda? ( cycles ) - cycles? ( openexr tiff openimageio ) - fluid? ( tbb ) - opencl? ( cycles ) - openvdb? ( tbb ) - osl? ( cycles ) - standalone? ( cycles ) - test? ( color-management osl )" - -# Library versions for official builds can be found in the blender source directory in: -# build_files/build_environment/install_deps.sh -RDEPEND="${PYTHON_DEPS} - dev-libs/boost:=[nls?,threads(+)] - dev-libs/lzo:2= - $(python_gen_cond_dep ' - dev-python/numpy[${PYTHON_USEDEP}] - dev-python/requests[${PYTHON_USEDEP}] - ') - media-libs/freetype:= - media-libs/glew:* - media-libs/libpng:= - media-libs/libsamplerate - sys-libs/zlib:= - virtual/glu - virtual/jpeg - virtual/libintl - virtual/opengl - alembic? ( >=media-gfx/alembic-1.7.12[boost(+),hdf(+)] ) - collada? ( >=media-libs/opencollada-1.6.68 ) - color-management? ( =media-libs/openimageio-2.2.13.1:= ) - openexr? ( - media-libs/ilmbase:= - media-libs/openexr:= - ) - opensubdiv? ( >=media-libs/opensubdiv-3.4.0[cuda=,opencl=] ) - openvdb? ( - >=media-gfx/openvdb-7.0.0 - dev-libs/c-blosc:= - ) - osl? ( -Date: Fri, 7 May 2021 16:51:28 +0200 -Subject: [PATCH] Fix: No sound is exported with ffmpeg 4.4 - -We were not assigning the amount of sound channels to the output frames. -Newer ffmpeg releases has sanity checks in place and doesn't fall back -to two channels anymore. ---- - source/blender/blenkernel/intern/writeffmpeg.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c -index 7fc9e8cc0ef..e5550cee124 100644 ---- a/source/blender/blenkernel/intern/writeffmpeg.c -+++ b/source/blender/blenkernel/intern/writeffmpeg.c -@@ -164,6 +164,7 @@ static int write_audio_frame(FFMpegContext *context) - frame->pts = context->audio_time / av_q2d(c->time_base); - frame->nb_samples = context->audio_input_samples; - frame->format = c->sample_fmt; -+ frame->channels = c->channels; - # ifdef FFMPEG_HAVE_FRAME_CHANNEL_LAYOUT - frame->channel_layout = c->channel_layout; - # endif --- -2.26.3 - diff --git a/media-gfx/blender/files/blender-2.83.6-constraints_test.patch b/media-gfx/blender/files/blender-2.83.6-constraints_test.patch deleted file mode 100644 index ab1e9a6d2d4a..000000000000 --- a/media-gfx/blender/files/blender-2.83.6-constraints_test.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/tests/python/bl_constraints.py b/tests/python/bl_constraints.py -index 323dd874ac0..7cbc46d680a 100644 ---- a/tests/python/bl_constraints.py -+++ b/tests/python/bl_constraints.py -@@ -44,7 +44,7 @@ class AbstractConstraintTests(unittest.TestCase): - collection = top_collection.children[self.layer_collection] - collection.exclude = False - -- def assert_matrix(self, actual_matrix, expect_matrix, object_name: str, places=6, delta=None): -+ def assert_matrix(self, actual_matrix, expect_matrix, object_name: str, places=None, delta=1e-6): - """Asserts that the matrices almost equal.""" - self.assertEqual(len(actual_matrix), 4, 'Expected a 4x4 matrix') - diff --git a/media-gfx/blender/files/blender-2.83.6-fix_opevdb_abi.patch b/media-gfx/blender/files/blender-2.83.6-fix_opevdb_abi.patch deleted file mode 100644 index b7537f97fc09..000000000000 --- a/media-gfx/blender/files/blender-2.83.6-fix_opevdb_abi.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1552,7 +1552,7 @@ - CMAKE_C_COMPILER_ID MATCHES "Intel" - ) - # TODO(sergey): Do we want c++11 or gnu-c++11 here? -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - else() - message(FATAL_ERROR "Unknown compiler ${CMAKE_C_COMPILER_ID}, can't enable C++11 build") - endif() ---- a/extern/mantaflow/CMakeLists.txt -+++ b/extern/mantaflow/CMakeLists.txt -@@ -51,7 +51,6 @@ - - if(WITH_OPENVDB) - add_definitions(-DOPENVDB=1) -- add_definitions(-DOPENVDB_STATICLIB) - endif() - - if(WIN32 diff --git a/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch b/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch deleted file mode 100644 index 1392510a23a7..000000000000 --- a/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch +++ /dev/null @@ -1,219 +0,0 @@ -diff --git a/intern/libmv/libmv/base/vector.h b/intern/libmv/libmv/base/vector.h -index bdc4392155c..300291c5679 100644 ---- a/intern/libmv/libmv/base/vector.h -+++ b/intern/libmv/libmv/base/vector.h -@@ -25,151 +25,18 @@ - #ifndef LIBMV_BASE_VECTOR_H - #define LIBMV_BASE_VECTOR_H - --#include --#include -+#include - - #include - - namespace libmv { - --// A simple container class, which guarantees 16 byte alignment needed for most --// vectorization. Don't use this container for classes that cannot be copied --// via memcpy. --// FIXME: this class has some issues: --// - doesn't support iterators. --// - impede compatibility with code using STL. --// - the STL already provide support for custom allocators --// it could be replaced with a simple --// template class vector : std::vector {} declaration --// provided it doesn't break code relying on libmv::vector specific behavior --template > --class vector { -- public: -- ~vector() { clear(); } -+// A simple container class, which guarantees the correct memory alignment -+// needed for most eigen vectorization. Don't use this container for classes -+// that cannot be copied via memcpy. - -- vector() { init(); } -- vector(int size) { init(); resize(size); } -- vector(int size, const T & val) { -- init(); -- resize(size); -- std::fill(data_, data_+size_, val); } -- -- // Copy constructor and assignment. -- vector(const vector &rhs) { -- init(); -- copy(rhs); -- } -- vector &operator=(const vector &rhs) { -- if (&rhs != this) { -- copy(rhs); -- } -- return *this; -- } -- -- /// Swaps the contents of two vectors in constant time. -- void swap(vector &other) { -- std::swap(allocator_, other.allocator_); -- std::swap(size_, other.size_); -- std::swap(capacity_, other.capacity_); -- std::swap(data_, other.data_); -- } -- -- T *data() const { return data_; } -- int size() const { return size_; } -- int capacity() const { return capacity_; } -- const T& back() const { return data_[size_ - 1]; } -- T& back() { return data_[size_ - 1]; } -- const T& front() const { return data_[0]; } -- T& front() { return data_[0]; } -- const T& operator[](int n) const { return data_[n]; } -- T& operator[](int n) { return data_[n]; } -- const T& at(int n) const { return data_[n]; } -- T& at(int n) { return data_[n]; } -- const T * begin() const { return data_; } -- const T * end() const { return data_+size_; } -- T * begin() { return data_; } -- T * end() { return data_+size_; } -- -- void resize(size_t size) { -- reserve(size); -- if (size > size_) { -- construct(size_, size); -- } else if (size < size_) { -- destruct(size, size_); -- } -- size_ = size; -- } -- -- void push_back(const T &value) { -- if (size_ == capacity_) { -- reserve(size_ ? 2 * size_ : 1); -- } -- new (&data_[size_++]) T(value); -- } -- -- void pop_back() { -- resize(size_ - 1); -- } -- -- void clear() { -- destruct(0, size_); -- deallocate(); -- init(); -- } -- -- void reserve(unsigned int size) { -- if (size > size_) { -- T *data = static_cast(allocate(size)); -- memcpy(static_cast(data), data_, sizeof(*data)*size_); -- allocator_.deallocate(data_, capacity_); -- data_ = data; -- capacity_ = size; -- } -- } -- -- bool empty() { -- return size_ == 0; -- } -- -- private: -- void construct(int start, int end) { -- for (int i = start; i < end; ++i) { -- new (&data_[i]) T; -- } -- } -- void destruct(int start, int end) { -- for (int i = start; i < end; ++i) { -- data_[i].~T(); -- } -- } -- void init() { -- size_ = 0; -- data_ = 0; -- capacity_ = 0; -- } -- -- void *allocate(int size) { -- return size ? allocator_.allocate(size) : 0; -- } -- -- void deallocate() { -- allocator_.deallocate(data_, size_); -- data_ = 0; -- } -- -- void copy(const vector &rhs) { -- resize(rhs.size()); -- for (int i = 0; i < rhs.size(); ++i) { -- (*this)[i] = rhs[i]; -- } -- } -- -- Allocator allocator_; -- size_t size_; -- size_t capacity_; -- T *data_; --}; -+template -+using vector = std::vector>; - - } // namespace libmv - -diff --git a/intern/libmv/libmv/base/vector_test.cc b/intern/libmv/libmv/base/vector_test.cc -index f17718c3926..44b9a152148 100644 ---- a/intern/libmv/libmv/base/vector_test.cc -+++ b/intern/libmv/libmv/base/vector_test.cc -@@ -115,31 +115,24 @@ TEST_F(VectorTest, ResizeConstructsAndDestructsAsExpected) { - // Create one object. - v.resize(1); - EXPECT_EQ(1, v.size()); -- EXPECT_EQ(1, v.capacity()); - EXPECT_EQ(1, foo_construct_calls); -- EXPECT_EQ(0, foo_destruct_calls); - EXPECT_EQ(5, v[0].value); - - // Create two more. - v.resize(3); - EXPECT_EQ(3, v.size()); -- EXPECT_EQ(3, v.capacity()); - EXPECT_EQ(3, foo_construct_calls); -- EXPECT_EQ(0, foo_destruct_calls); - - // Delete the last one. - v.resize(2); - EXPECT_EQ(2, v.size()); - EXPECT_EQ(3, v.capacity()); - EXPECT_EQ(3, foo_construct_calls); -- EXPECT_EQ(1, foo_destruct_calls); - - // Delete the remaining two. - v.resize(0); - EXPECT_EQ(0, v.size()); -- EXPECT_EQ(3, v.capacity()); - EXPECT_EQ(3, foo_construct_calls); -- EXPECT_EQ(3, foo_destruct_calls); - } - - TEST_F(VectorTest, PushPopBack) { -@@ -192,15 +185,15 @@ TEST_F(VectorTest, STLFind) { - a.push_back(5); - a.push_back(3); - -- // Find return an int * -+ // Find returns an int * - EXPECT_EQ(std::find(&a[0], &a[2], 1) == &a[0], true); - EXPECT_EQ(std::find(&a[0], &a[2], 5) == &a[1], true); - EXPECT_EQ(std::find(&a[0], &a[2], 3) == &a[2], true); - -- // Find return a const int * -- EXPECT_EQ(std::find(a.begin(), a.end(), 1) == &a[0], true); -- EXPECT_EQ(std::find(a.begin(), a.end(), 5) == &a[1], true); -- EXPECT_EQ(std::find(a.begin(), a.end(), 3) == &a[2], true); -+ // Find returns an interator -+ EXPECT_EQ(std::find(a.begin(), a.end(), 1) == std::next(a.begin(), 0), true); -+ EXPECT_EQ(std::find(a.begin(), a.end(), 5) == std::next(a.begin(), 1), true); -+ EXPECT_EQ(std::find(a.begin(), a.end(), 3) == std::next(a.begin(), 2), true); - - // Search value that are not in the vector - EXPECT_EQ(std::find(a.begin(), a.end(), 0) == a.end(), true); -- cgit v1.2.3