[pacman-dev] Multiple/Shared Architectures

Teran McKinney sega01 at gmail.com
Sat Sep 27 16:03:11 EDT 2008


Hey,

I've planned out a set of changes I want to try with Pacman and
Makepkg. Most deal with creating a source repository setup that would
store source files as their sha512sums, but that isn't related to
this. Another thing that I want to do is have a "shared" repository
for non-architecture specific packages. I would rather not use
different repositories for the "shared" architecture, ie: core-shared,
extra-shared.

Here is my current mirror layout:

icadyptes/i486/{core,extra}

The shared architecture could be at:

icadyptes/shared/{core,extra}

I'm sure that this conflitcts with a few things inside libalpm, but
here is my proposed implmentation:

pacman.conf:
SupportedArchs = i486 shared (Could have i686 too, or anything making
this useful for other tasks)

mirrorlist:
Server = ftp://icadyptes.go-beyond.org/icadyptes/$arch/$repo

A shared repository would save disk space on mirrors, as well as
bandwidth (to a lesser extent). The makepkg implementation for this
could simply be setting $arch to shared. Distributions using Pacman
would need to change other things for this to work properly, but in my
opinion, it is a clean change that could be very useful. Packages
could be queried for just like they are if it is not immediately found
in the first repository, checking until it finds an architecture with
the package's name. This could serve other purposes, too. With
additional hacking (and possibly pacman.conf options), doc files could
be split into seperate packages (and hence a different repo), and be
given the "doc" architecture. Users would add "doc" to SupportedArchs
(I'm sure this could have a better name), and when they download a new
package the doc files would come in a seperate package with it.
SupportedArchs would also be ordered by preference, so perhaps it
could be pentium4, i686, i486, shared, so that packages (on an
incomplete build) more optimised for a certain architectures would be
prefered over their lesser-optimum counter parts (sure that this
induces a few potential problems though).

Now that I think about it, there could even be a $distribution setting
for people wanting to pull packages from multiple distributions :-P.

You guys have already put a ton of work into Pacman, and made it one
awesome package manager. Not sure if this idea interests you or not,
but it is something I'd really love to have in my Arch fork. I'm
willing to code this in myself, but I'd need to learn more C first,
and am sure that any of you could do it in much less time. Let me know
what you think of it, and if you have any suggestions or ideas.

Thanks,
Teran (sega01)

PS: I think that the stock makepkg should default to arch=(any) if
$arch is not set. I do this in Icadyptes, and it is a very safe (to my
knowledge) and easy hack. Has there been any discussion or patches
regarding PGP signed database files?



More information about the pacman-dev mailing list