summaryrefslogtreecommitdiff
path: root/metadata/news/2024-03-22-new-23-profiles/2024-03-22-new-23-profiles.en.txt
blob: 0e2eebab73396126a355e26d7eb27e0c4896ee57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
Title: Profile upgrade to version 23.0 available
Author: Andreas K. Huettel <dilfridge@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