lol

minizinc: enable gecode and cbc solvers by default

Other changes:
- switch derivation to finalAttrs pattern

+98 -5
+19 -5
pkgs/development/tools/minizinc/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub, cmake, flex, bison }: 2 - stdenv.mkDerivation rec { 1 + { lib, stdenv, fetchFromGitHub, callPackage, jq, cmake, flex, bison, gecode, mpfr, cbc, zlib }: 2 + stdenv.mkDerivation (finalAttrs: { 3 3 pname = "minizinc"; 4 4 version = "2.7.4"; 5 5 6 - nativeBuildInputs = [ cmake flex bison ]; 6 + nativeBuildInputs = [ cmake flex bison gecode mpfr cbc zlib ]; 7 7 8 8 src = fetchFromGitHub { 9 9 owner = "MiniZinc"; 10 10 repo = "libminizinc"; 11 - rev = version; 11 + rev = finalAttrs.version; 12 12 sha256 = "sha256-Zq5gAwe9IQmknSDilFyHhSk5ZCQ8EfBOiM6Oef2WxYg="; 13 13 }; 14 14 15 + postInstall = '' 16 + mkdir -p $out/share/minizinc/solvers/ 17 + ${jq}/bin/jq \ 18 + '.version = "${gecode.version}" 19 + | .mznlib = "${gecode}/share/gecode/mznlib" 20 + | .executable = "${gecode}/bin/fzn-gecode"' \ 21 + ${./gecode.msc} \ 22 + >$out/share/minizinc/solvers/gecode.msc 23 + ''; 24 + 25 + passthru.tests = { 26 + simple = callPackage ./simple-test { }; 27 + }; 28 + 15 29 meta = with lib; { 16 30 homepage = "https://www.minizinc.org/"; 17 31 description = "A medium-level constraint modelling language"; ··· 28 42 platforms = platforms.unix; 29 43 maintainers = [ maintainers.sheenobu ]; 30 44 }; 31 - } 45 + })
+16
pkgs/development/tools/minizinc/gecode.msc
··· 1 + { 2 + "id": "org.gecode.gecode", 3 + "name": "Gecode", 4 + "description": "Gecode FlatZinc executable", 5 + "version": "VERSION-WILL-BE-REPLACED-BY-JQ", 6 + "mznlib": "MZNLIB-WILL-BE-REPLACED-BY-JQ", 7 + "executable": "FZN_GECODE-WILL-BE-REPLACED-BY-JQ", 8 + "tags": ["cp","int", "float", "set", "restart"], 9 + "stdFlags": ["-a","-f","-n","-p","-r","-s","-t"], 10 + "supportsMzn": false, 11 + "supportsFzn": true, 12 + "needsSolns2Out": true, 13 + "needsMznExecutable": false, 14 + "needsStdlibDir": false, 15 + "isGUIApplication": false 16 + }
+20
pkgs/development/tools/minizinc/simple-test/aust.mzn
··· 1 + % Taken from https://www.minizinc.org/doc-2.7.3/en/modelling.html 2 + int: nc = 3; 3 + 4 + var 1..nc: wa; var 1..nc: nt; var 1..nc: sa; var 1..nc: q; 5 + var 1..nc: nsw; var 1..nc: v; var 1..nc: t; 6 + 7 + constraint wa != nt; 8 + constraint wa != sa; 9 + constraint nt != sa; 10 + constraint nt != q; 11 + constraint sa != q; 12 + constraint sa != nsw; 13 + constraint sa != v; 14 + constraint q != nsw; 15 + constraint nsw != v; 16 + solve satisfy; 17 + 18 + output ["wa=\(wa)\t nt=\(nt)\t sa=\(sa)\n", 19 + "q=\(q)\t nsw=\(nsw)\t v=\(v)\n", 20 + "t=", show(t), "\n"];
+16
pkgs/development/tools/minizinc/simple-test/default.nix
··· 1 + # These tests show that the minizinc build is capable of running the 2 + # examples in the official tutorial: 3 + # https://www.minizinc.org/doc-2.7.3/en/modelling.html 4 + 5 + { stdenv, minizinc }: 6 + 7 + stdenv.mkDerivation { 8 + name = "minizinc-simple-test"; 9 + meta.timeout = 10; 10 + dontInstall = true; 11 + buildCommand = '' 12 + ${minizinc}/bin/minizinc --solver gecode ${./aust.mzn} 13 + ${minizinc}/bin/minizinc --solver cbc ${./loan.mzn} ${./loan1.dzn} 14 + touch $out 15 + ''; 16 + }
+24
pkgs/development/tools/minizinc/simple-test/loan.mzn
··· 1 + % Taken from https://www.minizinc.org/doc-2.7.3/en/modelling.html 2 + % variables 3 + var float: R; % quarterly repayment 4 + var float: P; % principal initially borrowed 5 + var 0.0 .. 10.0: I; % interest rate (per quarter) 6 + 7 + % intermediate variables 8 + var float: B1; % balance after one quarter 9 + var float: B2; % balance after two quarters 10 + var float: B3; % balance after three quarters 11 + var float: B4; % balance owing at end 12 + 13 + constraint B1 = P * (1.0 + I) - R; 14 + constraint B2 = B1 * (1.0 + I) - R; 15 + constraint B3 = B2 * (1.0 + I) - R; 16 + constraint B4 = B3 * (1.0 + I) - R; 17 + 18 + solve satisfy; 19 + 20 + output [ 21 + "Borrowing ", show_float(0, 2, P), " at ", show(I*100.0), 22 + "% interest, and repaying ", show_float(0, 2, R), 23 + "\nper quarter for 1 year leaves ", show_float(0, 2, B4), " owing\n" 24 + ];
+3
pkgs/development/tools/minizinc/simple-test/loan1.dzn
··· 1 + I = 0.04; 2 + P = 1000.0; 3 + R = 260.0;