ToolchainRoadmap
|
Size: 3506
Comment:
|
← Revision 38 as of 2008-08-06 16:34:44 ⇥
Size: 3337
Comment: converted to 1.6 markup
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 4: | Line 4: |
| = Toolchain Roadmap = |
|
| Line 8: | Line 6: |
| * Created: [[Date(2005-04-24T00:11:33Z)]] by MattZimmerman[[BR]] * Priority: HighPriority[[BR]] * People: MatthiasKloseLead, JeffBaileySecond[[BR]] * Contributors: MattZimmerman[[BR]] * Interested: JimMcQuillan [[BR]] * Status: BreezyGoal, DistroSpecification, EditedSpecification[[BR]] * Packages: [[BR]] * Depends: [[BR]] * UduSessions: 1(0) [[BR]] |
* Created: 2005-11-02 by MatthiasKlose<<BR>> * People: MatthiasKlose, JeffBailey<<BR>> * Packages: glibc, binutils, gcc, ia32-libs<<BR>> * Launchpad: https://launchpad.net/distros/ubuntu/+spec/toolchain-roadmap |
| Line 18: | Line 11: |
| == Introduction == | == Summary == |
| Line 20: | Line 13: |
| Review toolchain status and strategy for Breezy | Upgrade the toolchain to new minor/subminor versions. Consider an upgrade for gij/gcj to a recent version (4.1), if needed for Edubuntu. Change libstdc++ configuration to use the new allocator. |
| Line 24: | Line 17: |
| * Much improved Java support * Better error reporting from C and C++ front-end * LSB 3.0 support * Fortran 90 support * Better optimizations from C compiler * Faster compilation at -O0 * Better standards compliance == Scope and Use Cases == * gcc-4.0 * g++-4.0 and associated ABI transition * glibc 2.3.5 |
We do not want to introduce new major upstream versions and unknown bugs in the dapper time frame, just fix bugs in the existing toolchain packages. |
| Line 40: | Line 21: |
| Already done: | === glibc === |
| Line 42: | Line 23: |
| * Change "gcc" default to 4.0 * Change "g77" default to 3.4 * change "cpp" default to 4.0 * Upload glibc-2.3.5 * Change powerpc, ia64 to nptl-only |
(December 2005) |
| Line 48: | Line 25: |
| TODO: * Details at http://www.ubuntulinux.org/wiki/BreezyToolchainTransition |
1. Merge to the Debian 2.3.5 packages. |
| Line 51: | Line 27: |
| * Upload g++-3.4, building g++ on amd64, defaulting to the new C++ ABI (1002). * Change "g++" default to 4.0 * Upload library packages, depending on libstdc++, rename library packages to deal with ABI break, as described on the Transition page. * For KDE, only rename libqt, as all other KDE packages depend on this library. * Upload all other packages depending on libstdc++, just recompiling, and/or applying outstanding bug reports including patches. * Change "gcj", "gij" default to 4.0 * Enable ppc64 glibc (ready to upload) * Change sparc to nptl-only * Add to Breezy release notes intention to drop linuxthreads for remaining arch's. * Drop gcc-2.95 (also means dropping chill) * Look at tweaking gcc wrapper to look for archaic gcc build options (-O6, etc.) * Binutils update (Sparc64 TLS support) * Final massive rebuild to make sure that everything is builds correctly. * Transition for non-release architectures (libgcc on hppa). |
If upstream glibc 2.3.6 is released in 2005, consider an upgrade, pull in needed changes from upstream CVS |
| Line 66: | Line 29: |
| === Data Preservation and Migration === | === binutils === |
| Line 68: | Line 31: |
| glibc update can cause older applications to fail to run. Failures are usually linker-time failures, so low risk of runtime data loss. | 1. Fix architecture specific bugs. |
| Line 70: | Line 33: |
| === Packages Affected === | If upstream binutils 2.17 is released in 2005, consider an upgrade. |
| Line 72: | Line 35: |
| All packages to some degree: | === gcc === |
| Line 74: | Line 37: |
| * Poorly written C applications that don't work with stricter parser * Poorly written C++ applications that don't work with stricter parser * Renaming of library packages (about 100 in main, 300 in universe) |
1. Move '''gcc-3.3''' sources to universe, just build the libstdc++5 runtime library package from these sources 2. keep '''gcc-3.4''' (upstream glibc-2.3.x cannot be built with 4.0 without patches, upstream asks for a g77 compiler as long as gfortran isn't mature enough, pascal is built by '''gcc-3.4''' only, but universe anyway). Update to gcc-3.4.5 when released 3. Convert remaining packages in main from '''g++-3.4''' to '''g++-4.0'''. This depends on upstream bugs fixed in the g++ 4.0 branch. 4. Update '''gcc-4.0''' to version 4.0.3 when released |
| Line 78: | Line 42: |
| === User Interface Requirements === | === libstdc++ === |
| Line 80: | Line 44: |
| N/A | Configure with the new allocator (the default), upstream doesn't recommend using the mt allocator anymore. (November 2005) |
| Line 82: | Line 46: |
| == Outstanding Issues == | * '''libstdc++6''' is configured to use the mt allocator based on discussions in April 2004 with upstream libstdc++ developers. This configuration turned out to be a mistake (memory leaks and still buggy), other distributions did change back to the new allocator (the default one) in mid-2005. The change does not affect symbols exported from libstdc++, but it does affect symbols exported by libraries which use containers (using an allocator) from the template headers. * Configure libstdc++ to use the new allocator. * Identify all library packages depending on libstdc++ and exporting *mt_alloc* symbols. * rebuild these libraries and depending packages. Note that partial upgrades won't work with this procedure. To make this work, we would have to change the package name for all libraries affected. |
| Line 84: | Line 51: |
| Coordinating with Debian - confirm that they will follow the same library rename plan. Proposal sent to debian-release, http://lists.debian.org/debian-release/2005/04/msg00153.html |
=== ia32-libs* === |
| Line 87: | Line 53: |
| === UDU BOF Agenda === | * Update the '''ia32-libs*''' packages to the current library versions, drop the libraries which can be built from the source packages and where we already build lib64 packages, and build lib32 packages instead (November 2005). * if OOo is built natively for amd64, drop most of ia32-libs. Do not care about ia32-libs for ia64. If necessary, provide a cross toolchain for ia64 (ia64->i386) to build the required libraries (done for binutils and gcc, needs work for glibc), very low priority. |
| Line 89: | Line 56: |
| * Status update (some work will be done prior to UDU) * C++ ABI transition plan (if transitions are still pending) * libssp and GCC 4.0 ? |
=== gij/gcj-4.1 === |
| Line 93: | Line 58: |
| === UDU Pre-Work === | The Java updates are covered by JavaRoadmap. |
| Line 95: | Line 60: |
| * Transition plan http://www.ubuntulinux.org/wiki/BreezyToolchainTransition * Prepare packages of GCC-4.0 (currently in experimental), glibc (Done, uploaded) * PowerPC64 biarch support * Import of known FTBFS GCC-4.0 reports from unstable, for universe see http://www.ubuntulinux.org/wiki/UniverseCxxTransition (Done) * Determine order of library updates |
=== gdb === Add support to read 64bit code on ppc and sparc (i386 and amd64 needs checking /jbailey) |
Status
Created: 2005-11-02 by MatthiasKlose
People: MatthiasKlose, JeffBailey
Packages: glibc, binutils, gcc, ia32-libs
Launchpad: https://launchpad.net/distros/ubuntu/+spec/toolchain-roadmap
Summary
Upgrade the toolchain to new minor/subminor versions. Consider an upgrade for gij/gcj to a recent version (4.1), if needed for Edubuntu. Change libstdc++ configuration to use the new allocator.
Rationale
We do not want to introduce new major upstream versions and unknown bugs in the dapper time frame, just fix bugs in the existing toolchain packages.
Implementation Plan
glibc
(December 2005)
- Merge to the Debian 2.3.5 packages.
If upstream glibc 2.3.6 is released in 2005, consider an upgrade, pull in needed changes from upstream CVS
binutils
- Fix architecture specific bugs.
If upstream binutils 2.17 is released in 2005, consider an upgrade.
gcc
Move gcc-3.3 sources to universe, just build the libstdc++5 runtime library package from these sources
keep gcc-3.4 (upstream glibc-2.3.x cannot be built with 4.0 without patches, upstream asks for a g77 compiler as long as gfortran isn't mature enough, pascal is built by gcc-3.4 only, but universe anyway). Update to gcc-3.4.5 when released
Convert remaining packages in main from g++-3.4 to g++-4.0. This depends on upstream bugs fixed in the g++ 4.0 branch.
Update gcc-4.0 to version 4.0.3 when released
libstdc++
Configure with the new allocator (the default), upstream doesn't recommend using the mt allocator anymore. (November 2005)
libstdc++6 is configured to use the mt allocator based on discussions in April 2004 with upstream libstdc++ developers. This configuration turned out to be a mistake (memory leaks and still buggy), other distributions did change back to the new allocator (the default one) in mid-2005. The change does not affect symbols exported from libstdc++, but it does affect symbols exported by libraries which use containers (using an allocator) from the template headers.
- Configure libstdc++ to use the new allocator.
- Identify all library packages depending on libstdc++ and exporting *mt_alloc* symbols.
- rebuild these libraries and depending packages. Note that partial upgrades won't work with this procedure. To make this work, we would have to change the package name for all libraries affected.
ia32-libs*
Update the ia32-libs* packages to the current library versions, drop the libraries which can be built from the source packages and where we already build lib64 packages, and build lib32 packages instead (November 2005).
if OOo is built natively for amd64, drop most of ia32-libs. Do not care about ia32-libs for ia64. If necessary, provide a cross toolchain for ia64 (ia64->i386) to build the required libraries (done for binutils and gcc, needs work for glibc), very low priority.
gij/gcj-4.1
The Java updates are covered by JavaRoadmap.
gdb
Add support to read 64bit code on ppc and sparc (i386 and amd64 needs checking /jbailey)
ToolchainRoadmap (last edited 2008-08-06 16:34:44 by localhost)