[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#536029: support to download index files for multiple architectures



David Kalnischkies <kalnischkies+debian@gmail.com> writes:

>> 3) Segfaults if an architecture is excluded
>> APT::Architectures={ "amd64";"i386";"armel"; };
>> deb     [ arch=amd64,i386 ] http://chocos/debian sid main contrib non-free
>
> Worked fine for me. (TM)
> My local repository has no amd64 so i excluded that right from the start
> so i am pretty sure this should work.
> It is properly a too small mmap (but the error should be shown? :/ )
> Could you provide complete source.list / config ?

I can confirm that the problem is a too small mmap. At least now that
I've doubled the value the segfault disapeared as well.

>> 4) Oldy but goody: E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 50331648. (man 5 apt.conf)
>
> Yeah, we haven't raise the limit as we doesn't support multiarch
> currently anyway
> and the mmap doesn't support growing currently (i hope i can work on that)
> so to whatever value we raise this amount of memory need to be free as it is
> allocated at once which isn't to gentle for small devices if the value
> is too high.
>
>
>> I guess all the extra dummy packages for arch=all flood the mmap so
>> again it must be increased.
>
> The real flood is the pure mass of "implicit" dependencies added for
> every package version. (see apt-cache stats and the FinishCache() method
> in pkgcachegen.cc) As written in the README file the complete
> MultiArch implementation is currently done without (much) changes to
> the resolver but instead handled by Dependencies - done in the hope that
> resolvers doesn't need to be told about MultiArch (or at least not in first
> iteration).
>
>> I'm not sure the dummy arch=all packages is the right approach for multiarch.
>
> The Spec says that arch all packages should be handled in the same way as
> if they would be of the same arch as the package which depends on them.
> ( Dependencies involving Architecture: all packages )
>
> This nearly forced me to split the arch all packages into arch-depended
> pseudo packages so other packages can depend on them instead -
> otherwise APT wouldn't be able to calculate the status of the dependencies
> in advanced?
> Another point is that packages from time to time switch their "Architecture"
> (from any to all or vice versa) which can be transparently handled this way.
>
>
> What i really dislike is the MultiArchKiller (nickname for the operation done in
> depcache.cc in Update() to remove pseudo packages for architectures we
> don't need/like to have this package installed [in cache generation an
> all package
> is installed means all pseudo packages are installed - which we need to revert
> now in a clever way]) as it is a lot of guesswork and (therefore) full of bugs
> (the last fix is in my branch rev. 1969), but i so far see no alternative as i
> could still install e.g. with dpkg or others non extended updaters so using an
> extended_state is out of question.

Yeah, I run into the same problem trying to modify dpkg. The problem is
that an arch=all package being installed or not does no longer suffice
to see if it fullfills a dependency. You need to recursively check what
the arch=all package depends on or transitional dummy packages might
break.

I yet have to look at the actual implementation but maybe the pseudo
packages can be made better or the dependencies itself could be changed
to skip the pseudo packages. I don't think guessing what pseudo packages
we don't need/like is going to work well though. Probably better to make
the resolver aware that a psuedo package can be installed or purged
without action and mark it as installed if the depends fit. But I'm just
guessing here from what I read in the README and from skimming the
patch. I need a much deeper look at the source to see if my thoughts
actualy translate into your implementation.

> Best regards / Mit freundlichen Grüßen,
>
> David Kalnischkies
>
> P.S.: Sorry, the message is not well-prepared (i don't even have the source)
> and doesn't include much details/answers, but i want to answer now non the
> less as i am not available in the next few days for comments.

MfG
        Goswin



Reply to: