diff --git a/.abf.yml b/.abf.yml index a3b3e7e..01ce499 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,2 +1,2 @@ sources: - "Firebird-2.5.0.26074-0.tar.bz2": d7afea3a87c8298fd39ad76cc9580ef9f4100421 + "Firebird-2.5.1.26351-0.tar.bz2": f827736c812f4247e8204fbe9c696f648c0484b6 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 d610cfd..0000000 --- a/firebird-2.5.0-svn-CORE-3447.patch +++ /dev/null @@ -1,206 +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.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 5aa7e24..28181ec 100644 --- a/firebird.spec +++ b/firebird.spec @@ -2,9 +2,9 @@ %define Werror_cflags %{nil} %endif -%define major 2.5.0 -%define pkgname Firebird-2.5.0.26074-0 -%define version 2.5.0.26074.0 +%define major 2.5.1 +%define pkgname Firebird-2.5.1.26351-0 +%define version 2.5.1.26351.0 %define somajor 2 %define libfbclient %mklibname fbclient %somajor %define libfbembed %mklibname fbembed %somajor @@ -14,7 +14,7 @@ Summary: Firebird SQL database management system Name: firebird Version: %{version} -Release: %mkrel 3 +Release: %mkrel 1 Group: Databases License: IPL URL: http://www.firebirdsql.org/ @@ -22,7 +22,7 @@ Source0: http://downloads.sourceforge.net/firebird/%{pkgname}.tar.bz2 Source1: firebird-logrotate Source2: firebird.mdv.releasenote # from upstream -Patch0: firebird-2.5.0-svn-CORE-3447.patch +Patch0: firebird-2.5.1-svn-CORE-3610.patch BuildRequires: autoconf BuildRequires: automake @@ -549,6 +549,12 @@ if [ "$(readlink %{fbroot}/bin 2> /dev/null)" \!= "%{fbroot}/bin-classic" ]; the ln -s %{fbroot}/bin{-classic,} fi +%post utils-classic +if [ "$(readlink %{fbroot}/bin 2> /dev/null)" \!= "%{fbroot}/bin-classic" ]; then + [ -e %{fbroot}/bin ] && rm -f %{fbroot}/bin + ln -s %{fbroot}/bin{-classic,} +fi + %preun classic if [ $1 -eq 0 ]; then if /sbin/service xinetd status >& /dev/null; then @@ -563,6 +569,13 @@ if [ $1 -eq 0 ]; then fi fi +%preun utils-classic +if [ $1 -eq 0 ]; then + if [ "$(readlink %{fbroot}/bin 2> /dev/null)" = "%{fbroot}/bin-classic" ]; then + rm -f %{fbroot}/bin + fi +fi + %post superclassic if [ "$(readlink %{fbroot}/bin 2> /dev/null)" \!= "%{fbroot}/bin-classic" ]; then [ -e %{fbroot}/bin ] && rm -f %{fbroot}/bin @@ -598,6 +611,12 @@ if [ ! -f /etc/gds_hosts.equiv ]; then fi %_post_service %{name}-superserver +%post utils-superserver +if [ "$(readlink %{fbroot}/bin 2> /dev/null)" \!= "%{fbroot}/bin-superserver" ]; then + [ -e %{fbroot}/bin ] && rm -f %{fbroot}/bin + ln -s %{fbroot}/bin{-superserver,} +fi + %preun server-superserver if [ $1 -eq 0 ]; then if /sbin/service firebird-superserver status >& /dev/null; then @@ -637,7 +656,11 @@ fi %changelog -* Sun Jun 05 2011 Funda Wang 2.5.0.26074.0-3mdv2011.0 +* Wed Oct 05 2011 Phillipe Makowski 2.5.1.26351.0-1mdv2012.0 ++ Revision: 703133 +- new upstream (bugs fixes) + +* Sun Jun 05 2011 Funda Wang 2.5.0.26074.0-3 + Revision: 682810 - rebuild for new icu @@ -725,7 +748,7 @@ fi - Fix initscript and create /etc/gds_hosts.equiv on %%post to fix bug #34267 - bump release - + Olivier Blin + + Olivier Blin - restore BuildRoot + Thierry Vignaud