Gentoo Archives: gentoo-user

From: Neil Bothwick <neil@××××××××××.uk>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] What is the best way forward? - Update 2 - SUCCESS! - CURRENT!!!
Date: Tue, 09 Mar 2021 17:35:02
Message-Id: 20210309173444.1ac8c8c3@digimed.co.uk
In Reply to: Re: [gentoo-user] What is the best way forward? - Update 2 - SUCCESS! - CURRENT!!! by smurfd
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.