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