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