Hello community,
here is the log from the commit of package octave-forge-general for
openSUSE:Factory checked in at 2020-05-23 17:20:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/octave-forge-general (Old)
and /work/SRC/openSUSE:Factory/.octave-forge-general.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "octave-forge-general"
Sat May 23 17:20:07 2020 rev:3 rq:808065 version:2.1.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/octave-forge-general/octave-forge-general.changes
2018-06-29 22:25:54.162506136 +0200
+++
/work/SRC/openSUSE:Factory/.octave-forge-general.new.2738/octave-forge-general.changes
2020-05-23 17:20:10.958465863 +0200
@@ -1,0 +2,15 @@
+Mon May 18 19:55:40 UTC 2020 - Atri Bhattacharya <[email protected]>
+
+- Fix installation of metainfo file.
+
+-------------------------------------------------------------------
+Sun May 10 10:09:18 UTC 2020 - Stefan Brüns <[email protected]>
+
+- Update to version 2.1.1:
+ * updated configure script to detect function names for various
+ octave versions.
+ * added additional BIST tests
+ * minor documentation updates
+- Install metainfo
+
+-------------------------------------------------------------------
Old:
----
general-2.1.0.tar.gz
New:
----
general-2.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ octave-forge-general.spec ++++++
--- /var/tmp/diff_new_pack.jAOo9t/_old 2020-05-23 17:20:11.630467317 +0200
+++ /var/tmp/diff_new_pack.jAOo9t/_new 2020-05-23 17:20:11.630467317 +0200
@@ -1,7 +1,7 @@
#
# spec file for package octave-forge-general
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,19 +12,19 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define octpkg general
Name: octave-forge-%{octpkg}
-Version: 2.1.0
+Version: 2.1.1
Release: 0
Summary: General tools for Octave
License: GPL-3.0-or-later AND BSD-3-Clause
Group: Productivity/Scientific/Math
-Url: http://octave.sourceforge.net
-Source0:
http://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
+URL: https://octave.sourceforge.io
+Source0:
https://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
BuildRequires: gcc-c++
BuildRequires: hdf5-devel
BuildRequires: octave-devel
@@ -38,11 +38,16 @@
%setup -q -c %{name}-%{version}
%octave_pkg_src
+# COPY METAINFO FILE TO TOPLEVEL DIR FOR MANUAL INSTALLATION LATER
+find ./ -name "*.metainfo.xml" -exec cp '{}' ./ \;
+
%build
%octave_pkg_build
%install
%octave_pkg_install
+mkdir -p %{buildroot}%{_datadir}/metainfo
+install -m 644 octave-general.metainfo.xml %{buildroot}%{_datadir}/metainfo/
%check
%octave_pkg_test
@@ -54,8 +59,8 @@
%octave --eval "pkg rebuild"
%files
-%defattr(-,root,root)
%{octpackages_dir}/%{octpkg}-%{version}
%{octlib_dir}/%{octpkg}-%{version}
+%{_datadir}/metainfo/*.metainfo.xml
%changelog
++++++ general-2.1.0.tar.gz -> general-2.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/DESCRIPTION
new/general-2.1.1/DESCRIPTION
--- old/general-2.1.0/DESCRIPTION 2018-05-13 23:01:51.400133935 +0200
+++ new/general-2.1.1/DESCRIPTION 2020-03-05 14:21:19.000000000 +0100
@@ -1,6 +1,6 @@
Name: general
-Version: 2.1.0
-Date: 2018-05-11
+Version: 2.1.1
+Date: 2020-02-25
Author: various authors
Maintainer: Octave-Forge community <[email protected]>
Title: General
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/INDEX new/general-2.1.1/INDEX
--- old/general-2.1.0/INDEX 2018-05-13 23:01:51.400133935 +0200
+++ new/general-2.1.1/INDEX 2020-03-05 14:21:19.000000000 +0100
@@ -1,14 +1,18 @@
general >> General purpose functions
Dictionaries
@dict/dict
+ @dict/display
@dict/get
@dict/has
@dict/isempty
@dict/join
@dict/length
@dict/struct
+ @dict/subsasgn
+ @dict/subsref
Various Functions
adresamp2
+ cauchy
majle
mark_for_deletion
packfields
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/Makefile new/general-2.1.1/Makefile
--- old/general-2.1.0/Makefile 2018-05-13 23:01:51.400133935 +0200
+++ new/general-2.1.1/Makefile 2020-03-05 14:21:19.000000000 +0100
@@ -2,7 +2,7 @@
## Copyright 2015-2016 Oliver Heimlich
## Copyright 2017 Julien Bect <[email protected]>
## Copyright 2017 Olaf Till <[email protected]>
-## Copyright 2018 John Donoghue <[email protected]>
+## Copyright 2018-2019 John Donoghue <[email protected]>
##
## Copying and distribution of this file, with or without modification,
## are permitted in any medium without royalty provided the copyright
@@ -52,11 +52,18 @@
vcs := $(if $(wildcard .hg),hg,$(if $(wildcard .git),git,unknown))
ifeq ($(vcs),hg)
release_dir_dep := .hg/dirstate
+HG := hg
+HG_CMD = $(HG) --config alias.$(1)=$(1) --config defaults.$(1)= $(1)
+HG_ID := $(shell $(call HG_CMD,identify) --id | sed -e 's/+//' )
+REPO_TIMESTAMP := $(firstword $(shell $(call HG_CMD,log) --rev $(HG_ID)
--template '{date|hgdate}'))
endif
ifeq ($(vcs),git)
release_dir_dep := .git/index
+REPO_TIMESTAMP := $(firstword $(shell $(GIT) log -n1 --date=unix
--format="%ad"))
endif
+TAR_REPRODUCIBLE_OPTIONS := --sort=name --mtime="@$(REPO_TIMESTAMP)" --owner=0
--group=0 --numeric-owner
+TAR_OPTIONS := --format=ustar $(TAR_REPRODUCIBLE_OPTIONS)
## .PHONY indicates targets that are not filenames
## (https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html)
@@ -95,7 +102,7 @@
## An implicit rule with a recipe to build the tarballs correctly.
%.tar.gz: %
- $(TAR) -c -f - --posix -C "$(target_dir)/" "$(notdir $<)" | gzip -9n >
"$@"
+ $(TAR) -cf - $(TAR_OPTIONS) -C "$(target_dir)/" "$(notdir $<)" | gzip
-9n > "$@"
clean-tarballs:
@echo "## Cleaning release tarballs (package + html)..."
@@ -212,10 +219,8 @@
## Test package.
octave_test_commands = \
-' pkgs = pkg("list","general"); cd (pkgs{1}.dir); dirs = { "." }; \
- dirs(cellfun (@ (x) ! isdir (x), dirs)) = []; \
- if (isempty (dirs)) error ("no \"inst\" or \"src\" directory"); exit (1); \
- else __run_test_suite__ (dirs, {}); endif '
+' pkgs = pkg("list","general"); dirs = { pkgs{1}.dir }; \
+ __run_test_suite__ (dirs, {}); '
## the following works, too, but provides no overall summary output as
## __run_test_suite__ does:
##
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/NEWS new/general-2.1.1/NEWS
--- old/general-2.1.0/NEWS 2018-05-13 23:01:51.400133935 +0200
+++ new/general-2.1.1/NEWS 2020-03-05 14:21:19.000000000 +0100
@@ -1,3 +1,13 @@
+Summary of important user-visible changes for general 2.1.1:
+-------------------------------------------------------------------
+
+ ** updated configure script to detect function names for various
+ octave versions.
+
+ ** added additional BIST tests
+
+ ** minor documentation updates
+
Summary of important user-visible changes for general 2.1.0:
-------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/inst/@dict/display.m
new/general-2.1.1/inst/@dict/display.m
--- old/general-2.1.0/inst/@dict/display.m 2018-05-13 23:01:51.400133935
+0200
+++ new/general-2.1.1/inst/@dict/display.m 2020-03-05 14:21:19.000000000
+0100
@@ -12,8 +12,9 @@
##
## You should have received a copy of the GNU General Public License along with
## this program; if not, see <http://www.gnu.org/licenses/>.
+
## -*- texinfo -*-
-## @deftypefn{Function File} display (d)
+## @deftypefn {Function File} display (d)
## Overloaded display for dictionaries.
## @end deftypefn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/inst/cauchy.m
new/general-2.1.1/inst/cauchy.m
--- old/general-2.1.0/inst/cauchy.m 2018-05-13 23:01:51.404133915 +0200
+++ new/general-2.1.1/inst/cauchy.m 2020-03-05 14:21:19.000000000 +0100
@@ -1,5 +1,6 @@
## Copyright (C) 2011 Fernando Damian Nieuwveldt <[email protected]>
## 2012 Adapted by Juan Pablo Carbajal <[email protected]>
+## 2019 Modifications by John Donoghue <[email protected]>
##
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License
@@ -12,10 +13,11 @@
## -*- texinfo -*-
## @deftypefn {Function File} {} cauchy (@var{N}, @var{r}, @var{x}, @var{f} )
-## Return the Taylor coefficients and numerical differentiation of a function
-## @var{f} for the first @var{N-1} coefficients or derivatives using the fft.
-## @var{N} is the number of points to evaluate,
-## @var{r} is the radius of convergence, needs to be chosen less then the
smallest singularity,
+## Return the Taylor coefficients and numerical differentiation of a function.
+##
+## @var{f} for the first @var{N-1} coefficients or derivatives using the fft.@*
+## @var{N} is the number of points to evaluate,@*
+## @var{r} is the radius of convergence, needs to be chosen less then the
smallest singularity,@*
## @var{x} is point to evaluate the Taylor expansion or differentiation. For
example,
##
## If @var{x} is a scalar, the function @var{f} is evaluated in a row vector
@@ -30,29 +32,29 @@
## @end example
## @end deftypefn
-function deriv = cauchy(N, r, x, f)
+function deriv = cauchy (N, r, x, f)
if nargin != 4
print_usage ();
- end
+ endif
[nx m] = size (x);
if m > 1
- error('cauchy:InvalidArgument', 'The 3rd argument must be a column
vector');
- end
+ error ('cauchy:InvalidArgument', 'The 3rd argument must be a column
vector');
+ endif
n = 0:N-1;
th = 2*pi*n/N;
f_p = f (bsxfun (@plus, x, r * exp (i * th) ) );
- evalfft = real(fft (f_p, [], 2));
+ evalfft = real (fft (f_p, [], 2));
deriv = bsxfun (@times, evalfft, 1./(N*(r.^n)).* factorial(n)) ;
endfunction
-function g = hermite(order,x)
+function g = hermite (order,x)
## N should be bigger than order+1
N = 32;
r = 0.5;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/inst/majle.m
new/general-2.1.1/inst/majle.m
--- old/general-2.1.0/inst/majle.m 2018-05-13 23:01:51.404133915 +0200
+++ new/general-2.1.1/inst/majle.m 2020-03-05 14:21:19.000000000 +0100
@@ -25,73 +25,95 @@
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-%MAJLE (Weak) Majorization check
-% S = MAJLE(X,Y) checks if the real part of X is (weakly) majorized by
-% the real part of Y, where X and Y must be numeric (full or sparse)
-% arrays. It returns S=0, if there is no weak majorization of X by Y,
-% S=1, if there is a weak majorization of X by Y, or S=2, if there is a
-% strong majorization of X by Y. The shapes of X and Y are ignored.
-% NUMEL(X) and NUMEL(Y) may be different, in which case one of them is
-% appended with zeros to match the sizes with the other and, in case of
-% any negative components, a special warning is issued.
-%
-% S = MAJLE(X,Y,MAJLETOL) allows in addition to specify the tolerance in
-% all inequalities [S,Z] = MAJLE(X,Y,MAJLETOL) also outputs a row vector
-% Z, which appears in the definition of the (weak) majorization. In the
-% traditional case, where the real vectors X and Y are of the same size,
-% Z = CUMSUM(SORT(Y,'descend')-SORT(X,'descend')). Here, X is weakly
-% majorized by Y, if MIN(Z)>0, and strongly majorized if MIN(Z)=0, see
-% http://en.wikipedia.org/wiki/Majorization
-%
-% The value of MAJLETOL depends on how X and Y have been computed, i.e.,
-% on what the level of error in X or Y is. A good minimal starting point
-% should be MAJLETOL=eps*MAX(NUMEL(X),NUMEL(Y)). The default is 0.
-%
-% % Examples:
-% x = [2 2 2]; y = [1 2 3]; s = majle(x,y)
-% % returns the value 2.
-% x = [2 2 2]; y = [1 2 4]; s = majle(x,y)
-% % returns the value 1.
-% x = [2 2 2]; y = [1 2 2]; s = majle(x,y)
-% % returns the value 0.
-% x = [2 2 2]; y = [1 2 2]; [s,z] = majle(x,y)
-% % also returns the vector z = [ 0 0 -1].
-% x = [2 2 2]; y = [1 2 2]; s = majle(x,y,1)
-% % returns the value 2.
-% x = [2 2]; y = [1 2 2]; s = majle(x,y)
-% % returns the value 1 and warns on tailing with zeros
-% x = [2 2]; y = [-1 2 2]; s = majle(x,y)
-% % returns the value 0 and gives two warnings on tailing with zeros
-% x = [2 -inf]; y = [4 inf]; [s,z] = majle(x,y)
-% % returns s = 1 and z = [Inf Inf].
-% x = [2 inf]; y = [4 inf]; [s,z] = majle(x,y)
-% % returns s = 1 and z = [NaN NaN] and a warning on NaNs in z.
-% x=speye(2); y=sparse([0 2; -1 1]); s = majle(x,y)
-% % returns the value 2.
-% x = [2 2; 2 2]; y = [1 3 4]; [s,z] = majle(x,y) %and
-% x = [2 2; 2 2]+i; y = [1 3 4]-2*i; [s,z] = majle(x,y)
-% % both return s = 2 and z = [2 3 2 0].
-% x = [1 1 1 1 0]; y = [1 1 1 1 1 0 0]'; s = majle(x,y)
-% % returns the value 1 and warns on tailing with zeros
-%
-% % One can use this function to check numerically the validity of the
-% Schur-Horn,Lidskii-Mirsky-Wielandt, and Gelfand-Naimark theorems:
-% clear all; n=100; majleTol=n*n*eps;
-% A = randn(n,n); A = A'+A; eA = -sort(-eig(A)); dA = diag(A);
-% majle(dA,eA,majleTol) % returns the value 2
-% % which is the Schur-Horn theorem; and
-% B=randn(n,n); B=B'+B; eB=-sort(-eig(B));
-% eAmB=-sort(-eig(A-B));
-% majle(eA-eB,eAmB,majleTol) % returns the value 2
-% % which is the Lidskii-Mirsky-Wielandt theorem; finally
-% A = randn(n,n); sA = -sort(-svd(A));
-% B = randn(n,n); sB = -sort(-svd(B));
-% sAB = -sort(-svd(A*B));
-% majle(log2(sAB)-log2(sA), log2(sB), majleTol) % retuns the value 2
-% majle(log2(sAB)-log2(sB), log2(sA), majleTol) % retuns the value 2
-% % which are the log versions of the Gelfand-Naimark theorems
+## -*- texinfo -*-
+## @deftypefn {Function File} {@var{S} =} majle (@var{X}, @var{Y})
+## @deftypefnx {Function File} {@var{S} =} majle (@var{X}, @var{Y},
@var{MAJLETOL})
+## @deftypefnx {Function File} {@var{[S, Z]} =} majle (@var{X}, @var{Y},
@var{MAJLETOL})
+## (Weak) Majorization check
+##
+## S = MAJLE(X,Y) checks if the real part of X is (weakly) majorized by
+## the real part of Y, where X and Y must be numeric (full or sparse)
+## arrays.
+##
+## It returns S=0, if there is no weak majorization of X by Y,
+## S=1, if there is a weak majorization of X by Y, or S=2, if there is a
+## strong majorization of X by Y.
+##
+## The shapes of X and Y are ignored.
+##
+## numel(X) and numel(Y) may be different, in which case one of them is
+## appended with zeros to match the sizes with the other and, in case of
+## any negative components, a special warning is issued.
+##
+## S = MAJLE(X,Y,MAJLETOL) allows in addition to specify the tolerance in
+## all inequalities
+##
+## [S,Z] = MAJLE(X,Y,MAJLETOL) also outputs a row vector
+## Z, which appears in the definition of the (weak) majorization. In the
+## traditional case, where the real vectors X and Y are of the same size,
+## Z = CUMSUM(SORT(Y,'descend')-SORT(X,'descend')).
+##
+## Here, X is weakly majorized by Y, if MIN(Z)>0, and strongly
+## majorized if MIN(Z)=0, see
+## http://en.wikipedia.org/wiki/Majorization
+##
+## The value of MAJLETOL depends on how X and Y have been computed, i.e.,
+## on what the level of error in X or Y is. A good minimal starting point
+## should be MAJLETOL=eps*MAX(NUMEL(X),NUMEL(Y)). The default is 0.
+##
+## @example
+## @group
+## % Examples:
+## x = [2 2 2]; y = [1 2 3]; s = majle(x,y)
+## % returns the value 2.
+## x = [2 2 2]; y = [1 2 4]; s = majle(x,y)
+## % returns the value 1.
+## x = [2 2 2]; y = [1 2 2]; s = majle(x,y)
+## % returns the value 0.
+## x = [2 2 2]; y = [1 2 2]; [s,z] = majle(x,y)
+## % also returns the vector z = [ 0 0 -1].
+## x = [2 2 2]; y = [1 2 2]; s = majle(x,y,1)
+## % returns the value 2.
+## x = [2 2]; y = [1 2 2]; s = majle(x,y)
+## % returns the value 1 and warns on tailing with zeros
+## x = [2 2]; y = [-1 2 2]; s = majle(x,y)
+## % returns the value 0 and gives two warnings on tailing with zeros
+## x = [2 -inf]; y = [4 inf]; [s,z] = majle(x,y)
+## % returns s = 1 and z = [Inf Inf].
+## x = [2 inf]; y = [4 inf]; [s,z] = majle(x,y)
+## % returns s = 1 and z = [NaN NaN] and a warning on NaNs in z.
+## x=speye(2); y=sparse([0 2; -1 1]); s = majle(x,y)
+## % returns the value 2.
+## x = [2 2; 2 2]; y = [1 3 4]; [s,z] = majle(x,y) %and
+## x = [2 2; 2 2]+i; y = [1 3 4]-2*i; [s,z] = majle(x,y)
+## % both return s = 2 and z = [2 3 2 0].
+## x = [1 1 1 1 0]; y = [1 1 1 1 1 0 0]'; s = majle(x,y)
+## % returns the value 1 and warns on tailing with zeros
+## @end group
+## @end example
+##
+## One can use this function to check numerically the validity of the
+## Schur-Horn,Lidskii-Mirsky-Wielandt, and Gelfand-Naimark theorems:
+## @example
+## @group
+## clear all; n=100; majleTol=n*n*eps;
+## A = randn(n,n); A = A'+A; eA = -sort(-eig(A)); dA = diag(A);
+## majle(dA,eA,majleTol) % returns the value 2
+## % which is the Schur-Horn theorem; and
+## B=randn(n,n); B=B'+B; eB=-sort(-eig(B));
+## eAmB=-sort(-eig(A-B));
+## majle(eA-eB,eAmB,majleTol) % returns the value 2
+## % which is the Lidskii-Mirsky-Wielandt theorem; finally
+## A = randn(n,n); sA = -sort(-svd(A));
+## B = randn(n,n); sB = -sort(-svd(B));
+## sAB = -sort(-svd(A*B));
+## majle(log2(sAB)-log2(sA), log2(sB), majleTol) % retuns the value 2
+## majle(log2(sAB)-log2(sB), log2(sA), majleTol) % retuns the value 2
+## % which are the log versions of the Gelfand-Naimark theorems
+## @end group
+## @end example
+## @end deftypefn
-% Tested in MATLAB 7.9.0.529 (R2009b) and Octave 3.2.3.
function [s,z]=majle(x,y,majleTol)
if (nargin < 2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/inst/ztvals.m
new/general-2.1.1/inst/ztvals.m
--- old/general-2.1.0/inst/ztvals.m 2018-05-13 23:01:51.408133896 +0200
+++ new/general-2.1.1/inst/ztvals.m 2020-03-05 14:21:19.000000000 +0100
@@ -42,3 +42,7 @@
endif
endfunction
+
+%!assert(ztvals([1 0.4 -0.4 -1], 0.5), [1 0 0 -1])
+%!assert(ztvals(double([1e-11 1e-6 1])), [0 1e-6 1])
+%!assert(ztvals(single([1e-11 1e-6 1])), single([0 0 1]))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/octave-general.metainfo.xml
new/general-2.1.1/octave-general.metainfo.xml
--- old/general-2.1.0/octave-general.metainfo.xml 1970-01-01
01:00:00.000000000 +0100
+++ new/general-2.1.1/octave-general.metainfo.xml 2020-03-05
14:21:19.000000000 +0100
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="addon">
+ <id>octave-general</id>
+ <extends>www.octave.org-octave.desktop</extends>
+ <name>General</name>
+ <summary>General tools for GNU Octave</summary>
+ <description>
+ <p>Provides functions for dictionaries, field packing,
+ SHA1 hashing and more.
+ </p>
+ </description>
+ <keywords>
+ <keyword>dictionary</keyword>
+ <keyword>field packing</keyword>
+ <keyword>sha1</keyword>
+ <keyword>planar resampling</keyword>
+ </keywords>
+ <url type="homepage">http://octave.sourceforge.net/general</url>
+ <url type="bugtracker">https://savannah.gnu.org/projects/octave</url>
+ <project_license>GPL-3.0+</project_license>
+ <update_contact>[email protected]</update_contact>
+ <metadata_license>FSFAP</metadata_license>
+</component>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/Makefile.in
new/general-2.1.1/src/Makefile.in
--- old/general-2.1.0/src/Makefile.in 2018-05-13 23:01:51.408133896 +0200
+++ new/general-2.1.1/src/Makefile.in 2020-03-05 14:21:19.000000000 +0100
@@ -1,4 +1,5 @@
MKOCTFILE := @MKOCTFILE@
+OCTAVE_CONFIG := @OCTAVE_CONFIG@
CXXFLAGS := @CXXFLAGS@ @DEFS@
LIBS := @LIBS@
LDFLAGS := @LDFLAGS@
@@ -6,18 +7,25 @@
NETTLE_CFLAGS := @NETTLE_CFLAGS@
NETTLE_LIBS := @NETTLE_LIBS@
+ARCHDIR := "$(shell $(OCTAVE_CONFIG) -p CANONICAL_HOST_TYPE)-$(shell
$(OCTAVE_CONFIG) -p API_VERSION)"
+
ifndef MKOCTFILE
MKOCTFILE := mkoctfile -Wall
endif
PROGS = $(patsubst %.cc,%.oct,$(wildcard *.cc))
-TST_DIR := ../inst/test
+TST_DIR := ../inst/$(ARCHDIR)
CC_SOURCES := $(wildcard *.cc)
CC_TST_SOURCES := $(shell $(GREP) --files-with-matches '^%!' $(CC_SOURCES))
TST_SOURCES := $(patsubst %.cc,${TST_DIR}/%.cc-tst,$(CC_TST_SOURCES))
-all: $(PROGS) $(TST_SOURCES)
+ifeq ("@ENABLE_SRC_BISTS@","1")
+ PROGS += tests
+endif
+
+.PHONY: all
+all: $(PROGS)
SHA1.oct: SHA1.cc
$(MKOCTFILE) $< $(CXXFLAGS) $(NETTLE_CFLAGS) $(LDFLAGS) $(LIBS)
$(NETTLE_LIBS)
@@ -27,11 +35,22 @@
$(TST_DIR):
@mkdir -p "$@"
-$(TST_SOURCES): $(TST_DIR)/%.cc-tst: %.cc | $(TST_DIR)
+.PHONY: tests
+tests: $(TST_SOURCES)
+
+$(TST_DIR)/%.cc-tst: %.cc | $(TST_DIR)
@echo "Extracting tests from $< ..."
@$(RM) -f "$@" "$@-t"
@( echo "## Generated from $<"; \
$(GREP) '^%!' "$<") > "$@"
+.PHONY: clean
clean:
rm -f *.o octave-core core *.oct *~
+ test -e $(TST_DIR) && rm -f $(TST_SOURCES) || true
+ test -e $(TST_DIR) && rmdir $(TST_DIR) || true
+
+.PHONY: distclean
+distclean: clean
+ rm -rf autom4te.cache
+ rm -f Makefile config.status config.log config.h configure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/SHA1.cc
new/general-2.1.1/src/SHA1.cc
--- old/general-2.1.0/src/SHA1.cc 2018-05-13 23:01:51.408133896 +0200
+++ new/general-2.1.1/src/SHA1.cc 2020-03-05 14:21:19.000000000 +0100
@@ -1,5 +1,5 @@
// Copyright (C) 1999 Andy Adler <[email protected]>
-// Copyright (C) 2018 John Donoghue <[email protected]>
+// Copyright (C) 2018-2020 John Donoghue <[email protected]>
//
// This program is free software; you can redistribute it and/or modify it
under
// the terms of the GNU General Public License as published by the Free
Software
@@ -29,20 +29,23 @@
DEFUN_DLD (SHA1, args, ,
- "hash = SHA1 (...)\n\
+ "-*- texinfo -*-\n\
+@deftypefn {Loadable Function} @var{hash} = SHA1(@var{byte_stream}\n\
+@deftypefnx {Loadable Function} @var{hash} = SHA1(@var{byte_stream},
@var{hash_initial})\n\
+\n\
SHA1 implements the Secure Hash Algorithm Cryptographic\n\
Hashing (One-Way) function. (FIPS PUB 180-1)\n\
\n\
-hash= SHA1( byte_stream, hash_initial )\n\
-hash = Row Vector of 20 byte values;\n\
+@var{hash} is a Row Vector of 20 byte values\n\
\n\
-hash_initial default is 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0\n\
+@var{hash_initial} default is 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0\n\
\n\
Note: while it is possible to create a \"poor-man's\" MAC (message\n\
authenticity code) by setting hash_initial to a private value,\n\
it is better to use an algorithm like HMAC.\n\
\n\
-HMAC= SHA1( [ passcode, SHA1( [passcode, data ] ) ); ")
+HMAC = SHA1( [ passcode, SHA1( [passcode, data ] ) );\n \
+@end deftypefn")
{
#ifndef HAVE_NETTLE
error ("SHA1: Your system doesn't support or wasnt compiled with the SHA1
interface");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/aclocal.m4
new/general-2.1.1/src/aclocal.m4
--- old/general-2.1.0/src/aclocal.m4 2018-05-13 23:01:51.756132186 +0200
+++ new/general-2.1.1/src/aclocal.m4 2020-03-05 14:21:19.000000000 +0100
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.15 -*- Autoconf -*-
+# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,7 @@
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS],
[])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-dnl serial 11 (pkg-config-0.29)
+dnl serial 11 (pkg-config-0.29.1)
dnl
dnl Copyright © 2004 Scott James Remnant <[email protected]>.
dnl Copyright © 2012-2015 Dan Nicholson <[email protected]>
@@ -55,7 +55,7 @@
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
-[m4_define([PKG_MACROS_VERSION], [0.29])
+[m4_define([PKG_MACROS_VERSION], [0.29.1])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but
]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/config.h.in
new/general-2.1.1/src/config.h.in
--- old/general-2.1.0/src/config.h.in 2018-05-13 23:01:52.076130613 +0200
+++ new/general-2.1.1/src/config.h.in 2020-03-05 14:21:19.000000000 +0100
@@ -8,6 +8,18 @@
/* Define to 1 if you have the <octave/interpreter.h> header file. */
#undef HAVE_OCTAVE_INTERPRETER_H
+/* Have interpreter::assign */
+#undef OCTAVE_HAVE_INTERPRETER_ASSIGN
+
+/* Have interpreter::mark_for_deletion */
+#undef OCTAVE_HAVE_INTERPRETER_MARK_FOR_DELETION
+
+/* Have interpreter::varval */
+#undef OCTAVE_HAVE_INTERPRETER_VARVAL
+
+/* macro for alternative Octave symbols */
+#undef OCTAVE__VALID_IDENTIFIER
+
/* macro for alternative Octave symbols */
#undef OV_ISMAP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/configure
new/general-2.1.1/src/configure
--- old/general-2.1.0/src/configure 2018-05-13 23:01:51.920131379 +0200
+++ new/general-2.1.1/src/configure 2020-03-05 14:21:19.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for general 2.1.0.
+# Generated by GNU Autoconf 2.69 for general 2.1.1.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,14 +577,15 @@
# Identity of this package.
PACKAGE_NAME='general'
PACKAGE_TARNAME='general'
-PACKAGE_VERSION='2.1.0'
-PACKAGE_STRING='general 2.1.0'
+PACKAGE_VERSION='2.1.1'
+PACKAGE_STRING='general 2.1.1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
ac_unique_file="packfields.cc"
ac_subst_vars='LTLIBOBJS
LIBOBJS
+ENABLE_SRC_BISTS
NETTLE_LIBS
NETTLE_CFLAGS
PKG_CONFIG_LIBDIR
@@ -598,6 +599,7 @@
LDFLAGS
CXXFLAGS
CXX
+SED
GREP
AWK
OCTAVE_CONFIG
@@ -1210,7 +1212,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures general 2.1.0 to adapt to many kinds of systems.
+\`configure' configures general 2.1.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1272,7 +1274,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of general 2.1.0:";;
+ short | recursive ) echo "Configuration of general 2.1.1:";;
esac
cat <<\_ACEOF
@@ -1360,7 +1362,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-general configure 2.1.0
+general configure 2.1.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1483,7 +1485,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by general $as_me 2.1.0, which was
+It was created by general $as_me 2.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2031,6 +2033,75 @@
GREP="$ac_cv_path_GREP"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not
truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null
|| break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
# The same value of CXX as Octave was compiled with is supposed to be used.
CXX=${CXX:-`${MKOCTFILE} -p CXX`}
@@ -2902,13 +2973,62 @@
# CXXFLAGS=
CPPFLAGS="$OCTINCLUDEDIR $CPPFLAGS"
-## Simple symbol alternatives of different Octave versions.
+for ac_header in octave/interpreter.h
+do :
+ ac_fn_cxx_check_header_compile "$LINENO" "octave/interpreter.h"
"ac_cv_header_octave_interpreter_h" "#include <octave/oct.h>
+
+"
+if test "x$ac_cv_header_octave_interpreter_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_OCTAVE_INTERPRETER_H 1
+_ACEOF
+
+fi
+
+done
+
+
+## Simple symbol alternatives of different Octave versions.
echo '/* generated by configure */' > oct-alt-includes.h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking valid_identifier or
octave::valid_identifier" >&5
+$as_echo_n "checking valid_identifier or octave::valid_identifier... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <octave/oct.h>
+
+
+int
+main ()
+{
+octave::valid_identifier ("");
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define OCTAVE__VALID_IDENTIFIER octave::valid_identifier"
>>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result:
octave::valid_identifier" >&5
+$as_echo "octave::valid_identifier" >&6; }
+ echo '
+' >> oct-alt-includes.h
+else
+
+$as_echo "#define OCTAVE__VALID_IDENTIFIER valid_identifier" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: valid_identifier" >&5
+$as_echo " valid_identifier" >&6; }
+ echo '' >> oct-alt-includes.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking is_map or isstruct" >&5
$as_echo_n "checking is_map or isstruct... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2952,19 +3072,97 @@
-for ac_header in octave/interpreter.h
-do :
- ac_fn_cxx_check_header_compile "$LINENO" "octave/interpreter.h"
"ac_cv_header_octave_interpreter_h" "#include <octave/oct.h>
-"
-if test "x$ac_cv_header_octave_interpreter_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_OCTAVE_INTERPRETER_H 1
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking interpreter::varval" >&5
+$as_echo_n "checking interpreter::varval... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <octave/oct.h>
+ #include <octave/interpreter.h>
+
+int
+main ()
+{
+octave::interpreter *interp; interp->varval ("varname");
+ ;
+ return 0;
+}
_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define OCTAVE_HAVE_INTERPRETER_VARVAL 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking interpreter::assign" >&5
+$as_echo_n "checking interpreter::assign... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <octave/oct.h>
+ #include <octave/interpreter.h>
+
+int
+main ()
+{
+octave::interpreter *interp; interp->assign ("varname", octave_value ());
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define OCTAVE_HAVE_INTERPRETER_ASSIGN 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking
interpreter::mark_for_deletion" >&5
+$as_echo_n "checking interpreter::mark_for_deletion... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <octave/oct.h>
+ #include <octave/interpreter.h>
+
+int
+main ()
+{
+octave::interpreter *interp; interp->mark_for_deletion ("varname");
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+$as_echo "#define OCTAVE_HAVE_INTERPRETER_MARK_FOR_DELETION 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
LIBS=$TLIBS
@@ -2977,7 +3175,16 @@
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext
$LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
# End of checks for Octave features.
+octave_major_ver=`$OCTAVE_CONFIG -p VERSION | $SED -e "s/\..*$//"`
+if test -z "$octave_major_ver"; then
+ octave_major_ver=4
+fi
+if test $octave_major_ver -gt 3; then
+ ENABLE_SRC_BISTS=1
+
+fi
ac_config_files="$ac_config_files Makefile"
@@ -3487,7 +3694,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by general $as_me 2.1.0, which was
+This file was extended by general $as_me 2.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -3549,7 +3756,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //;
s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-general config.status 2.1.0
+general config.status 2.1.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/configure.ac
new/general-2.1.1/src/configure.ac
--- old/general-2.1.0/src/configure.ac 2018-05-13 23:01:51.408133896 +0200
+++ new/general-2.1.1/src/configure.ac 2020-03-05 14:21:19.000000000 +0100
@@ -2,6 +2,7 @@
# Process this file with autoconf to produce a configure script.
#
### Copyright (C) 2015-2017 Olaf Till <[email protected]>
+### Copyright (C) 2018-2020 John DOnoghue <[email protected]>
###
### This program is free software; you can redistribute it and/or
### modify it under the terms of the GNU General Public License as
@@ -18,7 +19,7 @@
### <http://www.gnu.org/licenses/>.
AC_PREREQ([2.67])
-AC_INIT([general], [2.1.0])
+AC_INIT([general], [2.1.1])
AC_CONFIG_SRCDIR([packfields.cc])
AC_CONFIG_HEADERS([config.h])
@@ -43,6 +44,7 @@
fi
AC_PROG_GREP
+AC_PROG_SED
# The same value of CXX as Octave was compiled with is supposed to be used.
CXX=${CXX:-`${MKOCTFILE} -p CXX`}
@@ -78,10 +80,25 @@
# CXXFLAGS=
CPPFLAGS="$OCTINCLUDEDIR $CPPFLAGS"
+AC_CHECK_HEADERS([octave/interpreter.h],
+ [],
+ [],
+ [#include <octave/oct.h>]
+)
+
## Simple symbol alternatives of different Octave versions.
OF_OCTAVE_LIST_ALT_SYMS([
[dnl
+ [valid_identifier],
+ [octave::valid_identifier],
+ [[octave::valid_identifier ("");]],
+ [OCTAVE__VALID_IDENTIFIER],
+ [],
+ []
+],
+
+[dnl
[is_map],
[isstruct],
[[octave_value ().isstruct ();]],
@@ -93,10 +110,25 @@
],
[oct-alt-includes.h])
-AC_CHECK_HEADERS([octave/interpreter.h],
- [],
- [],
- [#include <octave/oct.h>]
+OF_OCTAVE_CHECK_SYM(
+ [interpreter::varval],
+ [[octave::interpreter *interp; interp->varval ("varname");]],
+ [OCTAVE_HAVE_INTERPRETER_VARVAL],
+ [[#include <octave/interpreter.h>]]
+)
+
+OF_OCTAVE_CHECK_SYM(
+ [interpreter::assign],
+ [[octave::interpreter *interp; interp->assign ("varname", octave_value
());]],
+ [OCTAVE_HAVE_INTERPRETER_ASSIGN],
+ [[#include <octave/interpreter.h>]]
+)
+
+OF_OCTAVE_CHECK_SYM(
+ [interpreter::mark_for_deletion],
+ [[octave::interpreter *interp; interp->mark_for_deletion ("varname");]],
+ [OCTAVE_HAVE_INTERPRETER_MARK_FOR_DELETION],
+ [[#include <octave/interpreter.h>]]
)
LIBS=$TLIBS
@@ -104,7 +136,16 @@
CXXFLAGS=$TCXXFLAGS
CPPFLAGS=$TCPPFLAGS
AC_LANG_POP([C++])
+
# End of checks for Octave features.
+octave_major_ver=`$OCTAVE_CONFIG -p VERSION | $SED -e "s/\..*$//"`
+if test -z "$octave_major_ver"; then
+ octave_major_ver=4
+fi
+if test $octave_major_ver -gt 3; then
+ ENABLE_SRC_BISTS=1
+ AC_SUBST(ENABLE_SRC_BISTS)
+fi
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/m4/octave-forge.m4
new/general-2.1.1/src/m4/octave-forge.m4
--- old/general-2.1.0/src/m4/octave-forge.m4 2018-05-13 23:01:51.408133896
+0200
+++ new/general-2.1.1/src/m4/octave-forge.m4 2020-03-05 14:21:19.000000000
+0100
@@ -1,4 +1,5 @@
# Copyright (C) 2017 Olaf Till <[email protected]>
+# Copyright (C) 2019 John D <[email protected]>
# Modifications to print what is searching for by JohnD
#
# This program is free software; you can redistribute it and/or modify
@@ -91,3 +92,24 @@
AH_BOTTOM([#include "$2"])
])
+
+# check whether can compile
+# arguments:
+# $1: symbol
+# $2: test for symbol version 2
+# $3: macro name define if sucessfull
+# $4: include directives
+AC_DEFUN([OF_OCTAVE_CHECK_SYM], [
+AC_MSG_CHECKING([$1])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <octave/oct.h>]
+ $4],
+ [$2])],
+ [AC_DEFINE($3,
+ [1],
+ [Have $1])
+ AC_MSG_RESULT([yes])
+ ],
+ [AC_MSG_RESULT(no)]
+)
+])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/mark_for_deletion.cc
new/general-2.1.1/src/mark_for_deletion.cc
--- old/general-2.1.0/src/mark_for_deletion.cc 2018-05-13 23:01:51.408133896
+0200
+++ new/general-2.1.1/src/mark_for_deletion.cc 2020-03-05 14:21:19.000000000
+0100
@@ -1,4 +1,4 @@
-// Copyright (C) 2002 Andy Adler
+// Copyright (C) 2002-2020 Andy Adler
//
// This program is free software; you can redistribute it and/or modify it
under
// the terms of the GNU General Public License as published by the Free
Software
@@ -16,11 +16,27 @@
#include <octave/oct.h>
#include <octave/file-io.h>
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_OCTAVE_INTERPRETER_H
+# include <octave/interpreter.h>
+#endif
+
+
+#ifdef DEFMETHOD_DLD
+DEFMETHOD_DLD (mark_for_deletion, interp, args, ,
+#else
DEFUN_DLD (mark_for_deletion, args,,
-"mark_for_deletion ( filename1, filename2, ... );\n\
-put filenames in the list of files to be deleted\n\
+#endif
+"-*- texinfo -*-\n \
+@deftypefn {Loadable Function} mark_for_deletion (@var{filename}, ...);\n\
+Put filenames in the list of files to be deleted\n\
when octave terminates.\n\
-This is useful for any function which uses temprorary files.")
+\n \
+This is useful for any function which uses temprorary files.\n \
+@end deftypefn")
{
octave_value retval;
for ( int i=0; i< args.length(); i++) {
@@ -28,8 +44,22 @@
error ("mark_for_deletion: arguments must be string filenames");
return retval;
} else {
+
+#ifdef OCTAVE_HAVE_INTERPRETER_MARK_FOR_DELETION
+ interp.mark_for_deletion( args(i).string_value() );
+#else
mark_for_deletion( args(i).string_value() );
+#endif
}
}
return retval;
}
+
+#if 0
+%!test
+%! testname = tempname;
+%! mark_for_deletion(testname);
+%! mark_for_deletion(testname, testname);
+
+%!error <arguments must be string filenames> mark_for_deletion(1)
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/packfields.cc
new/general-2.1.1/src/packfields.cc
--- old/general-2.1.0/src/packfields.cc 2018-05-13 23:01:51.408133896 +0200
+++ new/general-2.1.1/src/packfields.cc 2020-03-05 14:21:19.000000000 +0100
@@ -58,69 +58,92 @@
if (nargin > 0)
{
#ifdef DEFMETHOD_DLD
+#ifndef OCTAVE_HAVE_INTERPRETER_VARVAL
octave::symbol_table::scope curr_scope
= interp.require_current_scope ("packfields");
#endif
-
+#endif
+ if (! args (0).is_string ())
+ {
+ error ("packfields: expected variable name");
+ return octave_value ();
+ }
std::string struct_name = args (0).string_value ();
string_vector fld_names(nargin-1);
octave_value_list fld_vals(nargin-1);
- if (! error_state && ! valid_identifier (struct_name))
- error ("packfields: invalid variable name: %s", struct_name.c_str ());
-
+ if (! OCTAVE__VALID_IDENTIFIER (struct_name))
+ {
+ error ("packfields: invalid variable name: %s",
+ struct_name.c_str ());
+ return octave_value ();
+ }
for (octave_idx_type i = 0; i < nargin-1; i++)
{
- if (error_state)
- break;
+ if (! args (i+1).is_string ())
+ {
+ error ("packfields: expected variable name for input %d",
(int)i+1);
+ return octave_value ();
+ }
std::string fld_name = args(i+1).string_value ();
- if (error_state)
- break;
-
- if (valid_identifier (fld_name))
+ if (OCTAVE__VALID_IDENTIFIER (fld_name))
{
fld_names(i) = fld_name;
#ifdef DEFMETHOD_DLD
+#ifdef OCTAVE_HAVE_INTERPRETER_VARVAL
+ octave_value fld_val = interp.varval (fld_name);
+#else
octave_value fld_val = curr_scope.varval (fld_name);
+#endif
#else
octave_value fld_val = symbol_table::varval (fld_name);
#endif
if (fld_val.is_defined ())
fld_vals(i) = fld_val;
else
- error ("packfields: variable %s not defined", fld_name.c_str
());
+ {
+ error ("packfields: variable %s not defined", fld_name.c_str
());
+ return octave_value ();
+ }
}
else
- error ("packfields: invalid field name: %s", fld_name.c_str ());
+ {
+ error ("packfields: invalid field name: %s", fld_name.c_str ());
+ return octave_value ();
+ }
}
- if (! error_state)
- {
#ifdef DEFMETHOD_DLD
- octave_value struct_val = curr_scope.varval (struct_name);
+#ifdef OCTAVE_HAVE_INTERPRETER_VARVAL
+ octave_value struct_val = interp.varval (struct_name);
#else
- octave_value struct_val = symbol_table::varval (struct_name);
+ octave_value struct_val = curr_scope.varval (struct_name);
#endif
+#else
+ octave_value struct_val = symbol_table::varval (struct_name);
+#endif
+ octave_scalar_map map;
- octave_scalar_map map;
-
- if (struct_val.is_defined () && struct_val.OV_ISMAP ())
- map = struct_val.scalar_map_value ();
+ if (struct_val.is_defined () && struct_val.OV_ISMAP ())
+ map = struct_val.scalar_map_value ();
- for (octave_idx_type i = 0; i < nargin-1; i++)
- map.assign (fld_names(i), fld_vals(i));
+ for (octave_idx_type i = 0; i < nargin-1; i++)
+ map.assign (fld_names(i), fld_vals(i));
- struct_val = map;
+ struct_val = map;
#ifdef DEFMETHOD_DLD
- curr_scope.assign (struct_name, struct_val);
+#ifdef OCTAVE_HAVE_INTERPRETER_ASSIGN
+ interp.assign (struct_name, struct_val);
#else
- symbol_table::assign (struct_name, struct_val);
+ curr_scope.assign (struct_name, struct_val);
+#endif
+#else
+ symbol_table::assign (struct_name, struct_val);
#endif
- }
}
else
print_usage ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/general-2.1.0/src/unpackfields.cc
new/general-2.1.1/src/unpackfields.cc
--- old/general-2.1.0/src/unpackfields.cc 2018-05-13 23:01:51.408133896
+0200
+++ new/general-2.1.1/src/unpackfields.cc 2020-03-05 14:21:19.000000000
+0100
@@ -37,7 +37,7 @@
Create variables from fields of a struct.\n\
\n\
Inserts the named fields @var{fld1}, @var{fld2}, @dots{}, from the struct\n\
-named @var{s_name}, into the current scope. Noe that @var{s_name} is the\n\
+named @var{s_name}, into the current scope. Note that @var{s_name} is the\n\
name of the struct in the current scope, not the struct itself.\n\
\n\
@example\n\
@@ -64,87 +64,110 @@
if (nargin > 0)
{
#ifdef DEFMETHOD_DLD
+#ifndef OCTAVE_HAVE_INTERPRETER_VARVAL
octave::symbol_table::scope curr_scope
= interp.require_current_scope ("unpackfields");
#endif
-
+#endif
+ if (! args (0).is_string ())
+ {
+ error ("unpackfields: expected variable name");
+ return octave_value ();
+ }
+
std::string struct_name = args (0).string_value ();
string_vector fld_names(nargin-1);
- if (! error_state && ! valid_identifier (struct_name))
- error ("unpackfields: invalid variable name: %s", struct_name.c_str
());
+ if (! OCTAVE__VALID_IDENTIFIER (struct_name))
+ {
+ error ("unpackfields: invalid variable name: %s",
+ struct_name.c_str ());
+ return octave_value ();
+ }
for (octave_idx_type i = 0; i < nargin-1; i++)
{
- if (error_state)
- break;
+ if (! args (i+1).is_string ())
+ {
+ error ("unpackfields: expected variable name for input %d",
(int)i+1);
+ return octave_value ();
+ }
std::string fld_name = args(i+1).string_value ();
- if (error_state)
- break;
-
- if (valid_identifier (fld_name))
+ if (OCTAVE__VALID_IDENTIFIER (fld_name))
fld_names(i) = fld_name;
else
- error ("unpackfields: invalid field name: %s", fld_name.c_str ());
+ {
+ error ("unpackfields: invalid field name: %s", fld_name.c_str
());
+ return octave_value ();
+ }
}
- if (! error_state)
- {
- // Force the symbol to be inserted in caller's scope.
+ // Force the symbol to be inserted in caller's scope.
#ifdef DEFMETHOD_DLD
- octave_value struct_val = curr_scope.varval (struct_name);
+#ifdef OCTAVE_HAVE_INTERPRETER_VARVAL
+ octave_value struct_val = interp.varval (struct_name);
#else
- octave_value struct_val = symbol_table::varval (struct_name);
+ octave_value struct_val = curr_scope.varval (struct_name);
#endif
- if (struct_val.OV_ISMAP ())
+#else
+ octave_value struct_val = symbol_table::varval (struct_name);
+#endif
+ if (struct_val.OV_ISMAP ())
+ {
+ if (struct_val.ndims () == 2)
{
// Fast code for a built-in struct.
const octave_scalar_map map = struct_val.scalar_map_value ();
- if (! error_state)
+ // Do the actual work.
+ for (octave_idx_type i = 0; i < nargin-1; i++)
{
- // Do the actual work.
- for (octave_idx_type i = 0; i < nargin-1; i++)
- {
- octave_scalar_map::const_iterator iter = map.seek
(fld_names(i));
- if (iter != map.end ())
+ octave_scalar_map::const_iterator iter = map.seek
(fld_names(i));
+ if (iter != map.end ())
#ifdef DEFMETHOD_DLD
- curr_scope.assign (fld_names(i), map.contents (iter));
+#ifdef OCTAVE_HAVE_INTERPRETER_ASSIGN
+ interp.assign (fld_names(i), map.contents (iter));
+#else
+ curr_scope.assign (fld_names(i), map.contents (iter));
+#endif
#else
- symbol_table::assign (fld_names(i), map.contents
(iter));
+ symbol_table::assign (fld_names(i), map.contents (iter));
#endif
- else
- {
- error ("unpackfields: field %s does not exist",
fld_names(i).c_str ());
- break;
- }
+ else
+ {
+ error ("unpackfields: field %s does not exist",
fld_names(i).c_str ());
+ break;
}
}
- else
- error ("unpackfields: structure must have singleton
dimensions");
}
- else if (struct_val.is_defined ())
+ else
{
- // General case.
- std::list<octave_value_list> idx (1);
-
- for (octave_idx_type i = 0; i < nargin-1; i++)
- {
- idx.front () = args(i+1); // Save one string->octave_value
conversion.
- octave_value val = struct_val.subsref (".", idx);
+ error ("unpackfields: structure must have singleton dimensions");
+ return octave_value ();
+ }
+ }
+ else if (struct_val.is_defined ())
+ {
+ // General case.
+ std::list<octave_value_list> idx (1);
- if (error_state)
- break;
+ for (octave_idx_type i = 0; i < nargin-1; i++)
+ {
+ idx.front () = args(i+1); // Save one string->octave_value
conversion.
+ octave_value val = struct_val.subsref (".", idx);
- if (val.is_defined ())
+ if (val.is_defined ())
#ifdef DEFMETHOD_DLD
- curr_scope.assign (fld_names(i), val);
+#ifdef OCTAVE_HAVE_INTERPRETER_ASSIGN
+ interp.assign (fld_names(i), val);
#else
- symbol_table::assign (fld_names(i), val);
+ curr_scope.assign (fld_names(i), val);
+#endif
+#else
+ symbol_table::assign (fld_names(i), val);
#endif
- }
}
}
}