Your message dated Tue, 01 Sep 2026 07:33:54 +0000
with message-id <[email protected]>
and subject line Bug#1146302: fixed in octave-statistics 1.9.1-2
has caused the Debian Bug report #1146302,
regarding octave-statistics: FTBFS: error <svmpredict: model should be a struct 
array.> p = svmpredict (L, D, 123);
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1146302: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1146302
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:octave-statistics
Version: 1.9.1-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202608/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:octave-statistics, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 Xs = [randn(30,2)*0.4 + 2; randn(30,2)*0.4 - 2];
 Ys = [ones(30,1); 2*ones(30,1)];
 M = fcnntrain (Xs, Ys, 8, "relu", "softmax", 1, 0.05, 60, false, 1);
 assert_equal (numel (M.Loss), 60);
 assert_equal (numel (M.Accuracy), 60);
 assert_equal (any (M.Loss != 0), true);
 assert_equal (M.Loss(end) < M.Loss(1), true);
 assert_equal (M.Accuracy(end) >= M.Accuracy(1), true);
***** error <fcnntrain: too many input arguments.> ...
 fcnntrain (X, Y, 10, "sigmoid", "sigmoid", 1, 0.025, 50, false, 0, struct (), 
0);
***** error <fcnntrain: 'SolverOptions' must be a scalar struct.> ...
 fcnntrain (X, Y, 10, "sigmoid", "sigmoid", 1, 0.025, 50, false, 0, 0);
***** error <fcnntrain: 'Solver' must be 'sgd' or 'lbfgs'.> ...
 fcnntrain (X, Y, 10, "sigmoid", "sigmoid", 1, 0.025, 50, false, 0, ...
            struct ("Solver", "bogus"));
***** error <fcnntrain: 'LossFunction' must be a numeric scalar value.> ...
 fcnntrain (X, Y, 10, "sigmoid", "sigmoid", 1, 0.025, 50, false, 'ce');
***** error <fcnntrain: 'LossFunction' must be a numeric scalar value.> ...
 fcnntrain (X, Y, 10, "sigmoid", "sigmoid", 1, 0.025, 50, false, [0, 1]);
***** error <fcnntrain: invalid 'LossFunction' code.> ...
 fcnntrain (X, Y, 10, "sigmoid", "sigmoid", 1, 0.025, 50, false, 3);
***** error <fcnntrain: invalid 'LossFunction' code.> ...
 fcnntrain (X, Y, 10, "sigmoid", "sigmoid", 1, 0.025, 50, false, -1);
***** test
 rand ('seed', 42);
 randn ('seed', 42);
 Xr = linspace (-2, 2, 60)';
 Yr = 3 * Xr - 1;
 M = fcnntrain (Xr, Yr, [8, 8], "relu", "linear", 1, 0.005, 300, false, 2);
 assert_equal (fieldnames (M), {'LayerWeights'; 'Activations'; 'Loss'});
 assert_equal (rows (M.LayerWeights{end}), 1);
 assert_equal (M.Loss(end) < M.Loss(1), true);
***** test
 rand ('seed', 42);
 Xr = linspace (0, 1, 40)';
 Yr = 5 * Xr + 2;
 M = fcnntrain (Xr, Yr, 10, "relu", "linear", 1, 0.005, 200, false, 2);
 Wm = cellfun (@(m) m(:,1:end-1), M.LayerWeights, "UniformOutput", false);
 Bm = cellfun (@(m) m(:,end), M.LayerWeights, "UniformOutput", false);
 [~, yFit] = fcnnpredict (Wm, Bm, "relu", "linear", Xr);
 assert_equal (M.Loss(end), mean ((Yr - yFit) .^ 2), 1e-12);
***** test
 rand ('seed', 42);
 Xr = linspace (0, 1, 30)';
 M = fcnntrain (Xr, [Xr, 2 * Xr, 3 * Xr], 6, "relu", "linear", 1, 0.005, ...
                50, false, 2);
 assert_equal (rows (M.LayerWeights{end}), 3);
 Wm = cellfun (@(m) m(:,1:end-1), M.LayerWeights, "UniformOutput", false);
 Bm = cellfun (@(m) m(:,end), M.LayerWeights, "UniformOutput", false);
 [~, yFit] = fcnnpredict (Wm, Bm, "relu", "linear", Xr);
 assert_equal (columns (yFit), 3);
