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

apt-cross rewrite



http://buildd.emdebian.org/svn/browser/current/host/trunk/apt-cross/branches/apt-nc-cross

I've completed the first part of the migration of apt-cross to
NorthernCross - namely:

1. Migrating from ~/.dpkg-cross to ~/.apt-cross to disentangle the two
configurations. (Allows users to remove ~/.apt-cross without
breaking dpkg-cross - apt-cross will recreate the required data when
necessary.) (Needs a note in NEWS.Debian closer to release.)

2. Removing all apt-conf* files and controlling all Apt options
internally via a much modified NorthernCross::Config

3. Handling the apt-cache internally using a new NorthernCross::Cache
module built from modified NorthernCross/Cache.pm code. Removes the
need to fork `apt-cache` and removes large numbers of pattern matches
on apt-cache output.

4. Adding a --force option to force the downloading and rebuilding of
cross packages even if the same version is installed. (This is helpful
when you want to inspect the original _arm.deb for other purposes but
happen to have the cross version already installed). Currently, the
cross package cannot be forcibly reinstalled by apt-cross, just
manually. (See later).

5. Adding Class::Struct to make it easy to retrieve all package data
from a single variable. Adding NorthernCross code will add a dependency
on libapt-pkg-perl.

6. Bump to v0.2.9 during testing, to be 0.3.0 when ready. 0.2.x and
maybe some other releases will continue to be used in Emdebian in the
meantime.

7. Beginning to migrate some apt-cross code into NorthernCross::Config
or NorthernCross::Cache to make the same code available to
emdebian-tools (and therefore a dependency on apt-cross >= 0.3.0 in
emdebian-tools 0.4.0).

8. Retain NorthernCross code within the apt-cross package unless there
is any prospect of uploading the original NorthernCross to Debian as a
separate package. Rename apt-cross code to AptCross::Config etc. if
that becomes likely. (Or maybe do that anyway due to the level of
changes from current NC code? I'm beginning to favour AptCross::Config
and AptCross::Cache.)

9. Dependency handling is the next stage. Needs further modification of
the NC code and the apt-cross branch versions. I envisage dropping as
much as 40% of NC code and touching at least 70% of the remainder.

10. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=432132
> I'm not sure I can implement --simulate in the expected manner - dpkg
> --simulate does not provide the kind of output that would be useful:
> 
> $ sudo dpkg --no-act -i /opt/debian/pbuilder/result/foo-1_amd64.deb 
> Selecting previously deselected package foo.
> (Reading database ... 134416 files and directories currently installed.)
> Unpacking foo (from .../foo-1_amd64.deb) ...
...
> dpkg just doesn't do what you expect from --simulate and therefore
> neither can dpkg-cross or apt-cross.

Depending on 8 & 9, it may be possible to detail the dependencies in a
similar manner to apt:
> apt-get --simulate DOES give the required information:
> Inst texlive-common (2007-10 Debian:unstable)
> Inst texlive-doc-base (2007-3 Debian:unstable)
> Inst texlive-base-bin (2007-12 Debian:unstable)
> Inst texlive-base (2007-10 Debian:unstable)
> ...

Hopefully, that will be satisfactory. It appears to be all that can be
done without substantial changes in dpkg. At least it will be easier
and quicker without having to fork `apt-cache` recursively. ;-)

10. apt-cross may need to migrate to debconf - taking/copying one of the
emdebian-tools questions or otherwise handling the choice of whether to
support Apt::Install-Recommends and whether to use apt-get or aptitude.
Two questions, at least. If apt-cross asks whether to use apt-get or
use aptitude, I don't see that emdebian-tools needs to ask that again?

11. No debian/ config is in the branch at this time - the branch can
only be tested locally. These changes will not be uploaded until the
branch can be merged back into trunk.

12. Support for arbitrary apt config options in any apt-cross (or
emdebian-tools) operation becomes possible (but not yet fully
implemented).

13. Data::Dumper is now in use when apt-cross is used in very verbose
mode so that full details of the Apt options is visible. This provides
a much more flexible method than constantly copying or modifying
apt-conf files.

14. AptCrossPackage - a Class::Struct for convenient handling of
package data - will continue to develop and a few more classes may need
to be added so that the underlying AptPkg::PkgRecords data can be
extended to include the needs of a cross-building environment.
AptCrossPackage is bespoke to apt-cross - other scripts using the
modified NorthernCross::Cache code will get AptPkg data and can use
their own classes for their own extensions.

15. Better handling of skipping downloads using MD5 instead of just
file size. This is possible because the Apt cache data includes the
archive MD5sum and apt-cross can simply compare that.

16. Similarly, improved handling of downloads by retrieving the full
path to the .deb in the relevant mirror directly from the Apt cache
data provided by that mirror.

17. apt-cross --show and --list will be improved once the rest is
fixed, outputting data directly from the cache instead of via dpkg.

18. Some method of combining this code with the cache support for
repository scripts like cachecompare - I'm undecided on this one right
now, it may be useful to change (8) to make two packages from the
apt-cross source after all, allowing buildd.emdebian.org to install
AptCross::Cache etc. independently of apt-cross (and its dependencies
on dpkg-cross and dpkg-dev which are based on Lenny versions, not etch).

19. The final version will resemble apt-cross on the outside (with only
one or two new options and all existing options retained) but beyond
the option-handling code, it will be very different.

virtuoso: Please take a look - just be aware that the changes to your
NC code are both extensive and incomplete. ;-)

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/

Attachment: pgpOkFhc8bq6v.pgp
Description: PGP signature


Reply to: