diff --git a/.gitignore b/.gitignore index 7ae9073..e60ca1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ Firebird-2.1.3.18185-0.RC2.tar.bz2 /Firebird-2.5.0.26074-0.tar.bz2 +/Firebird-2.5.1.26349-0.tar.bz2 diff --git a/firebird-2.5.0-svn-CORE-3447.patch b/firebird-2.5.0-svn-CORE-3447.patch deleted file mode 100644 index a633b61..0000000 --- a/firebird-2.5.0-svn-CORE-3447.patch +++ /dev/null @@ -1,205 +0,0 @@ ---- src/jrd/unicode_util.cpp 2011/04/21 09:50:06 52786 -+++ src/jrd/unicode_util.cpp 2011/04/21 19:57:57 52787 -@@ -61,8 +61,11 @@ - ICU& operator =(const ICU&); // not implemented - - public: -- ICU() -- : inModule(NULL), ucModule(NULL) -+ ICU(int aMajorVersion, int aMinorVersion) -+ : majorVersion(aMajorVersion), -+ minorVersion(aMinorVersion), -+ inModule(NULL), -+ ucModule(NULL) - { - } - -@@ -72,6 +75,21 @@ - delete inModule; - } - -+ template void getEntryPoint(const char* name, ModuleLoader::Module* module, T& ptr) -+ { -+ string symbol; -+ -+ symbol.printf("%s_%d_%d", name, majorVersion, minorVersion); -+ module->findSymbol(symbol, ptr); -+ if (ptr) -+ return; -+ -+ symbol.printf("%s_%d%d", name, majorVersion, minorVersion); -+ module->findSymbol(symbol, ptr); -+ } -+ -+ int majorVersion; -+ int minorVersion; - ModuleLoader::Module* inModule; - ModuleLoader::Module* ucModule; - UVersionInfo collVersion; -@@ -740,17 +758,17 @@ - const Firebird::string& configInfo) - { - #if defined(WIN_NT) -- const char* const inTemplate = "icuin%s%s.dll"; -- const char* const ucTemplate = "icuuc%s%s.dll"; -+ const char* const inTemplate = "icuin%d%d.dll"; -+ const char* const ucTemplate = "icuuc%d%d.dll"; - #elif defined(DARWIN) - const char* const inTemplate = "/Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicui18n.dylib"; - const char* const ucTemplate = "/Library/Frameworks/Firebird.framework/versions/A/Libraries/libicuuc.dylib"; - #elif defined(HPUX) -- const char* const inTemplate = "libicui18n.sl.%s%s"; -- const char* const ucTemplate = "libicuuc.sl.%s%s"; -+ const char* const inTemplate = "libicui18n.sl.%d%d"; -+ const char* const ucTemplate = "libicuuc.sl.%d%d"; - #else -- const char* const inTemplate = "libicui18n.so.%s%s"; -- const char* const ucTemplate = "libicuuc.so.%s%s"; -+ const char* const inTemplate = "libicui18n.so.%d%d"; -+ const char* const ucTemplate = "libicuuc.so.%d%d"; - #endif - - ObjectsArray versions; -@@ -764,41 +782,32 @@ - - for (ObjectsArray::const_iterator i(versions.begin()); i != versions.end(); ++i) - { -- string majorVersion; -- string minorVersion; -+ int majorVersion, minorVersion; - - if (*i == "default") - { -- majorVersion = STRINGIZE(U_ICU_VERSION_MAJOR_NUM); -- minorVersion = STRINGIZE(U_ICU_VERSION_MINOR_NUM); -+ majorVersion = U_ICU_VERSION_MAJOR_NUM; -+ minorVersion = U_ICU_VERSION_MINOR_NUM; - } -- else -- { -- const size_t pos = i->find('.'); -- if (pos == i->npos) -- continue; -+ else if (sscanf(i->c_str(), "%d.%d", &majorVersion, &minorVersion) != 2) -+ continue; - -- majorVersion = i->substr(0, pos); -- minorVersion = i->substr(pos + 1); -- } -+ string configVersion; -+ configVersion.printf("%d.%d", majorVersion, minorVersion); - -- if (version != majorVersion + "." + minorVersion) -- { -+ if (version != configVersion) - continue; -- } - - ReadLockGuard readGuard(icuModules->lock); - - ICU* icu; - if (icuModules->modules().get(version, icu)) -- { - return icu; -- } - - PathName filename; -- filename.printf(ucTemplate, majorVersion.c_str(), minorVersion.c_str()); -+ filename.printf(ucTemplate, majorVersion, minorVersion); - -- icu = FB_NEW(*getDefaultMemoryPool()) ICU(); -+ icu = FB_NEW(*getDefaultMemoryPool()) ICU(majorVersion, minorVersion); - - icu->ucModule = ModuleLoader::loadModule(filename); - if (!icu->ucModule) -@@ -813,7 +822,7 @@ - continue; - } - -- filename.printf(inTemplate, majorVersion.c_str(), minorVersion.c_str()); -+ filename.printf(inTemplate, majorVersion, minorVersion); - - icu->inModule = ModuleLoader::loadModule(filename); - if (!icu->inModule) -@@ -828,61 +837,25 @@ - continue; - } - -- string symbol; -- -- symbol.printf("u_init_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->uInit); -- -- symbol.printf("u_versionToString_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->uVersionToString); -- -- symbol.printf("uloc_countAvailable_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->ulocCountAvailable); -- -- symbol.printf("uloc_getAvailable_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->ulocGetAvailable); -- -- symbol.printf("uset_close_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->usetClose); -- -- symbol.printf("uset_getItem_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->usetGetItem); -- -- symbol.printf("uset_getItemCount_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->usetGetItemCount); -- -- symbol.printf("uset_open_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->ucModule->findSymbol(symbol, icu->usetOpen); -- -- symbol.printf("ucol_close_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->ucolClose); -- -- symbol.printf("ucol_getContractions_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->ucolGetContractions); -- -- symbol.printf("ucol_getSortKey_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->ucolGetSortKey); -- -- symbol.printf("ucol_open_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->ucolOpen); -- -- symbol.printf("ucol_setAttribute_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->ucolSetAttribute); -- -- symbol.printf("ucol_strcoll_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->ucolStrColl); -- -- symbol.printf("ucol_getVersion_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->ucolGetVersion); -- -- symbol.printf("utrans_open_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->utransOpen); -- -- symbol.printf("utrans_close_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->utransClose); -- -- symbol.printf("utrans_transUChars_%s_%s", majorVersion.c_str(), minorVersion.c_str()); -- icu->inModule->findSymbol(symbol, icu->utransTransUChars); -+ icu->getEntryPoint("u_init", icu->ucModule, icu->uInit); -+ icu->getEntryPoint("u_versionToString", icu->ucModule, icu->uVersionToString); -+ icu->getEntryPoint("uloc_countAvailable", icu->ucModule, icu->ulocCountAvailable); -+ icu->getEntryPoint("uloc_getAvailable", icu->ucModule, icu->ulocGetAvailable); -+ icu->getEntryPoint("uset_close", icu->ucModule, icu->usetClose); -+ icu->getEntryPoint("uset_getItem", icu->ucModule, icu->usetGetItem); -+ icu->getEntryPoint("uset_getItemCount", icu->ucModule, icu->usetGetItemCount); -+ icu->getEntryPoint("uset_open", icu->ucModule, icu->usetOpen); -+ -+ icu->getEntryPoint("ucol_close", icu->inModule, icu->ucolClose); -+ icu->getEntryPoint("ucol_getContractions", icu->inModule, icu->ucolGetContractions); -+ icu->getEntryPoint("ucol_getSortKey", icu->inModule, icu->ucolGetSortKey); -+ icu->getEntryPoint("ucol_open", icu->inModule, icu->ucolOpen); -+ icu->getEntryPoint("ucol_setAttribute", icu->inModule, icu->ucolSetAttribute); -+ icu->getEntryPoint("ucol_strcoll", icu->inModule, icu->ucolStrColl); -+ icu->getEntryPoint("ucol_getVersion", icu->inModule, icu->ucolGetVersion); -+ icu->getEntryPoint("utrans_open", icu->inModule, icu->utransOpen); -+ icu->getEntryPoint("utrans_close", icu->inModule, icu->utransClose); -+ icu->getEntryPoint("utrans_transUChars", icu->inModule, icu->utransTransUChars); - - if (/*!icu->uInit ||*/ !icu->uVersionToString || !icu->ulocCountAvailable || - !icu->ulocGetAvailable || !icu->usetClose || !icu->usetGetItem || - diff --git a/firebird-2.5.0.26074-s390x.patch b/firebird-2.5.0.26074-s390x.patch deleted file mode 100644 index 8d7284c..0000000 --- a/firebird-2.5.0.26074-s390x.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up Firebird-2.5.0.26074-0/builds/posix/prefix.linux_s390x.orig Firebird-2.5.0.26074-0/builds/posix/prefix.linux_s390x ---- Firebird-2.5.0.26074-0/builds/posix/prefix.linux_s390x.orig 2010-12-16 08:21:10.642757895 -0500 -+++ Firebird-2.5.0.26074-0/builds/posix/prefix.linux_s390x 2010-12-16 08:21:44.822758177 -0500 -@@ -28,7 +28,7 @@ DEV_FLAGS=-DUSE_VALGRIND -p $(COMMON_FLA - - OS_ServerFiles=inet_server.cpp - --EMBED_UTIL_TARGETS=gstat gds_drop gsec nbackup fb_lock_print fbsvcmgr --CLIENT_UTIL_TARGETS=gds_drop gstat gsec fbguard fbmgr_bin nbackup fb_lock_print fbsvcmgr -+EMBED_UTIL_TARGETS=gstat gsec fbguard nbackup fb_lock_print fbsvcmgr fbtracemgr -+CLIENT_UTIL_TARGETS=gstat gsec fbguard fbmgr_bin nbackup fb_lock_print fbsvcmgr fbtracemgr - - Physical_IO_Module=os/posix/unix.cpp diff --git a/firebird-2.5.1-svn-CORE-3610.patch b/firebird-2.5.1-svn-CORE-3610.patch new file mode 100644 index 0000000..075ad94 --- /dev/null +++ b/firebird-2.5.1-svn-CORE-3610.patch @@ -0,0 +1,32 @@ +--- src/jrd/vio.cpp 2011/09/29 03:27:33 53487 ++++ jrd/vio.cpp 2011/09/29 07:45:12 53488 +@@ -1821,7 +1821,6 @@ + + + bool VIO_get_current(thread_db* tdbb, +- //record_param* old_rpb, + record_param* rpb, + jrd_tra* transaction, + MemoryPool* pool, +@@ -2025,12 +2024,14 @@ + if (rpb->rpb_flags & rpb_deleted) + return !foreign_key; + +- if (rpb->rpb_flags & rpb_uk_modified) +- return !foreign_key; +- +- // clear lock error from status vector +- fb_utils::init_status(tdbb->tdbb_status_vector); +- return true; ++ if (foreign_key) ++ { ++ // clear lock error from status vector ++ fb_utils::init_status(tdbb->tdbb_status_vector); ++ return !(rpb->rpb_flags & rpb_uk_modified); ++ } ++ ++ return !foreign_key; + + case tra_dead: + if (transaction->tra_attachment->att_flags & ATT_no_cleanup) { + diff --git a/firebird.spec b/firebird.spec index 10d9746..f4527cc 100644 --- a/firebird.spec +++ b/firebird.spec @@ -1,12 +1,12 @@ -%global pkgname Firebird-2.5.0.26074-0 +%global pkgname Firebird-2.5.1.26349-0 %global fbroot %{_libdir}/%{name} -%global major 2.5.0 +%global major 2.5.1 Summary: SQL relational database management system Name: firebird -Version: 2.5.0.26074.0 -Release: 10%{?dist} +Version: 2.5.1.26349.O +Release: 1%{?dist} Group: Applications/Databases License: Interbase @@ -23,10 +23,10 @@ Source6: firebird-superclassic.service Source7: firebird-superserver.service # sync the utilities list with other arches (will be sent upstream) -Patch0: firebird-2.5.0.26074-s390x.patch +#Patch0: firebird-2.5.0.26074-s390x.patch # from upstream -Patch1: firebird-2.5.0-svn-CORE-3447.patch +Patch0: firebird-2.5.1-svn-CORE-3610.patch BuildRequires: autoconf BuildRequires: automake @@ -161,8 +161,7 @@ Multi-process, local client libraries for Firebird SQL RDBMS %prep %setup -q -n %{pkgname} -%patch0 -p1 -b .s390x -%patch1 +%patch0 # convert intl character to UTF-8 iconv -f ISO-8859-1 -t utf-8 -c ./doc/README.intl -o ./doc/README.intl @@ -557,6 +556,10 @@ fi %changelog +* Thu Sep 29 2011 Philippe Makowski 2.5.1.26349.0-1 +- new upstream (bug fix release) +- added patch from upstream to fix Firebird CORE-3610 + * Thu Sep 22 2011 Philippe Makowski 2.5.0.26074.0-10 - Add support for systemd (rh #737281) diff --git a/sources b/sources index 58deb9b..894c7e6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -780f162ee71f087fc277adf09f966529 Firebird-2.5.0.26074-0.tar.bz2 +540713df9b0160699ed52138e1194e07 Firebird-2.5.1.26349-0.tar.bz2