2008/1/23, Mark Constable <markc@renta.net>:
On 23 Jan 2008 23:23, Roman Kyrylych wrote:
Things that work now: * makepkg support to understand arch=('any') and build a package correctly * repo-add/repo-remove work too, so you can create a db with them and test how pacman installs those packages. * pacman should pring 'Architecture: any' on -Si/-Qi Note that repo-add/repo-remove and pacman didn't require a single change to support '-any' packages, that's because they don't care about packages' architecture.
Right, so they are arch agnostic, cool.
Packages produced from PKGBUILD with arch=('any') are _excactly_ same when built on either i686 or x86_64 or even unofficial 'i586' and 'ppc' (when built with makepkg >= 3.0). (They can differ only by build timestamp)
Right now, '-any' packages cannot be used in AUR and official repos yet. You may use them for your own local repo for arch-independent packages if you have both i686 and x86_64 installed.
Why the requirement for both "i686 and x86_64 installed" ?
It's not a requirement, of course. IMO that just don't make much difference to change arch=() in every arch-indepent package you build from AUR if you use only one arch.
Be sure to add '-any' to both i686 and x86_64 localrepo.db.tar.gz files when updating your repo db.
I know this is not the right way to do it but it's a first attempt to get a feel for how to do it properly... I have built an -any package and uploaded it into it's own area with it's own [repo] stanza and successfully added that same package to both an i686 and x86_64 system. I could not do this pre v3 pacman with i868 or x86_64 in the filename.
What I am unsure of is, in this example, how to add the -any package to both 32bit and 64bit *.db.tar.gz files so that the -any package, in a different area, can still be downloaded... ie; will relative paths work ?
Symlinks (or maybe hardlinks) Example: /mylocalrepo/any/foobar-1.0-1-any.pkg.tar.gz <- the real file /mylocalrepo/i686/foobar-1.0-1-any.pkg.tar.gz -> ../any/foobar-1.0-1-any.pkg.tar.gz /mylocalrepo/x86_64/foobar-1.0-1-any.pkg.tar.gz -> ../any/foobar-1.0-1-any.pkg.tar.gz Then you just do 'repo-add mylocalrepo.db.tar.gz *' in i686 and x86_64 trees.
I've added this to my /etc/pacman.conf, uncommenting the appropriate arch on either machine...
[proaudio-any] Server = http://pkg.markconstable.com/proaudio/any
#[proaudio-i32] #Server = http://pkg.markconstable.com/proaudio/i32
#[proaudio-i64] #Server = http://pkg.markconstable.com/proaudio/i64
This looks a bit ugly on users side and doubles the number of repositories. Besides, Pacman keeps track of groups only in one repo, so when you do pacman -Sg gnome-extra you'll get one list of packages in extra and then another list of packages in extra-any (e.g. gnome-audio) Moreover, if you have testing repo at the end and want to test some new package - you do -S testing/pkgname but now with *-any repos you'll have to remember if that package arch-dependent or not. To summarize - while it seems easier on server side - it just brings more problems and no benefit on users side. -- Roman Kyrylych (Роман Кирилич)