***** test
 rand ('seed', 42);
 Xr = linspace (0, 1, 20)';
 Yr = linspace (-3.5, 2.25, 20)';
 M = fcnntrain (Xr, Yr, 6, "relu", "linear", 1, 0.005, 50, false, 2);
 assert_equal (all (isfinite (M.Loss)), true);
***** error <fcnntrain: Y must be finite.> ...
 fcnntrain ([1; 2; 3], [1; Inf; 3], 4, "relu", "linear", 1, 0.01, 10, false, 2);
***** error <fcnntrain: Y must be finite.> ...
 fcnntrain ([1; 2; 3], [1; NaN; 3], 4, "relu", "linear", 1, 0.01, 10, false, 2);
***** test
 so = struct ("Solver", "lbfgs");
 M = fcnntrain (X, Y, 10, "relu", "softmax", 1, 0.005, 100, false, 1, so);
 assert_equal (fieldnames (M), ...
               {'LayerWeights'; 'Activations'; 'Loss'; 'Gradient'; ...
                'Step'; 'Criterion'});
 assert_equal (M.Loss(end) < M.Loss(1), true);
 assert_equal (numel (M.Gradient), numel (M.Loss));
 assert_equal (numel (M.Step), numel (M.Loss));
***** test
 rand ("state", 3); randn ("state", 3);
 Ms = fcnntrain (X, Y, 10, "relu", "softmax", 1, 0.005, 200, false, 1);
 rand ("state", 3); randn ("state", 3);
 so = struct ("Solver", "lbfgs");
 Ml = fcnntrain (X, Y, 10, "relu", "softmax", 1, 0.005, 200, false, 1, so);
 assert_equal (Ml.Loss(end) < Ms.Loss(end), true);
 assert_equal (numel (Ml.Loss) < numel (Ms.Loss), true);
***** test
 rand ("state", 5); randn ("state", 5);
 Ma = fcnntrain (X, Y, 10, "relu", "softmax", 1, 0.005, 30, false, 1);
 rand ("state", 5); randn ("state", 5);
 so = struct ("Solver", "sgd");
 Mb = fcnntrain (X, Y, 10, "relu", "softmax", 1, 0.005, 30, false, 1, so);
 assert_equal (Mb.Loss, Ma.Loss);
 assert_equal (Mb.LayerWeights, Ma.LayerWeights);
***** test
 rand ("state", 9); randn ("state", 9);
 so = struct ("Solver", "lbfgs", "GradientTolerance", 1e3);
 Ma = fcnntrain (X, Y, 10, "relu", "softmax", 1, 0.005, 100, false, 1, so);
 rand ("state", 9); randn ("state", 9);
 so = struct ("Solver", "lbfgs", "GradientTolerance", 1e-8);
 Mb = fcnntrain (X, Y, 10, "relu", "softmax", 1, 0.005, 100, false, 1, so);
 assert_equal (Ma.Criterion, "Relative gradient tolerance reached.");
 assert_equal (numel (Ma.Loss) < numel (Mb.Loss), true);
51 tests, 51 passed, 0 known failure, 0 skipped
[src/editDistance.cc]
>>>>> /<<PKGBUILDDIR>>/src/editDistance.cc
***** error <editDistance: too many input arguments.> d = editDistance (1, 2, 
3, 4);
***** error <editDistance: too many output arguments.> ...
 [C, IA, IC, I] = editDistance ({"AS","SD","AD"}, 1);
***** error <editDistance: too many output arguments.> ...
 [C, IA] = editDistance ({"AS","SD","AD"});
***** error <editDistance: minDist must be a scalar value.> ...
 d = editDistance ({"AS","SD","AD"}, [1, 2]);
***** error <editDistance: minDist must be a nonnegative integer.> ...
 d = editDistance ({"AS","SD","AD"}, -2);
***** error <editDistance: minDist must be a nonnegative integer.> ...
 d = editDistance ({"AS","SD","AD"}, 1.25);
***** error <editDistance: minDist must be a scalar value.> ...
 d = editDistance ({"AS","SD","AD"}, {"AS","SD","AD"}, [1, 2]);
***** error <editDistance: minDist must be a nonnegative integer.> ...
 d = editDistance ({"AS","SD","AD"}, {"AS","SD","AD"}, -2);
