(Status update) |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 10: | Line 10: | ||
== Current status == | == Current status == | ||
* Targeted release: [[Releases/19 | Fedora 19 ]] | * Targeted release: [[Releases/19 | Fedora 19 ]] | ||
* Last updated: 2013- | * Last updated: 2013-04-28 | ||
* Percentage of completion: | * Percentage of completion: 100% | ||
== Detailed Description == | == Detailed Description == | ||
Line 28: | Line 28: | ||
* Perform a test mass rebuild against this updated mingw-gcc package <b>done, [http://lists.fedoraproject.org/pipermail/mingw/2013-January/006176.html results]</b> | * Perform a test mass rebuild against this updated mingw-gcc package <b>done, [http://lists.fedoraproject.org/pipermail/mingw/2013-January/006176.html results]</b> | ||
* Identify build failures <b>done, [http://lists.fedoraproject.org/pipermail/mingw/2013-January/006203.html results]</b> | * Identify build failures <b>done, [http://lists.fedoraproject.org/pipermail/mingw/2013-January/006203.html results]</b> | ||
* Resolve build failures <b> | * Resolve build failures <b>done</b> | ||
* Introduce mingw-gcc 4.8 in rawhide <b>done</b> | * Introduce mingw-gcc 4.8 in rawhide <b>done</b> | ||
* Rebuild all mingw-* packages which depend on libgcc_s_sjlj-1.dll (upstream switched to SEH exception handling for the win64 target by default) <b>done</b> | * Rebuild all mingw-* packages which depend on libgcc_s_sjlj-1.dll (upstream switched to SEH exception handling for the win64 target by default) <b>done</b> | ||
* Have all other mingw-* packages rebuild by the mass rebuild | * Have all other mingw-* packages rebuild by the mass rebuild <b>done</b> | ||
== How To Test == | == How To Test == |
Latest revision as of 16:38, 28 April 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-04-28
- Percentage of completion: 100%
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 done
- Introduce mingw-gcc 4.8 in rawhide done
- Rebuild all mingw-* packages which depend on libgcc_s_sjlj-1.dll (upstream switched to SEH exception handling for the win64 target by default) done
- Have all other mingw-* packages rebuild by the mass rebuild done
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
Update January 30: all packages in the above list are successfully rebuilt against mingw-gcc 4.8 in rawhide
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