1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
# -*- perl -*-
use vars qw( $obsolete_keymaps );
# Subarches
# FIXME: not done
# Issues:
# * ppc issues not fully asserted yet
# * /proc/hardware, which only exists on m68k and ppc, seems to be
# an OPTION while configuring the kernel !
# Any fallback when it's not there ?
# * USB set of keymap should contain what ? mac ? pc ? subset of those ?
# SUBARCH KEYMAP SET DETECTION
# m68k/atari atari "Model: Atari"
# m68k/amiga amiga "Model: Amiga"
# m68k/mac mac "Model: Macintosh"
# m68k/mvme pc "Model: Motorola"
# m68k/bvme pc "Model: BVME[46]000"
# m68k/{sun,apollo,next,q40,hp300} Not supported by Debian
# ppc/apus amiga "machine: Amiga"
# ppc/chrp pc,mac "machine: CHRP"
# ppc/pmac mac "machine: PowerMac|[Pp]ower[Bb]ook*|Power|iMac*|PowerMac1*"
# ppc/prep pc "machine: PReP"
# ppc/{bbox,mbx,ppc64,82xx,8xx} Not yet supported by Debian
# arm/* pc (refered to as 'arm' only)
sub guess_arch {
my ($defs) = @_;
my $arch = `dpkg --print-architecture`;
chomp $arch;
# Overrides for testing:
# $arch = 'powerpc';
# $arch = 'm68k';
if (($arch eq 'powerpc') || ($arch eq 'm68k')) {
my $subarch;
if ($arch eq 'powerpc') {
my $line = `sed -n 's/^machine.*: //p' /proc/cpuinfo`;
chomp $line;
if ($line eq '') {
my $line = `sed -n 's/^platform.*: //p' /proc/cpuinfo`;
chomp $line;
abort ($defs, "No \"machine\" or \"platform\" field in /proc/cpuinfo") if $line eq '';
}
$subarch = lc $line;
} elsif ($arch eq 'm68k') {
my $line = `sed -n 's/^Model.*://p' /proc/hardware`;
chomp $line;
abort ($defs, "No \"Model\" field in /proc/hardware") if $line eq '';
$subarch = lc $line;
}
chomp($subarch);
$subarch =~ s/^\s*//;
$subarch = 'amiga' if $subarch =~ m/amiga/;
$subarch = 'chrp' if $subarch =~ m/chrp/;
$subarch = 'prep' if $subarch =~ m/prep/;
$subarch = 'mac' if $subarch =~ m/macintosh|powermac|powerbook|power|imac|powermac1/;
$subarch = 'atari' if $subarch =~ m/atari/;
$subarch = 'mvme' if $subarch =~ m/motorola/;
$subarch = 'bvme' if $subarch =~ m/bvme/;
$subarch = 'ps3' if $subarch =~ m/PS3/;
$arch = "$arch/$subarch";
}
# Overrides for testing:
# $arch = 'sparc';
# $arch = 'powerpc/mac';
# $arch = 'powerpc/chrp';
# $arch = 'm68k/amiga';
# $arch = 'alpha';
return $arch;
}
sub abort {
my ($defs, $msg) = @_;
print STDERR "Debconf module aborted ($msg) - using old config mechanism.\n";
# fset_default($defs);
exit 0;
}
sub correctname($) {
my ($string) = @_;
$string = lc $string;
$string =~ s/[^a-z0-9+\-\.\/]/_/g;
return $string;
}
# BELOW THIS LINE IS STUFF FOR ALL KEYMAP PROVIDERS
$::keymap_defs = {
'prefix' => 'console-data/keymap/',
'toplevel' => 'family',
'sublevels' => [
'layout',
'variant',
'keymap',
],
'allitems' => $::keymaps,
'obsolete' => $::obsolete_keymaps,
'archsets' => {
'i386' => [ 'pc' ],
# 'hurd-i386' => [ 'pc' ],
'sparc' => [ 'sparc' ],
'alpha' => [ 'pc' ],
'arm' => [ 'pc' ],
'arm/riscpc' => [ 'pc' ],
'mips' => [ 'pc' ],
'm68k/atari' => [ 'atari' ],
'm68k/amiga' => [ 'amiga' ],
'm68k/mac' => [ 'mac' ],
'm68k/mvme' => [ 'pc' ],
'm68k/bvme' => [ 'pc' ],
'powerpc/amiga' => [ 'amiga' ], # apus
'powerpc/chrp' => [ 'pc', 'mac' ],
'powerpc/mac' => [ 'pc' ],
'powerpc/prep' => [ 'pc' ],
'powerpc/ps3' => [ 'pc' ],
'amd64' => [ 'pc' ],
},
};
|