OK, I've got a possible implementation for this bug: dpkg-cross: please support wrong architecture > We don't need to disable this check if the correct dpkg foo-table > entries are added for the desired arch, right? > > So once dpkg-architecture et al. all behave as planned, all that > remains is to have a 'proper' way to extend those tables for any > 'unofficial' archs that people require. > So I think what we need here is for dpkg tools to also read > from any foo-table.* files that exist in /usr/share/dpkg/. > Then you can add these custom arch definitions in ostable.myarch > etc. where they won't get stomped by dpkg updates, and enable > them to be provided by a separate package that 'defines' the > new arch that is desired in a fairly well defined way. > It shouldn't be too hard to add support for this to dpkg, and > it has been discussed on #emdebian to a reasonable state of > consensus among the participants. If no-one else has a better > suggestion, and Neil and the dpkg maintainers like it, I think > this is the way we should go on this. The actual implementation would work with: $ cat /etc/dpkg-cross/archtable.d/archtable.default # This is the default list of architectures that differ # between dpkg-cross and dpkg. # Other files can be added to this directory using the same # syntax. Lines starting with # are comments and are ignored. # Additionally, content after # on any line is also ignored # as long as the rest of the line is valid syntax. # Syntax is 'key: value' # key cannot be quoted, value can be quoted. armeb: armeb-linux-gnueabi hurd-i386: i386-gnu #XXX This differs from dpkg-architecture s390x: 's390-linux-gnu' #XXX This differs from dpkg-architecture openbsd-i386: 'i386-openbsd' #XXX This differs from dpkg-architecture freebsd-i386: 'i386-freebsd' #XXX This differs from dpkg-architecture darwin-i386: 'i386-darwin', #XXX This differs from dpkg-architecture win32-i386: 'i386-cygwin' $ A package or a user could then drop a suitable file in that directory. The contents of any file in that directory are then added to %archtable. I think this could be manageable within dpkg as well as dpkg-cross. The static %archtable definition would be replaced by: $arch_dir = '/etc/dpkg-cross/archtable.d/'; %archtable = (); opendir (ARCHDIR, $arch_dir) or carp "Unable to read $arch_dir: $!\n"; my @pathfiles=grep(!/^\.\.?$/, readdir ARCHDIR); closedir (ARCHDIR); foreach my $file (@pathfiles) { next if (-d "${arch_dir}$file"); my $conf = Config::Auto::parse("${arch_dir}$file", format => "colon"); foreach my $p (sort keys (%$conf)) { $p =~ s/'//g; if (not defined ($conf->{$p})) { carp "syntax error for $p in ${arch_dir}$file\n"; next; } my $line = (ref($conf->{$p}) eq 'ARRAY') ? join (' ', @{$conf->{$p}}) : $conf->{$p}; $line =~ s/\#.*$//; $line =~ s/'//g; $line =~ s/"//g; $archtable{$p} = $line; } } -- Neil Williams ============= http://www.data-freedom.org/ http://www.nosoftwarepatents.com/ http://www.linux.codehelp.co.uk/
Attachment:
pgptpe4g9TdSp.pgp
Description: PGP signature