No edit summary |
|||
Line 103: | Line 103: | ||
[[Category: | [[Category:FeatureReadyForWrangler]] | ||
<!-- When your feature page is completed and ready for review --> | <!-- When your feature page is completed and ready for review --> | ||
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler --> | <!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler --> | ||
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete--> | <!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete--> | ||
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process --> | <!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process --> |
Revision as of 14:45, 26 January 2013
MinGW GCC 4.8
Summary
Update the mingw-gcc cross-compiler to gcc 4.8 and rebuild all MinGW packages against it
Owner
- Name: Erik van Pienbroek
- Email: epienbro@fedoraproject.org
Current status
- Targeted release: Fedora 19
- Last updated: 2013-01-26
- Percentage of completion: 50%
Detailed Description
The Fedora MinGW SIG maintains over a large number of packages which allows users to build binaries for the win32 and win64 targets using the mingw-w64 toolchain. One of the goals of the Fedora MinGW SIG is to have the package versions as close as possible to their native counterparts as mentioned in our packaging guidelines. As gcc 4.8 was accepted as a feature for Fedora 19 we intend to update the mingw-gcc package in Fedora 19 as well to gcc 4.8
Benefit to Fedora
See http://gcc.gnu.org/gcc-4.8/changes.html for the list of changes
Scope
The introduction of mingw-gcc 4.8 can be split in the following sub-tasks:
- Update mingw-gcc to version 4.8 in a local environment done
- Perform a test mass rebuild against this updated mingw-gcc package done, results
- Identify build failures done, results
- Resolve build failures in progress, 2 packages remaining, mingw-qpid-cpp and wine-mono
- Introduce mingw-gcc 4.8 in rawhide
- Rebuild all mingw-* packages which depend on libgcc_s_sjlj-1.dll (upstream switched to SEH exception handling for the win64 target by default)
- Have all other mingw-* packages rebuild by the mass rebuild which will start on February 1 2013
How To Test
The Fedora MinGW SIG maintains a testsuite which performs regression testing. Other tests can be done by building packages against it and testing out the compiled results on native win32/win64 environments or by using wine.
User Experience
Users will be able to see compiled code improvements and use the newly added features, such as improved C++11 and C11 support, improved vectorization support, etc.
Dependencies / Affected packages
All mingw-* packages and wine-mono need to be rebuild after mingw-gcc 4.8 is introduced in rawhide.
The list of packages which need to be rebuild directly after the introduction of mingw-gcc 4.8 to prevent broken dependencies are:
$ repoquery --whatrequires 'mingw64(libgcc_s_sjlj-1.dll)' --disablerepo=\* --enablerepo=rawhide --source | sort | uniq mingw-antlr-2.7.7-10.fc18.src.rpm mingw-atkmm-2.22.6-5.fc18.src.rpm mingw-boost-1.50.0-1.fc19.src.rpm mingw-cairomm-1.10.0-8.fc18.src.rpm mingw-clucene-2.3.3.4-5.fc19.src.rpm mingw-cximage-600-7.fc19.src.rpm mingw-enchant-1.6.0-7.fc19.src.rpm mingw-glibmm24-2.34.1-1.fc18.src.rpm mingw-gmp-5.0.5-1.fc19.src.rpm mingw-gnutls-2.12.21-2.fc19.src.rpm mingw-gtkmm24-2.24.2-7.fc18.src.rpm mingw-gtkmm30-3.6.0-1.fc18.src.rpm mingw-harfbuzz-0.9.9-2.fc19.src.rpm mingw-hunspell-1.3.2-8.fc19.src.rpm mingw-icu-49.1.2-1.fc19.src.rpm mingw-libsigc++20-2.2.11-1.fc18.src.rpm mingw-libsqlite3x-20071018-17.fc19.src.rpm mingw-libxml++-2.36.0-1.fc18.src.rpm mingw-pangomm-2.28.4-4.fc18.src.rpm mingw-pcre-8.31-1.fc19.src.rpm mingw-polyclipping-5.0.3-3.fc19.src.rpm mingw-pthreads-2.8.0-22.20110511cvs.fc18.src.rpm mingw-qt-4.8.4-1.fc19.src.rpm mingw-qwt-6.0.1-1.fc19.src.rpm mingw-webkitgtk-1.10.2-2.fc19.src.rpm mingw-webkitgtk3-1.10.2-2.fc19.src.rpm mingw-wxWidgets-2.8.12-12.fc19.src.rpm mingw-zfstream-20041202-15.fc19.src.rpm
These packages need to be rebuild directly because gcc upstream decided to use SEH exception handling by default for the win64 target. The library libgcc_s_sjlj-1.dll is replaced with libgcc_s_seh-1.dll for the win64 target. Therefore all packages which used to depend on libgcc_s_sjlj-1.dll need to be rebuild so they start using libgcc_s_seh-1.dll instead
Contingency Plan
In a worst-case situation then the old mingw-gcc package can be reintroduced and all mingw packages need to be rebuild another time against this older gcc
Documentation
http://gcc.gnu.org/gcc-4.8/changes.html
Release Notes
The MinGW gcc cross-compiler for the win32 and win64 targets in Fedora 19 has been updated to gcc 4.8. See http://gcc.gnu.org/gcc-4.8/changes.html for user visible changes in it.
One of the most notable changes in gcc 4.8 is that the default exception handling model for the win64 target was changed from SjLj to SEH. The win32 target still uses the SjLj exception handling model. This causes all binaries for the win64 target which use exception handling to depend on libgcc_s_seh-1.dll instead of libgcc_s_sjlj-1.dll