shameless self-promoting website
»Rejourn root
Posted Monday, 29 December 2008 by Miklos
Tags: en hacking

So here they go.

First, I needed a list of packages for rebuild:

wget -O test.html 'http://frugalware.org/packages/?op=file&srch=usr%2Flib%2Fpython2.5&arch=i686&ver=current'
lynx -dump ./test.html|grep ' [0-9]\+\. \['|sed 's/.*\]\(.*\) .*/\1/' > test.list

Then I used the following cycle:

git checkout -f; for i in $(cat ~/test.list); do echo $i; cd ~/git/python26/source/*/$i || continue; sudo makepkg -t python2
6,current -C; git clean -x -d -f; sed -i 's|python>=2.5|python>=2.6|g' FrugalBuild; bumppkg -t python26,current --rebuild "-
 rebuilt with python-2.6" || break; repoman -t python26 -k push; done

When a build failed, I fixed it up manually and used the following aliases:

alias pybuild="sudo makepkg -t python26,current -cu"
alias pypush="repoman -t python26 -k push"
alias pyrec='repoman rec "- rebuilt with python-2.6"'

then removed the already built pkgs from the top of test.list and started the for cycle again.

Once this was done, I did a

git grep 'python>=2.5'

to ensure everything has &gt=2.6 now (except a few cases where a rebuild was not necessary).

Syncing on x86_64 was like this:

I generated the package order with:

git log --reverse --no-merges --pretty=oneline master ^origin/master|sed 's/.* \(.*\)-[^-]\+-[^-]\+-i686/\1/' > build.list

Then I started a for cycle as well, but now just ignoring the failed builds:

git checkout -f; for i in $(cat ~/build.list); do echo $i; cd ~/git/python26/source/*/$i || continue; sudo makepkg -t python26,current -C; git clean -x -d -f; makepkg -dgu; rm -rf src; if sudo makepkg -t python26,current -cu; then repoman -t python26 -k push; else echo $i >> ~/broken.list; fi; done

fortunately less then 5% of all pkgs failed.

OK, that's all.