commit: 02ea414ad62acc9001cdca824a3d6ae486111183 Author: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org> AuthorDate: Fri Mar 22 19:24:26 2024 +0000 Commit: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org> CommitDate: Fri Mar 22 19:24:26 2024 +0000 URL: https://gitweb.gentoo.org/data/gentoo-news.git/commit/?id=02ea414a
2024-03-22-new-23-profiles: add news item Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org> .../2024-03-22-new-23-profiles.en.txt | 148 +++++++++++++++++++++ 1 file changed, 148 insertions(+) diff --git a/2024-03-22-new-23-profiles/2024-03-22-new-23-profiles.en.txt b/2024-03-22-new-23-profiles/2024-03-22-new-23-profiles.en.txt new file mode 100644 index 0000000..0e2eeba --- /dev/null +++ b/2024-03-22-new-23-profiles/2024-03-22-new-23-profiles.en.txt @@ -0,0 +1,148 @@ +Title: Profile upgrade to version 23.0 available +Author: Andreas K. Huettel <dilfri...@gentoo.org> +Posted: 2024-03-22 +Revision: 1 +News-Item-Format: 2.0 +Display-If-Profile: default/linux/alpha/17.0 +Display-If-Profile: default/linux/alpha/17.0/* +Display-If-Profile: default/linux/amd64/17.0 +Display-If-Profile: default/linux/amd64/17.0/* +Display-If-Profile: default/linux/amd64/17.1 +Display-If-Profile: default/linux/amd64/17.1/* +Display-If-Profile: default/linux/arm/17.0 +Display-If-Profile: default/linux/arm/17.0/* +Display-If-Profile: default/linux/arm64/17.0 +Display-If-Profile: default/linux/arm64/17.0/* +Display-If-Profile: default/linux/hppa/17.0 +Display-If-Profile: default/linux/hppa/17.0/* +Display-If-Profile: default/linux/ia64/17.0 +Display-If-Profile: default/linux/ia64/17.0/* +Display-If-Profile: default/linux/loong/22.0 +Display-If-Profile: default/linux/loong/22.0/* +Display-If-Profile: default/linux/m68k/17.0 +Display-If-Profile: default/linux/m68k/17.0/* +Display-If-Profile: default/linux/mips/17.0 +Display-If-Profile: default/linux/mips/17.0/* +Display-If-Profile: default/linux/powerpc/ppc64/17.0/* +Display-If-Profile: default/linux/ppc/17.0 +Display-If-Profile: default/linux/ppc/17.0/* +Display-If-Profile: default/linux/ppc64/17.0 +Display-If-Profile: default/linux/ppc64/17.0/* +Display-If-Profile: default/linux/ppc64le/17.0 +Display-If-Profile: default/linux/ppc64le/17.0/* +Display-If-Profile: default/linux/riscv/20.0/* +Display-If-Profile: default/linux/s390/17.0 +Display-If-Profile: default/linux/s390/17.0/* +Display-If-Profile: default/linux/sparc/17.0 +Display-If-Profile: default/linux/sparc/17.0/* +Display-If-Profile: default/linux/x86/17.0 +Display-If-Profile: default/linux/x86/17.0/* + +A profile upgrade to version 23.0 is available for your architecture. +The new 23.0 profiles enable some toolchain hardening features and +performance enhancements by default, and standardize settings. +You can find the list of changes on the wiki tracking page [1]. + +We strongly advise to precisely follow the upgrade instructions found +below. The 17.0, 17.1, 20.0, and 22.0 profiles will be marked deprecated +in 2 months and removed a year later. The exact dates may depend on the +architecture, see [2]. + +Upgrade instructions + +Note 1: The use of binary packages is completely optional, and also not +as much tested as the source-based upgrade path yet. If you prefer to +only use the traditional source-based installation, omit the "--getbinpkg" +parameter in all emerge invocations. + +Note 2: If you have manually changed your CHOST to a value different from +what the stages and profiles set, you may have to do that in the future too. +In that case you should know what you are doing, hopefully; please read the +instructions with a critical eye then. + +1. Ensure your system backups are up to date. Please also update + your system fully and depclean before proceeding. + glibc older than 2.36 and musl older than 1.2.4 is not supported anymore. + +2. If you are still using one of the long-deprecated amd64 17.0 profiles + (other than x32 or musl), then first complete the migration to the + corresponding 17.1 profile. Instructions can be found at [3]. + +3. If you are currently using systemd in a split-usr configuration, then first + complete the migration to the corresponding merged-usr profile of the + same profile version. Details on how to do this can be found in the news + item [4]. + If you are currently using openrc, migrate to 23.0 first, keeping your disk + layout. If you want to move from split-usr to merged-usr, do that afterwards. + +4. Run "emerge --info" and note down the value of the CHOST variable. + +5. Edit /etc/portage/make.conf; if there is a line defining the CHOST variable, + remove it. Also delete all lines defining CHOST_... variables. + +6. Select the 23.0 profile corresponding to your current profile, either using + "eselect profile" or by manually setting the profile symlink. + Note that old profiles are by default split-usr and the 23.0 profiles by + default merged-usr. Do NOT change directory scheme now, since this will + mess up your system! + Instead, make sure that the new profile has the same property: for example, + OLD default/linux/amd64/17.1 + ==> NEW default/linux/amd64/23.0/split-usr + (added "split-usr") + OLD default/linux/amd64/17.1/systemd/merged-usr + ==> NEW default/linux/amd64/23.0/systemd + (removed "merged-usr") + A detailed table of the upgrade paths can be found at [5]. Please consult it. + In some cases (hppa, x86) the table will tell you to pick between two choices. + What you need should be obvious from your *old* CHOST value (from step 4). + +7. Delete the contents of your binary package cache at ${PKGDIR} + rm -r /var/cache/binpkgs/* + +8. In the file or directory /etc/portage/binrepos.conf (if existing), update + the URI in all configuration such that they point to 23.0 profile binhost + directories. The exact paths can be found in the table at [5], too. + +9. Rebuild or reinstall from binary (if available) the following packages in + this order, with the same version as already active: + emerge --ask --oneshot --getbinpkg sys-devel/binutils + (you may have to run binutils-config and re-select your binutils now) + emerge --ask --oneshot --getbinpkg sys-devel/gcc + (IMPORTANT: If this command wants to rebuild glibc first, do *not* let it do + that; instead, abort and try again with --nodeps added to the command line.) + (you may have to run gcc-config and re-select your gcc now) + and the C library, i.e. for glibc-based systems + emerge --ask --oneshot --getbinpkg sys-libs/glibc + or for musl-based systems + emerge --ask --oneshot --getbinpkg sys-libs/musl + +10. Re-run "emerge --info" and check if CHOST has changed compared to step 3. + +If the CHOST has NOT changed, skip to step 13 (env-update). Otherwise, + +11. Recheck with binutils-config and gcc-config that valid installed versions + of binutils and gcc are selected. + +12. Check /etc/env.d, /etc/env.d/binutils, and /etc/env.d/gcc for files that + refer to the *OLD* CHOST value, and remove them. + Examples how to do this can be found in the similar procedure at [6]. + +13. Run env-update && source /etc/profile + +14. Re-emerge libtool: + emerge --ask --oneshot --getbinpkg libtool + +15. Just for safety, delete the contents of your binary package cache at + ${PKGDIR} again: + rm -r /var/cache/binpkgs/* + +16. Rebuild world: + emerge --ask --emptytree --getbinpkg @world + + +[1] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_transition +[2] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_profile_timeline +[3] https://www.gentoo.org/support/news-items/2019-06-05-amd64-17-1-profiles-are-now-stable.html +[4] https://www.gentoo.org/support/news-items/2022-12-01-systemd-usrmerge.html +[5] https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_update_table +[6] https://wiki.gentoo.org/wiki/Changing_the_CHOST_variable#Verifying_things_work