Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libminizinc for openSUSE:Factory 
checked in at 2024-01-03 12:28:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libminizinc (Old)
 and      /work/SRC/openSUSE:Factory/.libminizinc.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libminizinc"

Wed Jan  3 12:28:42 2024 rev:5 rq:1136011 version:2.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/libminizinc/libminizinc.changes  2023-11-16 
21:44:01.760191306 +0100
+++ /work/SRC/openSUSE:Factory/.libminizinc.new.28375/libminizinc.changes       
2024-01-03 12:29:06.092491910 +0100
@@ -1,0 +2,194 @@
+Sat Dec 30 05:08:48 UTC 2023 - Stefan Brüns <[email protected]>
+
+- update to 2.8.2:
+  * Bug fixes:
+    + Fix incorrect FlatZinc definition in the gecode_presolver
+      solver library.
+    + Fix type specialisation for function with an polymorphic
+      array argument and a non-array return type with the same
+      type-inst identifier.
+    + Fix crash during typechecking of overloaded functions
+      differing only by inst returning structured types.
+    + Fix incorrect type checking of polymorphic functions with
+      type-inst IDs inside structured types.
+    + Fix evaluation error when boolean variables are fixed during
+      flattening.
+    + Fix incorrect call names output when generating .ozn files.
+    + Fix incorrect output of record access as tuple access in
+      .ozn files.
+    + Fix definition of array_intersect so that it can be used in
+      non-positive contexts.
+    + Fix standards definitions of increasing variants to correct
+      be ignored when the argument array is empty.
+    + Fix a problem where exceptions thrown for undefined
+      expressions were not caught during the aggregation of linear
+      expressions, breaking relational semantics.
+    + Fix crash when calculating computed domain of a declaration.
+    + Fix x-y line/scatter visualisations.
+  * Changes:
+    + Support var set``s of enums for ``array_union and
+      array_intersect.
+    + Support var enums for the .. range operator.
+    + Always perform substitution of fixed values before outputting
+      FlatZinc for consistency.
+  * Changes in the IDE:
+    + Make process handling more robust to failures.
+- update to 2.8.1:
+  * Bug fixes:
+    + Fix incorrect message for par array out of bounds indicating
+      that array is empty
+    + Fix incorrect propagation of Boolean variables potentially
+      causing output not accepted by Gecode and Chuffed.
+    + Fix a problem where the usage of lb on a Boolean expression
+      would return -infinity..
+    + Fix omission of error location when there is no stack trace
+      available.
+    + Fix type specialisation to always make par versions of
+      functions available for output.
+    + Fix internal error when checking return value of functions
+      involving arrays of optional values.
+    + Fix incorrect false values for has_output_item when running
+      with --model-interface-only
+    + Fix translation of search annotations with multi-dimensional
+      arrays as arguments.
+    + Fix bug in output generation for some visualisation functions.
+    + Fix problem where tuple or record assignments would sometimes
+      trigger segmentation faults.
+    + Fix context when binding the result of flattening a
+      concatenation operation, resolving a possible segmentation
+      fault.
+    + Fix incorrect possible evaluation error for in operator
+      involving an array RHS.
+  * Changes:
+    + Add --solution-checker option to allow specifying the
+      solution checker (allowing use from a parameter configuration
+      .mpc file).
+    + Produce tighter bounds in compute_mod_bounds for the
+      mod operator.
+  * Changes in the IDE:
+    + Fix command used to run findMUS and Globalizer.
+    + Add ability to set the ports used for the visualisation
+      server.
+    + Add option for printing the visualisation server URL for
+      debugging purposes.
+    + Add more information to subprocess error messages.
+- update to 2.8.0:
+  * Changes in interfaces to solvers:
+    + OR-Tools is now bundled with the MiniZinc IDE on all
+      platforms.
+    + HiGHS is now loaded as a dynamic plugin instead of statically
+      linked, and now supports outputting intermediate solutions
+      for optimisation problems.
+    + Add support for producing a JSON-based version of FlatZinc as
+      the output format of the MiniZinc compiler.
+    + Replace supportsMzn, supportsFzn and supportsNL solver
+      configuration flags with new option inputType. The old flags
+      are still supported for backwards compatibility.
+    + Add experimental support for restart based meta-search
+      specification for the Gecode and Chuffed solvers, as first
+      explored in Solver-Independent Large Neighbourhood Search and
+      A Modern Architecture for Constraint Modelling Languages.
+    + Automatically detect current versions of CPLEX.
+  * Changes in the MiniZinc Library:
+    + Add cumulatives scheduling global constraint.
+    + Add the opt variants of the global_cardinality functions, and
+      add enumerated type typesafety between the values of the
+      decision variables and the cover parameters.
+    + Add optional versions of count_* global constraints.
+    + (strictly_)decreasing will now always be rewritten into
+      (strictly_)increasing and has support for option types.
+    + Allow libraries to define how to iterate over var set of int
+      using the function set2iter, useful for different set
+      representations.
+    + Stabilise the IDE visualisation library, allowing all
+      visualisation functions to be used from output statements,
+      and removing the need for manual calls to showJSON in custom
+      visualisations. This is a breaking change for users of the
+      previous experimental API.
+    + Add mzn_half_reify_clause compiler option to allow solvers to
+      disable the half reification of bool_clause constraints.
+    + Update the reflection functions ub, lb, and dom to return
+      enum values.
+    + Use tuples to implement the decomposition of optional
+      variables, avoiding possible CSE aliasing problems.
+  * Changes in the compiler:
+    + CSE has been adjusted to handle commutative functions when
+      annotated using the promise_commutative annotation.
+    + mzn_reverse_map_var is now only called on output variables
+      that do not yet have reverse mappers after initial
+      flattening, but are required by the output model.
+    + Improve error messaging for invalid parameter configuration
+      (.mpc) files.
+    + Add a list of messages generated by solution checkers to the
+      checker message when using --json-stream.
+    + Support output of command line argument parsing errors in
+      --json-stream mode.
+  * Bug fixes:
+    + Fix restoration of tuple/record domains when flattening let
+      expressions.
+    + Fix type checking error due to creation of incorrect par
+      versions of functions involving tuples/records.
+    + Ensure that when --solver is used, the given solver
+      configuration file is always selected even when it collides
+      with a solver in the search paths.
+    + Fix error when running satisfaction problems using the Gecode
+      presolver where an output variable is also an
+      introduced variable.
+    + Resolve a problem where unification in the optimization phase
+      might remove variables part of the output.
+    + Fix possible crash when printing the final solution using the
+      built-in Chuffed interface.
+    + Don’t print the final status line from solution checkers.
+    + Fix typechecking of par type-inst identifiers when
+      instantiated using structured types involving var types.
+    + Implement fix and is_fixed for strucutred types.
+    + Ensure reverse mappers are created when flattening
+      tuple/record literals. This resolves certain errors during
+      output processing in models using these types.
+    + Fix problem where certain strings in exceptions might be
+      garbage collected before they are output.
+    + Fix problem where argument names of generated functions could
+      conflict with model declared names.
+    + Fix problem where the common type of complex records or
+      tuples was not correctly determined in the array literals.
+    + Fix a problem in the parser where a nullptr would be used
+      before a syntax error was thrown.
+    + Fix error management when reading preference files.
+    + Fix segmentation fault caused by the creation of invalid
+      domain constraints generated for functions with arrays of
+      tuples or records parameters.
+    + Fix crash when instantiating a type-inst identifier using
+      only <>.
+    + Fix evaluation of comprehensions containing opt string.
+    + Fix crash when instantiating polymorphic functions using
+      tuples/records with many var or opt fields.
+    + Do not generate default DZN output when there are only
+      sectioned output items present.
+    + Fix the edge indexing of the edges for the final node in the
+      neural_net global constraint.
+    + Add better error messaging when an index set mismatch is
+      encountered in the standard library.
+    + Fix evaluation error when indexing into an array using <>.
+    + Fix incorrect unsatisfiability when equating optional
+      variables with non-intersecting domains.
+    + Fix array access using optional indices for multidimensional
+      arrays.
+    + Fix output of zero length arrays of optional variables.
+    + Fix output processing performance degradation when printing
+      arrays in DZN output mode.
+    + Fix card function on set of floats and bools.
+    + Make set literals containing strings or annotations a
+      type error.
+  * Changes in the IDE:
+    + Fix unreadable cheat sheet font colour in dark mode.
+    + Add option to output objective value and enable by default.
+    + Show manually input parameters in output window.
+    + Fix missing checker messages.
+    + Fix incorrect OpenSSL version in Linux packages.
+- Add minimal checks
+- Add patches:
+  * 0001-Disambiguate-UNKNOWN-EXCEPTION.patch
+  * 0002-Catch-std-exception-by-const-reference.patch
+  * 0003-Try-to-get-some-more-information-when-catching.patch
+
+-------------------------------------------------------------------

Old:
----
  libminizinc-2.7.6.tar.gz

New:
----
  0001-Disambiguate-UNKNOWN-EXCEPTION.patch
  0002-Catch-std-exception-by-const-reference.patch
  0003-Try-to-get-some-more-information-when-catching.patch
  libminizinc-2.8.2.tar.gz

BETA DEBUG BEGIN:
  New:- Add patches:
  * 0001-Disambiguate-UNKNOWN-EXCEPTION.patch
  * 0002-Catch-std-exception-by-const-reference.patch
  New:  * 0001-Disambiguate-UNKNOWN-EXCEPTION.patch
  * 0002-Catch-std-exception-by-const-reference.patch
  * 0003-Try-to-get-some-more-information-when-catching.patch
  New:  * 0002-Catch-std-exception-by-const-reference.patch
  * 0003-Try-to-get-some-more-information-when-catching.patch
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libminizinc.spec ++++++
--- /var/tmp/diff_new_pack.aln6eb/_old  2024-01-03 12:29:08.080564524 +0100
+++ /var/tmp/diff_new_pack.aln6eb/_new  2024-01-03 12:29:08.084564669 +0100
@@ -17,16 +17,21 @@
 
 
 Name:           libminizinc
-Version:        2.7.6
+Version:        2.8.2
 Release:        0
 Summary:        A high-level constraint modelling language
 Group:          Productivity/Scientific/Math
 License:        MPL-2.0
 URL:            https://www.minizinc.org/
 Source:         
