注意:

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Difference between revisions of "Toolchain update"

From Funtoo
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
This guide explains how to upgrade the Funtoo toolchain to the new version available. With this toolchain update comes some other core packages bumps that were depending on the new toolchain.  
This guide explains how to upgrade the Funtoo toolchain to the new version available. With this toolchain update comes some other core packages bumps that were depending on the new toolchain.  


{{fancynote|This toolchain update affects the users of the ''current'' tree. ''Stable'' users should not update to this toolchain yet as many stable packages may not build with it. As of Monday December 5, 2011, manually unmasking the packages is no longer necessary after you sync your tree.}}
{{fancynote|This toolchain update affects the users of the ''current'' tree. ''Stable'' users should not update to this toolchain yet as many stable packages may not build with it.}}


== Current toolchain ==
== Current toolchain ==

Revision as of 20:29, October 3, 2013

This guide explains how to upgrade the Funtoo toolchain to the new version available. With this toolchain update comes some other core packages bumps that were depending on the new toolchain.

   Note

This toolchain update affects the users of the current tree. Stable users should not update to this toolchain yet as many stable packages may not build with it.

Current toolchain

Funtoo currently provides the following core package versions:

  • sys-devel/gcc-4.6.4-r2
  • sys-devel/binutils-2.22
  • sys-kernel/linux-headers-3.4-r2
  • sys-libs/glibc-2.15-r4
  • sys-fs/udev-171-r8

Toolchain update

Those core packages will be updated to the following versions:

  • sys-devel/gcc-4.8.1-r2
  • sys-devel/binutils-2.23.1
  • sys-kernel/linux-headers-3.7
  • sys-libs/glibc-2.18
  • sys-fs/udev-171-r9

Unmasking the packages

To unmask the packages, run emerge --sync. If you are using the funtoo-current, they should now be unmasked. To perform this manually (no longer necessary,) do this:

# install -d /etc/portage/package.unmask
# echo ">=sys-devel/gcc-4.8.1" >> /etc/portage/package.unmask/toolchain
# echo "=sys-devel/binutils-2.23.1" >> /etc/portage/package.unmask/toolchain
# echo "=sys-kernel/linux-headers-3.7" >> /etc/portage/package.unmask/toolchain
# echo "=sys-libs/glibc-2.18" >> /etc/portage/package.unmask/toolchain
# echo "=sys-fs/udev-171-r9" >> /etc/portage/package.unmask/toolchain

Easier way is to copy funtoo-toolchain from /usr/portage/profiles/package.mask, assuming that /etc/portage/package.unmask is a directory:

# cp /usr/portage/profiles/package.mask/funtoo-toolchain /etc/portage/package.unmask

Keywords changes for stable users

If Stable users are not afraid to upgrade their toolchain, they must add the correct keywords too:

# install -d /etc/portage/package.keywords
# echo ">=sys-devel/gcc-4.8.1 **" >> /etc/portage/package.keywords/toolchain
# echo "=sys-devel/binutils-2.23.1 **" >> /etc/portage/package.keywords/toolchain
# echo "=sys-kernel/linux-headers-3.7 **" >> /etc/portage/package.keywords/toolchain
# echo "=sys-libs/glibc-2.18 **" >> /etc/portage/package.keywords/toolchain
# echo "=sys-fs/udev-171-r9 **" >> /etc/portage/package.keywords/toolchain

Upgrading to the new toolchain

As the dependencies have been adjusted so the packages are built in the right order, no user manipulation is required. Updating everything should work out of the box, but to ensure that no unwanted package is updated between the toolchain parts, proceed as following:

# emerge --sync
# emerge -1 glibc
# emerge -uNDav @world

Done!

What about libtool?

libtool is automatically rebuilt during the update process. This avoids any manual steps to be executed after the update.

Rebuilding the whole system?

Some people argue that this is necessary to rebuild the whole system (even twice) after a toolchain upgrade. This is never necessary, but users who changed their CFLAGS or CXXFLAGS due to a new available arch or optimization flag are welcome to do so, if they want. However, remember that this is never necessary.

Case of depclean

After switching to new gcc, it can be cleaned (accidentally) by emerge ---depclean, it is recommended to save older gcc for failover

# emerge -av --depclean --exclude sys-devel/gcc

Troubleshooting

After the update, if any package fails to start with a shared library missing problem, try to run:

# revdep-rebuild