summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Hill <dirtyepic@gentoo.org>2009-02-10 05:01:37 +0000
committerRyan Hill <dirtyepic@gentoo.org>2009-02-10 05:01:37 +0000
commitfd02e44e9b969de0ea6ccc2ff33339031dabab86 (patch)
tree3c0f86767606c29c20b50da5933ee221c998717c
parentstable sparc, bug 255848 (diff)
downloadgentoo-2-fd02e44e9b969de0ea6ccc2ff33339031dabab86.tar.gz
gentoo-2-fd02e44e9b969de0ea6ccc2ff33339031dabab86.tar.bz2
gentoo-2-fd02e44e9b969de0ea6ccc2ff33339031dabab86.zip
Fix building with GCC 4.3 for bug #227529
(Portage version: 2.2_rc23/cvs/Linux x86_64)
-rw-r--r--dev-lang/maude/ChangeLog8
-rw-r--r--dev-lang/maude/files/maude-2.3.0-gcc43.patch107
-rw-r--r--dev-lang/maude/maude-2.3.0.ebuild11
3 files changed, 122 insertions, 4 deletions
diff --git a/dev-lang/maude/ChangeLog b/dev-lang/maude/ChangeLog
index fcba333373d1..8c9cc29b80d0 100644
--- a/dev-lang/maude/ChangeLog
+++ b/dev-lang/maude/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for dev-lang/maude
-# Copyright 2000-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/maude/ChangeLog,v 1.11 2008/06/04 03:40:46 markusle Exp $
+# Copyright 2000-2009 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/maude/ChangeLog,v 1.12 2009/02/10 05:01:37 dirtyepic Exp $
+
+ 10 Feb 2009; Ryan Hill <dirtyepic@gentoo.org>
+ +files/maude-2.3.0-gcc43.patch, maude-2.3.0.ebuild:
+ Fix building with GCC 4.3 for bug #227529
*maude-2.3.0 (04 Jun 2008)
diff --git a/dev-lang/maude/files/maude-2.3.0-gcc43.patch b/dev-lang/maude/files/maude-2.3.0-gcc43.patch
new file mode 100644
index 000000000000..457359519b87
--- /dev/null
+++ b/dev-lang/maude/files/maude-2.3.0-gcc43.patch
@@ -0,0 +1,107 @@
+--- Maude-2.3/src/BuiltIn/stringOpSymbol.cc 2003-11-10 18:33:00.000000000 -0600
++++ Maude-2.4/src/BuiltIn/stringOpSymbol.cc 2008-09-11 19:03:36.000000000 -0600
+@@ -220,7 +220,9 @@ StringOpSymbol::eqRewrite(DagNode* subje
+ case CODE('f', 'l'):
+ {
+ bool error;
+- //double fl = stringToDouble(left.c_str(), error);
++#ifdef ROPE_C_STR_BROKEN
++ //
++ // This kudge doesn't seem to be need nowadays, but copy() doesn't work.
+ //
+ // This messing about is needed because Rope::c_str()
+ // fails in libstdc++-v3
+@@ -231,7 +233,9 @@ StringOpSymbol::eqRewrite(DagNode* subje
+ t[len] = '\0';
+ double fl = stringToDouble(t, error);
+ delete [] t;
+- //
++#else
++ double fl = stringToDouble(left.c_str(), error);
++#endif
+ if (error)
+ goto fail;
+ return floatSymbol->rewriteToFloat(subject, context, fl);
+@@ -282,6 +286,7 @@ StringOpSymbol::eqRewrite(DagNode* subje
+ break;
+ default:
+ CantHappen("bad string op");
++ r = false; // avoid compiler warning
+ }
+ Assert(trueTerm.getTerm() != 0 && falseTerm.getTerm() != 0,
+ "null true/false for relational op");
+@@ -358,6 +363,7 @@ StringOpSymbol::eqRewrite(DagNode* subje
+ break;
+ default:
+ CantHappen("bad string op");
++ r = 0; // avoid compiler warning
+ }
+ Assert(notFoundTerm.getTerm() != 0, "null notFound for find op");
+ if (r == NONE)
+@@ -591,6 +597,13 @@ StringOpSymbol::ropeToNumber(const crope
+ if (!isalnum(subject[j]))
+ return false;
+ }
++ //
++ // We have detected a fraction form.
++ //
++#ifdef ROPE_C_STR_BROKEN
++ //
++ // This kudge doesn't seem to be need nowadays, but copy() doesn't work.
++ //
+ char* t = new char[len]; // longer than needed but who cares
+ int dLen = len - (i + 1);
+ subject.copy(i + 1, dLen, t);
+@@ -609,20 +622,34 @@ StringOpSymbol::ropeToNumber(const crope
+ }
+ delete [] t;
+ return true;
++#else
++ return mpz_set_str(denominator.get_mpz_t(), subject.substr(i + 1).c_str(), base) == 0 &&
++ mpz_set_str(numerator.get_mpz_t(), subject.substr(0,i).c_str(), base) == 0;
++#endif
+ }
+ else
+ return false;
+ }
+ }
++ //
++ // We have a regular integer form.
++ //
++ denominator = 0;
++#ifdef ROPE_C_STR_BROKEN
++ //
++ // This kudge doesn't seem to be need nowadays, but copy() doesn't work.
++ //
+ char* t = new char[len + 1];
+ subject.copy(t);
+ t[len] = '\0';
+ if (mpz_set_str(numerator.get_mpz_t(), t, base) == 0)
+ {
+ delete [] t;
+- denominator = 0;
+ return true;
+ }
+ delete [] t;
+- return false;
++ return false;
++#else
++ return mpz_set_str(numerator.get_mpz_t(), subject.c_str(), base) == 0;
++#endif
+ }
+--- Maude-2.3/src/Utility/macros.hh 2007-01-11 21:13:21.000000000 -0600
++++ Maude-2.4/src/Utility/macros.hh 2008-09-04 13:52:55.000000000 -0600
+@@ -50,10 +50,10 @@
+ #if HAVE_CTYPE_H
+ #include <ctype.h>
+ #endif
+-#if HAVE_STRINGS_H
+-#include <strings.h>
+-#elif HAVE_STRING_H
++#if HAVE_STRING_H
+ #include <string.h>
++#elif HAVE_STRINGS_H
++#include <strings.h>
+ #endif
+ #if HAVE_UNISTD_H
+ #include <unistd.h> // needed by solaris
diff --git a/dev-lang/maude/maude-2.3.0.ebuild b/dev-lang/maude/maude-2.3.0.ebuild
index 9f9f36af53c5..c5d66a52fbf5 100644
--- a/dev-lang/maude/maude-2.3.0.ebuild
+++ b/dev-lang/maude/maude-2.3.0.ebuild
@@ -1,6 +1,6 @@
-# Copyright 1999-2008 Gentoo Foundation
+# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/maude/maude-2.3.0.ebuild,v 1.2 2008/06/04 15:55:37 mr_bones_ Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/maude/maude-2.3.0.ebuild,v 1.3 2009/02/10 05:01:37 dirtyepic Exp $
inherit toolchain-funcs eutils versionator
@@ -28,6 +28,13 @@ DEPEND="${RDEPEND}
S="${WORKDIR}"/${MY_PN}-${MY_PV}
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/${P}-gcc43.patch
+}
+
src_compile() {
econf || die "econf failed"
emake -j1 || die "emake failed"