meta-openembedded: subtree update:f623d8b574..936f2380bb
Alexander Vickberg (2):
libwebsockets: upgrade to 4.1.6
mbedtls: upgrade to 2.24.0
Bartosz Golaszewski (1):
libgpiod: update v1.4.5 -> v1.6.2
Beniamin Sandu (1):
trace-cmd: create recipe for version 2.9.1
Fabio Berton (2):
beep: Add recipe for version 1.2.2
linuxconsole: Add recipe for version 1.7.0
Gianfranco (1):
dlt-daemon: add upstream patch to fix CVE-2020-29394
Kai Kang (1):
colord: fix installed-vs-shipped error
Khem Raj (1):
packagegroup-meta-python: Remove packages moved to core
Luca Boccassi (3):
dbus-broker: rdepend on dbus-common
dbus-brocker: upgrade 23 -> 24
dbus-broker: upgrade 24 -> 25
Martin Jansa (1):
nanopb: move to dynamic-layers
Michael Vetter (1):
jasper: upgrade 2.0.22 -> 2.0.23
Philip Balister (1):
spdlog: Fix recipe so other recipes can use spdlog with external fmt.
Robert Karszniewicz (1):
firmwared: add recipe
Roland Hieber (5):
pcsc-lite: provide pcsc-lite-lib-native explicitly for native build
lockfile-progs: use DEBIAN_MIRROR in SRC_URI
fbset: use DEBIAN_MIRROR in SRC_URI
liboop: use upstream SRC_URI
openct: use upstream SRC_URI
Senthil Selvaganesan (1):
fcgiwrap: add recipe
Thomas Perrot (1):
openocd: disable the support of ccache
Trevor Woerner (4):
glmark2: update information
glmark2: update to latest
glmark2: add support for dispmanx
glmark2: revert to previous behaviour
Vyacheslav Yurkov (1):
python3-aiohttp: added missing RDEPENDs
Wang Mingyu (2):
gensio: 2.1.4 -> 2.2.0
ser2net: 4.2.0 -> 4.3.0
Zang Ruochen (7):
dialog: upgrade 1.3-20200327 -> 1.3-20201126
fmt: upgrade 7.1.2 -> 7.1.3
hidapi: upgrade 0.10.0 -> 0.10.1
opensc: upgrade 0.20.0 -> 0.20.1
pugixml: upgrade 1.10 -> 1.11
satyr: upgrade 0.31 -> 0.35
nanopb: upgrade 0.4.3 -> 0.4.4
zhengruoqin (9):
c-periphery: upgrade 2.2.4 -> 2.2.5
crash: upgrade 7.2.8 -> 7.2.9
dfu-util: upgrade 0.9 -> 0.10
monit: upgrade 5.26.0 -> 5.27.1
qpdf: upgrade 10.0.1 -> 10.0.4
tcsh: upgrade 6.22.02 -> 6.22.03
xserver-xorg-cvt-native: upgrade 1.20.5 -> 1.20.9
zchunk: upgrade 1.1.6 -> 1.1.7
libconfig-autoconf-perl: upgrade 0.318 -> 0.319
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I8371eb789fa288193da895bd51ce2160194809d8
diff --git a/meta-openembedded/meta-oe/recipes-extended/beep/beep_1.2.2.bb b/meta-openembedded/meta-oe/recipes-extended/beep/beep_1.2.2.bb
new file mode 100644
index 0000000..cafc869
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/beep/beep_1.2.2.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "beep is a command line tool for linux that beeps the PC speaker"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "\
+ http://johnath.com/beep/beep-${PV}.tar.gz \
+ file://linux-input.patch \
+"
+
+SRC_URI[sha256sum] = "5c0445dac43950b7c7c3f235c6fb21f620ab3fd2f3aafaf09896e5730fcf49a1"
+
+S = "${WORKDIR}/${BPN}-${PV}"
+
+EXTRA_OEMAKE += 'CC="${CC}"'
+EXTRA_OEMAKE += 'FLAGS="${CFLAGS} ${LDFLAGS}"'
+
+do_configure[noexec] = "1"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ install -Dm 0755 ${B}/${PN} ${D}${bindir}/${PN}
+}
diff --git a/meta-openembedded/meta-oe/recipes-extended/beep/files/linux-input.patch b/meta-openembedded/meta-oe/recipes-extended/beep/files/linux-input.patch
new file mode 100644
index 0000000..1b38ba7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/beep/files/linux-input.patch
@@ -0,0 +1,155 @@
+# the diff between Alessandro Zummo's copy of beep.c and the original
+# one...
+
+--- beep-1.2.2/beep.c.orig 2006-01-29 12:13:36.994560551 -0800
++++ beep-1.2.2/beep.c 2006-01-29 12:35:02.950558713 -0800
+@@ -26,6 +26,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <linux/kd.h>
++#include <linux/input.h>
+
+ /* I don't know where this number comes from, I admit that freely. A
+ wonderful human named Raine M. Ekman used it in a program that played
+@@ -86,18 +87,28 @@ typedef struct beep_parms_t {
+ struct beep_parms_t *next; /* in case -n/--new is used. */
+ } beep_parms_t;
+
++enum { BEEP_TYPE_CONSOLE, BEEP_TYPE_EVDEV };
++
+ /* Momma taught me never to use globals, but we need something the signal
+ handlers can get at.*/
+ int console_fd = -1;
++int console_type = BEEP_TYPE_CONSOLE;
++char *console_device = NULL;
++
++void do_beep(int freq);
+
+ /* If we get interrupted, it would be nice to not leave the speaker beeping in
+ perpetuity. */
+ void handle_signal(int signum) {
++
++ if(console_device)
++ free(console_device);
++
+ switch(signum) {
+ case SIGINT:
+ if(console_fd >= 0) {
+ /* Kill the sound, quit gracefully */
+- ioctl(console_fd, KIOCSOUND, 0);
++ do_beep(0);
+ close(console_fd);
+ exit(signum);
+ } else {
+@@ -110,7 +121,7 @@ void handle_signal(int signum) {
+ /* print usage and exit */
+ void usage_bail(const char *executable_name) {
+ printf("Usage:\n%s [-f freq] [-l length] [-r reps] [-d delay] "
+- "[-D delay] [-s] [-c]\n",
++ "[-D delay] [-s] [-c] [-e device]\n",
+ executable_name);
+ printf("%s [Options...] [-n] [--new] [Options...] ... \n", executable_name);
+ printf("%s [-h] [--help]\n", executable_name);
+@@ -141,11 +152,12 @@ void usage_bail(const char *executable_n
+ void parse_command_line(int argc, char **argv, beep_parms_t *result) {
+ int c;
+
+- struct option opt_list[4] = {{"help", 0, NULL, 'h'},
++ struct option opt_list[] = {{"help", 0, NULL, 'h'},
+ {"version", 0, NULL, 'V'},
+ {"new", 0, NULL, 'n'},
++ {"device", 1, NULL, 'e'},
+ {0,0,0,0}};
+- while((c = getopt_long(argc, argv, "f:l:r:d:D:schvVn", opt_list, NULL))
++ while((c = getopt_long(argc, argv, "f:l:r:d:D:schvVne:", opt_list, NULL))
+ != EOF) {
+ int argval = -1; /* handle parsed numbers for various arguments */
+ float argfreq = -1;
+@@ -207,6 +219,9 @@ void parse_command_line(int argc, char *
+ result->next->next = NULL;
+ result = result->next; /* yes, I meant to do that. */
+ break;
++ case 'e' : /* also --device */
++ console_device = strdup(optarg);
++ break;
+ case 'h' : /* notice that this is also --help */
+ default :
+ usage_bail(argv[0]);
+@@ -214,26 +229,61 @@ void parse_command_line(int argc, char *
+ }
+ }
+
++void do_beep(int freq)
++{
++ if (console_type == BEEP_TYPE_CONSOLE)
++ {
++ if(ioctl(console_fd, KIOCSOUND, freq != 0
++ ? (int)(CLOCK_TICK_RATE/freq)
++ : freq) < 0) {
++ printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */
++ perror("ioctl");
++ }
++ }
++ else
++ {
++ /* BEEP_TYPE_EVDEV */
++ struct input_event e;
++
++ e.type = EV_SND;
++ e.code = SND_TONE;
++ e.value = freq;
++
++ write(console_fd, &e, sizeof(struct input_event));
++ }
++}
++
+ void play_beep(beep_parms_t parms) {
+ int i; /* loop counter */
+
+ /* try to snag the console */
+- if((console_fd = open("/dev/console", O_WRONLY)) == -1) {
+- fprintf(stderr, "Could not open /dev/console for writing.\n");
++
++ if(console_device)
++ console_fd = open(console_device, O_WRONLY);
++ else
++ if((console_fd = open("/dev/input/event0", O_WRONLY)) == -1)
++ if((console_fd = open("/dev/tty0", O_WRONLY)) == -1)
++ console_fd = open("/dev/vc/0", O_WRONLY);
++
++ if(console_fd == -1) {
++ fprintf(stderr, "Could not open %s for writing\n",
++ console_device != NULL ? console_device : "/dev/tty0 or /dev/vc/0");
+ printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */
+ perror("open");
+ exit(1);
+ }
+
++ if (ioctl(console_fd, EVIOCGSND(0)) != -1)
++ console_type = BEEP_TYPE_EVDEV;
++ else
++ console_type = BEEP_TYPE_CONSOLE;
++
+ /* Beep */
+ for (i = 0; i < parms.reps; i++) { /* start beep */
+- if(ioctl(console_fd, KIOCSOUND, (int)(CLOCK_TICK_RATE/parms.freq)) < 0) {
+- printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */
+- perror("ioctl");
+- }
++ do_beep(parms.freq);
+ /* Look ma, I'm not ansi C compatible! */
+ usleep(1000*parms.length); /* wait... */
+- ioctl(console_fd, KIOCSOUND, 0); /* stop beep */
++ do_beep(0);
+ if(parms.end_delay || (i+1 < parms.reps))
+ usleep(1000*parms.delay); /* wait... */
+ } /* repeat. */
+@@ -295,5 +345,8 @@ int main(int argc, char **argv) {
+ parms = next;
+ }
+
++ if(console_device)
++ free(console_device);
++
+ return EXIT_SUCCESS;
+ }
diff --git a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20200327.bb b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20201126.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20200327.bb
rename to meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20201126.bb
index 4c3177c..5097788 100644
--- a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20200327.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20201126.bb
@@ -10,8 +10,8 @@
SRC_URI = "ftp://ftp.invisible-island.net/${BPN}/${BP}.tgz \
"
-SRC_URI[md5sum] = "f7a3c240af305b5282af590541e8f4b7"
-SRC_URI[sha256sum] = "466163e8b97c2b7709d00389199add3156bd813f60ccb0335d0a30f2d4a17f99"
+SRC_URI[md5sum] = "14bf3b33de348838ff30aff0aa9d1c2e"
+SRC_URI[sha256sum] = "c9233a6c8ea33a59e2378e5146ae2bd13b519744cfdb647af7420adac5ad3866"
# hardcoded here for use in dialog-static recipe
S = "${WORKDIR}/dialog-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/275.patch b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/275.patch
new file mode 100644
index 0000000..75065eb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/275.patch
@@ -0,0 +1,38 @@
+Upstream-status: Backport
+CVE: CVE-2020-29394
+From 7f5cd5404a03fa330e192084f6bdafb2dc9bdcb7 Mon Sep 17 00:00:00 2001
+From: GwanYeong Kim <gy741.kim@gmail.com>
+Date: Sat, 28 Nov 2020 12:24:46 +0900
+Subject: [PATCH] dlt_common: Fix buffer overflow in dlt_filter_load
+
+A buffer overflow in the dlt_filter_load function in dlt_common.c in dlt-daemon allows arbitrary code execution via an unsafe usage of fscanf, because it does not limit the number of characters to be read in a format argument.
+
+Fixed: #274
+
+Signed-off-by: GwanYeong Kim <gy741.kim@gmail.com>
+---
+ src/shared/dlt_common.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/dlt_common.c b/src/shared/dlt_common.c
+index 254f4ce4..d15b1cec 100644
+--- a/src/shared/dlt_common.c
++++ b/src/shared/dlt_common.c
+@@ -404,7 +404,7 @@ DltReturnValue dlt_filter_load(DltFilter *filter, const char *filename, int verb
+ while (!feof(handle)) {
+ str1[0] = 0;
+
+- if (fscanf(handle, "%s", str1) != 1)
++ if (fscanf(handle, "%254s", str1) != 1)
+ break;
+
+ if (str1[0] == 0)
+@@ -419,7 +419,7 @@ DltReturnValue dlt_filter_load(DltFilter *filter, const char *filename, int verb
+
+ str1[0] = 0;
+
+- if (fscanf(handle, "%s", str1) != 1)
++ if (fscanf(handle, "%254s", str1) != 1)
+ break;
+
+ if (str1[0] == 0)
diff --git a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb
index f3fcee4..5066e76 100644
--- a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.5.bb
@@ -19,6 +19,7 @@
file://0004-Modify-systemd-config-directory.patch \
file://241.patch \
file://245.patch \
+ file://275.patch \
"
SRCREV = "f1ac087c766827b1d0ed9c3a814b3cc052e948f2"
diff --git a/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config.bb b/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config.bb
new file mode 100644
index 0000000..68beec6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config.bb
@@ -0,0 +1,12 @@
+SUMMARY = "inputattach configuration file"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "file://inputattach.conf"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -Dm 0644 ${WORKDIR}/inputattach.conf ${D}${sysconfdir}/inputattach.conf
+}
diff --git a/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config/inputattach.conf b/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config/inputattach.conf
new file mode 100644
index 0000000..86c4210
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config/inputattach.conf
@@ -0,0 +1,8 @@
+#
+# Configuration for inputattach
+#
+# Every line of this file are inputattach arguments, see 'inputattach --help'.
+# An inputattach instance will be started for each element.
+#
+# --microsoft /dev/ttyS0
+# --baud 9600 --w8001 /dev/ttyS1
diff --git a/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/51-these-are-not-joysticks-rm.rules b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/51-these-are-not-joysticks-rm.rules
new file mode 100644
index 0000000..3e0ab40
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/51-these-are-not-joysticks-rm.rules
@@ -0,0 +1,83 @@
+# /etc/udev/rules.d/51-these-are-not-joysticks-rm.rules
+#
+# This file is auto-generated. For more information:
+# https://github.com/denilsonsa/udev-joystick-blacklist
+
+SUBSYSTEM=="input", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c30a", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c30a", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="a0df", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="04d9", ATTRS{idProduct}=="a0df", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0010", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0010", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0011", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0011", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0012", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0012", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0013", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0013", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0014", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0014", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0015", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0015", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0016", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0016", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0017", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0017", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0018", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0018", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0019", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0019", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00d1", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00d1", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="030e", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="030e", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="054f", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="054f", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="1410", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="1410", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="3043", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="3043", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="31b5", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="31b5", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="3997", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="3997", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="3f8b", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="3f8b", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="51f4", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="51f4", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="5589", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="5589", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="7b22", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="7b22", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="7f2d", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="7f2d", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="8090", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="8090", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="9033", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="9033", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="9066", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="9066", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="9090", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="9090", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="90c0", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="90c0", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f012", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f012", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f32a", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f32a", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f613", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f613", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f624", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="f624", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="1b3c", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="1b3c", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="1d57", ATTRS{idProduct}=="ad03", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="1d57", ATTRS{idProduct}=="ad03", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="1e7d", ATTRS{idProduct}=="2e4a", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="1e7d", ATTRS{idProduct}=="2e4a", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="422d", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="20a0", ATTRS{idProduct}=="422d", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="2516", ATTRS{idProduct}=="001f", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="2516", ATTRS{idProduct}=="001f", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="2516", ATTRS{idProduct}=="0028", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
+SUBSYSTEM=="input", ATTRS{idVendor}=="2516", ATTRS{idProduct}=="0028", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
diff --git a/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/60-joystick.rules b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/60-joystick.rules
new file mode 100644
index 0000000..24b009b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/60-joystick.rules
@@ -0,0 +1,7 @@
+# Restore any stored calibration for the device
+ACTION=="add", KERNEL=="js*", RUN+="/usr/bin/jscal-restore %E{DEVNAME}"
+
+# Set PS3 controller leds to the same value bluez will choose for it.
+# IMPORT{parent} used because $parent did not appear to be working; we
+# don't need the devpath of the js device for this so it is OK to overwrite.
+ACTION=="add", KERNEL=="js*", IMPORT{parent}="DEVPATH", ATTRS{name}=="Sony PLAYSTATION(R)3 Controller", RUN+="/lib/udev/js-set-enum-leds /sys/%E{DEVPATH}/device/leds/ $number"
diff --git a/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/inputattach.service b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/inputattach.service
new file mode 100644
index 0000000..2ec902c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/inputattach.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Attach serial input devices to kernel input subsystem
+After=syslog.target
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/inputattachctl start
+ExecStop=/usr/bin/inputattachctl stop
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/inputattachctl b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/inputattachctl
new file mode 100644
index 0000000..c6da4e6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole/inputattachctl
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+do_start() {
+ grep -v '^#' /etc/inputattach.conf | while read -r line; do
+ inputattach --daemon $line || exit 1
+ done
+}
+
+case "$1" in
+ start)
+ do_start
+ ;;
+ stop)
+ killall -9 inputattach || true
+ ;;
+esac
diff --git a/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole_1.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole_1.7.0.bb
new file mode 100644
index 0000000..c4cd1d6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole_1.7.0.bb
@@ -0,0 +1,83 @@
+SUMMARY = "Linux Console Project"
+DESCRIPTION = "This project maintains the Linux Console tools, which include \
+utilities to test and configure joysticks, connect legacy devices to the kernel's \
+input subsystem (providing support for serial mice, touchscreens etc.), and test \
+the input event layer."
+HOMEPAGE = "https://sourceforge.net/projects/linuxconsole"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "libsdl2"
+DEPENDS += "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+
+SRC_URI = "\
+ ${SOURCEFORGE_MIRROR}/linuxconsole/linuxconsoletools-${PV}.tar.bz2 \
+ file://51-these-are-not-joysticks-rm.rules \
+ file://60-joystick.rules \
+ file://inputattachctl \
+ file://inputattach.service \
+"
+
+SRC_URI[sha256sum] = "95d112f06393806116341d593bda002c8bc44119c1538407623268fed90d8c34"
+
+S = "${WORKDIR}/linuxconsoletools-${PV}"
+
+inherit systemd pkgconfig
+
+EXTRA_OEMAKE = "DESTDIR=${D} PREFIX=${prefix} -C utils"
+EXTRA_OEMAKE += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'SYSTEMD_SUPPORT=1', '', d)}"
+
+SYSTEMD_PACKAGES += "inputattach"
+SYSTEMD_SERVICE_inputattach = "inputattach.service"
+SYSTEMD_AUTO_ENABLE_inputattach = "enable"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake install
+
+ install -Dm 0644 ${WORKDIR}/51-these-are-not-joysticks-rm.rules ${D}${base_libdir}/udev/rules.d/51-these-are-not-joysticks-rm.rules
+ install -Dm 0644 ${WORKDIR}/60-joystick.rules ${D}${base_libdir}/udev/rules.d/60-joystick.rules
+
+ install -Dm 0644 ${WORKDIR}/inputattach.service ${D}${systemd_system_unitdir}/inputattach.service
+ install -Dm 0755 ${WORKDIR}/inputattachctl ${D}${bindir}/inputattachctl
+}
+
+PACKAGES += "inputattach joystick"
+
+# We won't package any file here as we are following the same packaging schema
+# Debian does and we are splitting it in 'inputattach' and 'joystick' packages.
+FILES_${PN} = ""
+
+FILES_inputattach += "\
+ ${bindir}/inputattach \
+ ${bindir}/inputattachctl \
+ ${systemd_system_unitdir}/inputattach.service \
+"
+
+FILES_joystick += "\
+ ${bindir}/evdev-joystick \
+ ${bindir}/ffcfstress \
+ ${bindir}/ffmvforce \
+ ${bindir}/ffset \
+ ${bindir}/fftest \
+ ${bindir}/jscal \
+ ${bindir}/jscal-restore \
+ ${bindir}/jscal-store \
+ ${bindir}/jstest \
+ ${datadir}/joystick \
+ ${base_libdir}/udev/rules.d/51-these-are-not-joysticks-rm.rules \
+ ${base_libdir}/udev/js-set-enum-leds \
+ ${base_libdir}/udev/rules.d/60-joystick.rules \
+ ${base_libdir}/udev/rules.d/80-stelladaptor-joystick.rules \
+"
+
+RDEPENDS_inputattach += "inputattach-config"
+
+RDEPENDS_joystick += "\
+ bash \
+ gawk \
+"
diff --git a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
index c76e0f6..a82f10b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
@@ -8,7 +8,7 @@
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
DEPENDS = "liblockfile"
-SRC_URI = "http://ftp.de.debian.org/debian/pool/main/l/${BPN}/${BPN}_${PV}.tar.gz"
+SRC_URI = "${DEBIAN_MIRROR}/main/l/${BPN}/${BPN}_${PV}.tar.gz"
SRC_URI[md5sum] = "4eb83bdf88016db836b7cc09591fb0f3"
SRC_URI[sha256sum] = "a42995a4b97e6188efc90fcc1a761163c4b2cff5c81b936f85c84301ddb05ce6"