Hello community, here is the log from the commit of package firebird for openSUSE:Factory checked in at 2012-04-20 15:13:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/firebird (Old) and /work/SRC/openSUSE:Factory/.firebird.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "firebird", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:Factory/firebird/firebird.changes 2011-12-07 14:37:40.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.firebird.new/firebird.changes 2012-04-20 15:13:43.000000000 +0200 @@ -1,0 +2,16 @@ +Mon Apr 16 12:23:03 UTC 2012 - aj@suse.de + +- Remove merged patch Firebird-edit_fix.diff. + +------------------------------------------------------------------- +Thu Mar 15 19:04:47 UTC 2012 - dimstar@opensuse.org + +- Add firebird-gcc47.patch: Fix build with gcc 4.7. + +------------------------------------------------------------------- +Wed Jan 4 12:31:00 UTC 2012 - renda.krell@gmail.com +- new upstream version (2.1.4.18393.0) +- Remove Firebird-edit_fix.diff +- Added gcc-4.5.patch + +------------------------------------------------------------------- Old: ---- Firebird-2.1.3.18185-0.tar.bz2 Firebird-edit_fix.diff New: ---- Firebird-2.1.4.18393-0.tar.bz2 firebird-gcc47.patch gcc-4.5.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ firebird.spec ++++++ --- /var/tmp/diff_new_pack.3O6NCO/_old 2012-04-20 15:13:47.000000000 +0200 +++ /var/tmp/diff_new_pack.3O6NCO/_new 2012-04-20 15:13:47.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package firebird # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,18 +16,18 @@ # -%global pkgname Firebird-2.1.3.18185-0 +%global pkgname Firebird-2.1.4.18393-0 %global fbroot %{_libdir}/%{name} -%global major 2.1.3 +%global major 2.1.4 %define libfbclient libfbclient2 %define libfbembed libfbembed2 Summary: SQL relational database management system +License: Interbase +Group: Productivity/Databases/Servers Name: firebird -Version: 2.1.3.18185.0 -Release: 1 -Group: Productivity/Databases/Servers -License: Interbase +Version: 2.1.4.18393.0 +Release: 0 Url: http://www.firebirdsql.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: http://downloads.sourceforge.net/firebird/%{pkgname}.tar.bz2 @@ -36,17 +36,18 @@ Source5: 01_firebird Source6: firebird.conf Patch0: firebird-mcpu-to-mtune.patch -Patch1: Firebird-edit_fix.diff -Patch2: firebird-gcc-warnings-fixes.patch -Patch3: firebird_lock-file-location.patch -Patch4: firebird-gcc-icu.patch +Patch1: firebird-gcc-warnings-fixes.patch +Patch2: firebird_lock-file-location.patch +Patch3: firebird-gcc-icu.patch +Patch4: gcc-4.5.patch +Patch5: firebird-gcc47.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bison -BuildRequires: libtool -BuildRequires: ncurses-devel BuildRequires: gcc-c++ BuildRequires: libicu-devel +BuildRequires: libtool +BuildRequires: ncurses-devel BuildRequires: xinetd Provides: %{name}-server-common Obsoletes: %{name}-server-common < %{version} @@ -64,7 +65,6 @@ firebird-superserver. You will need this if you want to use either one. %package doc -License: Interbase Summary: Documentation for Firebird SQL RDBMS Group: Applications/Databases @@ -72,7 +72,6 @@ This are the Firebird SQL Database shared doc and examples files. %package filesystem -License: Interbase Summary: Filesystem for Firebird SQL RDBMS Group: Applications/Databases @@ -80,7 +79,6 @@ This is the Firebird SQL Database root file system. %package devel -License: Interbase Summary: Development Libraries for Firebird Group: Development/Databases Requires: %libfbclient = %{version} @@ -90,12 +88,11 @@ Development libraries for Firebird SQL RDBMS. %package classic -License: Interbase Summary: Classic (xinetd) server for Firebird SQL RDBMS Group: Applications/Databases Provides: %{name}-arch = %{version}-%{release} -Requires: xinetd Requires: %{name} = %{version} +Requires: xinetd Conflicts: %{name}-superserver Requires: %libfbembed = %{version} Provides: %{name}-utils-classic @@ -111,7 +108,6 @@ client-embedded package. %package superserver -License: Interbase Summary: Superserver server for Firebird SQL RDBMS Group: Applications/Databases Provides: %{name}-arch = %{version}-%{release} @@ -128,7 +124,6 @@ %package -n libfbclient2 -License: Interbase Summary: Multi-threaded client libraries for Firebird SQL RDBMS Group: System Environment/Libraries Requires(post): /sbin/ldconfig @@ -140,7 +135,6 @@ %package -n libfbembed2 -License: Interbase Summary: Multi-process client libraries for Firebird SQL RDBMS Group: System Environment/Libraries Requires(post): /sbin/ldconfig @@ -161,6 +155,7 @@ %patch2 %patch3 %patch4 +%patch5 -p1 %build # <mrl> For reference, the proccess fb_lock_mgr that keeps executing after ++++++ Firebird-2.1.3.18185-0.tar.bz2 -> Firebird-2.1.4.18393-0.tar.bz2 ++++++ /work/SRC/openSUSE:Factory/firebird/Firebird-2.1.3.18185-0.tar.bz2 /work/SRC/openSUSE:Factory/.firebird.new/Firebird-2.1.4.18393-0.tar.bz2 differ: char 11, line 1 ++++++ firebird-gcc47.patch ++++++ 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 <class SLEUTHTYPE> -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 <class SLEUTHTYPE> -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 <class SLEUTHTYPE> static bool SLEUTH_AUX( Jrd::TextType* obj, @@ -472,57 +370,163 @@ static bool SLEUTH_AUX( } + template <class SLEUTHTYPE> -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 <class SLEUTHTYPE> +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 { ++++++ gcc-4.5.patch ++++++ --- src/jrd/scl.epp +++ src/jrd/scl.epp @@ -141,7 +141,7 @@ void SCL_check_access(thread_db* tdbb, { 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); } -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org