https://github.com/MiniZinc/libminizinc/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
+# PATCH-FEATURE-OPENSUSE - Be more verbose on thrown exceptions
+Patch0:         0001-Disambiguate-UNKNOWN-EXCEPTION.patch
+Patch1:         0002-Catch-std-exception-by-const-reference.patch
+Patch2:         0003-Try-to-get-some-more-information-when-catching.patch
 BuildRequires:  cmake >= 3.4.0
 BuildRequires:  gcc-c++
 BuildRequires:  gecode-devel
+BuildRequires:  gecode-minizinc
 BuildRequires:  pkgconfig(mpfr)
 
 %description
@@ -61,6 +66,21 @@
 %install
 %cmake_install
 
+%check
+cat > t.mzn <<EOF
+var 1..5: x;
+EOF
+cat > t1.mzc.mzn <<EOF
+output["SIMPLE CHECK"];
+EOF
+cat > t2.mzc.mzn <<EOF
+int: data :: add_to_output = 2;
+EOF
+export LD_LIBRARY_PATH=./build/
+./build/minizinc --solvers
+./build/minizinc t1.mzc.mzn t.mzn --output-mode json --output-time 
--output-objective --output-output-item --statistics
+./build/minizinc t2.mzc.mzn t.mzn --output-mode json --output-time 
--output-objective --output-output-item --statistics
+
 %post -n minizinc -p /sbin/ldconfig
 %postun -n minizinc -p /sbin/ldconfig
 

++++++ 0001-Disambiguate-UNKNOWN-EXCEPTION.patch ++++++
>From 9fce2c1f83b89ce8cbef585ccfc3c19c55cc16f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]>
Date: Tue, 19 Jul 2022 03:30:09 +0200
Subject: [PATCH 1/3] Disambiguate UNKNOWN EXCEPTION

minizinc.cpp and solns2out.cpp have the exact same error message in case of
an unhandled/unknown exception, add a suffix to notify where it is catched.
---
 lib/solns2out.cpp | 2 +-
 minizinc.cpp      | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/solns2out.cpp b/lib/solns2out.cpp
index 1e0ec4c6..6f9fdfe5 100644
--- a/lib/solns2out.cpp
+++ b/lib/solns2out.cpp
@@ -403,7 +403,7 @@ void Solns2Out::checkSolution(std::ostream& oss) {
   } catch (const exception& e) {
     oss << e.what() << std::endl;
   } catch (...) {
-    oss << "  UNKNOWN EXCEPTION." << std::endl;
+    oss << "  UNKNOWN EXCEPTION in checker." << std::endl;
   }
 
 #else
