diff --git a/.cvsignore b/.cvsignore index 5729026..dec6629 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -wxGTK-2.8.4.tar.bz2 +wxGTK-2.8.7.tar.bz2 diff --git a/sources b/sources index d6af62c..2fefdad 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -22e42c1601d9759530c875ffa2c3c554 wxGTK-2.8.4.tar.bz2 +b25e85eeee524903214ebb520753f4bd wxGTK-2.8.7.tar.bz2 diff --git a/wxGTK-2.8.7-race-fix.patch b/wxGTK-2.8.7-race-fix.patch new file mode 100644 index 0000000..c58f395 --- /dev/null +++ b/wxGTK-2.8.7-race-fix.patch @@ -0,0 +1,109 @@ +--- wxWidgets/src/gtk/app.cpp 2008/03/13 02:56:21 52464 ++++ wxWidgets/src/gtk/app.cpp 2008/03/13 04:37:03 52465 +@@ -174,59 +174,63 @@ + if (!wxTheApp) + return false; + +- bool moreIdles = false; +- ++ guint idleID_save; ++ { ++ // Allow another idle source to be added while this one is busy. ++ // Needed if an idle event handler runs a new event loop, ++ // for example by showing a dialog. ++#if wxUSE_THREADS ++ wxMutexLocker lock(gs_idleTagsMutex); ++#endif ++ idleID_save = wxTheApp->m_idleTag; ++ wxTheApp->m_idleTag = 0; ++ g_isIdle = true; ++ wxAddEmissionHook(); ++ } + #ifdef __WXDEBUG__ + // don't generate the idle events while the assert modal dialog is shown, + // this matches the behavior of wxMSW +- if (!wxTheApp->IsInAssert()) ++ if (wxTheApp->IsInAssert()) ++ return false; + #endif // __WXDEBUG__ +- { +- guint idleID_save; +- { +- // Allow another idle source to be added while this one is busy. +- // Needed if an idle event handler runs a new event loop, +- // for example by showing a dialog. +-#if wxUSE_THREADS +- wxMutexLocker lock(gs_idleTagsMutex); +-#endif +- idleID_save = wxTheApp->m_idleTag; +- wxTheApp->m_idleTag = 0; +- g_isIdle = true; +- wxAddEmissionHook(); +- } + +- // When getting called from GDK's time-out handler +- // we are no longer within GDK's grab on the GUI +- // thread so we must lock it here ourselves. +- gdk_threads_enter(); +- +- // Send idle event to all who request them as long as +- // no events have popped up in the event queue. +- do { +- moreIdles = wxTheApp->ProcessIdle(); +- } while (moreIdles && gtk_events_pending() == 0); ++ // When getting called from GDK's time-out handler ++ // we are no longer within GDK's grab on the GUI ++ // thread so we must lock it here ourselves. ++ gdk_threads_enter(); + +- // Release lock again +- gdk_threads_leave(); +- +- { +- // If another idle source was added, remove it ++ // Send idle event to all who request them as long as ++ // no events have popped up in the event queue. ++ bool moreIdles; ++ do { ++ moreIdles = wxTheApp->ProcessIdle(); ++ } while (moreIdles && gtk_events_pending() == 0); ++ ++ // Release lock again ++ gdk_threads_leave(); ++ + #if wxUSE_THREADS +- wxMutexLocker lock(gs_idleTagsMutex); ++ wxMutexLocker lock(gs_idleTagsMutex); + #endif +- if (wxTheApp->m_idleTag != 0) +- g_source_remove(wxTheApp->m_idleTag); +- wxTheApp->m_idleTag = idleID_save; +- g_isIdle = false; +- } +- } ++ // If another idle source was added, remove it ++ if (wxTheApp->m_idleTag != 0) ++ g_source_remove(wxTheApp->m_idleTag); ++ wxTheApp->m_idleTag = idleID_save; ++ g_isIdle = false; + +- if (!moreIdles) +- { + #if wxUSE_THREADS +- wxMutexLocker lock(gs_idleTagsMutex); ++ if (wxPendingEventsLocker) ++ wxPendingEventsLocker->Enter(); + #endif ++ // Pending events can be added asynchronously, ++ // need to keep idle source if any have appeared ++ moreIdles = moreIdles || (wxPendingEvents && !wxPendingEvents->IsEmpty()); ++#if wxUSE_THREADS ++ if (wxPendingEventsLocker) ++ wxPendingEventsLocker->Leave(); ++#endif ++ if (!moreIdles) ++ { + // Indicate that we are now in idle mode and event handlers + // will have to reinstall the idle handler again. + g_isIdle = true; + diff --git a/wxGTK.spec b/wxGTK.spec index d2627aa..ea0f545 100644 --- a/wxGTK.spec +++ b/wxGTK.spec @@ -5,8 +5,8 @@ %define withodbc 0 Name: wxGTK -Version: 2.8.4 -Release: 3%{?dist} +Version: 2.8.7 +Release: 2%{?dist} Summary: GTK2 port of the wxWidgets GUI library # The wxWindows licence is the LGPL with a specific exemption allowing # distribution of derived binaries under any terms. (This will eventually @@ -15,6 +15,8 @@ License: wxWidgets Library Licence Group: System Environment/Libraries URL: http://www.wxwidgets.org/ Source0: http://dl.sf.net/wxwindows/%{name}-%{version}.tar.bz2 +Patch0: wxGTK-2.8.7-race-fix.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gtk2-devel, zlib-devel >= 1.1.4 @@ -32,22 +34,28 @@ BuildRequires: unixODBC-devel # all of these are for previous Fedora Extras sub-packages Obsoletes: wxGTK2 < 2.6.2-1 Provides: wxGTK2 = %{version}-%{release} +Obsoletes: compat-wxGTK2 < %{version}-%{release} +Obsoletes: compat-wxGTK < %{version}-%{release} Obsoletes: wxGTK-common < 2.6.2-1 Provides: wxGTK-common = %{version}-%{release} +Obsoletes: compat-wxGTK-common < %{version}-%{release} Obsoletes: wxGTK2-xrc < 2.6.2-1 Obsoletes: wxGTK-xrc < 2.6.2-1 Provides: wxGTK2-xrc = %{version}-%{release} Provides: wxGTK-xrc = %{version}-%{release} +Obsoletes: compat-wxGTK2-xrc < %{version}-%{release} +Obsoletes: compat-wxGTK-xrc < %{version}-%{release} Obsoletes: wxGTK2-stc < 2.6.2-1 Obsoletes: wxGTK-stc < 2.6.2-1 Provides: wxGTK2-stc = %{version}-%{release} Provides: wxGTK-stc = %{version}-%{release} +Obsoletes: compat-wxGTK2-stc < %{version}-%{release} +Obsoletes: compat-wxGTK-stc < %{version}-%{release} -# time to clean up the compat package. -Obsoletes: compat-wxGTK < 2.8.0 +Requires: wxBase = %{version}-%{release} %description wxWidgets/GTK2 is the GTK2 port of the C++ cross-platform wxWidgets @@ -61,12 +69,16 @@ Group: Development/Libraries Summary: Development files for the wxGTK2 library Requires: %{name} = %{version}-%{release} Requires: %{name}-gl = %{version}-%{release} +Requires: wxBase = %{version}-%{release} Requires: gtk2-devel Requires: libGL-devel, libGLU-devel Obsoletes: wxGTK2-devel < %{version}-%{release} Provides: wxGTK2-devel = %{version}-%{release} Obsoletes: wxGTK-common-devel < %{version}-%{release} Provides: wxGTK-common-devel = %{version}-%{release} +Obsoletes: compat-wxGTK2-devel < %{version}-%{release} +Obsoletes: compat-wxGTK-devel < %{version}-%{release} +Obsoletes: compat-wxGTK-common-devel < %{version}-%{release} %description devel This package include files needed to link with the wxGTK2 library. @@ -78,10 +90,13 @@ Group: System Environment/Libraries Requires: %{name} = %{version}-%{release} Obsoletes: wxGTK2-gl < %{version}-%{release} Provides: wxGTK2-gl = %{version}-%{release} +Obsoletes: compat-wxGTK2-gl < %{version}-%{release} +Obsoletes: compat-wxGTK-gl < %{version}-%{release} %description gl OpenGL (a 3D graphics API) add-on for the wxWidgets library. + %if %{withodbc} %package odbc Summary: ODBC add-on for the wxWidgets library @@ -92,9 +107,22 @@ Requires: %{name} = %{version}-%{release} ODBC (a SQL database connectivity API) add-on for the wxWidgets library. %endif + +%package -n wxBase +Summary: Non-GUI support classes from the wxWidgets library +Group: System Environment/Libraries + +%description -n wxBase +Every wxWidgets application must link against this library. It contains +mandatory classes that any wxWidgets code depends on (like wxString) and +portability classes that abstract differences between platforms. wxBase can +be used to develop console mode applications -- it does not require any GUI +libraries or the X Window System. + + %prep %setup -q - +%patch0 -p1 -b .racefix sed -i -e 's|/usr/lib\b|%{_libdir}|' wx-config.in configure @@ -176,14 +204,19 @@ rm -rf $RPM_BUILD_ROOT %post gl -p /sbin/ldconfig %postun gl -p /sbin/ldconfig +%if %{withodbc} +%post odbc -p /sbin/ldconfig +%postun odbc -p /sbin/ldconfig +%endif + +%post -n wxBase -p /sbin/ldconfig +%postun -n wxBase -p /sbin/ldconfig + %files -f wxstd.lang %defattr(-,root,root,-) %doc docs/changes.txt docs/gpl.txt docs/lgpl.txt docs/licence.txt %doc docs/licendoc.txt docs/preamble.txt docs/readme.txt -%{_libdir}/libwx_baseu-*.so.* -%{_libdir}/libwx_baseu_net-*.so.* -%{_libdir}/libwx_baseu_xml-*.so.* %{_libdir}/libwx_gtk2u_adv-*.so.* %{_libdir}/libwx_gtk2u_aui-*.so.* %{_libdir}/libwx_gtk2u_core-*.so.* @@ -222,7 +255,38 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/libwx_gtk2u_odbc-*.so.* %endif +%files -n wxBase +%doc docs/changes.txt docs/gpl.txt docs/lgpl.txt docs/licence.txt +%doc docs/licendoc.txt docs/preamble.txt docs/readme.txt +%{_libdir}/libwx_baseu-*.so.* +%{_libdir}/libwx_baseu_net-*.so.* +%{_libdir}/libwx_baseu_xml-*.so.* + + %changelog +* Tue Apr 1 2008 Dan Horak - 2.8.7-2 +- added fix for a race condition (rh bug #440011) + +* Wed Feb 20 2008 Matthew Miller - 2.8.7-1 +- update to 2.8.7 (rh bug #369621, etc.) +- split base libs into separate wxBase package (rh bug #357961) +- okay, so, wxPython 2.8.7.1 seems to work fine against this version of the + library, so I'm dropping the kludgy-patch-to-2.8.7.1 thing. Please report + any compatibility problems with wxPython 2.8.7.1 and I'll fix them as they + come up. + +* Tue Feb 19 2008 Fedora Release Engineering - 2.8.4-7 +- Autorebuild for GCC 4.3 + +* Tue Aug 28 2007 Hans de Goede - 2.8.4-6 +- Rebuild for new expat 2.0 + +* Fri Aug 3 2007 Matthew Miller - 2.8.4-5 +- obsolete all compat-wxGTK subpackages properly (bug #250687) + +* Mon Jul 16 2007 Matthew Miller - 2.8.4-4 +- patch from svn to fix rh bug #247414 + * Thu Jul 12 2007 Matthew Miller - 2.8.4-3 - include libwx_gtk2u_media, since I'm now listing the buildreqs properly.