***** error <editDistance: minDist must be a nonnegative integer.> ...
 d = editDistance ({"AS","SD","AD"}, {"AS","SD","AD"}, 1.25);
***** error <editDistance: minDist must be a scalar value.> ...
 d = editDistance ("string1", "string2", [1, 2]);
***** error <editDistance: minDist must be a nonnegative integer.> ...
 d = editDistance ("string1", "string2", -2);
***** error <editDistance: minDist must be a nonnegative integer.> ...
 d = editDistance ("string1", "string2", 1.25);
***** error <editDistance: tokenizedDocument must contain cellstr arrays.> ...
 d = editDistance ({{"string1", "string2"}, 2});
***** error <editDistance: tokenizedDocument must contain cellstr arrays.> ...
 d = editDistance ({{"string1", "string2"}, 2}, 2);
***** error <editDistance: STR1 must be a cellstr.> ...
 d = editDistance ([1, 2, 3]);
***** error <editDistance: STR1 must be a cellstr.> ...
 d = editDistance (["AS","SD","AD","AS"]);
***** error <editDistance: STR1 must be a cellstr.> ...
 d = editDistance (["AS","SD","AD"], 2);
***** error <editDistance: STR1 and STR2 must be either strings or cellstr.> ...
 d = editDistance (logical ([1,2,3]), {"AS","AS","AD"});
***** error <editDistance: STR1 and STR2 must be either strings or cellstr.> ...
 d = editDistance ({"AS","SD","AD"}, logical ([1,2,3]));
***** error <editDistance: STR1 and STR2 must be either strings or cellstr.> ...
 d = editDistance ([1,2,3], {"AS","AS","AD"});
***** error <editDistance: first tokenizedDocument does not contain cellstr 
arrays.> ...
 d = editDistance ({1,2,3}, {"AS","SD","AD"});
***** error <editDistance: second tokenizedDocument does not contain cellstr 
arrays.> ...
 d = editDistance ({"AS","SD","AD"}, {1,2,3});
***** error <editDistance: cellstr input arguments size mismatch.> ...
 d = editDistance ({"AS","SD","AD"}, {"AS", "AS"});
***** test
 d = editDistance ({"AS","SD","AD"});
 assert_equal (d, [2; 1; 1]);
 assert_equal (class (d), "double");
***** test
 C = editDistance ({"AS","SD","AD"}, 1);
 assert_equal (iscellstr (C), true);
 assert_equal (C, {"AS";"SD"});
***** test
 [C, IA] = editDistance ({"AS","SD","AD"}, 1);
 assert_equal (class (IA), "double");
 assert_equal (IA, [1;2]);
***** test
 A = {"ASS"; "SDS"; "FDE"; "EDS"; "OPA"};
 [C, IA] = editDistance (A, 2, "OutputAllIndices", false);
 assert_equal (class (IA), "double");
 assert_equal (A(IA), C);
***** test
 A = {"ASS"; "SDS"; "FDE"; "EDS"; "OPA"};
 [C, IA] = editDistance (A, 2, "OutputAllIndices", true);
 assert_equal (class (IA), "cell");
 assert_equal (C, {"ASS"; "FDE"; "OPA"});
 assert_equal (A(IA{1}), {"ASS"; "SDS"; "EDS"});
 assert_equal (A(IA{2}), {"FDE"; "EDS"});
 assert_equal (A(IA{3}), {"OPA"});
***** test
 A = {"ASS"; "SDS"; "FDE"; "EDS"; "OPA"};
 [C, IA, IC] = editDistance (A, 2);
 assert_equal (class (IA), "double");
 assert_equal (A(IA), C);
 assert_equal (IC, [1; 1; 3; 1; 5]);
***** test
 d = editDistance ({"AS","SD","AD"}, {"AS", "AD", "SE"});
 assert_equal (d, [0; 1; 2]);
 assert_equal (class (d), "double");
***** test
 d = editDistance ({"AS","SD","AD"}, {"AS"});
 assert_equal (d, [0; 2; 1]);
 assert_equal (class (d), "double");
***** test
 d = editDistance ({"AS"}, {"AS","SD","AD"});
 assert_equal (d, [0; 2; 1]);
 assert_equal (class (d), "double");
