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

apt-cross 0.0.4



apt-cross has just been updated in SVN. It's almost ready for upload to
Debian but I'd like some feedback on the latest changes first.

1. To use from svn, read the manpage first ($ man ./apt-cross.1) -
apt-cross has dependencies that need to be installed. (See also
debian/control in SVN).
2. several options have changed since 0.0.3 (as outlined
previously on this list).
	a) -L|--list-files has been dropped.
	b) -l|--list has been changed to list only cross-built
	packages, either local or ones in the identified repository.
	c) The long option of -s has been renamed: --show. This
	indicates how this option has been changed to more closely
	reflect the apt-cache behaviour. -s now only outputs data for
	cross-built packages. It also appends the relevant -$arch-cross
	suffix if that is not supplied.
	d) -i|--install will attempt to retrieve, build
	and install dependencies but see below.
	e) -s, -l and -u have all had explicit support for -a, -S and
	-m added as they now deal with cache data, not dpkg-status data.

3. Dependency handling.

OK, this is different to how apt works - the dependencies are those
required for dpkg-cross to install the cross-built package but
dpkg-cross is primarily aimed at libraries and header file packages. It
is *not* currently possible to do "apt-cross -i gnome", nor is it going
to be supported. Similarly, apt features like dist-upgrade are not
relevant to apt-cross. "apt-cross -i libxml2" does work.

apt-cross only outputs errors by default, to see what it is actually
doing, use the -v|--verbose option (can be repeated once more to
increase verbosity).

$ ./apt-cross -s libxml2
Package: libxml2-arm-cross
Status: install ok installed
Priority: extra

Note how asking apt-cross for data on libxml2 provides data on the
cross-built version, libxml2-arm-cross in my case. The libxml2 native
data is available via apt-cache as normal.

I've also fixed the detection code so that apt-cross doesn't try to get
dpkg-cross to do all the same work again and again:

$ ./apt-cross -v -i libxml2
Arch:     arm
Suite:    unstable
Package:  libxml2
libxml2-arm-cross is already installed at the newest version available
in unstable.

The basic issue comes down to foo-common and libfoo-common packages -
dpkg-cross does not handle these Architecture:all packages (doing so
would overwrite existing packages). Although dpkg-cross -A can be used
to force these packages, there are problems with some libfoo-common
packages (e.g. libgda2-common) that prevent the installation of the
forced package.

apt-cross dependency handling is a convenience wrapper (much as
apt-cross is itself) and I'd like some feedback on whether this is
desirable, usable, broken, useless or downright dangerous. :-)

4. Packages

There is no package of 0.0.4 at the moment - I want to see how the SVN
code works out first.

Background
----------

apt-cross provides apt functionality for getting, building and
installing libraries and header files for cross-compiling using
dpkg-cross.  apt-cross -i will search for and download missing
dependencies of the requested package before building and installing
the requested package and dependencies using dpkg-cross and dpkg -i
(sudo required).

apt-cross is intended to make it easier to locate, download, install
and update your cross-compiling libraries, directly from the Debian
archives.

apt-cross is not intended to handle applications or Architecture: all
packages like foo-common or libfoo-common. apt-cross can download the
cross-compiling version of those packages but does not build or install
them - this can be done with dpkg-cross -A and dpkg -i if necessary.
Note that not all such packages can be installed in that way.

By default, apt-cross uses your /etc/apt/sources.list to find the
latest debian package file for the architecture specified (default is
the dpkg-cross default) and in the suite specified (default is
unstable). Alternatively, you can specify a different mirror.
Downloaded files can be passed directly to dpkg-cross using the -b or
-i commands to apt-cross. If the local file is missing or out of date,
a new one will be downloaded automatically.

If the apt-cross cache for the specified suite and architecture is
older than 24hours, it will be updated automatically. If the cache
needs to be updated more frequently or if the cache becomes corrupted,
use -u|--update.

As with other packages based on dpkg-cross, the dpkg-cross default
architecture is set by copying /etc/dpkg-cross/cross-compile to
~/.dpkg-cross and then editing ~/.dpkg-cross/cross-compile to set your
default_arch.

--


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

Attachment: pgpjuvwBl3tJC.pgp
Description: PGP signature


Reply to: