diff --git a/Firebird-2.1.2.18118.0-doc.patch b/Firebird-2.1.2.18118.0-doc.patch new file mode 100644 index 0000000..0d6d398 --- /dev/null +++ b/Firebird-2.1.2.18118.0-doc.patch @@ -0,0 +1,35 @@ +diff -Nru Firebird-2.1.2.18118-0/doc/sql.extensions/README.expression_indices Firebird-2.1.2.18118-0/doc/sql.extensions-gil/README.expression_indices +--- Firebird-2.1.2.18118-0/doc/sql.extensions/README.expression_indices 2005-01-28 15:07:11.000000000 +0100 ++++ Firebird-2.1.2.18118-0/doc/sql.extensions-gil/README.expression_indices 2009-05-12 20:31:04.000000000 +0200 +@@ -19,7 +19,7 @@ + + Example(s): + 1. CREATE INDEX IDX1 ON T1 COMPUTED BY ( UPPER(COL1 COLLATE PXW_CYRL) ); +- SELECT * FROM T1 WHERE UPPER(COL1 COLLATE PXW_CYRL) = 'ÔÛÂÀ' ++ SELECT * FROM T1 WHERE UPPER(COL1 COLLATE PXW_CYRL) = '' + -- PLAN (T1 INDEX (IDX1)) + 2. CREATE INDEX IDX2 ON T2 COMPUTED BY ( EXTRACT(YEAR FROM COL2) || EXTRACT(MONTH FROM COL2) ); + SELECT * FROM T2 ORDER BY EXTRACT(YEAR FROM COL2) || EXTRACT(MONTH FROM COL2) +diff -Nru Firebird-2.1.2.18118-0/doc/sql.extensions/README.global_temporary_tables Firebird-2.1.2.18118-0/doc/sql.extensions-gil/README.global_temporary_tables +--- Firebird-2.1.2.18118-0/doc/sql.extensions/README.global_temporary_tables 2007-03-15 10:35:57.000000000 +0100 ++++ Firebird-2.1.2.18118-0/doc/sql.extensions-gil/README.global_temporary_tables 2009-05-12 20:29:49.000000000 +0200 +@@ -67,11 +67,12 @@ + garbage collection of deleted record versions. DELETE triggers are not fired in + this case. + +- Data and index pages of all of the GTT’s instances are placed in separate temporary +-file’s. Each connection has its own temporary file created when this connection +-first referenced some GTT. Also these temporary files are always opened with “Forced +-Writes = OFF” setting despite of database setting. ++ Data and index pages of all of the GTTs instances are placed in separate temporary ++files. Each connection has its own temporary file created when this connection ++first referenced some GTT. Also these temporary files are always opened with "Forced ++Writes = OFF" setting despite of database setting. ++ + + There's no limit on number of GTT instances. If you have N transactions +-active simultaneously and each transaction has referenced some GTT then you’ll +-have N GTT’s instances. ++active simultaneously and each transaction has referenced some GTT then you'll ++have N GTTs instances. +\ No newline at end of file diff --git a/Firebird-2.1.2.18118.0-lock-file-location.patch b/Firebird-2.1.2.18118.0-lock-file-location.patch new file mode 100644 index 0000000..ccf1bcd --- /dev/null +++ b/Firebird-2.1.2.18118.0-lock-file-location.patch @@ -0,0 +1,48 @@ +diff -Nru Firebird-2.1.2.18118-0/configure.in Firebird-2.1.2.18118-0-gil/configure.in +--- Firebird-2.1.2.18118-0/configure.in 2008-12-12 14:28:32.000000000 +0100 ++++ Firebird-2.1.2.18118-0-gil/configure.in 2009-05-12 20:42:06.000000000 +0200 +@@ -940,6 +940,7 @@ + mkdir -p gen/firebird/lib + mkdir -p gen/firebird/misc + mkdir -p gen/firebird/help ++mkdir -p gen/firebird/run + + dnl #### TEMP ######### directories for .o and .d + dnl # by module name +diff -Nru Firebird-2.1.2.18118-0/src/jrd/file_params.h Firebird-2.1.2.18118-0-gil/src/jrd/file_params.h +--- Firebird-2.1.2.18118-0/src/jrd/file_params.h 2007-02-11 10:03:57.000000000 +0100 ++++ Firebird-2.1.2.18118-0-gil/src/jrd/file_params.h 2009-05-12 20:44:00.000000000 +0200 +@@ -38,11 +38,11 @@ + const int EVENT_SEMAPHORES = 1; + + #ifdef NOHOSTNAME +-static const char* EVENT_FILE = "isc_event1"; +-static const char* LOCK_FILE = "isc_lock1.gbl"; +-static const char* INIT_FILE = "isc_init1"; +-static const char* GUARD_FILE = "isc_guard1"; +-static const char* MONITOR_FILE = "isc_monitor1"; ++static const char* EVENT_FILE = "run/isc_event1"; ++static const char* LOCK_FILE = "run/isc_lock1.gbl"; ++static const char* INIT_FILE = "run/isc_init1"; ++static const char* GUARD_FILE = "run/isc_guard1"; ++static const char* MONITOR_FILE = "run/isc_monitor1"; + #elif defined(VMS) + static const char* EVENT_FILE = "[000000]isc_event1.%s"; + static const char* LOCK_FILE = "[000000]isc_lock1.%s"; +@@ -56,11 +56,11 @@ + static const char* GUARD_FILE = "%s.grd"; + static const char* MONITOR_FILE = "%s.mon"; + #else +-static const char* EVENT_FILE = "isc_event1.%s"; +-static const char* LOCK_FILE = "isc_lock1.%s"; +-static const char* INIT_FILE = "isc_init1.%s"; +-static const char* GUARD_FILE = "isc_guard1.%s"; +-static const char* MONITOR_FILE = "isc_monitor1.%s"; ++static const char* EVENT_FILE = "run/isc_event1.%s"; ++static const char* LOCK_FILE = "run/isc_lock1.%s"; ++static const char* INIT_FILE = "run/isc_init1.%s"; ++static const char* GUARD_FILE = "run/isc_guard1.%s"; ++static const char* MONITOR_FILE = "run/isc_monitor1.%s"; + #endif + + #ifdef sun diff --git a/Firebird-2.1.2.18118.0-logrotate b/Firebird-2.1.2.18118.0-logrotate new file mode 100644 index 0000000..5da6610 --- /dev/null +++ b/Firebird-2.1.2.18118.0-logrotate @@ -0,0 +1,9 @@ +firebird.log { + weekly + missingok + rotate 52 + compress + delaycompress + notifempty + create 640 firebird adm + } diff --git a/Firebird-2.1.2.18118.0-mcpu-to-mtune.patch b/Firebird-2.1.2.18118.0-mcpu-to-mtune.patch new file mode 100644 index 0000000..37f32e8 --- /dev/null +++ b/Firebird-2.1.2.18118.0-mcpu-to-mtune.patch @@ -0,0 +1,11 @@ +--- Firebird-2.1.2.18118-0/builds/posix/prefix.linux 2007-05-03 13:24:50.000000000 +0200 ++++ Firebird-2.1.2.18118-0/builds/posix/prefix.linux-gil 2009-05-12 20:36:07.000000000 +0200 +@@ -22,7 +22,7 @@ + # you may remove it if engine is getting compiled with any other GCC version + + COMMON_FLAGS=-ggdb -DFB_SEND_FLAGS=MSG_NOSIGNAL -DLINUX -pipe -MMD -fPIC -fmessage-length=0 +-OPTIMIZE_FLAGS=-O3 -march=i586 -mcpu=i686 -fno-omit-frame-pointer -fno-builtin ++OPTIMIZE_FLAGS=-O3 -march=i586 -mtune=i686 -fno-omit-frame-pointer -fno-builtin + WARN_FLAGS=-Wall -Wno-switch -Wno-parentheses -Wno-unknown-pragmas -Wno-unused-variable + + PROD_FLAGS=-DNDEBUG $(COMMON_FLAGS) $(OPTIMIZE_FLAGS) diff --git a/Firebird-2.1.2.18118.0-profile.csh b/Firebird-2.1.2.18118.0-profile.csh new file mode 100644 index 0000000..59c076c --- /dev/null +++ b/Firebird-2.1.2.18118.0-profile.csh @@ -0,0 +1 @@ +setenv PATH "${PATH}:__FIRE_DIR__/bin" diff --git a/Firebird-2.1.2.18118.0-profile.sh b/Firebird-2.1.2.18118.0-profile.sh new file mode 100644 index 0000000..e0abb65 --- /dev/null +++ b/Firebird-2.1.2.18118.0-profile.sh @@ -0,0 +1 @@ +export PATH=$PATH:__FIRE_DIR__/bin diff --git a/Firebird-2.1.3.18185-fix-initscript.patch b/Firebird-2.1.3.18185-fix-initscript.patch new file mode 100644 index 0000000..2da98ff --- /dev/null +++ b/Firebird-2.1.3.18185-fix-initscript.patch @@ -0,0 +1,27 @@ +--- builds/install/arch-specific/linux/misc/firebird.init.d.mandrake.in 2009-07-24 12:16:22.000000000 +0200 ++++ builds/install/arch-specific/linux/misc/firebird.init.d.mandrake.in.new 2009-07-28 01:08:16.000000000 +0200 +@@ -1,11 +1,20 @@ + #!/bin/sh + +-# chkconfig: 345 20 80 ++# chkconfig: 345 80 20 + # description: Start/Stop firebird database server + # + # This file belongs in /etc/init.d where it will be run + # on system startup and shutdown to start the background + # Firebird database server daemon ++### BEGIN INIT INFO ++# Provides: firebird ++# Required-Start: $local_fs $syslog ++# Required-Stop: ++# Default-Start: 3 4 5 ++# Default-Stop: 0 1 2 6 ++# Short-Description: Firebird server database ++# Description: Starts and stops the Firebird database server backend daemon. ++### END INIT INFO + + # Source function library - RedHat or Mandriva specific + # functions actually used: checkpid killproc daemon + + + diff --git a/Firebird-2.1.3.18185-gcc-icu.patch b/Firebird-2.1.3.18185-gcc-icu.patch new file mode 100644 index 0000000..09327d8 --- /dev/null +++ b/Firebird-2.1.3.18185-gcc-icu.patch @@ -0,0 +1,32 @@ +# Author: Adriano dos Santos Fernandes +#Index: src/common/classes/alloc.h +#=================================================================== +#RCS file: /cvsroot/firebird/firebird2/src/common/classes/alloc.h,v +#retrieving revision 1.71 +diff -u -p -r1.71 alloc.h +--- src/common/classes/alloc.h 26 Sep 2007 17:48:20 -0000 1.71 ++++ src/common/classes/alloc.h 20 May 2009 02:20:08 -0000 +@@ -47,6 +47,7 @@ + #include /* XPG: prototypes for malloc/free have to be in + stdlib.h (EKU) */ + #endif ++#include + + #ifdef _MSC_VER + #define THROW_BAD_ALLOC +@@ -448,15 +449,6 @@ inline void* operator new[](size_t s) TH + ); + } + +-inline void* operator new(size_t, void* ptr) throw() +-{ +- return ptr; +-} +-inline void* operator new[](size_t, void* ptr) throw() +-{ +- return ptr; +-} +- + inline void operator delete(void* mem) throw() + { + Firebird::MemoryPool::globalFree(mem); diff --git a/README.md b/README.md index c3df476..3b23af8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # firebird +firebird is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. firebird offers excellent concurrency, high performance,and powerful language support for stored procedures and triggers. It has been used in production systems, under a variety of names, since 1981. +The firebird Project is a commercially independent project of C and C++ programmers, technical advisors and supporters developing and enhancing a multi-platform relational database management system based on the source code released by Inprise Corp (now known as Borland Software Corp) on 25 July, 2000. + diff --git a/firebird-2.1.4-gcc-4.7.patch b/firebird-2.1.4-gcc-4.7.patch new file mode 100644 index 0000000..68858e5 --- /dev/null +++ b/firebird-2.1.4-gcc-4.7.patch @@ -0,0 +1,432 @@ +Index: Firebird-2.1.4.18393-0/src/common/classes/array.h +=================================================================== +--- Firebird-2.1.4.18393-0.orig/src/common/classes/array.h ++++ Firebird-2.1.4.18393-0/src/common/classes/array.h +@@ -347,7 +347,7 @@ public: + size_t add(const Value& item) { + size_t pos; + find(KeyOfValue::generate(this, item), pos); +- insert(pos, item); ++ this->insert(pos, item); + return pos; + } + }; +Index: Firebird-2.1.4.18393-0/src/common/classes/stack.h +=================================================================== +--- Firebird-2.1.4.18393-0.orig/src/common/classes/stack.h ++++ Firebird-2.1.4.18393-0/src/common/classes/stack.h +@@ -48,7 +48,7 @@ namespace Firebird { + Entry(Object e, Entry* stk) + : inherited(), next(stk) + { +- add(e); ++ this->add(e); + } + + Entry(Entry* stk) : inherited(), next(stk) { } +@@ -62,7 +62,7 @@ namespace Firebird { + { + if (inherited::getCount() < this->getCapacity()) + { +- add(e); ++ this->add(e); + return this; + } + Entry* newEntry = FB_NEW(p) Entry(e, this); +Index: Firebird-2.1.4.18393-0/src/common/classes/vector.h +=================================================================== +--- Firebird-2.1.4.18393-0.orig/src/common/classes/vector.h ++++ Firebird-2.1.4.18393-0/src/common/classes/vector.h +@@ -135,7 +135,7 @@ public: + size_t add(const Value& item) { + size_t pos; + find(KeyOfValue::generate(this, item), pos); +- insert(pos, item); ++ this->insert(pos, item); + return pos; + } + }; +Index: Firebird-2.1.4.18393-0/src/jrd/Collation.cpp +=================================================================== +--- Firebird-2.1.4.18393-0.orig/src/jrd/Collation.cpp ++++ Firebird-2.1.4.18393-0/src/jrd/Collation.cpp +@@ -191,157 +191,55 @@ bool MATCHESNAME(Jrd::thread_db* tdbb, J + + + template +-bool SLEUTHNAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj, USHORT flags, +- const SLEUTHTYPE* search, SLONG search_len, +- const SLEUTHTYPE* match, SLONG match_len) +-{ +-/************************************** +- * +- * E V L _ ? ? _ s l e u t h _ c h e c k +- * +- ************************************** +- * +- * Functional description +- * Evaluate the "sleuth" search operator. +- * +- * Turn the (pointer, byte length) input parameters into +- * (pointer, end_pointer) for use in SLEUTH_AUX +- * +- **************************************/ +- fb_assert((match_len % sizeof(SLEUTHTYPE)) == 0); +- fb_assert((search_len % sizeof(SLEUTHTYPE)) == 0); +- fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE)); +- +- const SLEUTHTYPE* const end_match = match + (match_len / sizeof(SLEUTHTYPE)); +- const SLEUTHTYPE* const end_search = search + (search_len / sizeof(SLEUTHTYPE)); +- +- return SLEUTH_AUX(obj, flags, search, end_search, match, end_match); +-} +- +- +-template +-ULONG SLEUTH_MERGE_NAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj, +- const SLEUTHTYPE* match, SLONG match_bytes, +- const SLEUTHTYPE* control, SLONG control_bytes, +- SLEUTHTYPE* combined, SLONG combined_bytes) ++static bool SLEUTH_CLASS_NAME( ++ Jrd::TextType* obj, ++ USHORT flags, ++ const SLEUTHTYPE* char_class, ++ const SLEUTHTYPE* const end_class, ++ SLEUTHTYPE character) + { + /************************************** + * +- * E V L _ ? ? _ s l e u t h _ m e r g e ++ * s l e u t h _ c l a s s + * + ************************************** + * + * Functional description +- * Merge the matching pattern and control strings to give a cannonical +- * matching pattern. Return the length of the combined string. +- * +- * What this routine does is to take the language template, strip off +- * the prefix and put it in the output string, then parse the definitions +- * into an array of character pointers. The index array is the defined +- * character. The routine then takes the actual match pattern and uses +- * the characters in it to index into the definitions to produce an equivalent +- * pattern in the cannonical language. +- * +- * The silly loop setting *v++ to zero initializes the array up to the +- * highest character defined (also max_op). Believe it or not, that part +- * is not a bug. ++ * See if a character is a member of a class. ++ * Japanese version operates on short-based buffer, ++ * instead of SCHAR-based. + * + **************************************/ +- fb_assert(match != NULL); +- fb_assert(control != NULL); +- fb_assert(combined != NULL); +- +- fb_assert((match_bytes % sizeof(SLEUTHTYPE)) == 0); +- fb_assert((control_bytes % sizeof(SLEUTHTYPE)) == 0); ++ fb_assert(char_class != NULL); ++ fb_assert(end_class != NULL); ++ fb_assert(char_class <= end_class); + fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE)); + +- const SLEUTHTYPE* const end_match = match + (match_bytes / sizeof(SLEUTHTYPE)); +- const SLEUTHTYPE* const end_control = control + (control_bytes / sizeof(SLEUTHTYPE)); +- +- SLEUTHTYPE max_op = 0; +- SLEUTHTYPE* comb = combined; +- SLEUTHTYPE* vector[256]; +- SLEUTHTYPE** v = vector; +- SLEUTHTYPE temp[256]; +- SLEUTHTYPE* t = temp; +- +-/* Parse control string into substitution strings and initializing string */ ++ bool result = true; + +- while (control < end_control) { +- SLEUTHTYPE c = *control++; +- if (*control == *(SLEUTHTYPE*)obj->getGdmlSubstituteCanonic()) { +- /* Note: don't allow substitution characters larger than vector */ +- SLEUTHTYPE** const end_vector = +- vector + (((int)c < FB_NELEM(vector)) ? c : 0); +- while (v <= end_vector) +- *v++ = 0; +- *end_vector = t; +- ++control; +- while (control < end_control) { +- c = *control++; +- if ((t > temp && t[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) +- || ((c != *(SLEUTHTYPE*)obj->getGdmlCommaCanonic()) && (c != *(SLEUTHTYPE*)obj->getGdmlRParenCanonic()))) +- { +- *t++ = c; +- } +- else +- break; +- } +- *t++ = 0; +- } +- else if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && control < end_control) +- *comb++ = *control++; +- else if (c == *(SLEUTHTYPE*)obj->getGdmlRParenCanonic()) +- break; +- else if (c != *(SLEUTHTYPE*)obj->getGdmlLParenCanonic()) +- *comb++ = c; ++ if (*char_class == *(SLEUTHTYPE*)obj->getGdmlNotCanonic()) { ++ ++char_class; ++ result = false; + } + +- max_op = v - vector; +- +-/* Interpret matching string, substituting where appropriate */ +- +- while (match < end_match) { +- const SLEUTHTYPE c = *match++; +- +- /* if we've got a defined character, slurp the definition */ +- +- SLEUTHTYPE* p; +- if (c <= max_op && (p = vector[c])) { +- while (*p) +- *comb++ = *p++; +- +- /* if we've got the definition of a quote character, +- slurp the next character too */ +- +- if (comb > combined && comb[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && *match) +- *comb++ = *match++; ++ while (char_class < end_class) { ++ const SLEUTHTYPE c = *char_class++; ++ if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) { ++ if (*char_class++ == character) ++ return true; + } +- +- /* at this point we've got a non-match, but as it might be one of ours, +- quote it. */ +- +- else { +- if ((((size_t) c) < FB_NELEM(special)) && special[c] && +- comb > combined && comb[-1] != *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) +- { +- *comb++ = *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic(); +- } +- *comb++ = c; ++ else if (*char_class == *(SLEUTHTYPE*)obj->getGdmlRangeCanonic()) { ++ char_class += 2; ++ if (character >= c && character <= char_class[-1]) ++ return result; + } ++ else if (character == c) ++ return result; + } + +-/* Put in trailing stuff */ +- +- while (control < end_control) +- *comb++ = *control++; +- +- /* YYY - need to add code watching for overflow of combined */ +- +- return (comb - combined) * sizeof(SLEUTHTYPE); ++ return !result; + } + +- + template + static bool SLEUTH_AUX( + Jrd::TextType* obj, +@@ -472,57 +370,163 @@ static bool SLEUTH_AUX( + } + + ++ + template +-static bool SLEUTH_CLASS_NAME( +- Jrd::TextType* obj, +- USHORT flags, +- const SLEUTHTYPE* char_class, +- const SLEUTHTYPE* const end_class, +- SLEUTHTYPE character) ++bool SLEUTHNAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj, USHORT flags, ++ const SLEUTHTYPE* search, SLONG search_len, ++ const SLEUTHTYPE* match, SLONG match_len) + { + /************************************** + * +- * s l e u t h _ c l a s s ++ * E V L _ ? ? _ s l e u t h _ c h e c k + * + ************************************** + * + * Functional description +- * See if a character is a member of a class. +- * Japanese version operates on short-based buffer, +- * instead of SCHAR-based. ++ * Evaluate the "sleuth" search operator. ++ * ++ * Turn the (pointer, byte length) input parameters into ++ * (pointer, end_pointer) for use in SLEUTH_AUX + * + **************************************/ +- fb_assert(char_class != NULL); +- fb_assert(end_class != NULL); +- fb_assert(char_class <= end_class); ++ fb_assert((match_len % sizeof(SLEUTHTYPE)) == 0); ++ fb_assert((search_len % sizeof(SLEUTHTYPE)) == 0); + fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE)); + +- bool result = true; ++ const SLEUTHTYPE* const end_match = match + (match_len / sizeof(SLEUTHTYPE)); ++ const SLEUTHTYPE* const end_search = search + (search_len / sizeof(SLEUTHTYPE)); + +- if (*char_class == *(SLEUTHTYPE*)obj->getGdmlNotCanonic()) { +- ++char_class; +- result = false; ++ return SLEUTH_AUX(obj, flags, search, end_search, match, end_match); ++} ++ ++ ++template ++ULONG SLEUTH_MERGE_NAME(Jrd::thread_db* tdbb_dummy, Jrd::TextType* obj, ++ const SLEUTHTYPE* match, SLONG match_bytes, ++ const SLEUTHTYPE* control, SLONG control_bytes, ++ SLEUTHTYPE* combined, SLONG combined_bytes) ++{ ++/************************************** ++ * ++ * E V L _ ? ? _ s l e u t h _ m e r g e ++ * ++ ************************************** ++ * ++ * Functional description ++ * Merge the matching pattern and control strings to give a cannonical ++ * matching pattern. Return the length of the combined string. ++ * ++ * What this routine does is to take the language template, strip off ++ * the prefix and put it in the output string, then parse the definitions ++ * into an array of character pointers. The index array is the defined ++ * character. The routine then takes the actual match pattern and uses ++ * the characters in it to index into the definitions to produce an equivalent ++ * pattern in the cannonical language. ++ * ++ * The silly loop setting *v++ to zero initializes the array up to the ++ * highest character defined (also max_op). Believe it or not, that part ++ * is not a bug. ++ * ++ **************************************/ ++ fb_assert(match != NULL); ++ fb_assert(control != NULL); ++ fb_assert(combined != NULL); ++ ++ fb_assert((match_bytes % sizeof(SLEUTHTYPE)) == 0); ++ fb_assert((control_bytes % sizeof(SLEUTHTYPE)) == 0); ++ fb_assert(obj->getCanonicalWidth() == sizeof(SLEUTHTYPE)); ++ ++ const SLEUTHTYPE* const end_match = match + (match_bytes / sizeof(SLEUTHTYPE)); ++ const SLEUTHTYPE* const end_control = control + (control_bytes / sizeof(SLEUTHTYPE)); ++ ++ SLEUTHTYPE max_op = 0; ++ SLEUTHTYPE* comb = combined; ++ SLEUTHTYPE* vector[256]; ++ SLEUTHTYPE** v = vector; ++ SLEUTHTYPE temp[256]; ++ SLEUTHTYPE* t = temp; ++ ++/* Parse control string into substitution strings and initializing string */ ++ ++ while (control < end_control) { ++ SLEUTHTYPE c = *control++; ++ if (*control == *(SLEUTHTYPE*)obj->getGdmlSubstituteCanonic()) { ++ /* Note: don't allow substitution characters larger than vector */ ++ SLEUTHTYPE** const end_vector = ++ vector + (((int)c < FB_NELEM(vector)) ? c : 0); ++ while (v <= end_vector) ++ *v++ = 0; ++ *end_vector = t; ++ ++control; ++ while (control < end_control) { ++ c = *control++; ++ if ((t > temp && t[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) ++ || ((c != *(SLEUTHTYPE*)obj->getGdmlCommaCanonic()) && (c != *(SLEUTHTYPE*)obj->getGdmlRParenCanonic()))) ++ { ++ *t++ = c; ++ } ++ else ++ break; ++ } ++ *t++ = 0; ++ } ++ else if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && control < end_control) ++ *comb++ = *control++; ++ else if (c == *(SLEUTHTYPE*)obj->getGdmlRParenCanonic()) ++ break; ++ else if (c != *(SLEUTHTYPE*)obj->getGdmlLParenCanonic()) ++ *comb++ = c; + } + +- while (char_class < end_class) { +- const SLEUTHTYPE c = *char_class++; +- if (c == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) { +- if (*char_class++ == character) +- return true; ++ max_op = v - vector; ++ ++/* Interpret matching string, substituting where appropriate */ ++ ++ while (match < end_match) { ++ const SLEUTHTYPE c = *match++; ++ ++ /* if we've got a defined character, slurp the definition */ ++ ++ SLEUTHTYPE* p; ++ if (c <= max_op && (p = vector[c])) { ++ while (*p) ++ *comb++ = *p++; ++ ++ /* if we've got the definition of a quote character, ++ slurp the next character too */ ++ ++ if (comb > combined && comb[-1] == *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic() && *match) ++ *comb++ = *match++; + } +- else if (*char_class == *(SLEUTHTYPE*)obj->getGdmlRangeCanonic()) { +- char_class += 2; +- if (character >= c && character <= char_class[-1]) +- return result; ++ ++ /* at this point we've got a non-match, but as it might be one of ours, ++ quote it. */ ++ ++ else { ++ if ((((size_t) c) < FB_NELEM(special)) && special[c] && ++ comb > combined && comb[-1] != *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic()) ++ { ++ *comb++ = *(SLEUTHTYPE*)obj->getGdmlQuoteCanonic(); ++ } ++ *comb++ = c; + } +- else if (character == c) +- return result; + } + +- return !result; ++/* Put in trailing stuff */ ++ ++ while (control < end_control) ++ *comb++ = *control++; ++ ++ /* YYY - need to add code watching for overflow of combined */ ++ ++ return (comb - combined) * sizeof(SLEUTHTYPE); + } + + ++ ++ ++ ++ + // Below are templates for functions used in Collation implementation + + class NullStrConverter { \ No newline at end of file diff --git a/firebird-2.1.4.18393-gcc45.patch b/firebird-2.1.4.18393-gcc45.patch new file mode 100644 index 0000000..729e319 --- /dev/null +++ b/firebird-2.1.4.18393-gcc45.patch @@ -0,0 +1,11 @@ +--- Firebird-2.1.4.18393-0/src/jrd/scl.epp.orig 2011-04-08 17:43:58.038668578 +0200 ++++ Firebird-2.1.4.18393-0/src/jrd/scl.epp 2011-04-08 17:43:11.594901756 +0200 +@@ -141,7 +141,7 @@ + { + ERR_post(isc_no_priv, isc_arg_string, "(ACL unrecognized)", + isc_arg_string, "security_class", +- isc_arg_string, s_class->scl_name, ++ isc_arg_string, s_class->scl_name.c_str(), + isc_arg_end); + } + diff --git a/firebird-2.1.5-system-icu.patch b/firebird-2.1.5-system-icu.patch new file mode 100644 index 0000000..098e62a --- /dev/null +++ b/firebird-2.1.5-system-icu.patch @@ -0,0 +1,24 @@ +diff -Nru Firebird-2.1.5.18496-0.orig/builds/install/arch-specific/linux/classic/makeInstallImage.sh.in Firebird-2.1.5.18496-0/builds/install/arch-specific/linux/classic/makeInstallImage.sh.in +--- Firebird-2.1.5.18496-0.orig/builds/install/arch-specific/linux/classic/makeInstallImage.sh.in 2012-06-20 09:57:20.000000000 +0200 ++++ Firebird-2.1.5.18496-0/builds/install/arch-specific/linux/classic/makeInstallImage.sh.in 2012-10-06 19:19:34.189415759 +0200 +@@ -196,8 +196,6 @@ + # cp -f $BuiltFBDir/lib/gds.a @libdir@/libgds.a + cp -f $BuiltFBDir/lib/libib_util.so $DestDir/lib/libib_util.so + +- cp -df $BuiltFBDir/lib/libicu*.so* $DestDir/lib/ +- + cp $BuiltFBDir/intl/libfbintl.so $DestDir/intl/fbintl + cp $BuiltFBDir/UDF/ib_udf.so $DestDir/UDF/ + cp $BuiltFBDir/UDF/fbudf.so $DestDir/UDF/ +diff -Nru Firebird-2.1.5.18496-0.orig/builds/install/arch-specific/linux/super/makeInstallImage.sh.in Firebird-2.1.5.18496-0/builds/install/arch-specific/linux/super/makeInstallImage.sh.in +--- Firebird-2.1.5.18496-0.orig/builds/install/arch-specific/linux/super/makeInstallImage.sh.in 2012-06-20 09:57:20.000000000 +0200 ++++ Firebird-2.1.5.18496-0/builds/install/arch-specific/linux/super/makeInstallImage.sh.in 2012-10-06 19:19:20.420545660 +0200 +@@ -182,8 +182,6 @@ + cp -df $BuiltFBDir/lib/libfbclient.so* $DestDir/lib + cp -f $BuiltFBDir/lib/libib_util.so $DestDir/lib/libib_util.so + +- cp -df $BuiltFBDir/lib/libicu*.so* $DestDir/lib/ +- + cp $BuiltFBDir/intl/libfbintl.so $DestDir/intl/fbintl + cp $BuiltFBDir/UDF/ib_udf.so $DestDir/UDF/ + cp $BuiltFBDir/UDF/fbudf.so $DestDir/UDF/ diff --git a/firebird-2.5.2.26540-makeInstallImage-noroot.patch b/firebird-2.5.2.26540-makeInstallImage-noroot.patch new file mode 100644 index 0000000..75db0ba --- /dev/null +++ b/firebird-2.5.2.26540-makeInstallImage-noroot.patch @@ -0,0 +1,141 @@ +--- Firebird-2.5.2.26540-0/builds/install/arch-specific/linux/misc/makeInstallImage.sh.in.orig 2013-06-27 13:14:33.562335793 +0200 ++++ Firebird-2.5.2.26540-0/builds/install/arch-specific/linux/misc/makeInstallImage.sh.in 2013-06-27 13:15:27.325808333 +0200 +@@ -28,11 +28,6 @@ + # This script builds an image of the installed system into + # the gen/buildroot directory. + +-if [ "`whoami`" != "root" ]; then +- echo 'You must be root to build package' +- exit 1 +-fi +- + # Making an assumption that this program is being run in the gen directory + BuildRootDir=.. + BuiltFBDir=./firebird # Where the just build fb exists. +@@ -118,7 +113,6 @@ + for d in $Dirs; do + Dir=${TargetDir}${d} + mkdir -p $Dir +- chown root:root $Dir + chmod 0755 $Dir + done + } +@@ -163,7 +157,6 @@ + cp $BuiltFBDir/bin/isql ${TargetDir}@FB_BINDIR@/isql + cp $BuiltFBDir/bin/qli ${TargetDir}@FB_BINDIR@/qli + +- chown root:root ${TargetDir}@FB_BINDIR@/* + chmod 0755 ${TargetDir}@FB_BINDIR@/* + + #sbin +@@ -182,7 +175,6 @@ + cp $BuiltFBDir/bin/createAliasDB.sh ${TargetDir}@FB_SBINDIR@ + cp $BuiltFBDir/bin/fb_config ${TargetDir}@FB_SBINDIR@ + +- chown root:root ${TargetDir}@FB_SBINDIR@/* + chmod 0755 ${TargetDir}@FB_SBINDIR@/* + chmod 0700 ${TargetDir}@FB_SBINDIR@/*.sh + +@@ -206,19 +198,16 @@ + + for i in `find ${TargetDir}@FB_SAMPLEDIR@ -type d -print` + do +- chown root:root $i + chmod 0555 $i + done + for i in `find ${TargetDir}@FB_SAMPLEDIR@ -type f -print` + do +- chown root:root $i + chmod 0444 $i + done + + makeDirs @FB_SAMPLEDBDIR@ + cp $BuiltFBDir/examples/empbuild/*.fdb ${TargetDir}@FB_SAMPLEDBDIR@ + +- chown root:root ${TargetDir}@FB_SAMPLEDBDIR@/*.fdb + chmod 0444 ${TargetDir}@FB_SAMPLEDBDIR@/*.fdb + fi + +@@ -226,13 +215,11 @@ + copyIfExists $BuiltFBDir/help/help.gbak ${TargetDir}@FB_HELPDIR@ + cp $BuiltFBDir/help/help.fdb ${TargetDir}@FB_HELPDIR@ + +- chown root:root ${TargetDir}@FB_HELPDIR@/*.fdb + chmod 0444 ${TargetDir}@FB_HELPDIR@/*.fdb + + #message file + cp $BuiltFBDir/*.msg ${TargetDir}@FB_MSGDIR@ + +- chown root:root ${TargetDir}@FB_MSGDIR@/*.msg + chmod 0444 ${TargetDir}@FB_MSGDIR@/*.msg + + #secureDB (access rights will be set at install time) +@@ -241,7 +228,6 @@ + #.h files + cp $BuiltFBDir/include/*.h ${TargetDir}@FB_INCDIR@ + +- chown root:root ${TargetDir}@FB_INCDIR@/*.h + chmod 0444 ${TargetDir}@FB_INCDIR@/*.h + + #lib +@@ -250,20 +236,17 @@ + cp -f $BuiltFBDir/lib/libib_util.so ${TargetDir}@FB_LIBDIR@/libib_util.so + copyIfExists $BuiltFBDir/lib/libicu*.so* ${TargetDir}@FB_LIBDIR@ + +- chown root:root ${TargetDir}@FB_LIBDIR@/*.so* + chmod 0755 ${TargetDir}@FB_LIBDIR@/*.so* + + #plugins + cp -df $BuiltFBDir/plugins/* ${TargetDir}@FB_PLUGDIR@ + +- chown root:root ${TargetDir}@FB_PLUGDIR@/*.so* + chmod 0755 ${TargetDir}@FB_PLUGDIR@/*.so* + + #intl + cp $BuiltFBDir/intl/libfbintl.so ${TargetDir}@FB_INTLDIR@/fbintl + cp $BuildRootDir/gen/install/misc/fbintl.conf ${TargetDir}@FB_INTLDIR@ + +- chown root:root ${TargetDir}@FB_INTLDIR@/fbintl* + chmod 0755 ${TargetDir}@FB_INTLDIR@/fbintl + chmod 0644 ${TargetDir}@FB_INTLDIR@/fbintl.conf + +@@ -276,7 +259,6 @@ + cp $BuildRootDir/src/extlib/ib_udf2.sql ${TargetDir}@FB_UDFDIR@ + cp $BuildRootDir/src/extlib/fbudf/fbudf.sql ${TargetDir}@FB_UDFDIR@ + +- chown root:root ${TargetDir}@FB_UDFDIR@/*.so ${TargetDir}@FB_UDFDIR@/*.sql + chmod 0755 ${TargetDir}@FB_UDFDIR@/*.so + chmod 0644 ${TargetDir}@FB_UDFDIR@/*.sql + +@@ -287,9 +269,7 @@ + cp $BuildRootDir/doc/WhatsNew ${TargetDir}@FB_CONFDIR@/WhatsNew + cp $BuildRootDir/doc/README.user ${TargetDir}@FB_CONFDIR@/README + +- chown -R root:root ${TargetDir}@FB_MISCDIR@ + for i in `find ${TargetDir}@FB_MISCDIR@ -print`; do +- chown root:root $i + if [ -d $i ]; then + chmod 0755 $i + else +@@ -306,7 +286,6 @@ + cp $BuildRootDir/gen/install/misc/firebird.init.d.* ${TargetDir}@FB_MISCDIR@ + cp $BuildRootDir/gen/install/misc/rc.config.firebird ${TargetDir}@FB_MISCDIR@ + +- chown -R root:root ${TargetDir}@FB_MISCDIR@ + chmod -R go-rwx ${TargetDir}@FB_MISCDIR@ + + #conf +@@ -314,13 +293,11 @@ + cp $BuildRootDir/gen/install/misc/aliases.conf ${TargetDir}@FB_CONFDIR@ + cp $BuildRootDir/gen/install/misc/fbtrace.conf ${TargetDir}@FB_CONFDIR@ + +- chown root:root ${TargetDir}@FB_CONFDIR@/*.conf + chmod 0644 ${TargetDir}@FB_CONFDIR@/*.conf + + #license + cp $BuildRootDir/builds/install/misc/*License.txt ${TargetDir}@FB_CONFDIR@ + +- chown root:root ${TargetDir}@FB_CONFDIR@/*License.txt + chmod 0444 ${TargetDir}@FB_CONFDIR@/*License.txt + + # Create links from @libdir@ to install area. diff --git a/firebird.spec b/firebird.spec new file mode 100644 index 0000000..70d1679 --- /dev/null +++ b/firebird.spec @@ -0,0 +1,445 @@ +%define groupid 65055 +%define userid 65055 +%define pkg_name %{name}-%{version}-0 +%define major %(echo %version | cut -d. -f 1-3) +%define majver %(echo %version | cut -d. -f 1-2) +Name: firebird +Version: 2.5.2.26540 +Release: 1mamba +Summary: SQL Relational Database +Group: Applications/Databases +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://www.firebirdsql.org/ +Source0: http://downloads.sourceforge.net/project/firebird/firebird/%{major}-Release/Firebird-%{version}-0.tar.bz2 +#Source0: http://downloads.sourceforge.net/project/firebird/firebird/%{majver}-Release/Firebird-%{version}-0.tar.bz2 +Source1: Firebird-2.1.2.18118.0-profile.sh +Source2: Firebird-2.1.2.18118.0-profile.csh +Source3: Firebird-2.1.2.18118.0-logrotate +Patch0: Firebird-2.1.3.18185-fix-initscript.patch +Patch1: Firebird-2.1.2.18118.0-doc.patch +Patch2: Firebird-2.1.2.18118.0-mcpu-to-mtune.patch +Patch3: Firebird-2.1.2.18118.0-lock-file-location.patch +Patch4: Firebird-2.1.3.18185-gcc-icu.patch +Patch5: %{name}-2.1.4.18393-gcc45.patch +Patch6: firebird-2.1.4-gcc-4.7.patch +Patch7: firebird-2.1.5-system-icu.patch +Patch8: firebird-2.5.2.26540-makeInstallImage-noroot.patch +License: MPL 1.1 +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: bison +BuildRequires: libtool +BuildRequires: libtermcap-devel +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libgcc +BuildRequires: libicu-devel +BuildRequires: libncurses-devel +BuildRequires: libstdc++6-devel +## AUTOBUILDREQ-END +Requires: libfbclient-%{name} +Provides: Firebird +Obsoletes: Firebird +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +%{name} is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. %{name} offers excellent concurrency, high performance,and powerful language support for stored procedures and triggers. It has been used in production systems, under a variety of names, since 1981. +The %{name} Project is a commercially independent project of C and C++ programmers, technical advisors and supporters developing and enhancing a multi-platform relational database management system based on the source code released by Inprise Corp (now known as Borland Software Corp) on 25 July, 2000. + +%package classic +Group: Applications/Databases +Summary: Classic (xinetd) server for %{name} SQL RDBMS +Requires: xinetd +Requires: %{name} = %{version}-%{release} +Conflicts: %{name}-superserver +Requires: libfbembed-%{name} = %{version}-%{release} +Provides: Firebird-classic +Obsoletes: Firebird-classic + +%description classic +%{name} is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. + +This is the classic (xinetd) server %{name} SQL RDBMS. It can also be used as an embedded server, when paired with the client-embedded package. + +%package devel +Group: Applications/Databases +Summary: Development Libraries for %{name} SQL RDBMS +Requires: libfbclient-%{name} = %{version}-%{release} +Requires: libfbembed-%{name} = %{version}-%{release} +Provides: Firebird-devel +Obsoletes: Firebird-devel + +%description devel +%{name} is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. + +This package contains development libraries for %{name}. + +%package doc +Group: Documentation +Summary: Documentation for %{name} +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Provides: Firebird-doc +Obsoletes: Firebird-doc + +%description doc +%{name} is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. + +This package contains documentation for %{name}. + +%package -n libfbclient-%{name} +Group: System/Libraries +Summary: Multi-threaded, non-local client libraries for Firebird SQL RDBMS +Provides: libfbclient-Firebird +Obsoletes: libfbclient-Firebird + +%description -n libfbclient-%{name} +%{name} is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. + +This package contains multi-threaded, non-local client libraries for Firebird SQL Database + +%package -n libfbembed-%{name} +Group: System/Libraries +Summary: Multi-process, local client libraries for Firebird SQL RDBMS +Provides: libfbembed-Firebird +Obsoletes: libfbembed-Firebird + +%description -n libfbembed-%{name} +%{name} is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. + +This package contains multi-process, local client libraries for Firebird SQL RDBMS + +%package superserver +Group: Applications/Databases +Summary: Superserver (single process) server for %{name} SQL RDBMS +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Conflicts: %{name}-classic +Provides: Firebird-superserver +Obsoletes: Firebird-superserver + +%description superserver +%{name} is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. + +This is the Superserver (single process) %{name} SQL RDBMS. + + +%prep +#:<< __EOF +[ -e Firebird-%{version}-0 ] && chmod u+w Firebird-%{version}-0/* -R +%setup -q -n Firebird-%{version}-0 +iconv -f ISO-8859-1 -t utf-8 -c doc/README.intl -o doc/README.intl +#%patch0 -p0 +#%patch1 -p1 +#%patch2 -p1 +#%patch3 -p1 +#%patch4 -p0 +#%patch5 -p1 +#%patch6 -p1 +#%patch7 -p1 +%patch8 -p1 + +%build +#:<< __EOF +# build classic +#./autogen.sh +#autoreconf -vfi +autoreconf +%configure \ + --prefix=%{_libdir}/firebird \ + --with-system-icu + +chmod u+w gen/* -R + +# parallel build is broken +make + +cd gen +./install/makeInstallImage.sh +mv ./buildroot buildroot-classic +chmod 644 ./buildroot-classic%{_libdir}/firebird/help/help.fdb +cd .. + +# build superserver +%configure \ + --prefix=%{_libdir}/firebird \ + --enable-superserver \ + --with-system-icu + +# parallel build is broken +make + +cd gen +./install/makeInstallImage.sh +mv ./buildroot/ buildroot-superserver +chmod 644 ./buildroot-superserver%{_libdir}/firebird/help/help.fdb + +%install +install -d %{buildroot} + +chmod u+w gen/* -R +cp -a gen/buildroot-superserver/* %{buildroot}/ +cp -a gen/buildroot-classic/* %{buildroot}/ + +cd %{buildroot} + +mkdir -p %{buildroot}%{_sysconfdir}/firebird +mkdir -p %{buildroot}%{_initrddir} +mkdir -p %{buildroot}%{_sysconfdir}/xinetd.d +mkdir -p %{buildroot}%{_sysconfdir}/profile.d +mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d +mkdir -p %{buildroot}%{_var}/run/firebird +mkdir -p %{buildroot}%{_localstatedir}/lib/firebird/data +mkdir -p %{buildroot}%{_localstatedir}/log/firebird +mkdir -p %{buildroot}%{_includedir}/firebird +mkdir -p %{buildroot}%{_libdir}/firebird/help +mkdir -p %{buildroot}%{_libdir}/firebird/intl +mkdir -p %{buildroot}%{_libdir}/firebird/lib +mkdir -p %{buildroot}%{_libdir}/firebird/include +mkdir -p %{buildroot}%{_libdir}/firebird/bin-classic +mkdir -p %{buildroot}%{_libdir}/firebird/UDF-classic +mkdir -p %{buildroot}%{_libdir}/firebird/bin-superserver +mkdir -p %{buildroot}%{_libdir}/firebird/UDF-superserver +mkdir -p %{buildroot}%{_bindir} + +pushd %{_builddir}/Firebird-%{version}-0/gen + pushd buildroot-classic%{_libdir}/firebird + #cp examples/empbuild/employee.fdb %{buildroot}%{_localstatedir}/lib/firebird/data/employee.fdb + cp help/help.fdb %{buildroot}%{_libdir}/firebird/help/help.fdb + cp *.msg %{buildroot}%{_libdir}/firebird + cp intl/fbintl %{buildroot}%{_libdir}/firebird/intl/fbintl + cp lib/libib_util.so %{buildroot}%{_libdir}/firebird/lib/ + cp lib/libfbclient.so.%{major} %{buildroot}%{_libdir}/firebird/lib/ + cp lib/libfbembed.so.%{major} %{buildroot}%{_libdir}/firebird/lib/ + cp bin/* %{buildroot}%{_libdir}/firebird/bin-classic/ + cp UDF/* %{buildroot}%{_libdir}/firebird/UDF-classic/ + popd + pushd buildroot-superserver%{_libdir}/firebird + cp bin/* %{buildroot}%{_libdir}/firebird/bin-superserver/ + cp UDF/* %{buildroot}%{_libdir}/firebird/UDF-superserver/ + popd +popd + +( + cd %{buildroot}%{_libdir}/firebird/bin-superserver/ + ln -s /fbmgr.bin ./fbmgr +) +#( +# cd %{buildroot}%{_libdir}/firebird/lib/ +# ln -s libfbembed.so.%{major} %{buildroot}%{_libdir}/firebird/lib/libfbembed.so.2.1 +# ln -s libfbembed.so.2.1 %{buildroot}%{_libdir}/firebird/lib/libfbembed.so +# ln -s libfbclient.so.%{major} %{buildroot}%{_libdir}/firebird/lib/libfbclient.so.2 +# ln -s libfbclient.so.2 %{buildroot}%{_libdir}/firebird/lib/libfbclient.so +#) +# +#( +# cd %{buildroot}%{_libdir}/firebird/lib +# ln -s libfbembed.so %{buildroot}%{_libdir}/libfbembed.so +# ln -s libfbembed.so.2.1 %{buildroot}%{_libdir}/libfbembed.so.2.1 +# ln -s libfbembed.so.%{major} %{buildroot}%{_libdir}/libfbembed.so.%{major} +# ln -s libfbclient.so %{buildroot}%{_libdir}/libfbclient.so +# ln -s libfbclient.so.2 %{buildroot}%{_libdir}/libfbclient.so.2 +# ln -s libfbclient.so.%{major} %{buildroot}%{_libdir}/libfbclient.so.%{major} +# ln -s libib_util.so %{buildroot}%{_libdir}/libib_util.so +#) + +echo 1 > %{buildroot}%{_localstatedir}/log/firebird/firebird.log +ln -s %{_localstatedir}/log/firebird/firebird.log %{buildroot}%{_libdir}/firebird/firebird.log +sed "s@firebird.log@%{_localstatedir}/log/firebird/firebird.log@g" %{SOURCE3} > %{buildroot}%{_sysconfdir}/logrotate.d/firebird + + +cp %{_builddir}/Firebird-%{version}-0/gen/buildroot-classic%{_libdir}/firebird/include/* %{buildroot}%{_includedir}/firebird/ + +#( +# cd %{buildroot}%{_includedir}/firebird +# ln -s ibase.h %{buildroot}%{_libdir}/firebird/include/ibase.h +# ln -s iberror.h %{buildroot}%{_libdir}/firebird/include/iberror.h +# ln -s ib_util.h %{buildroot}%{_libdir}/firebird/include/ib_util.h +# ln -s perf.h %{buildroot}%{_libdir}/firebird/include/perf.h +#) +pushd %{_builddir}/Firebird-%{version}-0/gen + cp buildroot-classic%{_libdir}/firebird/aliases.conf %{buildroot}%{_sysconfdir}/firebird/aliases.conf + sed "s@%{_libdir}/firebird/examples/empbuild@%{_localstatedir}/lib/firebird/data@" -i %{buildroot}%{_sysconfdir}/firebird/aliases.conf + cp buildroot-classic%{_libdir}/firebird/firebird.conf %{buildroot}%{_sysconfdir}/firebird/firebird.conf + cp buildroot-classic%{_libdir}/firebird/intl/fbintl.conf %{buildroot}%{_sysconfdir}/firebird/fbintl.conf + cp buildroot-classic%{_libdir}/firebird/security2.fdb %{buildroot}%{_sysconfdir}/firebird/security2.fdb + +# ln -s %{_sysconfdir}/firebird/aliases.conf %{buildroot}%{_libdir}/firebird/aliases.conf +# ln -s %{_sysconfdir}/firebird/firebird.conf %{buildroot}%{_libdir}/firebird/firebird.conf +# ln -s %{_sysconfdir}/firebird/security2.fdb %{buildroot}%{_libdir}/firebird/security2.fdb +# ln -s %{_sysconfdir}/firebird/fbintl.conf %{buildroot}%{_libdir}/firebird/intl/fbintl.conf +popd + +sed "s@__FIRE_DIR__@%{_libdir}/firebird@g" %{SOURCE1} > %{buildroot}%{_sysconfdir}/profile.d/firebird.sh + +pushd %{_builddir}/Firebird-%{version}-0/gen + cp buildroot-classic%{_libdir}/firebird/misc/firebird.xinetd \ + %{buildroot}%{_sysconfdir}/xinetd.d/firebird + cp buildroot-superserver%{_libdir}/firebird/misc/firebird.init.d.mandrake \ + %{buildroot}%{_initrddir}/firebird +popd + +sed "s@chkconfig: 345@chkconfig: -@" -i %{buildroot}%{_initrddir}/firebird +( + cd %{buildroot} + ln -s bin-superserver %{buildroot}%{_libdir}/firebird/bin + ln -s %{_var}/run/firebird %{buildroot}%{_libdir}/firebird/run + ln -s %{_libdir}/firebird/bin/isql %{buildroot}%{_bindir}/fbsql + ln -s %{_libdir}/firebird/bin/gbak %{buildroot}%{_bindir}/gbak + ln -s %{_libdir}/firebird/bin/gfix %{buildroot}%{_bindir}/gfix + ln -s %{_libdir}/firebird/bin/gsec %{buildroot}%{_bindir}/gsec + ln -s %{_libdir}/firebird/bin/nbackup %{buildroot}%{_bindir}/nbackup + ln -s %{_libdir}/firebird/bin/gstat %{buildroot}%{_bindir}/gstat +) + +rm -f %{buildroot}%{_sysconfdir}/profile.d/firebird.csh + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +rm -rf gen + +%pre +if [ $1 -ge 1 ]; then + /usr/sbin/groupadd firebird -g %{groupid} 2>/dev/null + /usr/sbin/useradd -u %{userid} -c 'Firebird user' -d /dev/null -g firebird \ + -s /bin/false firebird 2>/dev/null +fi +exit 0 + +%preun +if [ $1 -eq 0 ]; then + /usr/sbin/userdel firebird 2>/dev/null + /usr/sbin/groupdel firebird 2>/dev/null +fi +exit 0 + +%files +%defattr(-,root,root) +%dir %{_libdir}/firebird +%dir %{_libdir}/firebird/lib +%dir %{_sysconfdir}/firebird +%config(noreplace) %attr(664,firebird,firebird) %{_sysconfdir}/firebird/aliases.conf +%config(noreplace) %attr(664,firebird,firebird) %{_sysconfdir}/firebird/fbintl.conf +%config(noreplace) %attr(664,firebird,firebird) %{_sysconfdir}/firebird/firebird.conf +%config(noreplace) %attr(660,firebird,firebird) %{_sysconfdir}/firebird/security2.fdb +%config(noreplace) %attr(644,root,root) %{_sysconfdir}/logrotate.d/firebird +%attr(755,root,root) %{_sysconfdir}/profile.d/firebird.sh +%dir %{_localstatedir}/log/firebird +%attr(664,firebird,firebird) %{_localstatedir}/log/firebird/firebird.log +%dir %attr(770,firebird,firebird) %{_localstatedir}/lib/firebird/data +#%attr(660,firebird,firebird) %{_localstatedir}/lib/firebird/data/employee.fdb +%attr(755,root,root) %{_bindir}/fbsql +%attr(755,root,root) %{_bindir}/gbak +%attr(755,root,root) %{_bindir}/gfix +%attr(755,root,root) %{_bindir}/gsec +%attr(755,root,root) %{_bindir}/gstat +%attr(755,root,root) %{_bindir}/nbackup +%attr(755,root,root) %{_libdir}/firebird/intl/fbintl +%attr(644,root,root) %{_libdir}/firebird/aliases.conf +%attr(644,root,root) %{_libdir}/firebird/firebird.conf +%attr(644,root,root) %{_libdir}/firebird/intl/fbintl.conf +%attr(644,root,root) %{_libdir}/firebird/firebird.log +%attr(644,root,root) %{_libdir}/firebird/firebird.msg +%attr(644,root,root) %{_libdir}/firebird/help/help.fdb +%attr(644,root,root) %{_libdir}/libib_util.so +%attr(644,root,root) %{_libdir}/firebird/lib/libib_util.so +%attr(660,root,root) %{_libdir}/firebird/security2.fdb +%{_libdir}/firebird/fbtrace.conf +%dir %{_libdir}/firebird/UDF +%{_libdir}/firebird/UDF/fbudf.so +%{_libdir}/firebird/UDF/fbudf.sql +%{_libdir}/firebird/UDF/ib_udf.so +%{_libdir}/firebird/UDF/ib_udf.sql +%{_libdir}/firebird/UDF/ib_udf2.sql +%{_libdir}/firebird/de_DE.msg +%{_libdir}/firebird/fr_FR.msg +%dir %{_libdir}/firebird/misc +%{_libdir}/firebird/misc/* +%{_libdir}/firebird/plugins/libfbtrace.so +%doc ChangeLog doc/license/IDPL.txt +%doc doc/license/README.license.usage.txt + +%files classic +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/xinetd.d/firebird +%dir %{_libdir}/firebird/bin-classic +%dir %{_libdir}/firebird/UDF-classic +%attr(755,root,root) %{_libdir}/firebird/bin-classic/* +%attr(755,root,root) %{_libdir}/firebird/UDF-classic/*.so +%attr(755,root,root) %{_libdir}/firebird/UDF-classic/*.sql +%doc doc/license/IDPL.txt +%doc doc/license/README.license.usage.txt + +%files devel +%defattr(-,root,root) +%dir %{_libdir}/firebird/include +%attr(644,root,root) %{_libdir}/firebird/include/* +%attr(644,root,root) %{_includedir}/* +%attr(644,root,root) %{_libdir}/firebird/lib/libfbclient.so +%attr(644,root,root) %{_libdir}/firebird/lib/libfbembed.so +%attr(644,root,root) %{_libdir}/libfbclient.so +%attr(644,root,root) %{_libdir}/libfbembed.so + +%files doc +%defattr(-,root,root) +%{_libdir}/firebird/IDPLicense.txt +%{_libdir}/firebird/IPLicense.txt +%{_libdir}/firebird/README +%{_libdir}/firebird/WhatsNew +%dir %{_libdir}/firebird/examples +%{_libdir}/firebird/examples/* +%dir %{_libdir}/firebird/doc +%{_libdir}/firebird/doc/* + +%files -n libfbclient-%{name} +%defattr(-,root,root) +%attr(755,root,root) %{_libdir}/libfbclient.so.* +%attr(755,root,root) %{_libdir}/firebird/lib/libfbclient.so.* +%doc doc/license/IDPL.txt +%doc doc/license/README.license.usage.txt + +%files -n libfbembed-%{name} +%defattr(-,root,root) +%attr(755,root,root) %{_libdir}/libfbembed.so.* +%attr(755,root,root) %{_libdir}/firebird/lib/libfbembed.so.* +%doc doc/license/IDPL.txt +%doc doc/license/README.license.usage.txt + +%files superserver +%defattr(-,root,root) +%{_libdir}/firebird/bin +%dir %{_libdir}/firebird/bin-superserver +%dir %{_libdir}/firebird/UDF-superserver +%attr(755,root,root) %{_initrddir}/firebird +%attr(755,root,root) %{_libdir}/firebird/bin-superserver/* +%attr(755,root,root) %{_libdir}/firebird/UDF-superserver/*.so +%attr(644,root,root) %{_libdir}/firebird/UDF-superserver/*.sql +%attr(755,root,root) %{_libdir}/firebird/run +%doc doc/license/IDPL.txt +%doc doc/license/README.license.usage.txt + +%changelog +* Tue Jun 04 2013 Automatic Build System 2.5.2.26540-1mamba +- update to 2.5.2.26540 + +* Fri Sep 21 2012 Automatic Build System 2.1.5.18496-1mamba +- update to 2.1.5.18496 + +* Fri Apr 08 2011 Silvan Calarco 2.1.4.18393-1mamba +- update to 2.1.4.18393 +- removed duplicated csh profile.d script +- renamed from Firebird to firebird +- create firebird user and group as required + +* Wed Jun 30 2010 Automatic Build System 2.1.3.18185-1mamba +- update to 2.1.3.18185 + +* Wed Jun 30 2010 Automatic Build System 2.1.2.18118-3mamba +- automatic rebuild by autodist + +* Wed Jan 13 2010 Silvan Calarco 2.1.2.18118.0-2mamba +- fix symlink to client binaries +- changes to support automatic rebuilds + +* Tue May 12 2009 gil 2.1.2.18118.0-1mamba +- package created by autospec