Hello community, here is the log from the commit of package octave-forge-struct for openSUSE:Factory checked in at 2019-03-26 15:40:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/octave-forge-struct (Old) and /work/SRC/openSUSE:Factory/.octave-forge-struct.new.25356 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "octave-forge-struct" Tue Mar 26 15:40:05 2019 rev:5 rq:682615 version:1.0.15 Changes: -------- --- /work/SRC/openSUSE:Factory/octave-forge-struct/octave-forge-struct.changes 2018-06-29 22:25:50.254509082 +0200 +++ /work/SRC/openSUSE:Factory/.octave-forge-struct.new.25356/octave-forge-struct.changes 2019-03-26 15:41:10.364282797 +0100 @@ -1,0 +2,6 @@ +Thu Mar 7 17:53:51 UTC 2019 - Stefan BrĂ¼ns <stefan.bru...@rwth-aachen.de> + +- Add changes from current tip, to fix building with Octave 5.1: + release-current-tip.diff + +------------------------------------------------------------------- New: ---- release-current-tip.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ octave-forge-struct.spec ++++++ --- /var/tmp/diff_new_pack.DDKvGV/_old 2019-03-26 15:41:12.464281962 +0100 +++ /var/tmp/diff_new_pack.DDKvGV/_new 2019-03-26 15:41:12.468281960 +0100 @@ -1,7 +1,7 @@ # # spec file for package octave-forge-struct # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # 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/ # @@ -25,6 +25,10 @@ Group: Productivity/Scientific/Math Url: http://octave.sourceforge.net Source0: http://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz +# PATCH-FIX-UPSTREAM - Fix building with current octave +Patch0: release-current-tip.diff +BuildRequires: autoconf +BuildRequires: automake BuildRequires: gcc-c++ BuildRequires: hdf5-devel BuildRequires: octave-devel @@ -36,6 +40,10 @@ %prep %setup -q -c %{name}-%{version} +pushd %{octpkg}-%{version} +%patch0 -p1 +cd src && ./bootstrap +popd %octave_pkg_src %build @@ -54,7 +62,6 @@ %octave --eval "pkg rebuild" %files -%defattr(-,root,root) %{octpackages_dir}/%{octpkg}-%{version} %{octlib_dir}/%{octpkg}-%{version} ++++++ release-current-tip.diff ++++++ # HG changeset patch # User Olaf Till <i7t...@t-online.de> # Date 1530563206 -7200 # Mon Jul 02 22:26:46 2018 +0200 # Node ID d5c3cdc052b679a29bd61e5a138634562c469869 # Parent 60b27d46269a7442098239e4b533736027457553 Use autoheader and check for alternative Octave symbols. diff --git a/src/Makefile.in b/src/Makefile.in --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,6 +1,6 @@ # Makefile for struct package for Octave # -# Copyright (C) 2016 Olaf Till <i7t...@t-online.de> +# Copyright (C) 2016-2018 Olaf Till <i7t...@t-online.de> # # 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 @@ -17,13 +17,10 @@ # Uncomment this for a release. -RELEASE := yes +# RELEASE := yes ifdef RELEASE -# Currently this avoids warnings due to introduction of Octave -# namespaces in Octave-4.1.0+. If the deprecated versions will be -# available long enough, we could get away with just suppressing the -# warnings. -RELEASE_CXXFLAGS = -Wno-deprecated-declarations +# Currently this does nothing. +RELEASE_CXXFLAGS = endif MKOCTFILE ?= @MKOCTFILE@ diff --git a/src/bootstrap b/src/bootstrap --- a/src/bootstrap +++ b/src/bootstrap @@ -1,3 +1,7 @@ #! /bin/sh +aclocal + autoconf + +autoheader -f diff --git a/src/config.h.in b/src/config.h.in deleted file mode 100644 --- a/src/config.h.in +++ /dev/null @@ -1,6 +0,0 @@ -/* Define as 1 if liboctinterp is old enough to provide error_state. */ -#undef HAVE_OCTAVE_ERROR_STATE - -/* Define as 1 if liboctinterp has -'verror (octave_execution_exception&, const char *, va_list)'. */ -#undef HAVE_OCTAVE_VERROR_ARG_EXC diff --git a/src/configure.ac b/src/configure.ac --- a/src/configure.ac +++ b/src/configure.ac @@ -22,6 +22,12 @@ AC_CONFIG_SRCDIR([cell2fields.cc]) AC_CONFIG_HEADERS([config.h]) +# Avoid warnings for redefining AH-generated preprocessor symbols of +# Octave. +AH_TOP([#include "undef-ah-octave.h"]) + +AC_CONFIG_MACRO_DIRS([m4]) + # Checks for programs. AC_CHECK_PROG(MKOCTFILE, mkoctfile, mkoctfile) if test -z "$MKOCTFILE"; then @@ -72,16 +78,48 @@ [AC_LANG_PROGRAM([[#include <octave/oct.h>] [#include <stdio.h>]], [[printf ("%i", error_state);]])], - [AC_DEFINE([HAVE_OCTAVE_ERROR_STATE], 1)]) + [AC_DEFINE([HAVE_OCTAVE_ERROR_STATE], 1, + [Define as 1 if liboctinterp is old enough to provide error_state.])]) -## Presence of 'verror (octave_execution_exception&, const char *, +## Presence of 'verror (octave(_|::)execution_exception&, const char *, ## va_list)' -AC_LINK_IFELSE( +AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include <octave/oct.h>]], [[octave_execution_exception e;] [va_list args;] [verror (e, "test", args);]])], - [AC_DEFINE([HAVE_OCTAVE_VERROR_ARG_EXC], 1)]) + [AC_DEFINE([HAVE_OCTAVE_VERROR_ARG_EXC], 1, + [Define as 1 if liboctinterp has 'verror (octave(_|::)execution_exception&, const char *, va_list)'.])], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include <octave/oct.h>]], + [[octave::execution_exception e;] + [va_list args;] + [verror (e, "test", args);]])], + [AC_DEFINE([HAVE_OCTAVE_VERROR_ARG_EXC], 1, + [Define as 1 if liboctinterp has 'verror (octave(_|::)execution_exception&, const char *, va_list)'.])])]) + +## Simple symbol alternatives of different Octave versions. +OF_OCTAVE_LIST_ALT_SYMS([ +[dnl + [is_map], + [isstruct], + [[octave_value ().isstruct ();]], + [OV_ISSTRUCT], + [], + [] +], + +[dnl + [octave_execution_exception], + [octave::execution_exception], + [[octave::execution_exception ();]], + [OCTAVE__EXECUTION_EXCEPTION], + [], + [] +] + +], + [oct-alt-includes.h]) LIBS=$TLIBS LDFLAGS=$TLDFLAGS diff --git a/src/error-helpers.cc b/src/error-helpers.cc --- a/src/error-helpers.cc +++ b/src/error-helpers.cc @@ -1,6 +1,6 @@ /* -Copyright (C) 2016, 2017 Olaf Till <i7t...@t-online.de> +Copyright (C) 2016-2018 Olaf Till <i7t...@t-online.de> 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 @@ -24,7 +24,7 @@ // call verror #ifdef HAVE_OCTAVE_VERROR_ARG_EXC void -c_verror (octave_execution_exception& e, const char *fmt, ...) +c_verror (OCTAVE__EXECUTION_EXCEPTION& e, const char *fmt, ...) { va_list args; va_start (args, fmt); @@ -33,7 +33,7 @@ } #else void -c_verror (const octave_execution_exception&, const char *fmt, ...) +c_verror (const OCTAVE__EXECUTION_EXCEPTION&, const char *fmt, ...) { va_list args; va_start (args, fmt); diff --git a/src/error-helpers.h b/src/error-helpers.h --- a/src/error-helpers.h +++ b/src/error-helpers.h @@ -1,6 +1,6 @@ /* -Copyright (C) 2016, 2017 Olaf Till <i7t...@t-online.de> +Copyright (C) 2016-2018 Olaf Till <i7t...@t-online.de> 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 @@ -26,9 +26,9 @@ // call verror, for _linking_ also against Octave versions who have no // verror() with these arguments #ifdef HAVE_OCTAVE_VERROR_ARG_EXC -void c_verror (octave_execution_exception&, const char *, ...); +void c_verror (OCTAVE__EXECUTION_EXCEPTION&, const char *, ...); #else -void c_verror (const octave_execution_exception&, const char *, ...); +void c_verror (const OCTAVE__EXECUTION_EXCEPTION&, const char *, ...); #endif void _p_error (const char *fmt, ...); @@ -37,7 +37,7 @@ // both if Octave uses exceptions for errors and if it still uses // error_state. In the latter case return 'retval'. #ifdef HAVE_OCTAVE_ERROR_STATE - // can throw octave_execution_exception despite of this + // can throw OCTAVE__EXECUTION_EXCEPTION despite of this #define CHECK_ERROR(code, retval, ...) \ try \ { \ @@ -50,7 +50,7 @@ return retval; \ } \ } \ - catch (octave_execution_exception& e) \ + catch (OCTAVE__EXECUTION_EXCEPTION& e) \ { \ c_verror (e, __VA_ARGS__); \ } @@ -60,7 +60,7 @@ { \ code ; \ } \ - catch (octave_execution_exception& e) \ + catch (OCTAVE__EXECUTION_EXCEPTION& e) \ { \ verror (e, __VA_ARGS__); \ } @@ -70,7 +70,7 @@ // Octave doesn't throw exceptions for errors but still uses // error_state. #ifdef HAVE_OCTAVE_ERROR_STATE - // can throw octave_execution_exception despite of this + // can throw OCTAVE__EXECUTION_EXCEPTION despite of this #define CHECK_ERROR_EXIT1(code, ...) \ try \ { \ @@ -83,7 +83,7 @@ exit (1); \ } \ } \ - catch (octave_execution_exception&) \ + catch (OCTAVE__EXECUTION_EXCEPTION&) \ { \ _p_error (__VA_ARGS__); \ \ @@ -95,7 +95,7 @@ { \ code ; \ } \ - catch (octave_execution_exception&) \ + catch (OCTAVE__EXECUTION_EXCEPTION&) \ { \ _p_error (__VA_ARGS__); \ \ @@ -107,7 +107,7 @@ // Octave uses exceptions for errors and if it still uses // error_state. In the latter case reset error_state to 0. #ifdef HAVE_OCTAVE_ERROR_STATE - // can throw octave_execution_exception despite of this + // can throw OCTAVE__EXECUTION_EXCEPTION despite of this #define SET_ERR(code, err) \ err = false; \ \ @@ -120,7 +120,7 @@ err = true; \ } \ } \ - catch (octave_execution_exception&) \ + catch (OCTAVE__EXECUTION_EXCEPTION&) \ { \ err = true; \ } @@ -132,7 +132,7 @@ { \ code ; \ } \ - catch (octave_execution_exception&) \ + catch (OCTAVE__EXECUTION_EXCEPTION&) \ { \ err = true; \ } diff --git a/src/m4/octave-forge.m4 b/src/m4/octave-forge.m4 new file mode 100644 --- /dev/null +++ b/src/m4/octave-forge.m4 @@ -0,0 +1,93 @@ +# Copyright (C) 2017 Olaf Till <i7t...@t-online.de> +# Modifications to print what is searching for by JohnD +# +# 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 Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. + +# arguments of OF_OCTAVE_ALT_SYMS (see also description of +# OF_OCTAVE_LIST_ALT_SYMS below): +# +# $1: symbol version 1 +# $2: symbol version 2 +# $3: test for symbol version 2 +# $4: macro name to access alternative symbols +# $5: include directives for symbol version 1 +# $6: include directives for symbol version 2 +# (a list of lists of args 1--6 is $1 of OF_OCTAVE_LIST_ALT_SYMS) +# $7: name of generated include file with alternatives of Octave headers +# (arg7 is $2 of OF_OCTAVE_LIST_ALT_SYMS) +AC_DEFUN([OF_OCTAVE_ALT_SYMS], [ +AC_MSG_CHECKING([$1 or $2]) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include <octave/oct.h>] + $6], + [$3])], + [AC_DEFINE($4, + [[$2]], + [macro for alternative Octave symbols]) + AC_MSG_RESULT([$2]) + echo '$6' >> $7], + [AC_DEFINE($4, + [[$1]], + [macro for alternative Octave symbols]) + AC_MSG_RESULT([$1]) + echo '$5' >> $7] +) +]) + + +# OF_OCTAVE_LIST_ALT_SYMS is called in the following way: +# +# OF_OCTAVE_LIST_ALT_SYMS([ +# [dnl +# [old_octave_symbol], +# [new_octave_symbol], +# [[compilation test] +# [for new_octave_symbol]], +# [NAME_OF_GENERATED_MACRO____WILL_EXPAND_TO_OLD_OR_NEW_SYMBOL], +# [[include directives] +# [except #include <octave/oct.h>] +# [necessary to compile with old_octave_symbol]], +# [[include directives] +# [except #include <octave/oct.h>] +# [nessary to compile with new_octave_symbol] +# [and to compile the test]] +# ], +# +# ... further such lists as the above +# +# ], +# +# [name-of-header-file-for-alternative-octave-iclude-directives.h]) +# +# +# This file should be put into src/m4/, and the line +# +# AC_CONFIG_MACRO_DIRS([m4]) +# +# should be put into src/configure.ac. The package should use +# autoheader to generate config.h.in (src/bootstrap should contain the +# lines 'aclocal', 'autoconf', and 'autoheader -f'). Package code +# should include config.h and use the generated macros to access the +# alternative symbols of Octave. An example of a call to +# OF_OCTAVE_LIST_ALT_SYMS in src/configure.ac is available together +# with this file. +AC_DEFUN([OF_OCTAVE_LIST_ALT_SYMS], [ + +echo '/* generated by configure */' > $2 + +m4_foreach([it], [$1], [m4_apply([OF_OCTAVE_ALT_SYMS], [it, $2])]) + +AH_BOTTOM([#include "$2"]) + +]) diff --git a/src/structcat.cc b/src/structcat.cc --- a/src/structcat.cc +++ b/src/structcat.cc @@ -132,7 +132,7 @@ for (octave_idx_type i = m1_id; i < n_args; i++) { - if (! args(i).is_map ()) + if (! args(i).OV_ISSTRUCT ()) { error ("%s: some argument not a structure", fname.c_str ()); diff --git a/src/undef-ah-octave.h b/src/undef-ah-octave.h new file mode 100644 --- /dev/null +++ b/src/undef-ah-octave.h @@ -0,0 +1,27 @@ +/* To be included at the top of config.h (by autoheader). Avoid + warnings for redefining AH-generated preprocessor symbols of + Octave. */ + +#ifdef PACKAGE_BUGREPORT +#undef PACKAGE_BUGREPORT +#endif + +#ifdef PACKAGE_NAME +#undef PACKAGE_NAME +#endif + +#ifdef PACKAGE_STRING +#undef PACKAGE_STRING +#endif + +#ifdef PACKAGE_TARNAME +#undef PACKAGE_TARNAME +#endif + +#ifdef PACKAGE_URL +#undef PACKAGE_URL +#endif + +#ifdef PACKAGE_VERSION +#undef PACKAGE_VERSION +#endif # HG changeset patch # User Olaf Till <i7t...@t-online.de> # Date 1534092890 -7200 # Sun Aug 12 18:54:50 2018 +0200 # Node ID 320e8484cd10b73cef40c9b51d99ebbb0c7b8360 # Parent d5c3cdc052b679a29bd61e5a138634562c469869 error-helpers.h: include <iostream> diff --git a/src/error-helpers.h b/src/error-helpers.h --- a/src/error-helpers.h +++ b/src/error-helpers.h @@ -19,6 +19,8 @@ #include "config.h" +#include <iostream> + // Octaves non-static verror functions: The elder all set error_state, // the newer, present from the time on at which error started to throw // an exception, all throw, too. # HG changeset patch # User Olaf Till <i7t...@t-online.de> # Date 1547200761 -3600 # Fri Jan 11 10:59:21 2019 +0100 # Node ID 217a5b7b066a5e51572f29be8a5b1ac22a883a9f # Parent 320e8484cd10b73cef40c9b51d99ebbb0c7b8360 check for octave::vformat diff --git a/src/configure.ac b/src/configure.ac --- a/src/configure.ac +++ b/src/configure.ac @@ -110,6 +110,17 @@ ], [dnl + [octave_vformat], + [octave::vformat], + [[std::ostringstream obuf;] + [va_list args;] + [octave::vformat (obuf, "dummy", args);]], + [OCTAVE__VFORMAT], + [], + [] +], + +[dnl [octave_execution_exception], [octave::execution_exception], [[octave::execution_exception ();]], diff --git a/src/error-helpers.cc b/src/error-helpers.cc --- a/src/error-helpers.cc +++ b/src/error-helpers.cc @@ -50,7 +50,7 @@ std::ostringstream output_buf; - octave_vformat (output_buf, fmt, args); + OCTAVE__VFORMAT (output_buf, fmt, args); std::string msg = output_buf.str ();