Abhishek Dasgupta wrote:
2009/5/6 Firmicus <Firmicus@gmx.net>:
OK, back to topic. First of all, the git repo you gave me does not have the patches from Abhishek. I finally figured out that I had to pull his branch any-arch from github.
Aaron's git repo also mirrors my any-arch branch on github so you should have got it when you cloned.
My bad then. I had cloned the official archlinux git repo instead :/
BTW, the script convert-to-any is quite broken. I have first tried to fix it but soon realized it is actually not a good idea to rely on it at all. Better to create clean packages for arch=any instead.
There are quite a lot of packages which need to be moved to the any architecture. If all of them have to be rebuilt it'll be a waste of time. I'll look through the convert-to-any script and try to fix it next week. Making this script work properly will save us a lot of time later.
Why move up-to-date packages to simply change the arch parameter? We can easily change it in the PKGBUILDs in trunk and it will occur automatically with the next update. There is no benefit in converting the actual packages, really. It may save some space on the server and the mirrors but the risk that we thereby mess things up does not justify this IMHO. Still, if you insist and if my fellow devs think we should massively move architecture-independent packages to "arch=any", then I would propose the following approach: Clearly the first step of the process involves commiting the change to svn: #BEGIN "commitpkg2any" #========================================== #!/bin/bash if [ $# -ne 1 ]; then echo "Syntax: $(basename $0) <repo>" exit 1 fi repo=$1 source PKGBUILD sed -i 's|^arch=.\+$|arch=(any)|' PKGBUILD svn commit -m "upgpkg: $pkgname $pkgver-$pkgrel Converted to arch=any" > /dev/null archrelease $repo-any if [ $? -ne 0 ]; then echo "Cancelled" exit 1 fi echo "===> Tagged for $repo-any" pushd .. svn rm $repo-i686 svn rm $repo-x86_64 svn commit -m "removed $repo-i686 and $repo-x86_64 for $pkgname" popd echo "Don't forget to run \"/arch/convert2any\" on the package to be converted" echo "in your staging dir on gerolde, followed by \"/arch/db-$repo\"" #========================================== #END The convert2any script should only take care of converting the actual package in the staging dir. Your convert-to-any script in fact duplicates much of the code in db-update, which shouldn't be. #BEGIN convert2any #========================================== #!/bin/bash if [ $# -ne 1 ]; then echo "Syntax: $(basename $0) <package_file> (in your staging dir)" exit 1 fi pkg=$1 if [ ! -f $pkg ]; then echo "Package not found. You can copy it here from /srv/ftp/<repo>/" exit 1 fi if [ "$(basename $(readlink -f ..))" != "staging" ]; then echo "Error: Not in a staging dir!" exit 1 fi PKGEXT=".pkg.tar.gz" newpkg=$(echo $pkg | sed "s/-\(i686\|x86_64\)$PKGEXT/-any$PKGEXT/") mv $pkg $newpkg gunzip $newpkg newtar=${newpkg%.gz} tar xf $newtar .PKGINFO sed -i 's/\(i686\|x86_64\)/any/' .PKGINFO tar --delete -f $newtar .PKGINFO tar rf $newtar .PKGINFO rm .PKGINFO gzip $newtar echo "Conversion to $newpkg done" #========================================== #END The rest can then be done by db-update. Best, F PS: I've attached my updated patch for dbscripts, with additional changes for cron-jobs/adjust-permissions and cron-jobs/check_archlinux/check_packages.py