Merge pull request #119096 (update kbd, add tests)

The kbd package was outdated for years and the last version bump has
been in 2017 and the package has no maintainer. The pull request in
question adds @davidak as maintainer, updates the package to version
2.4.0 and adds a keymap test for the "bone" layout.

Since the dvp and neo layouts are now included, we now no longer need
the kbdKeymaps package.

While the package is one of the dependencies of systemd, its impact is
nonetheless relatively low, because the worst that could happen is that
the keymap can't be set at boot time but it should not break any
software further down the line.

This is the reason why I'm merging this regardless of only having tested
this via running the "keymap" NixOS VM test but without testing on a
real system yet.
This commit is contained in:
aszlig 2021-04-23 20:12:36 +02:00
commit a3f298e48f
No known key found for this signature in database
GPG Key ID: 684089CE67EBB691
8 changed files with 53 additions and 140 deletions

View File

@ -680,6 +680,17 @@ environment.systemPackages = [
All CUDA toolkit versions prior to CUDA 10 have been removed.
</para>
</listitem>
<listitem>
<para>
The <package>kbdKeymaps</package> package was removed since dvp and neo
are now included in <package>kbd</package>.
If you want to use the Programmer Dvorak Keyboard Layout, you have to use
<literal>dvorak-programmer</literal> in <option>console.keyMap</option>
now instead of <literal>dvp</literal>.
In <option>services.xserver.xkbVariant</option> it's still <literal>dvp</literal>.
</para>
</listitem>
</itemizedlist>
</section>

View File

@ -82,8 +82,7 @@ in
packages = mkOption {
type = types.listOf types.package;
default = with pkgs.kbdKeymaps; [ dvp neo ];
defaultText = "with pkgs.kbdKeymaps; [ dvp neo ]";
default = [ ];
description = ''
List of additional packages that provide console fonts, keymaps and
other resources for virtual consoles use.

View File

@ -107,17 +107,32 @@ in pkgs.lib.mapAttrs mkKeyboardTest {
altgr.expect = [ "~" "#" "{" "[" "|" ];
};
extraConfig.console.keyMap = "azerty/fr";
extraConfig.console.keyMap = "fr";
extraConfig.services.xserver.layout = "fr";
};
bone = {
tests = {
layer1.qwerty = [ "f" "j" ];
layer1.expect = [ "e" "n" ];
layer2.qwerty = [ "shift-f" "shift-j" "shift-6" ];
layer2.expect = [ "E" "N" "$" ];
layer3.qwerty = [ "caps_lock-d" "caps_lock-f" ];
layer3.expect = [ "{" "}" ];
};
extraConfig.console.keyMap = "bone";
extraConfig.services.xserver.layout = "de";
extraConfig.services.xserver.xkbVariant = "bone";
};
colemak = {
tests = {
homerow.qwerty = [ "a" "s" "d" "f" "j" "k" "l" "semicolon" ];
homerow.expect = [ "a" "r" "s" "t" "n" "e" "i" "o" ];
};
extraConfig.console.keyMap = "colemak/colemak";
extraConfig.console.keyMap = "colemak";
extraConfig.services.xserver.layout = "us";
extraConfig.services.xserver.xkbVariant = "colemak";
};
@ -129,9 +144,13 @@ in pkgs.lib.mapAttrs mkKeyboardTest {
symbols.qwerty = [ "q" "w" "e" "minus" "equal" ];
symbols.expect = [ "'" "," "." "[" "]" ];
};
extraConfig.console.keyMap = "dvorak";
extraConfig.services.xserver.layout = "us";
extraConfig.services.xserver.xkbVariant = "dvorak";
};
dvp = {
dvorak-programmer = {
tests = {
homerow.qwerty = [ "a" "s" "d" "f" "j" "k" "l" "semicolon" ];
homerow.expect = [ "a" "o" "e" "u" "h" "t" "n" "s" ];
@ -142,6 +161,7 @@ in pkgs.lib.mapAttrs mkKeyboardTest {
symbols.expect = [ "&" "[" "{" "}" "(" "=" "*" ")" "+" "]" "!" ];
};
extraConfig.console.keyMap = "dvorak-programmer";
extraConfig.services.xserver.layout = "us";
extraConfig.services.xserver.xkbVariant = "dvp";
};
@ -156,6 +176,7 @@ in pkgs.lib.mapAttrs mkKeyboardTest {
layer3.expect = [ "{" "}" ];
};
extraConfig.console.keyMap = "neo";
extraConfig.services.xserver.layout = "de";
extraConfig.services.xserver.xkbVariant = "neo";
};

View File

@ -1,15 +1,22 @@
{ lib, stdenv, fetchurl, autoreconfHook,
gzip, bzip2, pkg-config, flex, check,
pam, coreutils
{ lib
, stdenv
, fetchurl
, nixosTests
, autoreconfHook
, pkg-config
, flex
, check
, pam
, coreutils
}:
stdenv.mkDerivation rec {
pname = "kbd";
version = "2.0.4";
version = "2.4.0";
src = fetchurl {
url = "mirror://kernel/linux/utils/kbd/${pname}-${version}.tar.xz";
sha256 = "124swm93dm4ca0pifgkrand3r9gvj3019d4zkfxsj9djpvv0mnaz";
sha256 = "17wvrqz2kk0w87idinhyvd31ih1dp7ldfl2yfx7ailygb0279w2m";
};
configureFlags = [
@ -18,13 +25,8 @@ stdenv.mkDerivation rec {
"--disable-nls"
];
patches = [ ./search-paths.patch ];
postPatch =
''
# Add Neo keymap subdirectory
sed -i -e 's,^KEYMAPSUBDIRS *= *,&i386/neo ,' data/Makefile.am
# Renaming keymaps with name clashes, because loadkeys just picks
# the first keymap it sees. The clashing names lead to e.g.
# "loadkeys no" defaulting to a norwegian dvorak map instead of
@ -33,21 +35,9 @@ stdenv.mkDerivation rec {
mv qwertz/cz{,-qwertz}.map
mv olpc/es{,-olpc}.map
mv olpc/pt{,-olpc}.map
mv dvorak/{no.map,dvorak-no.map}
mv fgGIod/trf{,-fgGIod}.map
mv colemak/{en-latin9,colemak}.map
popd
# Fix the path to gzip/bzip2.
substituteInPlace src/libkeymap/findfile.c \
--replace gzip ${gzip}/bin/gzip \
--replace bzip2 ${bzip2.bin}/bin/bzip2 \
# We get a warning in armv5tel-linux and the fuloong2f, so we
# disable -Werror in it.
${lib.optionalString (stdenv.isAarch32 || stdenv.hostPlatform.isMips) ''
sed -i s/-Werror// src/Makefile.am
''}
'';
postInstall = ''
@ -57,16 +47,16 @@ stdenv.mkDerivation rec {
done
'';
buildInputs = [ check pam ];
nativeBuildInputs = [ autoreconfHook pkg-config flex ];
makeFlags = [ "setowner=" ];
passthru.tests = nixosTests.keymap;
meta = with lib; {
homepage = "ftp://ftp.altlinux.org/pub/people/legion/kbd/";
description = "Linux keyboard utilities and keyboard maps";
homepage = "https://kbd-project.org/";
description = "Linux keyboard tools and keyboard maps";
platforms = platforms.linux;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ davidak ];
};
}

View File

@ -1,36 +0,0 @@
{ stdenv, lib, fetchurl, gzip }:
{
dvp = stdenv.mkDerivation rec {
pname = "dvp";
version = "1.2.1";
src = fetchurl {
url = "http://kaufmann.no/downloads/linux/dvp-${lib.replaceStrings ["."] ["_"] version}.map.gz";
sha256 = "0e859211cfe16a18a3b9cbf2ca3e280a23a79b4e40b60d8d01d0fde7336b6d50";
};
nativeBuildInputs = [ gzip ];
buildCommand = ''
mkdir -p $out/share/keymaps/i386/dvorak
gzip -c -d $src > $out/share/keymaps/i386/dvorak/dvp.map
'';
};
neo = stdenv.mkDerivation {
pname = "neo";
version = "2476";
src = fetchurl {
name = "neo.map";
url = "https://raw.githubusercontent.com/neo-layout/neo-layout/"
+ "a0dee06fed824abfad658b7f10e6d907b270be0a/linux/console/neo.map";
sha256 = "19mfrd31vzpsjiwc7pshxm0b0sz5dd17xrz6k079cy4im1vf0r4g";
};
buildCommand = ''
install -D $src $out/share/keymaps/i386/neo/neo.map
'';
};
}

View File

@ -1,71 +0,0 @@
--- a/src/libkeymap/analyze.l
+++ b/src/libkeymap/analyze.l
@@ -101,6 +101,9 @@ stack_pop(struct lk_ctx *ctx, void *scan
static const char *const include_dirpath0[] = { "", 0 };
static const char *const include_dirpath1[] = { "", "../include/", "../../include/", 0 };
static const char *const include_dirpath3[] = {
+ "/etc/kbd/" KEYMAPDIR "/include/",
+ "/etc/kbd/" KEYMAPDIR "/i386/include/",
+ "/etc/kbd/" KEYMAPDIR "/mac/include/",
DATADIR "/" KEYMAPDIR "/include/",
DATADIR "/" KEYMAPDIR "/i386/include/",
DATADIR "/" KEYMAPDIR "/mac/include/", 0
--- a/src/loadkeys.c
+++ b/src/loadkeys.c
@@ -27,7 +27,7 @@
#include "keymap.h"
static const char *progname = NULL;
-static const char *const dirpath1[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+static const char *const dirpath1[] = { "", "/etc/kbd/" KEYMAPDIR "/**", DATADIR "/" KEYMAPDIR "/**", 0 };
static const char *const suffixes[] = { "", ".kmap", ".map", 0 };
static void __attribute__((noreturn))
--- a/src/loadunimap.c
+++ b/src/loadunimap.c
@@ -30,7 +30,7 @@
extern char *progname;
extern int force;
-static const char *const unidirpath[] = { "", DATADIR "/" UNIMAPDIR "/", 0 };
+static const char *const unidirpath[] = { "", "/etc/kbd/" UNIMAPDIR "/", DATADIR "/" UNIMAPDIR "/", 0 };
static const char *const unisuffixes[] = { "", ".uni", ".sfm", 0 };
#ifdef MAIN
--- a/src/mapscrn.c
+++ b/src/mapscrn.c
@@ -27,7 +27,7 @@ void loadnewmap(int fd, char *mfil);
static int ctoi(char *);
/* search for the map file in these directories (with trailing /) */
-static const char *const mapdirpath[] = { "", DATADIR "/" TRANSDIR "/", 0 };
+static const char *const mapdirpath[] = { "", "/etc/kbd/" TRANSDIR "/", DATADIR "/" TRANSDIR "/", 0 };
static const char *const mapsuffixes[] = { "", ".trans", "_to_uni.trans", ".acm", 0 };
#ifdef MAIN
--- a/src/resizecons.c
+++ b/src/resizecons.c
@@ -101,7 +101,7 @@ static int vga_get_fontheight(void);
static void vga_set_cursor(int, int);
static void vga_set_verticaldisplayend_lowbyte(int);
-const char *const dirpath[] = { "", DATADIR "/" VIDEOMODEDIR "/", 0 };
+const char *const dirpath[] = { "", "/etc/kbd/" VIDEOMODEDIR "/", DATADIR "/" VIDEOMODEDIR "/", 0};
const char *const suffixes[] = { "", 0 };
int main(int argc, char **argv)
--- a/src/setfont.c
+++ b/src/setfont.c
@@ -53,10 +53,10 @@ int force = 0;
int debug = 0;
/* search for the font in these directories (with trailing /) */
-const char *const fontdirpath[] = { "", DATADIR "/" FONTDIR "/", 0 };
+const char *const fontdirpath[] = { "", "/etc/kbd/" FONTDIR "/", DATADIR "/" FONTDIR "/", 0 };
const char *const fontsuffixes[] = { "", ".psfu", ".psf", ".cp", ".fnt", 0 };
/* hide partial fonts a bit - loading a single one is a bad idea */
-const char *const partfontdirpath[] = { "", DATADIR "/" FONTDIR "/" PARTIALDIR "/", 0 };
+const char *const partfontdirpath[] = { "", "/etc/kbd/" FONTDIR "/" PARTIALDIR "/", DATADIR "/" FONTDIR "/" PARTIALDIR "/", 0 };
const char *const partfontsuffixes[] = { "", 0 };
static inline int

View File

@ -338,6 +338,7 @@ mapAliases ({
kodiPlainWayland = kodi-wayland;
julia_07 = throw "julia_07 is deprecated in favor of julia_10 LTS"; # added 2020-09-15
julia_11 = throw "julia_11 is deprecated in favor of latest Julia version"; # added 2020-09-15
kbdKeymaps = throw "kbdKeymaps is not needed anymore since dvp and neo are now part of kbd"; # added 2021-04-11
kdeconnect = plasma5Packages.kdeconnect-kde; # added 2020-10-28
kdiff3-qt5 = kdiff3; # added 2017-02-18
keepass-keefox = keepass-keepassrpc; # backwards compatibility alias, added 2018-02

View File

@ -19766,8 +19766,6 @@ in
kbd = callPackage ../os-specific/linux/kbd { };
kbdKeymaps = callPackage ../os-specific/linux/kbd/keymaps.nix { };
kbdlight = callPackage ../os-specific/linux/kbdlight { };
kmscon = callPackage ../os-specific/linux/kmscon { };