***** test
 b = editDistance ("Octave", "octave");
 assert_equal (b, 1);
 assert_equal (class (b), "double");
33 tests, 33 passed, 0 known failure, 0 skipped
[src/svmpredict.cc]
>>>>> /<<PKGBUILDDIR>>/src/svmpredict.cc
***** test
 # Test 1: Standard C-SVC Prediction (Original Regression Test)
 [L, D] = libsvmread (file_in_loadpath ("heart_scale.dat"));
 model = svmtrain (L, D, '-c 1 -g 0.07');
 [predict_label, accuracy, dec_values] = svmpredict (L, D, model);
 assert_equal (size (predict_label), size (dec_values));
 assert_equal (accuracy, [86.666, 0.533, 0.533]', [1e-3, 1e-3, 1e-3]');
 assert_equal (dec_values(1), 1.225836001973273, 1e-14);
 assert_equal (dec_values(2), -0.3212992933043805, 1e-14);
 assert_equal (predict_label(1), 1);

***** test
 # A single testing instance used to write through a freed pointer, since
 # Octave stores a 1x1 result as a scalar and matrix_value() then returns a
 # temporary.  Every single-row query must match the batch answer.
 [L, D] = libsvmread (file_in_loadpath ("heart_scale.dat"));
 model = svmtrain (L, D, '-c 1 -g 0.07');
 [bl, ~, bd] = svmpredict (L, D, model);
 for i = [1, 2, 7, 130, numel(L)]
   [l, ~, d] = svmpredict (L(i), D(i,:), model);
   assert_equal (size (l), [1, 1]);
   assert_equal (l, bl(i));
   assert_equal (d, bd(i), 1e-12);
 endfor

***** test
 # Test 2: One-Class Probability (NEW LIBSVM 3.36 FEATURE)
 [L, D] = libsvmread (file_in_loadpath ("heart_scale.dat"));
 # Train One-Class (-s 2) with Probability (-b 1)
 model_oc = svmtrain (L, D, '-s 2 -n 0.1 -g 0.07 -b 1');
 assert_equal (isstruct (model_oc), true);
 # Predict with Probability (-b 1)
 [pred, acc, probs] = svmpredict (L, D, model_oc, '-b 1');

 # Detail Check A: Output must be N x 2 (Column 1: Normal, Column 2: Outlier)
 assert_equal (size (probs), [length(L), 2]);

 # Detail Check B: Probabilities must sum to 1.0 for every instance
 assert_equal (sum (probs, 2), ones (length(L), 1), 1e-5);

 # Detail Check C: Values must be valid probabilities [0, 1]
 assert_equal (all (probs >= 0 & probs <= 1, 'all'), true);
 clear model_oc

***** test
 # Test 3: One-Class Decision Values (Standard Check)
 # Verifies that the upgrade didn't break standard One-Class prediction (-b 0)
 [L, D] = libsvmread (file_in_loadpath ("heart_scale.dat"));
 model_oc = svmtrain (L, D, '-s 2 -n 0.1 -g 0.07');
 [pred, acc, dec] = svmpredict (L, D, model_oc);
 # Standard One-Class output is N x 1 (Scalar decision values)
 assert_equal (size (dec), [length(L), 1]);
 clear model_oc

***** shared L, D, model
 # Test 4: Error Handling (Original Checks)
 [L, D] = libsvmread (file_in_loadpath ("heart_scale.dat"));
 model = svmtrain (L, D, '-c 1 -g 0.07');

***** error <svmpredict: wrong number of output arguments.> ...
 [p, a] = svmpredict (L, D, model);
***** error <svmpredict: wrong number of input arguments.> p = svmpredict (L, 
D);
***** error <svmpredict: label vector and instance matrix must be double.> ...
 p = svmpredict (single (L), D, model);
***** error <svmpredict: model should be a struct array.> p = svmpredict (L, D, 
123);
8 tests, 8 passed, 0 known failure, 0 skipped
Done running the unit tests.
Summary: 16761 tests, 16758 passed, 0 known failures, 0 skipped
Some tests failed.  Giving up...
make: *** [debian/rules:5: binary] Error 1
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit 
status 2
--------------------------------------------------------------------------------

--- End Message ---
--- Begin Message ---
Source: octave-statistics
Source-Version: 1.9.1-2
Done: Rafael Laboissière <[email protected]>

We believe that the bug you reported is fixed in the latest version of
octave-statistics, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Rafael Laboissière <[email protected]> (supplier of updated octave-statistics 
package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Tue, 01 Sep 2026 06:28:57 +0000
Source: octave-statistics
Architecture: source
Version: 1.9.1-2
Distribution: unstable
Urgency: medium
Maintainer: Debian Octave Group <[email protected]>
Changed-By: Rafael Laboissière <[email protected]>
Closes: 1146302
Changes:
 octave-statistics (1.9.1-2) unstable; urgency=medium
 .
   * Add patches taken from the upstream repository to fix some BISTs
     (Closes: #1146302)
     + 
d/p/give-fminunc-the-gradient-of-the-profiled-deviance-and-whiten-once.patch
     + 
d/p/give-fminunc-the-gradient-of-the-weighted-deviance-and-whiten-once.patch
     + d/p/loosen-three-tolerances-that-assert-the-platform-not-the-answer.patch
     + d/p/stop-asserting-two-quantities-that-vary-by-platform.patch
     + d/p/symmetrise-every-matrix-before-it-is-factored.patch
     + d/p/take-the-fixed-effects-covariance-from-the-factor.patch
Checksums-Sha1:
 fc75110f2d05bc6e2c1060799a490403267a9e35 2454 octave-statistics_1.9.1-2.dsc
 3be12662493b967f91b093b40e9642adbea7e091 17328 
octave-statistics_1.9.1-2.debian.tar.xz
Checksums-Sha256:
 8fdfe3e7060e637cb59138943a1b61298efc6608b5b3f4b6f831f0d1fd8f845f 2454 
octave-statistics_1.9.1-2.dsc
 a89deb3a625b893a11d32ccf8ecb7783c23ffd9bf84f0af5f45a3930fbb8bec0 17328 
octave-statistics_1.9.1-2.debian.tar.xz
Files:
 24e6adc1b82938869dbfb36d47b75d6b 2454 math optional 
octave-statistics_1.9.1-2.dsc
 7c708d8cf81a55d3a45aaae01e3c2112 17328 math optional 
octave-statistics_1.9.1-2.debian.tar.xz

-----BEGIN PGP SIGNATURE-----

iQJGBAEBCgAwFiEEP0ZDkUmP6HS9tdmPISSqGYN4XJAFAmqWeykSHHJhZmFlbEBk
ZWJpYW4ub3JnAAoJECEkqhmDeFyQlTEP/1r9bmV1EfFz6YirOnT7Z4QDOIK0naD6
jk52OWfnfUDFgCBhArnlUWAV+U3ABLdcsV1SH6W63hCetBBSqSqX6SPiL5ecNfY4
e6CelulHDKqN3dxbjXGxBzt/f6vrQeeba6SawIm2hZJ083JRgjFLtGgqyWFkPsEC
afrE1yeMyZrODkC9rtbv5+ZrUsFMq4yLcNHGR5u7my4Xl8VtNf54NHSy5udXQtDG
oxuUW6KctiTjAPckb/KuRlzyJolKXxJuLxOAWF1anlPpIyNDtJlU2gKLV7Gw8DiW
ikAvI6uahZtm6H2Scat1kpXgcF0QJDyiytz7+KydOlxKclsrAWlmfspD7Y6z1/vY
ieV+9d6d5RQaW3kTCR0vcu+EMv2WAD9KtYI1UlbTteZPZAzm60QiZidfJf+LqtWe
lqphS2lqyRk/tJTwlCANOoFr3qr1jMiNFaOqGwA46M+MNI11FRBvVmjC7Ds8wJbY
KnRIcOMmlnKKHiYsN1WkgHsCd9GQ0G/gisyqsI6kqk0c14S0wlCKOi04t2OQh+So
bpIzyR6cT3eqIoKY/ft8IWcijfz35tPU/klr+hgH3SaUY/Bh7TQa6iExtJYq9E8C
SVm0ID24/BgukblYaOtZ/lAj0j/WoCr1UcBEh7yH5GriPHRWx3Qs9ITDpxW1KsSE
+L02y8TeFQtR
=aYUY
-----END PGP SIGNATURE-----

Attachment: pgp8qEhiQ3suk.pgp
Description: PGP signature


--- End Message ---

Reply via email to