On Tue, 9 Mar 2021 17:26:41 +0100, smurfd wrote: > Massive congrats :) > Great when things work out, after doing a ton of work to get there.
As the great Douglas Adams once said "I am rarely happier than when spending an entire day programming my computer to perform automatically a task that would otherwise take me a good ten seconds to do by hand.”" > br smurfd > > On 2021-03-08 23:06, Grant Taylor wrote: > > On 2/25/21 5:31 PM, Grant Taylor wrote: > >> 10 have git switch to the next day > >> 20 emerge -aDUN @world > >> 30 assess / deal with masked packages > >> 40 goto 10 > >> > >> It /looks/ like things are working. > > > > *TL;DR* > > > > DenverCoder9: DEAR PEOPLE FROM THE FUTURE ... > > > > This method /does/ work. I have successfully brought the problem > > system from ~1 year old to ~current (Gentoo portage repo < 24 hours > > old). > > > > *Speed Bumps* > > > > These were the four things that caused the biggest slow down in this > > process. > > > > 1) Source packages / ebuilds no longer available. > > - I found and downloaded files to DISTDIR. > > - I copied some ebuilds from older versions of portage to my > > local repo. > > 2) make.profile not using PORTDIR definition in make.conf. > > - I ran into this while working on October ~ November '20 > > updates. 3) PYTHON_TARGETS & PYTHON_SINGLE_TARGET > > - I ran into this after fixing #2. > > - I had to add the following to pull Python 3.6 back in so that > > things would work to add Python 3.7, before allowing the system to > > remove Python 3.6 (again). > > PYTHON_TARGETS="python2_7 python3_6 python3_7" > > PYTHON_SINGLE_TARGET="python3_7" > > 4) Firefox & Thunderbird 68 disliking rust ≈ 1.48. > > - I had to give up on retaining version 68 of Firefox and > > Thunderbird. > > - The loss of some important extensions still really hurts. > > > > *How* > > > > The high level process that I used is a very close superset of what I > > hypothesized. > > > > 10 have git switch to the next day > > 20 emerge -DUN @world > > 21 emerge --depclean --verbose n > > 22 emerge @preserved-rebuild > > 23 revdep-rebuild > > 30 assess / deal with output from steps 20-23 > > 40 goto 10 > > > > Steps 21-23 added mid-stream to make comparison to previous message > > simpler. > > > > All of these steps were in a function, `e3` (see attached file), > > which relied on one variable, `d`, the count of how many days to go > > backwards and set the date (`D`) to that everything should act on. > > > > Aside: The next version of e3 would probably store `d` in a file and > > subsequently re-load it from said file on each invocation. Thus > > eliminating the reliance on the environment variable. I would > > probably store this file in /var/tmp as /tmp and /dev/shm are cleared > > on boot. > > > > After gaining enough trust in the overall process, I ended up running > > the following while loop: > > > > while e3; true; done > > > > This allowed the system to stay busy emerging things up to the point > > that something failed and needed attention. > > > > *Setup* > > > > I did a `git clone` of the Gentoo portage repo. Currently ~6 GB. > > > > I then created the branches in the git repo with the following > > command (from inside of the git repo directory): > > > > for ((age=1; age<1024; age++)); do eval $(printf 'git log > > --pretty=format:"%%H %%cd" --date=format:%%Y-%%m-%%d\ %%H:%%M:%%S > > --after=%s --before=%s | fgrep -m1 %s' $(date +%Y-%m-%d -d "$(($age + > > 1)) days ago") $(date +%Y-%m-%d -d "$(($age - 1)) days ago") $(date > > +%Y-%m-%d -d "$age days ago")) | read hash date time; time git > > checkout -b $date $hash; done > > > > Basically, this command starts at current; `stable`, and finds the > > first (most recent) commit for a given date and creates a branch, and > > works backwards for however many days configured; 1024 in the example. > > > > *Miscellany* > > > > I did `emerge -e @world` 3~5 times throughout the process just to > > make sure that everything was consistent. I will do this once more > > tomorrow after a full backup runs tonight. > > > > I did end up removing a small list of packages that were blocking > > emerge in one way or another. -- I decided that removing them to > > allow emerge to complete on it's own accord was more expedient than > > fighting them at the time. I will re-add them as necessary. > > > > - net-firewall/nftables > > - net-fs/ncpfs > > - media-gfx/gimp > > - dev-python/pycairo > > - dev-python/fido2 > > - net-analyzer/scapy > > - app-crypt/yubikey-manager > > > > Some of the packages were subsequently pulled back in. > > > > I did run into a bug with app-misc/pax-utils where I needed to add > > "-seccomp" for the package to be able to move forward. > > > > I also did the /usr/portage to /var/db/repos/gentoo et al. migration. > > > > "repo" can be ambiguous when there talking about both "Gentoo portage > > repo" and "git repo". Especially when the latter is managing the > > former. > > > > The following packages take what seems like F O R E V E R to emerge: > > > > - gcc > > - rust > > - Firefox > > - Thunderbird > > > > Link - xkcd - Wisdom of the Ancients (a.k.a. DenverCoder9) > > - https://xkcd.com/979/ > > > > *Summary* > > > > Yes, there are probably faster and / or more efficient processes to > > get a Gentoo system that's ~1 year behind caught up to current. But > > I did learn some things along the way. -- I tried to outline the > > toe stubbers so others can avoid them. > > > > Ultimately, I believe I have done in the last 11 days what would have > > been done over the course of the last ~year. Even 11 days is longer > > than necessary as I started with the while loop after getting to > > January of this year. In hindsight, I believe I could have used the > > while loop all along. > > > > I hope that I have included enough details for others to be able to > > reproduce this process if they need to. > > > > Now it's time to repeat this process to bring the two companion > > systems up to date. > > > > > > > > -- Neil Bothwick Teamwork is essential; it gives the enemy other people to shoot at.
pgpuZGB_SLqHd.pgp
Description: OpenPGP digital signature

