Hello. I'm going to update dpkg-cross package, to follow post-sarge changes in dpkg and company.
Dpkg-cross is a tool to create cross-compile environment, useful to cross-compile debian packages and other software. One of dpkg-cross's functions is to process a native library or libdev package for some arch, and turn it into arch-all packages that install libraries info /usr/$DEB_TARGET_GNU_ARCH)/lib/, and headers info /usr/$(DEB_TARGET_GNU_ARCH)/include/. E.g. arm cross-compile environment was created under /usr/arm-linux/. This was consistent with cross-binutils and cross-gcc packages file placement. In newer dpkg tools, target names changed, e.g. arm-linux turned into arm-linux-gnu. So, to keep system consistent, dpkg-cross should now place things under /usr/arm-linux/gnu/. The question is - how to process existing cross-compile environment, created by earlier versions of dpkg-cross. I am thinking to make the following trick. In postinst of new dpkg-cross, it will check for /usr/arm-linux, /usr/powerpc-linux/, and other places where packages created by earlier versions could place files. If any of such directories is found: - a directory with the new name will be created if not exists yet, - complete file hierarchy from the old directory will be copied to the new directory, - old directory will be replaces with a sympink to the new one. Looks that this procedure is more or less safe. E.g. removals of packages which files have been moved in this way, would remove correct files. Is it OK to go this way? Maybe, something better could be suggested? This is still not perfect: for example, it is never safe to remove created symlinks; also cross-compile environment will become broken if -arch-cross packages created with old and new dpkg-cross are mixed and dpkg-cross itself is either old or not installed. However, isn't it better than doing nothing (in which case any mixing of -arch-cross packages created by old and new dpkg-cross will be broken)? Nikita
pgpUt8KBDwqFY.pgp
Description: PGP signature