Source: tiledarray Version: 0.6.0-5.2 Severity: serious Justification: FTBFS on amd64 Tags: bullseye sid ftbfs Usertags: ftbfs-20210213 ftbfs-bullseye
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h: In instantiation of ‘void > TiledArray::math::for_each_block(Op&&, Result*, const Args* const ...) [with > Op = TiledArray::math::copy_block<double, double>::<lambda(double&, > TiledArray::detail::param_type<double>)>; Result = double; Args = {double}]’: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:221:21: required from > ‘void TiledArray::math::copy_block(Result*, const Arg*) [with Result = > double; Arg = double]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:273:51: required from > ‘void TiledArray::math::Block< <template-parameter-1-1> >::store(T*) const > [with T = double]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:369:27: required from > ‘void TiledArray::math::inplace_vector_op_serial(Op&&, std::size_t, Result*, > const Args* const ...) [with Op = TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::add_to<double, > Eigen::aligned_allocator<double> >::<lambda(TiledArray::Tensor<double, > Eigen::aligned_allocator<double> >::numeric_type&)>&; Result = double; Args = > {}; typename std::enable_if<std::is_void<typename std::result_of<Op(Result&, > Args ...)>::type>::value>::type* <anonymous> = 0; std::size_t = long unsigned > int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:428:33: required from > ‘void TiledArray::math::inplace_vector_op(Op&&, std::size_t, Result*, const > Args* const ...) [with Op = TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to<double, Eigen::aligned_allocator<double> > >::<lambda(TiledArray::Tensor<double, Eigen::aligned_allocator<double> > >::numeric_type&)>&; Result = double; Args = {}; typename > std::enable_if<std::is_void<typename std::result_of<Op(Result&, Args > ...)>::type>::value>::type* <anonymous> = 0; std::size_t = long unsigned int]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/kernels.h:107:30: required from > ‘void TiledArray::detail::inplace_tensor_op(Op&&, TR&, const Ts& ...) [with > Op = TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<double, Eigen::aligned_allocator<double> > >::<lambda(TiledArray::Tensor<double, Eigen::aligned_allocator<double> > >::numeric_type&)>&; TR = TiledArray::Tensor<double, > Eigen::aligned_allocator<double> >; Ts = {}; typename > std::enable_if<(TiledArray::detail::is_tensor<T2, Ts ...>::value && > TiledArray::detail::is_contiguous_tensor<T2, Ts ...>::value)>::type* > <anonymous> = 0]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:625:32: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::inplace_unary(Op&&) [with Op = > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<double, Eigen::aligned_allocator<double> > >::<lambda(TiledArray::Tensor<double, Eigen::aligned_allocator<double> > >::numeric_type&)>; T = double; A = Eigen::aligned_allocator<double>; > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_ = TiledArray::Tensor<double, Eigen::aligned_allocator<double> >]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:791:27: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to(TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::numeric_type) [with T = > double; A = Eigen::aligned_allocator<double>; TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::Tensor_ = > TiledArray::Tensor<double, Eigen::aligned_allocator<double> >; > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::numeric_type = double]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.cpp:31:18: required from here > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: error: no matching > function for call to > ‘TiledArray::math::VectorOpUnwind<7>::for_each(TiledArray::math::copy_block<double, > double>::<lambda(double&, TiledArray::detail::param_type<double>)>&, double* > const&, const double* const&)’ > 155 | VecOpUnwindN::for_each(op, result, args...); > | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: candidate: > ‘template<class Op, class Result, class ... Args> static void > TiledArray::math::VectorOpUnwind<<anonymous> >::for_each(Op&&, Result*) [with > Op = Op; Result = Result; Args = {Args ...}; long unsigned int N = 7]’ > 107 | for_each(Op&& op, Result* restrict const result, const Args* > restrict const ...args) { > | ^~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: template > argument deduction/substitution failed: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: note: candidate > expects 2 arguments, 3 provided > 155 | VecOpUnwindN::for_each(op, result, args...); > | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h: In instantiation of ‘void > TiledArray::math::for_each_block(Op&&, Result*, const Args* const ...) [with > Op = TiledArray::math::copy_block<float, float>::<lambda(float&, > TiledArray::detail::param_type<float>)>; Result = float; Args = {float}]’: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:221:21: required from > ‘void TiledArray::math::copy_block(Result*, const Arg*) [with Result = float; > Arg = float]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:273:51: required from > ‘void TiledArray::math::Block< <template-parameter-1-1> >::store(T*) const > [with T = float]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:369:27: required from > ‘void TiledArray::math::inplace_vector_op_serial(Op&&, std::size_t, Result*, > const Args* const ...) [with Op = TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::add_to<float, > Eigen::aligned_allocator<float> >::<lambda(TiledArray::Tensor<float, > Eigen::aligned_allocator<float> >::numeric_type&)>&; Result = float; Args = > {}; typename std::enable_if<std::is_void<typename std::result_of<Op(Result&, > Args ...)>::type>::value>::type* <anonymous> = 0; std::size_t = long unsigned > int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:428:33: required from > ‘void TiledArray::math::inplace_vector_op(Op&&, std::size_t, Result*, const > Args* const ...) [with Op = TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to<float, Eigen::aligned_allocator<float> > >::<lambda(TiledArray::Tensor<float, Eigen::aligned_allocator<float> > >::numeric_type&)>&; Result = float; Args = {}; typename > std::enable_if<std::is_void<typename std::result_of<Op(Result&, Args > ...)>::type>::value>::type* <anonymous> = 0; std::size_t = long unsigned int]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/kernels.h:107:30: required from > ‘void TiledArray::detail::inplace_tensor_op(Op&&, TR&, const Ts& ...) [with > Op = TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<float, Eigen::aligned_allocator<float> > >::<lambda(TiledArray::Tensor<float, Eigen::aligned_allocator<float> > >::numeric_type&)>&; TR = TiledArray::Tensor<float, > Eigen::aligned_allocator<float> >; Ts = {}; typename > std::enable_if<(TiledArray::detail::is_tensor<T2, Ts ...>::value && > TiledArray::detail::is_contiguous_tensor<T2, Ts ...>::value)>::type* > <anonymous> = 0]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:625:32: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::inplace_unary(Op&&) [with Op = > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<float, Eigen::aligned_allocator<float> > >::<lambda(TiledArray::Tensor<float, Eigen::aligned_allocator<float> > >::numeric_type&)>; T = float; A = Eigen::aligned_allocator<float>; > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_ = TiledArray::Tensor<float, Eigen::aligned_allocator<float> >]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:791:27: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to(TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::numeric_type) [with T = > float; A = Eigen::aligned_allocator<float>; TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::Tensor_ = > TiledArray::Tensor<float, Eigen::aligned_allocator<float> >; > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::numeric_type = float]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.cpp:32:18: required from here > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: error: no matching > function for call to > ‘TiledArray::math::VectorOpUnwind<7>::for_each(TiledArray::math::copy_block<float, > float>::<lambda(float&, TiledArray::detail::param_type<float>)>&, float* > const&, const float* const&)’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: candidate: > ‘template<class Op, class Result, class ... Args> static void > TiledArray::math::VectorOpUnwind<<anonymous> >::for_each(Op&&, Result*) [with > Op = Op; Result = Result; Args = {Args ...}; long unsigned int N = 7]’ > 107 | for_each(Op&& op, Result* restrict const result, const Args* > restrict const ...args) { > | ^~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: template > argument deduction/substitution failed: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: note: candidate > expects 2 arguments, 3 provided > 155 | VecOpUnwindN::for_each(op, result, args...); > | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h: In instantiation of ‘void > TiledArray::math::for_each_block(Op&&, Result*, const Args* const ...) [with > Op = TiledArray::math::copy_block<int, int>::<lambda(int&, > TiledArray::detail::param_type<int>)>; Result = int; Args = {int}]’: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:221:21: required from > ‘void TiledArray::math::copy_block(Result*, const Arg*) [with Result = int; > Arg = int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:273:51: required from > ‘void TiledArray::math::Block< <template-parameter-1-1> >::store(T*) const > [with T = int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:369:27: required from > ‘void TiledArray::math::inplace_vector_op_serial(Op&&, std::size_t, Result*, > const Args* const ...) [with Op = TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::add_to<int, > Eigen::aligned_allocator<int> >::<lambda(TiledArray::Tensor<int, > Eigen::aligned_allocator<int> >::numeric_type&)>&; Result = int; Args = {}; > typename std::enable_if<std::is_void<typename std::result_of<Op(Result&, Args > ...)>::type>::value>::type* <anonymous> = 0; std::size_t = long unsigned int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:428:33: required from > ‘void TiledArray::math::inplace_vector_op(Op&&, std::size_t, Result*, const > Args* const ...) [with Op = TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to<int, Eigen::aligned_allocator<int> > >::<lambda(TiledArray::Tensor<int, Eigen::aligned_allocator<int> > >::numeric_type&)>&; Result = int; Args = {}; typename > std::enable_if<std::is_void<typename std::result_of<Op(Result&, Args > ...)>::type>::value>::type* <anonymous> = 0; std::size_t = long unsigned int]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/kernels.h:107:30: required from > ‘void TiledArray::detail::inplace_tensor_op(Op&&, TR&, const Ts& ...) [with > Op = TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<int, Eigen::aligned_allocator<int> > >::<lambda(TiledArray::Tensor<int, Eigen::aligned_allocator<int> > >::numeric_type&)>&; TR = TiledArray::Tensor<int, > Eigen::aligned_allocator<int> >; Ts = {}; typename > std::enable_if<(TiledArray::detail::is_tensor<T2, Ts ...>::value && > TiledArray::detail::is_contiguous_tensor<T2, Ts ...>::value)>::type* > <anonymous> = 0]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:625:32: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::inplace_unary(Op&&) [with Op = > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<int, Eigen::aligned_allocator<int> > >::<lambda(TiledArray::Tensor<int, Eigen::aligned_allocator<int> > >::numeric_type&)>; T = int; A = Eigen::aligned_allocator<int>; > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_ = TiledArray::Tensor<int, Eigen::aligned_allocator<int> >]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:791:27: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to(TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::numeric_type) [with T = > int; A = Eigen::aligned_allocator<int>; TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::Tensor_ = > TiledArray::Tensor<int, Eigen::aligned_allocator<int> >; TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::numeric_type = int]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.cpp:33:18: required from here > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: error: no matching > function for call to > ‘TiledArray::math::VectorOpUnwind<7>::for_each(TiledArray::math::copy_block<int, > int>::<lambda(int&, TiledArray::detail::param_type<int>)>&, int* const&, > const int* const&)’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: candidate: > ‘template<class Op, class Result, class ... Args> static void > TiledArray::math::VectorOpUnwind<<anonymous> >::for_each(Op&&, Result*) [with > Op = Op; Result = Result; Args = {Args ...}; long unsigned int N = 7]’ > 107 | for_each(Op&& op, Result* restrict const result, const Args* > restrict const ...args) { > | ^~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: template > argument deduction/substitution failed: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: note: candidate > expects 2 arguments, 3 provided > 155 | VecOpUnwindN::for_each(op, result, args...); > | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h: In instantiation of ‘void > TiledArray::math::for_each_block(Op&&, Result*, const Args* const ...) [with > Op = TiledArray::math::copy_block<long int, long int>::<lambda(long int&, > TiledArray::detail::param_type<long int>)>; Result = long int; Args = {long > int}]’: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:221:21: required from > ‘void TiledArray::math::copy_block(Result*, const Arg*) [with Result = long > int; Arg = long int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:273:51: required from > ‘void TiledArray::math::Block< <template-parameter-1-1> >::store(T*) const > [with T = long int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:369:27: required from > ‘void TiledArray::math::inplace_vector_op_serial(Op&&, std::size_t, Result*, > const Args* const ...) [with Op = TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::add_to<long int, > Eigen::aligned_allocator<long int> >::<lambda(TiledArray::Tensor<long int, > Eigen::aligned_allocator<long int> >::numeric_type&)>&; Result = long int; > Args = {}; typename std::enable_if<std::is_void<typename > std::result_of<Op(Result&, Args ...)>::type>::value>::type* <anonymous> = 0; > std::size_t = long unsigned int]’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:428:33: required from > ‘void TiledArray::math::inplace_vector_op(Op&&, std::size_t, Result*, const > Args* const ...) [with Op = TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to<long int, Eigen::aligned_allocator<long > int> >::<lambda(TiledArray::Tensor<long int, Eigen::aligned_allocator<long > int> >::numeric_type&)>&; Result = long int; Args = {}; typename > std::enable_if<std::is_void<typename std::result_of<Op(Result&, Args > ...)>::type>::value>::type* <anonymous> = 0; std::size_t = long unsigned int]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/kernels.h:107:30: required from > ‘void TiledArray::detail::inplace_tensor_op(Op&&, TR&, const Ts& ...) [with > Op = TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<long int, Eigen::aligned_allocator<long int> > >::<lambda(TiledArray::Tensor<long int, Eigen::aligned_allocator<long int> > >::numeric_type&)>&; TR = TiledArray::Tensor<long int, > Eigen::aligned_allocator<long int> >; Ts = {}; typename > std::enable_if<(TiledArray::detail::is_tensor<T2, Ts ...>::value && > TiledArray::detail::is_contiguous_tensor<T2, Ts ...>::value)>::type* > <anonymous> = 0]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:625:32: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::inplace_unary(Op&&) [with Op = > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::add_to<long int, Eigen::aligned_allocator<long int> > >::<lambda(TiledArray::Tensor<long int, Eigen::aligned_allocator<long int> > >::numeric_type&)>; T = long int; A = Eigen::aligned_allocator<long int>; > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_ = TiledArray::Tensor<long int, Eigen::aligned_allocator<long int> > >]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.h:791:27: required from > ‘TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::Tensor_& TiledArray::Tensor< <template-parameter-1-1>, > <template-parameter-1-2> >::add_to(TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::numeric_type) [with T = > long int; A = Eigen::aligned_allocator<long int>; TiledArray::Tensor< > <template-parameter-1-1>, <template-parameter-1-2> >::Tensor_ = > TiledArray::Tensor<long int, Eigen::aligned_allocator<long int> >; > TiledArray::Tensor< <template-parameter-1-1>, <template-parameter-1-2> > >::numeric_type = long int]’ > /<<PKGBUILDDIR>>/src/TiledArray/tensor/tensor.cpp:34:18: required from here > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: error: no matching > function for call to > ‘TiledArray::math::VectorOpUnwind<7>::for_each(TiledArray::math::copy_block<long > int, long int>::<lambda(long int&, TiledArray::detail::param_type<long > int>)>&, long int* const&, const long int* const&)’ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: candidate: > ‘template<class Op, class Result, class ... Args> static void > TiledArray::math::VectorOpUnwind<<anonymous> >::for_each(Op&&, Result*) [with > Op = Op; Result = Result; Args = {Args ...}; long unsigned int N = 7]’ > 107 | for_each(Op&& op, Result* restrict const result, const Args* > restrict const ...args) { > | ^~~~~~~~ > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:107:7: note: template > argument deduction/substitution failed: > /<<PKGBUILDDIR>>/src/TiledArray/math/vector_op.h:155:29: note: candidate > expects 2 arguments, 3 provided > 155 | VecOpUnwindN::for_each(op, result, args...); > | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ > make[4]: *** [src/CMakeFiles/tiledarray.dir/build.make:85: > src/CMakeFiles/tiledarray.dir/TiledArray/tensor/tensor.cpp.o] Error 1 The full build log is available from: http://qa-logs.debian.net/2021/02/13/tiledarray_0.6.0-5.2_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please marking it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with me so that we can identify if something relevant changed in the meantime. About the archive rebuild: The rebuild was done on EC2 VM instances from Amazon Web Services, using a clean, minimal and up-to-date chroot. Every failed build was retried once to eliminate random failures.