summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-db/firebird/ChangeLog7
-rw-r--r--dev-db/firebird/files/firebird-1.5.1-gcc34.patch139
-rw-r--r--dev-db/firebird/firebird-1.5.1.ebuild9
3 files changed, 153 insertions, 2 deletions
diff --git a/dev-db/firebird/ChangeLog b/dev-db/firebird/ChangeLog
index bfcf4ae2ebef..161cf771ec28 100644
--- a/dev-db/firebird/ChangeLog
+++ b/dev-db/firebird/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for dev-db/firebird
# Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-db/firebird/ChangeLog,v 1.22 2004/09/08 15:12:46 gustavoz Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-db/firebird/ChangeLog,v 1.23 2004/09/13 11:23:35 sekretarz Exp $
+
+ 13 Sep 2004; Karol Wojtaszek <sekretarz@gentoo.org>
+ +files/firebird-1.5.1-gcc34.patch, firebird-1.5.1.ebuild:
+ Fixed gcc-34 compilation issues. Bug #59154, thanks to Canal Vorfeed
+ <canalvorfeed@mail.ru>
08 Sep 2004; Gustavo Zacarias <gustavoz@gentoo.org> firebird-1.5.1.ebuild:
Keyworded ~sparc wrt #63184
diff --git a/dev-db/firebird/files/firebird-1.5.1-gcc34.patch b/dev-db/firebird/files/firebird-1.5.1-gcc34.patch
new file mode 100644
index 000000000000..f5ddb4bac4bd
--- /dev/null
+++ b/dev-db/firebird/files/firebird-1.5.1-gcc34.patch
@@ -0,0 +1,139 @@
+diff -uNr firebird-1.5.1.4481-orig/src/common/classes/alloc.h firebird-1.5.1.4481/src/common/classes/alloc.h
+--- firebird-1.5.1.4481-orig/src/common/classes/alloc.h 2003-10-30 22:25:52.000000000 +0000
++++ firebird-1.5.1.4481/src/common/classes/alloc.h 2004-09-12 11:26:47.351584232 +0000
+@@ -237,12 +237,14 @@
+ // loaded by host application using STL
+
+ // This is to prevent inclusion of <new> header
+-#ifdef __NEW__
++#ifdef _NEW
+ #error "alloc.h must be included before <new>"
+ #endif
+-#define __NEW__
++#define _NEW
+ namespace std {
+ class bad_alloc : public exception {};
++ struct nothrow_t { };
++ extern const nothrow_t nothrow;
+ }
+ // Define operators as static inline to prevent replacement of STL versions
+ static inline void* operator new(size_t s) {
+@@ -258,6 +260,19 @@
+ );
+ }
+
++static inline void* operator new(size_t s, const std::nothrow_t&) {
++#if defined(DEV_BUILD)
++// Do not complain here. It causes client tools to crash on Red Hat 8.0
++// fprintf(stderr, "You MUST allocate all memory from a pool. Don't use the default global new().\n");
++#endif // DEV_BUILD
++// return getDefaultMemoryPool()->calloc(s, 0
++ return getDefaultMemoryPool()->allocate(s, 0
++#ifdef DEBUG_GDS_ALLOC
++ ,__FILE__,__LINE__
++#endif
++ );
++}
++
+ static inline void* operator new[](size_t s) {
+ #if defined(DEV_BUILD)
+ // Do not complain here. It causes client tools to crash on Red Hat 8.0
+diff -uNr firebird-1.5.1.4481-orig/src/common/classes/array.h firebird-1.5.1.4481/src/common/classes/array.h
+--- firebird-1.5.1.4481-orig/src/common/classes/array.h 2004-03-29 07:40:23.000000000 +0000
++++ firebird-1.5.1.4481/src/common/classes/array.h 2004-09-12 11:31:34.555922536 +0000
+@@ -60,15 +60,15 @@
+ class Array : private Storage {
+ public:
+ Array(MemoryPool* p) :
+- count(0), capacity(getStorageSize()), data(getStorage()), pool(p) {}
++ count(0), capacity(Storage::getStorageSize()), data(Storage::getStorage()), pool(p) {}
+ Array(MemoryPool* p, int InitialCapacity) : count(0),
+- capacity(getStorageSize()), data(getStorage()), pool(p)
++ capacity(Storage::getStorageSize()), data(Storage::getStorage()), pool(p)
+ {
+ ensureCapacity(InitialCapacity);
+ }
+ ~Array()
+ {
+- if (data != getStorage())
++ if (data != Storage::getStorage())
+ pool->deallocate(data);
+ }
+ void clear() { count = 0; };
+@@ -170,7 +170,7 @@
+ #endif
+ ));
+ memcpy(newdata, data, sizeof(T) * count);
+- if (data != getStorage())
++ if (data != Storage::getStorage())
+ pool->deallocate(data);
+ data = newdata;
+ capacity = newcapacity;
+@@ -188,17 +188,17 @@
+ SortedArray(MemoryPool* p, int s) : Array<Value>(p, s) {}
+ SortedArray(MemoryPool* p) : Array<Value>(p) {}
+ bool find(const Key& item, int& pos) {
+- int highBound = count, lowBound = 0;
++ int highBound = Array<Value>::count, lowBound = 0;
+ while (highBound > lowBound) {
+ int temp = (highBound + lowBound) >> 1;
+- if (Cmp::compare(item, KeyOfValue::generate(this, data[temp])))
++ if (Cmp::compare(item, KeyOfValue::generate(this, Array<Value>::data[temp])))
+ lowBound = temp + 1;
+ else
+ highBound = temp;
+ }
+ pos = lowBound;
+- return highBound != count &&
+- !Cmp::compare(KeyOfValue::generate(this, data[lowBound]), item);
++ return highBound != Array<Value>::count &&
++ !Cmp::compare(KeyOfValue::generate(this, Array<Value>::data[lowBound]), item);
+ }
+ int add(const Value& item) {
+ int pos;
+diff -uNr firebird-1.5.1.4481-orig/src/common/classes/tree.h firebird-1.5.1.4481/src/common/classes/tree.h
+--- firebird-1.5.1.4481-orig/src/common/classes/tree.h 2003-10-30 22:25:52.000000000 +0000
++++ firebird-1.5.1.4481/src/common/classes/tree.h 2004-09-12 11:22:54.754944296 +0000
+@@ -215,7 +215,7 @@
+ }
+ Value& current() const { return (*curr)[curPos]; }
+ Value& getAddErrorValue() { return addErrorValue; }
+- int getCount() const { return count; }
++// int getCount() const { return count; }
+ private:
+ BePlusTree(Allocator *_pool, void *rootPage) : pool(_pool), level(0),
+ curr(new(rootPage) ItemList()), root(rootPage), curPos(0)/*, count(0)*/ {};
+@@ -260,7 +260,7 @@
+ static const Key& generate(void *sender, void *item) {
+ for (int lev = ((NodeList *)sender)->level; lev > 0; lev--)
+ item = *((NodeList *)item)->begin();
+- return KeyOfValue::generate(item,*((BePlusTree::ItemList *)item)->begin());
++ return KeyOfValue::generate(item,*(reinterpret_cast<typename BePlusTree<Value,Key,Allocator,KeyOfValue,Cmp,LeafCount,NodeCount>::ItemList *>(item))->begin());
+ }
+ static void setNodeParentAndLevel(void *node, int level, NodeList *parent) {
+ if (level) {
+diff -uNr firebird-1.5.1.4481-orig/src/common/classes/vector.h firebird-1.5.1.4481/src/common/classes/vector.h
+--- firebird-1.5.1.4481-orig/src/common/classes/vector.h 2002-12-14 21:43:18.000000000 +0000
++++ firebird-1.5.1.4481/src/common/classes/vector.h 2004-09-12 11:23:25.422282152 +0000
+@@ -100,17 +100,17 @@
+ public:
+ SortedVector() : Vector<Value, Capacity>() {}
+ bool find(const Key& item, int& pos) {
+- int highBound=count, lowBound=0;
++ int highBound=Vector<Value, Capacity>::count, lowBound=0;
+ while (highBound > lowBound) {
+ int temp = (highBound + lowBound) >> 1;
+- if (Cmp::compare(item, KeyOfValue::generate(this,data[temp])))
++ if (Cmp::compare(item, KeyOfValue::generate(this,Vector<Value, Capacity>::data[temp])))
+ lowBound = temp+1;
+ else
+ highBound = temp;
+ }
+ pos = lowBound;
+- return highBound != count &&
+- !Cmp::compare(KeyOfValue::generate(this,data[lowBound]), item);
++ return highBound != Vector<Value, Capacity>::count &&
++ !Cmp::compare(KeyOfValue::generate(this,Vector<Value, Capacity>::data[lowBound]), item);
+ }
+ int add(const Value& item) {
+ int pos;
diff --git a/dev-db/firebird/firebird-1.5.1.ebuild b/dev-db/firebird/firebird-1.5.1.ebuild
index 609b04d3faa5..d5ad83826bab 100644
--- a/dev-db/firebird/firebird-1.5.1.ebuild
+++ b/dev-db/firebird/firebird-1.5.1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-db/firebird/firebird-1.5.1.ebuild,v 1.3 2004/09/08 15:12:46 gustavoz Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-db/firebird/firebird-1.5.1.ebuild,v 1.4 2004/09/13 11:23:35 sekretarz Exp $
inherit flag-o-matic eutils
@@ -20,6 +20,13 @@ DEPEND="virtual/libc
S=${WORKDIR}/${P}.${extra_ver}
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch ${FILESDIR}/${P}-gcc34.patch
+}
+
pkg_setup() {
enewgroup firebird 450
enewuser firebird 450 /bin/bash /opt/firebird firebird