diff --git a/minizinc.cpp b/minizinc.cpp
index 0cb11667..a62478e9 100644
--- a/minizinc.cpp
+++ b/minizinc.cpp
@@ -72,7 +72,7 @@ int run(const std::string& exe, const 
std::vector<std::string>& args, bool jsonS
       if (slv.getFlagVerbose()) {
         std::cerr << std::endl;
       }
-      std::cerr << "  UNKNOWN EXCEPTION." << std::endl;
+      std::cerr << "  UNKNOWN EXCEPTION in solver." << std::endl;
     }
 
     if (slv.getFlagVerbose()) {
-- 
2.37.0


++++++ 0002-Catch-std-exception-by-const-reference.patch ++++++
>From c1e1cc1f76cac901752a870ac44a2ebc45729d96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]>
Date: Tue, 19 Jul 2022 19:31:23 +0200
Subject: [PATCH 2/3] Catch std::exception by const-reference

Although the details are ignored and do not matter, catching
std::exception by value is in general bad due to potential slicing,
and the potentially required copy.
---
 include/minizinc/flatten.hh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/minizinc/flatten.hh b/include/minizinc/flatten.hh
index 2b631e82..b51c9625 100644
--- a/include/minizinc/flatten.hh
+++ b/include/minizinc/flatten.hh
@@ -87,11 +87,11 @@ struct FlatteningOptions {
     try {
       std::random_device rdev("/dev/urandom");
       seeds.push_back(rdev());
-    } catch (std::exception) {
+    } catch (const std::exception&) {
       try {
         std::random_device rdev;
         seeds.push_back(rdev());
-      } catch (std::exception) { /* NOLINT(bugprone-empty-catch) */
+      } catch (const std::exception&) { /* NOLINT(bugprone-empty-catch) */
       }
     }
     auto highrestime = static_cast<long unsigned int>(
-- 
2.37.0


++++++ 0003-Try-to-get-some-more-information-when-catching.patch ++++++
>From e0a77580c7f4a9ffcbd03cfd11b9bfa3628c9fee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]>
Date: Tue, 19 Jul 2022 19:35:10 +0200
Subject: [PATCH 3/3] Try to get some more information when catching

get_file_contents may throw int error codes, notably when inflating,
provide the filename.

Also show the error code/value for int type exceptions elsewhere.
---
 lib/flattener.cpp |  9 +++++++--
 lib/parser.cpp    | 16 ++++++++++++++--
 lib/solns2out.cpp | 24 ++++++++++++++++--------
 minizinc.cpp      |  5 +++++
 4 files changed, 42 insertions(+), 12 deletions(-)

diff --git a/lib/flattener.cpp b/lib/flattener.cpp
index 5bb1d69b..0fe64df2 100644
--- a/lib/flattener.cpp
+++ b/lib/flattener.cpp
@@ -624,8 +624,13 @@ void Flattener::flatten(const std::string& modelString, 
const std::string& model
             }
           }
           smm->compact();
-          std::string smm_compressed =
-              
FileUtils::encode_base64(FileUtils::deflate_string(smm_oss.str()));
+          std::string smm_compressed;
+          try {
+            smm_compressed =
+                
FileUtils::encode_base64(FileUtils::deflate_string(smm_oss.str()));
+          } catch (int i) {
+            throw Error("Failed to compress, error code: " + 
std::to_string(i));
+          }
           auto* ti = new TypeInst(Location().introduce(), Type::parstring(), 
nullptr);
           auto* sl = new StringLit(Location().introduce(), smm_compressed);
           auto* checkString =
