From Fedora Project Wiki
No edit summary
 
(12 intermediate revisions by 2 users 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-01-26
* Last updated: 2013-04-28
* Percentage of completion: 50%
* Percentage of completion: 100%


== Detailed Description ==
== 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.
The [[MinGW|Fedora MinGW SIG]] maintains over a large number of packages which allows users to build binaries for the win32 and win64 targets using the [http://mingw-w64.sourceforge.net/ 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: https://fedoraproject.org/wiki/Packaging:MinGW?rd=Packaging/MinGW#Track_Fedora_native_package_versions
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:MinGW#Track_Fedora_native_package_versions|packaging guidelines]].
As [[Features/GCC48|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
As [[Features/GCC48|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


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>in progress, 2 packages remaining, mingw-qpid-cpp and wine-mono</b>
* Resolve build failures <b>done</b>
* Introduce mingw-gcc 4.8 in rawhide
* 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)
* 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 which will start on [https://fedorahosted.org/fesco/ticket/1000 February 1 2013]
* Have all other mingw-* packages rebuild by the mass rebuild <b>done</b>


== How To Test ==
== How To Test ==
Line 81: Line 81:
The library libgcc_s_sjlj-1.dll is replaced with libgcc_s_seh-1.dll 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
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
<b>Update January 30: all packages in the above list are successfully rebuilt against mingw-gcc 4.8 in rawhide</b>


== Contingency Plan ==
== 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 ==
== Documentation ==


http://gcc.gnu.org/gcc-4.8/changes.html


== Release Notes ==
== 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


== Comments and Discussion ==
== Comments and Discussion ==
Line 95: Line 105:




[[Category:FeaturePageIncomplete]]
[[Category:FeatureAcceptedF19]]
<!-- 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 -->

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

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

Comments and Discussion