1 |
Massive congrats :) |
2 |
Great when things work out, after doing a ton of work to get there. |
3 |
|
4 |
br smurfd |
5 |
|
6 |
On 2021-03-08 23:06, Grant Taylor wrote: |
7 |
> On 2/25/21 5:31 PM, Grant Taylor wrote: |
8 |
>> 10 have git switch to the next day |
9 |
>> 20 emerge -aDUN @world |
10 |
>> 30 assess / deal with masked packages |
11 |
>> 40 goto 10 |
12 |
>> |
13 |
>> It /looks/ like things are working. |
14 |
> |
15 |
> *TL;DR* |
16 |
> |
17 |
> DenverCoder9: DEAR PEOPLE FROM THE FUTURE ... |
18 |
> |
19 |
> This method /does/ work. I have successfully brought the problem |
20 |
> system from ~1 year old to ~current (Gentoo portage repo < 24 hours old). |
21 |
> |
22 |
> *Speed Bumps* |
23 |
> |
24 |
> These were the four things that caused the biggest slow down in this |
25 |
> process. |
26 |
> |
27 |
> 1) Source packages / ebuilds no longer available. |
28 |
> - I found and downloaded files to DISTDIR. |
29 |
> - I copied some ebuilds from older versions of portage to my |
30 |
> local repo. |
31 |
> 2) make.profile not using PORTDIR definition in make.conf. |
32 |
> - I ran into this while working on October ~ November '20 updates. |
33 |
> 3) PYTHON_TARGETS & PYTHON_SINGLE_TARGET |
34 |
> - I ran into this after fixing #2. |
35 |
> - I had to add the following to pull Python 3.6 back in so that |
36 |
> things would work to add Python 3.7, before allowing the system to |
37 |
> remove Python 3.6 (again). |
38 |
> PYTHON_TARGETS="python2_7 python3_6 python3_7" |
39 |
> PYTHON_SINGLE_TARGET="python3_7" |
40 |
> 4) Firefox & Thunderbird 68 disliking rust ≈ 1.48. |
41 |
> - I had to give up on retaining version 68 of Firefox and |
42 |
> Thunderbird. |
43 |
> - The loss of some important extensions still really hurts. |
44 |
> |
45 |
> *How* |
46 |
> |
47 |
> The high level process that I used is a very close superset of what I |
48 |
> hypothesized. |
49 |
> |
50 |
> 10 have git switch to the next day |
51 |
> 20 emerge -DUN @world |
52 |
> 21 emerge --depclean --verbose n |
53 |
> 22 emerge @preserved-rebuild |
54 |
> 23 revdep-rebuild |
55 |
> 30 assess / deal with output from steps 20-23 |
56 |
> 40 goto 10 |
57 |
> |
58 |
> Steps 21-23 added mid-stream to make comparison to previous message |
59 |
> simpler. |
60 |
> |
61 |
> All of these steps were in a function, `e3` (see attached file), which |
62 |
> relied on one variable, `d`, the count of how many days to go |
63 |
> backwards and set the date (`D`) to that everything should act on. |
64 |
> |
65 |
> Aside: The next version of e3 would probably store `d` in a file and |
66 |
> subsequently re-load it from said file on each invocation. Thus |
67 |
> eliminating the reliance on the environment variable. I would |
68 |
> probably store this file in /var/tmp as /tmp and /dev/shm are cleared |
69 |
> on boot. |
70 |
> |
71 |
> After gaining enough trust in the overall process, I ended up running |
72 |
> the following while loop: |
73 |
> |
74 |
> while e3; true; done |
75 |
> |
76 |
> This allowed the system to stay busy emerging things up to the point |
77 |
> that something failed and needed attention. |
78 |
> |
79 |
> *Setup* |
80 |
> |
81 |
> I did a `git clone` of the Gentoo portage repo. Currently ~6 GB. |
82 |
> |
83 |
> I then created the branches in the git repo with the following command |
84 |
> (from inside of the git repo directory): |
85 |
> |
86 |
> for ((age=1; age<1024; age++)); do eval $(printf 'git log |
87 |
> --pretty=format:"%%H %%cd" --date=format:%%Y-%%m-%%d\ %%H:%%M:%%S |
88 |
> --after=%s --before=%s | fgrep -m1 %s' $(date +%Y-%m-%d -d "$(($age + |
89 |
> 1)) days ago") $(date +%Y-%m-%d -d "$(($age - 1)) days ago") $(date |
90 |
> +%Y-%m-%d -d "$age days ago")) | read hash date time; time git |
91 |
> checkout -b $date $hash; done |
92 |
> |
93 |
> Basically, this command starts at current; `stable`, and finds the |
94 |
> first (most recent) commit for a given date and creates a branch, and |
95 |
> works backwards for however many days configured; 1024 in the example. |
96 |
> |
97 |
> *Miscellany* |
98 |
> |
99 |
> I did `emerge -e @world` 3~5 times throughout the process just to make |
100 |
> sure that everything was consistent. I will do this once more |
101 |
> tomorrow after a full backup runs tonight. |
102 |
> |
103 |
> I did end up removing a small list of packages that were blocking |
104 |
> emerge in one way or another. -- I decided that removing them to |
105 |
> allow emerge to complete on it's own accord was more expedient than |
106 |
> fighting them at the time. I will re-add them as necessary. |
107 |
> |
108 |
> - net-firewall/nftables |
109 |
> - net-fs/ncpfs |
110 |
> - media-gfx/gimp |
111 |
> - dev-python/pycairo |
112 |
> - dev-python/fido2 |
113 |
> - net-analyzer/scapy |
114 |
> - app-crypt/yubikey-manager |
115 |
> |
116 |
> Some of the packages were subsequently pulled back in. |
117 |
> |
118 |
> I did run into a bug with app-misc/pax-utils where I needed to add |
119 |
> "-seccomp" for the package to be able to move forward. |
120 |
> |
121 |
> I also did the /usr/portage to /var/db/repos/gentoo et al. migration. |
122 |
> |
123 |
> "repo" can be ambiguous when there talking about both "Gentoo portage |
124 |
> repo" and "git repo". Especially when the latter is managing the former. |
125 |
> |
126 |
> The following packages take what seems like F O R E V E R to emerge: |
127 |
> |
128 |
> - gcc |
129 |
> - rust |
130 |
> - Firefox |
131 |
> - Thunderbird |
132 |
> |
133 |
> Link - xkcd - Wisdom of the Ancients (a.k.a. DenverCoder9) |
134 |
> - https://xkcd.com/979/ |
135 |
> |
136 |
> *Summary* |
137 |
> |
138 |
> Yes, there are probably faster and / or more efficient processes to |
139 |
> get a Gentoo system that's ~1 year behind caught up to current. But I |
140 |
> did learn some things along the way. -- I tried to outline the toe |
141 |
> stubbers so others can avoid them. |
142 |
> |
143 |
> Ultimately, I believe I have done in the last 11 days what would have |
144 |
> been done over the course of the last ~year. Even 11 days is longer |
145 |
> than necessary as I started with the while loop after getting to |
146 |
> January of this year. In hindsight, I believe I could have used the |
147 |
> while loop all along. |
148 |
> |
149 |
> I hope that I have included enough details for others to be able to |
150 |
> reproduce this process if they need to. |
151 |
> |
152 |
> Now it's time to repeat this process to bring the two companion |
153 |
> systems up to date. |
154 |
> |
155 |
> |
156 |
> |