diff --git a/lib/parser.cpp b/lib/parser.cpp
index ef4db443..aad276e1 100644
--- a/lib/parser.cpp
+++ b/lib/parser.cpp
@@ -261,7 +261,13 @@ void parse(Env& env, Model*& model, const vector<string>& 
filenames,
       if (verbose) {
         std::cerr << "processing file '" << fullname << "'" << endl;
       }
-      s = get_file_contents(file);
+      try {
+        s = get_file_contents(file);
+      } catch (int i) {
+        throw Error("Cannot read file '" + f + "', error: " + 
std::to_string(i));
+      } catch (...) {
+        throw Error("Cannot read file '" + f + "'");
+      }
 
       if (m->filepath().empty()) {
         m->setFilepath(fullname);
@@ -305,7 +311,13 @@ void parse(Env& env, Model*& model, const vector<string>& 
filenames,
         if (verbose) {
           std::cerr << "processing data file '" << f << "'" << endl;
         }
-        s = get_file_contents(file);
+        try {
+          s = get_file_contents(file);
+        } catch (int i) {
+          throw Error("Cannot read data file '" + f + "', error: " + 
std::to_string(i));
+        } catch (...) {
+          throw Error("Cannot read data file '" + f + "'");
+        }
       }
 
       ParserState pp(f, s, err, includePaths, files, seenModels, model, true, 
false, false,
diff --git a/lib/solns2out.cpp b/lib/solns2out.cpp
index 6f9fdfe5..b1807ff8 100644
--- a/lib/solns2out.cpp
+++ b/lib/solns2out.cpp
@@ -551,16 +551,24 @@ void Solns2Out::init() {
       _outputExpr = oi->e();
     } else if (auto* vdi = i->dynamicCast<VarDeclI>()) {
       if (vdi->e()->id()->idn() == -1 && vdi->e()->id()->v() == 
"_mzn_solution_checker") {
-        _checkerModel = eval_string(getEnv()->envi(), vdi->e()->e());
-        if (!_checkerModel.empty() && _checkerModel[0] == '@') {
-          _checkerModel = FileUtils::decode_base64(_checkerModel);
-          FileUtils::inflate_string(_checkerModel);
+        try {
+          _checkerModel = eval_string(getEnv()->envi(), vdi->e()->e());
+          if (!_checkerModel.empty() && _checkerModel[0] == '@') {
+            _checkerModel = FileUtils::decode_base64(_checkerModel);
+            FileUtils::inflate_string(_checkerModel);
+          }
+        } catch (int ei) {
+          throw Error("Failed to inflate solution checker, error: " + 
std::to_string(ei));
         }
       } else if (vdi->e()->id()->idn() == -1 && vdi->e()->id()->v() == 
"_mzn_stats_checker") {
-        _statisticsCheckerModel = eval_string(getEnv()->envi(), vdi->e()->e());
-        if (!_statisticsCheckerModel.empty() && _statisticsCheckerModel[0] == 
'@') {
-          _statisticsCheckerModel = 
FileUtils::decode_base64(_statisticsCheckerModel);
-          FileUtils::inflate_string(_statisticsCheckerModel);
+        try {
+          _statisticsCheckerModel = eval_string(getEnv()->envi(), 
vdi->e()->e());
+          if (!_statisticsCheckerModel.empty() && _statisticsCheckerModel[0] 
== '@') {
+            _statisticsCheckerModel = 
FileUtils::decode_base64(_statisticsCheckerModel);
+            FileUtils::inflate_string(_statisticsCheckerModel);
+          }
+        } catch (int ei) {
+          throw Error("Failed to inflate stats checker, error: " + 
std::to_string(ei));
         }
       } else {
         _declmap.insert(make_pair(vdi->e()->id()->str(), DE(vdi->e(), 
vdi->e()->e())));
diff --git a/minizinc.cpp b/minizinc.cpp
index a62478e9..93f83b3d 100644
--- a/minizinc.cpp
+++ b/minizinc.cpp
@@ -68,6 +68,11 @@ int run(const std::string& exe, const 
std::vector<std::string>& args, bool jsonS
         std::cerr << std::endl;
       }
       std::cerr << e.what() << std::endl;
+    } catch (int i) {
+      if (slv.getFlagVerbose()) {
+        std::cerr << std::endl;
+      }
+      std::cerr << "  UNKNOWN EXCEPTION in solver, errorcode: " << i << 
std::endl;
     } catch (...) {
       if (slv.getFlagVerbose()) {
         std::cerr << std::endl;
-- 
2.37.0


++++++ libminizinc-2.7.6.tar.gz -> libminizinc-2.8.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/libminizinc/libminizinc-2.7.6.tar.gz 
/work/SRC/openSUSE:Factory/.libminizinc.new.28375/libminizinc-2.8.2.tar.gz 
differ: char 12, line 1

Reply via email to