[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 ();