Bug#835743: z3: FTBFS: ../src/util/mpz.cpp:137:8: error: call of overloaded 'set(mpz&, long unsigned int)' is ambiguous
Hi, > thanks for the patches! > (feel free to ping directly in case of RC bug fixes if you need a sponsor!) > at the end I'm uploading it with a new couple of casts (and patches forwarded upstream). I hope I did the cast correctly, the build is fine now. G. diff -Nru z3-4.4.1/debian/changelog z3-4.4.1/debian/changelog --- z3-4.4.1/debian/changelog 2016-07-20 13:07:58.0 +0200 +++ z3-4.4.1/debian/changelog 2016-09-26 07:28:12.0 +0200 @@ -1,3 +1,19 @@ +z3 (4.4.1-0.3) unstable; urgency=medium + + * Non-maintainer upload. + + [ Fabian Wolff ] + * debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch: +Fix build failure with new gnu++14 standard. (Closes: #835754) + * debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch: +Fix build failure with new compiler and clang. (Closes: #835743) + + [ Gianfranco Costamagna ] + * debian/patches/fix-build.patch: tweak the casts a little bit +more to really fix 835743. + + -- Gianfranco CostamagnaSun, 25 Sep 2016 23:06:24 +0200 + z3 (4.4.1-0.2) unstable; urgency=medium * Non-maintainer upload. diff -Nru z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch --- z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch 1970-01-01 01:00:00.0 +0100 +++ z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch 2016-09-25 23:46:37.0 +0200 @@ -0,0 +1,23 @@ +From 27399309009314f56cdfbd8333f287b1a9b7a3a6 Mon Sep 17 00:00:00 2001 +From: Nuno Lopes +Date: Fri, 27 Nov 2015 12:13:44 + +Subject: [PATCH] fix build with clang + +Signed-off-by: Nuno Lopes +--- + src/util/mpz.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/util/mpz.cpp b/src/util/mpz.cpp +index 8559279..7dca14b 100644 +--- a/src/util/mpz.cpp b/src/util/mpz.cpp +@@ -134,7 +134,7 @@ mpz_manager::mpz_manager(): + #endif + + mpz one(1); +-set(m_two64, UINT64_MAX); ++set(m_two64, (uint64)UINT64_MAX); + add(m_two64, one, m_two64); + } + diff -Nru z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch --- z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch 1970-01-01 01:00:00.0 +0100 +++ z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch 2016-09-25 23:46:37.0 +0200 @@ -0,0 +1,23 @@ +From f02d273ee39ae047222e362c37213d29135dc661 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely +Date: Tue, 2 Feb 2016 23:39:11 + +Subject: [PATCH] Convert stream to bool explicitly + +In C++11 there is no implicit conversion from iostream classes to `void*`, just an explicit conversion to bool. +--- + src/util/debug.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/util/debug.cpp b/src/util/debug.cpp +index 54c67fe..66676c6 100644 +--- a/src/util/debug.cpp b/src/util/debug.cpp +@@ -76,7 +76,7 @@ void invoke_gdb() { + for (;;) { + std::cerr << "(C)ontinue, (A)bort, (S)top, (T)hrow exception, Invoke (G)DB\n"; + char result; +-bool ok = (std::cin >> result); ++bool ok = bool(std::cin >> result); + if (!ok) exit(ERR_INTERNAL_FATAL); // happens if std::cin is eof or unattached. + switch(result) { + case 'C': diff -Nru z3-4.4.1/debian/patches/fix-build.patch z3-4.4.1/debian/patches/fix-build.patch --- z3-4.4.1/debian/patches/fix-build.patch 1970-01-01 01:00:00.0 +0100 +++ z3-4.4.1/debian/patches/fix-build.patch 2016-09-26 08:08:19.0 +0200 @@ -0,0 +1,53 @@ +Author: Gianfranco Costamagna +Description: Add some more casts to fix the build (Bug: #835743) +Forwarded: https://github.com/Z3Prover/z3/pull/746 + https://github.com/Z3Prover/z3/pull/747 +--- z3-4.4.1.orig/src/test/mpff.cpp z3-4.4.1/src/test/mpff.cpp +@@ -207,7 +207,7 @@ static void tst_set64(unsigned N, unsign + mpff_manager fm(prec); + scoped_mpff a(fm); + +-fm.set(a, INT64_MAX); ++fm.set(a, static_cast(INT64_MAX)); + SASSERT(fm.is_int64(a)); + SASSERT(fm.is_uint64(a)); + fm.inc(a); +@@ -221,7 +221,7 @@ static void tst_set64(unsigned N, unsign + SASSERT(fm.is_int64(a)); + SASSERT(fm.is_uint64(a)); + +-fm.set(a, INT64_MIN); ++fm.set(a, static_cast(INT64_MIN)); + SASSERT(fm.is_int64(a)); + SASSERT(!fm.is_uint64(a)); + fm.dec(a); +@@ -235,7 +235,7 @@ static void tst_set64(unsigned N, unsign + SASSERT(fm.is_int64(a)); + SASSERT(!fm.is_uint64(a)); + +-fm.set(a, UINT64_MAX); ++fm.set(a, static_cast(UINT64_MAX)); + SASSERT(fm.is_uint64(a)); + SASSERT(!fm.is_int64(a)); + fm.inc(a); +@@ -600,7 +600,7 @@ static void tst_div(unsigned prec) { +
Bug#835743: z3: FTBFS: ../src/util/mpz.cpp:137:8: error: call of overloaded 'set(mpz&, long unsigned int)' is ambiguous
Control: tags -1 +pending On Wed, 14 Sep 2016 18:20:38 +0200 Fabian Wolffwrote: > Control: tags -1 + upstream patch fixed-upstream > Hi, the following debdiff is being build-tested and uploaded on deferred/2 thanks for the patches! (feel free to ping directly in case of RC bug fixes if you need a sponsor!) Gianfranco diff -Nru z3-4.4.1/debian/changelog z3-4.4.1/debian/changelog --- z3-4.4.1/debian/changelog 2016-07-20 13:07:58.0 +0200 +++ z3-4.4.1/debian/changelog 2016-09-25 23:09:40.0 +0200 @@ -1,3 +1,15 @@ +z3 (4.4.1-0.3) unstable; urgency=medium + + * Non-maintainer upload. + + [ Fabian Wolff ] + * debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch: +Fix build failure with new gnu++14 standard. (Closes: #835754) + * debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch: +Fix build failure with new compiler and clang. (Closes: #835743) + + -- Gianfranco Costamagna Sun, 25 Sep 2016 23:06:24 +0200 + z3 (4.4.1-0.2) unstable; urgency=medium * Non-maintainer upload. diff -Nru z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch --- z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch 1970-01-01 01:00:00.0 +0100 +++ z3-4.4.1/debian/patches/27399309009314f56cdfbd8333f287b1a9b7a3a6.patch 2016-09-25 23:10:20.0 +0200 @@ -0,0 +1,23 @@ +From 27399309009314f56cdfbd8333f287b1a9b7a3a6 Mon Sep 17 00:00:00 2001 +From: Nuno Lopes +Date: Fri, 27 Nov 2015 12:13:44 + +Subject: [PATCH] fix build with clang + +Signed-off-by: Nuno Lopes +--- + src/util/mpz.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/util/mpz.cpp b/src/util/mpz.cpp +index 8559279..7dca14b 100644 +--- a/src/util/mpz.cpp b/src/util/mpz.cpp +@@ -134,7 +134,7 @@ mpz_manager::mpz_manager(): + #endif + + mpz one(1); +-set(m_two64, UINT64_MAX); ++set(m_two64, (uint64)UINT64_MAX); + add(m_two64, one, m_two64); + } + diff -Nru z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch --- z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch 1970-01-01 01:00:00.0 +0100 +++ z3-4.4.1/debian/patches/f02d273ee39ae047222e362c37213d29135dc661.patch 2016-09-25 23:10:14.0 +0200 @@ -0,0 +1,23 @@ +From f02d273ee39ae047222e362c37213d29135dc661 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely +Date: Tue, 2 Feb 2016 23:39:11 + +Subject: [PATCH] Convert stream to bool explicitly + +In C++11 there is no implicit conversion from iostream classes to `void*`, just an explicit conversion to bool. +--- + src/util/debug.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/util/debug.cpp b/src/util/debug.cpp +index 54c67fe..66676c6 100644 +--- a/src/util/debug.cpp b/src/util/debug.cpp +@@ -76,7 +76,7 @@ void invoke_gdb() { + for (;;) { + std::cerr << "(C)ontinue, (A)bort, (S)top, (T)hrow exception, Invoke (G)DB\n"; + char result; +-bool ok = (std::cin >> result); ++bool ok = bool(std::cin >> result); + if (!ok) exit(ERR_INTERNAL_FATAL); // happens if std::cin is eof or unattached. + switch(result) { + case 'C': diff -Nru z3-4.4.1/debian/patches/series z3-4.4.1/debian/patches/series --- z3-4.4.1/debian/patches/series 2016-07-20 13:07:58.0 +0200 +++ z3-4.4.1/debian/patches/series 2016-09-25 23:08:44.0 +0200 @@ -6,3 +6,5 @@ typos.patch hardening.patch kfreebsd.patch +f02d273ee39ae047222e362c37213d29135dc661.patch +27399309009314f56cdfbd8333f287b1a9b7a3a6.patch signature.asc Description: OpenPGP digital signature
Bug#835743: z3: FTBFS: ../src/util/mpz.cpp:137:8: error: call of overloaded 'set(mpz&, long unsigned int)' is ambiguous
Control: tags -1 + upstream patch fixed-upstream Hi, the following patch fixes this issue: --- a/src/util/mpz.cpp +++ b/src/util/mpz.cpp @@ -134,7 +134,7 @@ #endif mpz one(1); -set(m_two64, UINT64_MAX); +set(m_two64, static_cast(UINT64_MAX)); add(m_two64, one, m_two64); } The problem has already been fixed in the upstream repository by this commit: https://github.com/Z3Prover/z3/commit/27399309009314f56cdfbd8333f287b1a9b7a3a6 Kind regards, Fabian
Bug#835743: z3: FTBFS: ../src/util/mpz.cpp:137:8: error: call of overloaded 'set(mpz&, long unsigned int)' is ambiguous
Source: z3 Version: 4.4.1-0.2 Severity: serious Tags: stretch sid User: debian...@lists.debian.org Usertags: qa-ftbfs-20160828 qa-ftbfs Justification: FTBFS on amd64 Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[2]: Entering directory '/<>/build' > src/shell/datalog_frontend.cpp > src/shell/gparams_register_modules.cpp > src/shell/z3_log_frontend.cpp > src/shell/main.cpp > src/shell/install_tactic.cpp > src/shell/dimacs_frontend.cpp > src/shell/mem_initializer.cpp > src/shell/opt_frontend.cpp > src/shell/smtlib_frontend.cpp > src/api/api_params.cpp > src/api/api_opt.cpp > src/api/api_algebraic.cpp > src/api/api_log_macros.cpp > src/api/api_quant.cpp > src/api/api_solver_old.cpp > src/api/api_ast_vector.cpp > src/api/api_bv.cpp > src/api/api_context.cpp > src/api/api_datalog.cpp > src/api/api_arith.cpp > src/api/api_ast.cpp > src/api/api_polynomial.cpp > src/api/api_ast_map.cpp > src/api/api_numeral.cpp > src/api/api_interp.cpp > src/api/api_stats.cpp > src/api/api_model.cpp > src/api/api_config_params.cpp > src/api/api_solver.cpp > src/api/z3_replayer.cpp > src/api/api_array.cpp > src/api/api_pb.cpp > src/api/api_goal.cpp > src/api/api_commands.cpp > src/api/api_log.cpp > src/api/api_rcf.cpp > src/api/api_fpa.cpp > src/api/api_parsers.cpp > src/api/api_datatype.cpp > src/api/api_user_theory.cpp > src/api/api_tactic.cpp > src/opt/wmax.cpp > src/opt/opt_pareto.cpp > src/opt/opt_cmds.cpp > src/opt/hitting_sets.cpp > src/opt/maxsmt.cpp > src/opt/pb_sls.cpp > src/opt/opt_context.cpp > src/opt/mus.cpp > src/opt/bcd2.cpp > src/opt/fu_malik.cpp > src/opt/maxsls.cpp > src/opt/opt_solver.cpp > src/opt/maxres.cpp > src/opt/mss.cpp > src/opt/maxhs.cpp > src/opt/optsmt.cpp > src/parsers/smt/smtparser.cpp > src/parsers/smt/smtlib.cpp > src/parsers/smt/smtlib_solver.cpp > src/tactic/portfolio/default_tactic.cpp > src/tactic/portfolio/smt_strategic_solver.cpp > src/sat/sat_solver/inc_sat_solver.cpp > src/tactic/ufbv/ufbv_tactic.cpp > src/tactic/ufbv/ufbv_rewriter.cpp > src/tactic/ufbv/ufbv_rewriter_tactic.cpp > src/tactic/ufbv/quasi_macros_tactic.cpp > src/tactic/ufbv/macro_finder_tactic.cpp > src/tactic/fpa/qffp_tactic.cpp > src/tactic/fpa/fpa2bv_model_converter.cpp > src/tactic/fpa/fpa2bv_tactic.cpp > src/tactic/smtlogics/qfufnra_tactic.cpp > src/tactic/smtlogics/nra_tactic.cpp > src/tactic/smtlogics/qfnra_tactic.cpp > src/tactic/smtlogics/qfufbv_tactic.cpp > src/tactic/smtlogics/quant_tactics.cpp > src/tactic/smtlogics/qfbv_tactic.cpp > src/tactic/smtlogics/qfuf_tactic.cpp > src/tactic/smtlogics/qflia_tactic.cpp > src/tactic/smtlogics/qfnia_tactic.cpp > src/tactic/smtlogics/qfidl_tactic.cpp > src/tactic/smtlogics/qfaufbv_tactic.cpp > src/tactic/smtlogics/qflra_tactic.cpp > src/tactic/smtlogics/qfauflia_tactic.cpp > src/tactic/nlsat_smt/nl_purify_tactic.cpp > src/muz/fp/dl_cmds.cpp > src/muz/fp/datalog_parser.cpp > src/muz/fp/dl_register_engine.cpp > src/muz/fp/horn_tactic.cpp > src/muz/duality/duality_dl_interface.cpp > src/muz/ddnf/ddnf.cpp > src/muz/bmc/dl_bmc_engine.cpp > src/muz/tab/tab_context.cpp > src/muz/clp/clp_context.cpp > src/muz/pdr/pdr_generalizers.cpp > src/muz/pdr/pdr_farkas_learner.cpp > src/muz/pdr/pdr_closure.cpp > src/muz/pdr/pdr_manager.cpp > src/muz/pdr/pdr_smt_context_manager.cpp > src/muz/pdr/pdr_prop_solver.cpp > src/muz/pdr/pdr_reachable_cache.cpp > src/muz/pdr/pdr_dl_interface.cpp > src/muz/pdr/pdr_context.cpp > src/muz/pdr/pdr_util.cpp > src/muz/pdr/pdr_sym_mux.cpp > src/muz/rel/dl_mk_similarity_compressor.cpp > src/muz/rel/dl_bound_relation.cpp > src/muz/rel/dl_interval_relation.cpp > src/muz/rel/dl_sieve_relation.cpp > src/muz/rel/udoc_relation.cpp > src/muz/rel/dl_compiler.cpp > src/muz/rel/karr_relation.cpp > src/muz/rel/dl_sparse_table.cpp > src/muz/rel/dl_finite_product_relation.cpp > src/muz/rel/dl_base.cpp > src/muz/rel/dl_mk_partial_equiv.cpp > src/muz/rel/dl_table.cpp > src/muz/rel/tbv.cpp > src/muz/rel/doc.cpp > src/muz/rel/dl_relation_manager.cpp > src/muz/rel/dl_mk_explanations.cpp > src/muz/rel/dl_check_table.cpp > src/muz/rel/dl_mk_simple_joins.cpp > src/muz/rel/aig_exporter.cpp > src/muz/rel/dl_instruction.cpp > src/muz/rel/dl_product_relation.cpp > src/muz/rel/check_relation.cpp > src/muz/rel/dl_lazy_table.cpp > src/muz/rel/dl_external_relation.cpp > src/muz/rel/dl_table_relation.cpp > src/muz/rel/rel_context.cpp > src/muz/transforms/dl_mk_interp_tail_simplifier.cpp > src/muz/transforms/dl_mk_rule_inliner.cpp > src/muz/transforms/dl_mk_unbound_compressor.cpp > src/muz/transforms/dl_mk_filter_rules.cpp > src/muz/transforms/dl_mk_loop_counter.cpp > src/muz/transforms/dl_transforms.cpp > src/muz/transforms/dl_mk_quantifier_instantiation.cpp > src/muz/transforms/dl_mk_subsumption_checker.cpp > src/muz/transforms/dl_mk_bit_blast.cpp > src/muz/transforms/dl_mk_coalesce.cpp > src/muz/transforms/dl_mk_karr_invariants.cpp > src/muz/transforms/dl_mk_unfold.cpp > src/muz/transforms/dl_mk_magic_sets.cpp >