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

Re: dpkg-cross_1.99+2.0.0pre1 - eventual removal of dpkg-cross



On Tue, 28 Aug 2007 23:00:49 +0000
Debian Installer <installer@ftp-master.debian.org> wrote:

Originally sent to deban-embedded, resent to devel for a wider
readership with a few clarifications for this list. Note that only pre1
has been uploaded - the diversions remain, for now, and pre2 (including
the below NEWS item) only exists in CVS at this time.

(If there are other bugs to be fixed in pre1, what is referred to here
as pre2 may be pre3 or pre4.)

> 
> Accepted:
> dpkg-cross_1.99+2.0.0pre1.dsc

pre2 is now waiting for patches to be included into dpkg-dev to provide
the support removed from dpkg-cross since pre1. After a few discussions
on IRC last night with the dpkg developers, I'm including this notice
in NEWS for pre2:

=======================

This version of dpkg-cross has been extensively refactored and
includes a new Perl module with a new API.

The dpkg-buildpackage and dpkg-shlibdeps diversions have been
removed due to increased cross-building support in dpkg-dev.
The customised versions of objcopy, objdump and strip have also been
removed due to the new dependency on binutils-multiarch.

As dpkg-cross is merged gradually back into dpkg, parts of the
old dpkg-cross will be removed from the package and simply stored
in CVS. Maintaining the old versions during the current changes in 
the Debian::DpkgCross module is impractical and it is unlikely that 
the CVS versions will be usable with the released package as the 
old code is increasingly left behind. Functions listed as "Legacy code"
in the module are likely to be removed in due course.

The next stage is expected to be the migration of the cross-config.$arch
files into dpkg-dev along with a method to replicate the gccross 
script currently used by dpkg-cross.

The dpkg-cross 'core' functionality of preparing Architecture:all
packages of development headers and shared objects for use in a cross
build is expected to be retained outside dpkg until such time as the
other components are successfully merged and a suitable method is 
available to implement support for cross-building within dpkg and apt.

This will then result in both dpkg-cross and apt-cross being removed
from Debian in preference for the integrated cross building support
within dpkg and apt.

The 2.x series of dpkg-cross will therefore aim to achieve its own
removal.

Once this happens, dpkg-dev could conflict with and replace dpkg-cross
to ensure the removal of the old code.

=======================

I'm not sure how long this will take, especially the apt side.
dpkg-cross will almost certainly still exist in the Lenny release,
albeit in a reduced state, but I can't see it persisting into the next
stable after Lenny. At that rate, apt-cross will only get one stable
release: Lenny.

So this pre2 marks the beginning of the long goodbye, it's been over
ten years (since Bo [0]) but soon it will be SLATFATF [1]. :-)

I'd recommend that anyone interested in how dpkg-cross migrates into
dpkg-dev should subscribe to the debian-dpkg and debian-embedded mailing
lists. I anticipate that the cross support in dpkg and apt will be
generalised and is likely to need input from a variety of sources to
ensure that sufficient flexibility and configurability is in place.

Bespoke and customised usage cases of dpkg-cross code are likely to be
increasingly broken by each round of changes during the migration. It
is possible that new wrappers may be needed in a small number of cases
where a general solution in dpkg would not be sufficient but the main
objective is that all cross-building support will be within the
standard tools: dpkg and apt/aptitude. 

Something along the lines of:

$ sudo apt-get -aarm install libfoo-dev

This would, IMHO, be worth having - even if the price is a loss of some
flexibility. With the existing debconf support in dpkg-cross, it could
be possible to just have:

$ sudo apt-get -a install libfoo-dev

or it may be simple enough to use an alias set:

alias apt-cross='apt-get -a'
alias cache-cross='apt-cache -a'
alias dpkg-cross='dpkg -a'

The general direction is that dpkg and apt *should* support
cross-building directly without the need for enhancements or other
wrappers 'in the general case'. i.e. "dpkg-buildpackage -a" should be
usable and prepare working packages without assistance from external
scripts. This much has been agreed with the dpkg maintainers and once
dpkg carries a working method to support cross-building it will be
much easier to get cross-build support in apt. (apt support is mainly
concerned with turning off the list cleanup option in apt so that
multiple architectures can have package lists in the same directory.
Whilst the option exists already, the implementation isn't ideal
because various other parts of apt tend to assume that the list
cleanup default is 'on' and rely on that to do their garbage
collection. Keeping list-cleanup off for long periods does tend to
lead to corrupt package lists eventually. With list-cleanup on,
switching from native to cross and back to native cache queries causes
two complete apt-get update runs, changing from cross to native being
especially slow because all the native package lists would have been
removed.)

This means that packages in Debian should then be expected to
cross-build successfully with the standard dpkg and apt tools (and a
suitable toolchain) and this will make it easier to report
cross-building bugs against any package in Debian with an expectation
that the bug is likely to be fixable (by being reproducible).

It should also ease other parts of cross building like being able to
use standard autobuilder code and simplifying cross building in a
chroot. It may even make it practical to have an emdebian port
in http://experimental.debian.net/ alongside armel and kfreebsd-i386
etc.

I anticipate that having cross-building supported "as standard" will
significantly reduce the need for customised and 'corner case' support
in dpkg-cross itself, making the whole migration easier.

Workarounds (i.e. hacks) that are currently part of dpkg-cross <= 1.39
will instead need to be filed as bugs in the relevant packages.

Depending on how long it takes to close #439979 (dpkg-dev: Please
support removal of dpkg-cross diversions) pre2 may actually end up
being the dpkg-cross 2.0.0 release for unstable.

[0] http://archive.debian.org/debian-archive/dists/bo/main/binary-all/utils/
[1] http://en.wikipedia.org/wiki/So_Long,_and_Thanks_for_All_the_Fish

-- 

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

Attachment: pgpKvj5FVmfMb.pgp
Description: PGP signature


Reply to: