[Pkg-octave-devel] Bug#314705: octave2.1: FTBFS (amd64/gcc-4.0): trying to instantiate 'template<class T> template<class U> octave_int::octave_int(U)'
Andreas Jochens
Andreas Jochens <aj@andaco.de>, 314705@bugs.debian.org
Fri, 17 Jun 2005 23:29:14 +0200
Package: octave2.1
Version: 2.1.69-1
Severity: normal
Tags: patch
When building 'octave2.1' on amd64/unstable with gcc-4.0,
I get the following error:
lex.l:208: error: 'bracket_brace_paren_nesting_level::<anonymous enum>' is/uses anonymous type
lex.l:208: error: trying to instantiate 'template<class T> template<class U> octave_int::octave_int(U)'
make[3]: *** [pic/lex.o] Error 1
make[3]: Leaving directory `/octave2.1-2.1.69/src'
With the attached patch 'octave2.1' can be compiled
on amd64 using gcc-4.0.
Regards
Andreas Jochens
diff -urN ../tmp-orig/octave2.1-2.1.69/src/lex.cc ./src/lex.cc
--- ../tmp-orig/octave2.1-2.1.69/src/lex.cc 2005-03-29 05:39:22.000000000 +0200
+++ ./src/lex.cc 2005-06-17 21:53:17.000000000 +0200
@@ -861,7 +861,7 @@
std::stack<int> context;
- enum { BRACKET = 1, BRACE = 2, PAREN = 3 };
+ enum bracket_type { BRACKET = 1, BRACE = 2, PAREN = 3 };
bracket_brace_paren_nesting_level (const bracket_brace_paren_nesting_level&);
diff -urN ../tmp-orig/octave2.1-2.1.69/src/lex.l ./src/lex.l
--- ../tmp-orig/octave2.1-2.1.69/src/lex.l 2005-03-29 05:36:52.000000000 +0200
+++ ./src/lex.l 2005-06-17 21:53:14.000000000 +0200
@@ -217,7 +217,7 @@
std::stack<int> context;
- enum { BRACKET = 1, BRACE = 2, PAREN = 3 };
+ enum bracket_type { BRACKET = 1, BRACE = 2, PAREN = 3 };
bracket_brace_paren_nesting_level (const bracket_brace_paren_nesting_level&);
diff -urN ../tmp-orig/octave2.1-2.1.69/src/toplev.cc ./src/toplev.cc
--- ../tmp-orig/octave2.1-2.1.69/src/toplev.cc 2005-03-27 14:13:32.000000000 +0200
+++ ./src/toplev.cc 2005-06-17 22:03:41.000000000 +0200
@@ -440,6 +440,9 @@
variable @code{status} to the integer @samp{2}.\n\
@end deftypefn")
{
+#define sync 1
+#define async 2
+
octave_value_list retval;
unwind_protect::begin_frame ("Fsystem");
@@ -452,9 +455,7 @@
std::string cmd_str = args(0).string_value ();
- enum exec_type { sync, async };
-
- exec_type type = sync;
+ int etype = sync;
if (! error_state)
{
@@ -465,9 +466,9 @@
if (! error_state)
{
if (type_str == "sync")
- type = sync;
+ etype = sync;
else if (type_str == "async")
- type = async;
+ etype = async;
else
error ("system: third arg must be \"sync\" or \"async\"");
}
@@ -480,7 +481,7 @@
if (! error_state)
{
- if (type == async)
+ if (etype == async)
{
#ifdef HAVE_FORK
pid_t pid = fork ();