meta-openembedded: subtree update:fd123c9bb2..7206f7f5bc
Adam Miartus (1):
cereal: add cereal a header-only c++11 serialization library
Andreas Müller (14):
xfce4-appfinder: upgrade 4.16.0 -> 4.16.1
xfce4-whiskermenu-plugin: upgrade 2.5.2 -> 2.5.3
xfce4-panel: upgrade 4.16.0 -> 4.16.1
xfce4-notes-plugin: re-add 1.9.0
gparted: upgrade 1.1.0 -> 1.2.0
poppler: upgrade 21.01.0 -> 21.02.0
fluidsynth: upgrade 2.1.6 -> 2.1.7
mousepad: upgrade 0.5.1 -> 0.5.2
xfce4-cpugraph-plugin: upgrade 1.2.0 -> 1.2.1
babl: upgrade 0.1.82 -> 0.1.84
gegl: upgrade 0.4.26 -> 0.4.28
gtk+: upgrade 2.24.32 -> 2.24.33
libsigc++-2.0: upgrade 2.10.3 -> 2.10.6
gtkmm3: upgrade 3.24.2 -> 3.24.3
Andrei Gherzan (1):
gateone: Cleanup assets for removed recipe
Andrey Zhizhikin (1):
iperf3: fix build with autoconf 2.71
Gianfranco (1):
mosquitto: Upgrade 1.6.12 -> 2.0.7
Harpritkaur Bhandari (1):
rapidjson: Remove unwanted patches
Hongxu Jia (4):
lksctp-tools: make conpatible to autoconf-2.70
spice: make conpatible to autoconf-2.70
freeradius: fix build failure with autoconf 2.71
ndpi: fix autoconf-2.71 compatibility
Kai Kang (3):
meta-oe: add crash to NON_MULTILIB_RECIPES
lxdm: support to change user password
lxdm: disallow empty new password
Khem Raj (28):
libssh2: Fix build with autoconf 2.70+
yasm: Fix build with autotools 2.70+
boinc-client: Upgrade to 7.16.16 release
net-snmp: Remove hardcoded paths to build host in net-snmp-config
keepalived: Upgrade to 2.2.1
gst-shark: Upgrade to 0.7.2
hidapi: Backport patch to fix build with autotools 2.70+
libsrtp: Update to 2.3.0
libsrtp: Do not invoke automake during configure
klibc: Upgrade to 2.0.8 release
geany,geany-plugins: Upgrade to 1.37.x
libstatgrab: Fix build with autoconf 2.70+
libmypaint: Fix build with autotools 2.70+
geany: Fix build with autotools 2.70+
ubi-utils-klibc: Fix build with clang
kexecboot: Fix build with clang
glm: Upgrade to 0.9.9.8
gimp: Fix build with autoconf-2.70+
klibc: Fix x86_64 build with binutils 2.36+
pavucontrol: Depend on libxml-parser-perl-native
libsrtp: Copy ar-lib from automake
libmcrypt: Run autoreconf steps manually
libsdl2-mixer: Fix build with autoconf 2.70+
openldap: Fix build with autoconf 2.70+
transmission: Fix build with autotools 2.70+
boinc-client: Fix build with autotools 2.70+
iwd: Fix build with ell 0.37
kernel-selftest: Disable building bpf
Leon Anavi (29):
python3-gevent: Upgrade 20.9.0 -> 21.1.2
python3-prompt-toolkit: Upgrade 3.0.11 -> 3.0.14
python3-urllib3: Upgrade 1.26.2 -> 1.26.3
python3-pybind11: Upgrade 2.5.0 -> 2.6.2
python3-xlrd: Upgrade 1.2.0 -> 2.0.1
python3-croniter: Upgrade 1.0.2 -> 1.0.4
python3-cantools: Upgrade 36.1.0 -> 36.2.0
python3-pyzmq: Upgrade 21.0.2 -> 22.0.2
python3-aiohttp-jinja2: Upgrade 1.2.0 -> 1.4.2
python3-prctl: Upgrade 1.7 -> 1.8.1
python3-cmd2: Upgrade 1.4.0 -> 1.5.0
python3-elementpath: Upgrade 2.1.2 -> 2.1.3
python3-croniter: Upgrade 1.0.4 -> 1.0.5
python3-pychromecast: Upgrade 7.7.2 -> 8.0.0
python3-alembic: Upgrade 1.5.2 -> 1.5.3
python3-meh: Upgrade 0.49 -> 0.50
python3-pywbem: Upgrade 1.1.0 -> 1.1.3
python3-ipython: Upgrade 7.19.0 -> 7.20.0
python3-croniter: Upgrade 1.0.5 -> 1.0.6
python3-pywbemtools: Upgrade 0.8.0 -> 0.8.1
python3-sqlalchemy: Upgrade 1.3.22 -> 1.3.23
python3-flask-migrate: Upgrade 2.5.3 -> 2.6.0
python3-javaobj-py3: Upgrade 0.4.1 -> 0.4.2
python3-pytest-html: Upgrade 2.1.1 -> 3.1.1
python3-graphviz: Upgrade 0.14.2 -> 0.16
python3-tqdm: Upgrade 4.51.0 -> 4.56.0
python3-alembic: Upgrade 1.5.3 -> 1.5.4
python3-pymongo: Upgrade 3.11.2 -> 3.11.3
python3-pymisp: Upgrade 2.4.137.1 -> 2.4.137.3
Martin Jansa (6):
zbar: fix random do_prepare_recipe_sysroot_gettext failures
zbar: use 4 spaces for indentation
net-snmp: fix build with dash
wireguard-module: remove PKG assignment
graphviz: drop unused SRCREV and outdated comment
pidgin: upgrade to 2.14.1 and fix autoconf-2.71 compatibility
Mingli Yu (5):
net-snmp: improve reproducibility
python3-h5py: improve reproducibility
opencv: improve reproducibility
mozjs: improve reproducibility
netsnmp: remove --with-openssl=PATH configure option
Nicolas Jeker (2):
network-manager-applet: Build without libteam support
networkmanager: Add PACKAGECONFIG for ovs
Oleksandr Kravchuk (24):
iwd: update to 1.11
cpuid: update to 20201006
libblockdev: update to 2.25
nano: update to 5.5
plymouth: update to 0.9.5
adcli: update to 0.9.0
cannelloni: update to 1.0.0
ipset: update to 7.10
kronosnet: update 1.20
nghttp2: update to 1.43.0
atftp: update to 0.7.4
cereal: update to 1.3.0
python3-aws-iot-device-sdk-python: update to 1.4.9
python3-flask-socketio: update to 4.3.1
python3-greenstalk: update to 2.0.0
python3-twitter: update to 3.10.0
fetchmail: udpate to 6.4.16
wireshark: update to 3.4.3
iqrencode: update to 4.1.1
libconfig add UPSTREAM_CHECK_URI
ceres-solver: update to 2.0.0
libgit2: update to 1.1.0
hexedit: update to 1.5
ttf-abyssinica: update to 2.000
Oleksiy Obitotskyy (1):
libhugetlbfs: improve reproducibility
Peter Smith (1):
python3-ruamel-yaml: add support for native and nativesdk
Qi.Chen@windriver.com (1):
minifi-cpp: set PSEUDO_CONSIDER_PATHS
Ramon Fried (2):
fluentbit: fix systemd input plugin
fluentbit: Fix SIGSEGV caused by using flb_free instead of mk_mem_free
Robert P. J. Day (1):
correct "RRCOMMENDS" typo in ipset recipe
Ross Burton (2):
python3-ruamel-yaml: add native and nativesdk class extension
python3-pykwalify: fix RDEPENDS
Sakib Sajal (2):
libgpiod: add ptest
xfce4-session: increase ALTERNATIVE_PRIORITY
Wang Mingyu (1):
dnsmasq: upgrade 2.82 -> 2.84
Yi Fan Yu (1):
postgresql: bypass autoconf version check
Yi Zhao (1):
openipmi: upgrade 2.0.30 -> 2.0.31
Zang Ruochen (7):
libfastjson: upgrade 0.99.8 -> 0.99.9
libio-pty-perl: upgrade 1.15 -> 1.16
libjson-perl: upgrade 4.02000 -> 4.03000
libmbim: upgrade 1.24.4 -> 1.24.6
sanlock: upgrade 3.8.2 -> 3.8.3
python3-matplotlib: upgrade 3.3.2 -> 3.3.4
python3-pytz: upgrade 2020.1 -> 2021.1
akuster (2):
enca: Fix SRC_URI
meta-oe/README: add Ubuntu prerequisite information
zangrc (6):
libtalloc: upgrade 2.3.1 -> 2.3.2
gensio: upgrade 2.2.0 -> 2.2.3
zchunk: upgrade 1.1.8 -> 1.1.9
libnet-ldap-perl: upgrade 0.67 -> 0.68
librole-tiny-perl: upgrade 2.002003 -> 2.002004
cpprest: upgrade 2.10.17 -> 2.10.18
zhengruoqin (4):
open-isns: upgrade 0.99 -> 0.101
gd: upgrade 2.3.0 -> 2.3.1
live555: upgrade 20210101 -> 20210129
python3-periphery: upgrade 2.1.0 -> 2.2.0
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I65a2b942fbfbc262976e6417d7481ae3fc82cb17
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch
deleted file mode 100644
index 2eb50a5..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 461861cd2e34294830b121db834c05ff39424f6f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 27 Dec 2019 18:42:51 -0800
-Subject: [PATCH] Fix Wimplicit-int-float-conversion warnings with clang 10+
-
-This is a new warning in clang which will be available in clang 10
-onwards
-
-Fixes
-error: implicit conversion from 'const int' to 'float' may lose precision [-Werror,-Wimplicit-int-float-conversion]
-
-Upstream-Status: Submitted [https://github.com/g-truc/glm/pull/986]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- glm/gtx/scalar_multiplication.hpp | 2 +-
- test/gtx/gtx_fast_trigonometry.cpp | 32 +++++++++++++++---------------
- 2 files changed, 17 insertions(+), 17 deletions(-)
-
-diff --git a/glm/gtx/scalar_multiplication.hpp b/glm/gtx/scalar_multiplication.hpp
-index f391f8de..496ba193 100644
---- a/glm/gtx/scalar_multiplication.hpp
-+++ b/glm/gtx/scalar_multiplication.hpp
-@@ -54,7 +54,7 @@ namespace glm
- template<typename T> \
- return_type_scalar_multiplication<T, Vec> \
- operator/(Vec lh, T const& s){ \
-- return lh *= 1.0f / s; \
-+ return lh *= 1.0f / static_cast<float>(s); \
- }
-
- GLM_IMPLEMENT_SCAL_MULT(vec2)
-diff --git a/test/gtx/gtx_fast_trigonometry.cpp b/test/gtx/gtx_fast_trigonometry.cpp
-index f3bf17bf..f3c4e957 100644
---- a/test/gtx/gtx_fast_trigonometry.cpp
-+++ b/test/gtx/gtx_fast_trigonometry.cpp
-@@ -239,12 +239,12 @@ namespace taylorCos
- std::vector<glm::vec4> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = fastCosNew(AngleShift + glm::vec4(Begin + Steps * i));
-+ Results[i] = fastCosNew(AngleShift + glm::vec4(Begin + Steps * float(i)));
-
- std::clock_t const TimeStampEnd = std::clock();
-
-@@ -280,12 +280,12 @@ namespace taylorCos
- std::vector<glm::vec4> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = taylorCos::fastCosDeterminisctic(AngleShift + glm::vec4(Begin + Steps * i));
-+ Results[i] = taylorCos::fastCosDeterminisctic(AngleShift + glm::vec4(Begin + Steps * float(i)));
-
- std::clock_t const TimeStampEnd = std::clock();
-
-@@ -327,12 +327,12 @@ namespace taylorCos
- std::vector<glm::vec4> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = taylorCos::fastRefCos(AngleShift + glm::vec4(Begin + Steps * i));
-+ Results[i] = taylorCos::fastRefCos(AngleShift + glm::vec4(Begin + Steps * float(i)));
-
- std::clock_t const TimeStampEnd = std::clock();
-
-@@ -349,12 +349,12 @@ namespace taylorCos
- std::vector<glm::vec4> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = glm::fastCos(AngleShift + glm::vec4(Begin + Steps * i));
-+ Results[i] = glm::fastCos(AngleShift + glm::vec4(Begin + Steps * float(i)));
-
- std::clock_t const TimeStampEnd = std::clock();
-
-@@ -371,12 +371,12 @@ namespace taylorCos
- std::vector<glm::vec4> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = glm::cos(AngleShift + glm::vec4(Begin + Steps * i));
-+ Results[i] = glm::cos(AngleShift + glm::vec4(Begin + Steps * float(i)));
-
- std::clock_t const TimeStampEnd = std::clock();
-
-@@ -466,12 +466,12 @@ namespace taylor2
- std::vector<float> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = taylorCosA(AngleShift.x + Begin + Steps * i);
-+ Results[i] = taylorCosA(AngleShift.x + Begin + Steps * float(i));
-
- std::clock_t const TimeStampEnd = std::clock();
-
-@@ -488,12 +488,12 @@ namespace taylor2
- std::vector<float> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = taylorCosB(AngleShift.x + Begin + Steps * i);
-+ Results[i] = taylorCosB(AngleShift.x + Begin + Steps * float(i));
-
- std::clock_t const TimeStampEnd = std::clock();
-
-@@ -510,12 +510,12 @@ namespace taylor2
- std::vector<float> Results;
- Results.resize(Samples);
-
-- float Steps = (End - Begin) / Samples;
-+ float Steps = (End - Begin) / float(Samples);
-
- std::clock_t const TimeStampBegin = std::clock();
-
- for(std::size_t i = 0; i < Samples; ++i)
-- Results[i] = taylorCosC(AngleShift.x + Begin + Steps * i);
-+ Results[i] = taylorCosC(AngleShift.x + Begin + Steps * float(i));
-
- std::clock_t const TimeStampEnd = std::clock();
-
---
-2.24.1
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Silence-clang-warnings.patch b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Silence-clang-warnings.patch
new file mode 100644
index 0000000..25e8518
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Silence-clang-warnings.patch
@@ -0,0 +1,50 @@
+From 5b83983b246cff440de4421696b6b5dd9072ed2d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Feb 2021 11:36:23 -0800
+Subject: [PATCH] Silence clang warnings
+
+Fixes
+glm/gtc/random.inl:25:17: error: implicit conversion loses integer precision: 'int' to 'unsigned char' [-Werror,-Wimplicit-int-conversion]
+| std::rand() % std::numeric_limits<uint8>::max());
+| ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+glm/gtc/../ext/quaternion_common.inl:76:87: error: unused parameter 'k' [-Werror,-Wunused-parameter]
+ GLM_FUNC_QUALIFIER qua<T, Q> slerp(qua<T, Q> const& x, qua<T, Q> const& y, T a, S k)
+ ^
+
+Upstream-Status: Submitted [https://github.com/g-truc/glm/pull/1055]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ glm/ext/quaternion_common.inl | 2 +-
+ glm/gtc/random.inl | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/glm/ext/quaternion_common.inl b/glm/ext/quaternion_common.inl
+index 0e4a3bb2..8f9dccef 100644
+--- a/glm/ext/quaternion_common.inl
++++ b/glm/ext/quaternion_common.inl
+@@ -104,7 +104,7 @@ namespace glm
+ {
+ // Graphics Gems III, page 96
+ T angle = acos(cosTheta);
+- T phi = angle + k * glm::pi<T>();
++ T phi = angle + static_cast<float>(k) * glm::pi<T>();
+ return (sin(angle - a * phi)* x + sin(a * phi) * z) / sin(angle);
+ }
+ }
+diff --git a/glm/gtc/random.inl b/glm/gtc/random.inl
+index 70485098..a4af2a06 100644
+--- a/glm/gtc/random.inl
++++ b/glm/gtc/random.inl
+@@ -22,7 +22,7 @@ namespace detail
+ GLM_FUNC_QUALIFIER static vec<1, uint8, P> call()
+ {
+ return vec<1, uint8, P>(
+- std::rand() % std::numeric_limits<uint8>::max());
++ static_cast<uint8>(std::rand()) % std::numeric_limits<uint8>::max());
+ }
+ };
+
+--
+2.30.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb b/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.8.bb
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb
rename to meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.8.bb
index e2f4dbe..c5a7c5b 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.8.bb
@@ -6,17 +6,17 @@
BUGTRACKER = "https://github.com/g-truc/glm/issues"
SECTION = "libs"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://copying.txt;md5=4a735e33f271f57404fda17e80085411"
+LIC_FILES_CHKSUM = "file://copying.txt;md5=462e4b97f73ef12f8171c3c546ce4e8d"
SRC_URI = " \
git://github.com/g-truc/glm;branch=master \
- file://0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch \
+ file://0001-Silence-clang-warnings.patch \
file://glmConfig.cmake.in \
file://glmConfigVersion.cmake.in \
file://glm.pc.in \
file://glmTargets.cmake \
"
-SRCREV = "4db8f89aace8f04c839b606e15b39fb8383ec732"
+SRCREV = "bf71a834948186f4097caa076cd2663c69a10e1e"
S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.44.1.bb b/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.44.1.bb
index bc46a11..8fe837b 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.44.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.44.1.bb
@@ -20,13 +20,6 @@
inherit autotools-brokensep pkgconfig gettext
-# The source tarball suggested at
-# https://graphviz.gitlab.io/_pages/Download/Download_source.html has no
-# version in its name. So once graphviz is updgraded, only first time users will
-# get checksum errors. Fedora people seem to expect same so they use a versioned
-# source - see https://src.fedoraproject.org/cgit/rpms/graphviz.git/tree/graphviz.spec
-
-SRCREV = "771bc4dbff3e6f358fa75cdc7774a413ccacad51"
SRC_URI = "https://www2.graphviz.org/Packages/stable/portable_source/${BP}.tar.gz \
file://0001-plugin-pango-Include-freetype-headers-explicitly.patch \
"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer/0001-configure.in-Undefine-AC_CONFIG_AUX_DIR.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer/0001-configure.in-Undefine-AC_CONFIG_AUX_DIR.patch
new file mode 100644
index 0000000..0605b32
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer/0001-configure.in-Undefine-AC_CONFIG_AUX_DIR.patch
@@ -0,0 +1,34 @@
+From 9363c98528ef850235852e44f678df6b5c011ee1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 7 Feb 2021 18:08:36 -0800
+Subject: [PATCH] configure.in: Undefine AC_CONFIG_AUX_DIR
+
+This helps reconfiguring with autotools 2.70+
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.in | 5 -----
+ 1 file changed, 5 deletions(-)
+
+--- a/configure.in
++++ b/configure.in
+@@ -1,7 +1,6 @@
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT(README.txt)
+ AC_CONFIG_AUX_DIR(build-scripts)
+-
+ dnl Set various version strings - taken gratefully from the GTk sources
+
+ # Making releases:
+@@ -40,10 +39,6 @@ AC_SUBST(LT_CURRENT)
+ AC_SUBST(LT_REVISION)
+ AC_SUBST(LT_AGE)
+
+-dnl Detect the canonical build and host environments
+-AC_CONFIG_AUX_DIRS($srcdir/build-scripts)
+-dnl AC_CANONICAL_HOST
+-
+ dnl Check for tools
+ AC_PROG_LIBTOOL
+ AC_PROG_CC
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
index 8f1960d..6b6a531 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
@@ -4,18 +4,18 @@
LICENSE = "Zlib"
LIC_FILES_CHKSUM = "file://COPYING.txt;md5=516daf7a177ad4c8874bb9efa1a69c1f"
-SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "a36e8410cac46b00a4d01752b32c3eb1"
+SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${PV}.tar.gz \
+ file://0001-configure.in-Undefine-AC_CONFIG_AUX_DIR.patch \
+ "
SRC_URI[sha256sum] = "b4cf5a382c061cd75081cf246c2aa2f9df8db04bdda8dcdc6b6cca55bede2419"
S = "${WORKDIR}/SDL2_mixer-${PV}"
inherit autotools-brokensep pkgconfig
-EXTRA_AUTORECONF += "--include=acinclude"
EXTRA_OECONF = "--disable-music-mp3 --enable-music-ogg --disable-music-ogg-shared LIBS=-L${STAGING_LIBDIR}"
+PACKAGECONFIG ??= ""
PACKAGECONFIG[mad] = "--enable-music-mp3-mad-gpl,--disable-music-mp3-mad-gpl,libmad"
do_configure_prepend () {
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-greeter-set-visible-when-switch-to-input-user.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-greeter-set-visible-when-switch-to-input-user.patch
new file mode 100644
index 0000000..e01dc7f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-greeter-set-visible-when-switch-to-input-user.patch
@@ -0,0 +1,33 @@
+From f6b8e141e00c4837239f5b69af4e7bee1204abba Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Thu, 17 Dec 2020 10:18:58 +0800
+Subject: [PATCH 1/8] greeter: set visible when switch to input user
+
+It switches back to input user entry if press Esc key when input the
+password. At this time, the user name input is shown as '*' rather than
+plain text. Set the visibility to fix this issue. And clean the text as
+well.
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/greeter.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/greeter.c b/src/greeter.c
+index 2c6e5be..f100c72 100644
+--- a/src/greeter.c
++++ b/src/greeter.c
+@@ -139,6 +139,8 @@ static void switch_to_input_user(void)
+ pass=NULL;
+ }
+ gtk_label_set_text( GTK_LABEL(prompt), _("User:"));
++ gtk_entry_set_text(GTK_ENTRY(login_entry), "");
++ gtk_entry_set_visibility(GTK_ENTRY(login_entry), TRUE);
+ gtk_widget_show(prompt);
+ if(user_list)
+ {
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0002-greeter-gdk.c-fix-typo.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0002-greeter-gdk.c-fix-typo.patch
new file mode 100644
index 0000000..da02129
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0002-greeter-gdk.c-fix-typo.patch
@@ -0,0 +1,28 @@
+From 3a3c5c644c9790cb3f88f3ce3757c2803cff90c5 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Thu, 17 Dec 2020 14:32:40 +0800
+Subject: [PATCH 2/8] greeter-gdk.c: fix typo
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/greeter-gdk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/greeter-gdk.c b/src/greeter-gdk.c
+index 1b27d2e..5aa3e7f 100644
+--- a/src/greeter-gdk.c
++++ b/src/greeter-gdk.c
+@@ -299,7 +299,7 @@ void ui_prepare(void)
+ attr.wclass = GDK_INPUT_OUTPUT;
+ win = gdk_window_new(root, &attr, mask);
+ gdk_window_set_decorations(win,0);
+- gdk_window_set_title(win,"lxdm-greter-gdk");
++ gdk_window_set_title(win,"lxdm-greeter-gdk");
+
+ scr=gdk_screen_get_default();
+ g_signal_connect(scr, "size-changed", G_CALLBACK(on_screen_size_changed), win);
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0003-check-whether-password-expired-with-pam.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0003-check-whether-password-expired-with-pam.patch
new file mode 100644
index 0000000..c648543
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0003-check-whether-password-expired-with-pam.patch
@@ -0,0 +1,46 @@
+From 497e0fc7010969759c8247f7013a89589c44234a Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Thu, 17 Dec 2020 18:12:29 +0800
+Subject: [PATCH 3/8] check whether password expired with pam
+
+Introduce a new enum AuthResult type AUTH_PASSWD_EXPIRE. When user's
+password is expired, return it. Only work with pam.
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/lxdm.h | 1 +
+ src/pam.c | 4 ++++
+ 2 files changed, 5 insertions(+)
+
+diff --git a/src/lxdm.h b/src/lxdm.h
+index 568573f..1c2f837 100644
+--- a/src/lxdm.h
++++ b/src/lxdm.h
+@@ -41,6 +41,7 @@ enum AuthResult
+ AUTH_SUCCESS,
+ AUTH_BAD_USER,
+ AUTH_FAIL,
++ AUTH_PASSWD_EXPIRE,
+ AUTH_PRIV,
+ AUTH_ERROR
+ };
+diff --git a/src/pam.c b/src/pam.c
+index 43bd687..16a36f0 100644
+--- a/src/pam.c
++++ b/src/pam.c
+@@ -257,6 +257,10 @@ int lxdm_auth_user_authenticate(LXDM_AUTH *a,const char *user,const char *pass,i
+ return AUTH_FAIL;
+ }
+ ret=pam_acct_mgmt(a->handle,PAM_SILENT);
++ if (ret == PAM_NEW_AUTHTOK_REQD) {
++ g_debug("user %s account has expired\n", user);
++ return AUTH_PASSWD_EXPIRE;
++ }
+ if(ret!=PAM_SUCCESS)
+ {
+ g_debug("user %s acct mgmt fail with %d\n",user,ret);
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0004-lxdm.c-add-function-to-change-password-with-pam.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0004-lxdm.c-add-function-to-change-password-with-pam.patch
new file mode 100644
index 0000000..29c1000
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0004-lxdm.c-add-function-to-change-password-with-pam.patch
@@ -0,0 +1,124 @@
+From d4de5497bd89c408377194b9fa9026ba8e68b634 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Mon, 11 Jan 2021 14:11:05 +0800
+Subject: [PATCH 4/8] lxdm.c: add function to change password with pam
+
+Add function to change user's password when pam is enabled. It is useful
+to change user's password when the password is expired.
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/lxdm.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/lxdm.h | 1 +
+ 2 files changed, 69 insertions(+)
+
+diff --git a/src/lxdm.c b/src/lxdm.c
+index 638c30f..fe17a71 100644
+--- a/src/lxdm.c
++++ b/src/lxdm.c
+@@ -104,6 +104,10 @@ static int old_tty=1,def_tty = 7,nr_tty=0;
+ static int def_display=0;
+ static GSList *session_list;
+
++#if HAVE_LIBPAM
++static const char *new_passwd = NULL;
++#endif
++
+ static void lxdm_startx(LXSession *s);
+
+ static int get_active_vt(void)
+@@ -759,6 +763,69 @@ int lxdm_auth_user(int type,char *user, char *pass, struct passwd **ppw)
+ return ret;
+ }
+
++
++#if HAVE_LIBPAM
++
++static int do_conv(int num, const struct pam_message **msg,struct pam_response **resp, void *arg)
++{
++ int result = PAM_SUCCESS;
++ int i;
++
++ *resp = (struct pam_response *) calloc(num, sizeof(struct pam_response));
++ for(i = 0; i < num; i++)
++ {
++ switch (msg[i]->msg_style) {
++ case PAM_PROMPT_ECHO_ON:
++ break;
++ case PAM_PROMPT_ECHO_OFF:
++ resp[i]->resp = strdup(new_passwd);
++ break;
++ case PAM_ERROR_MSG:
++ case PAM_TEXT_INFO:
++ break;
++ default:
++ break;
++ }
++ }
++ return result;
++}
++
++static int lxdm_change_passwd_pam(const char *service, const char *user, const char *pass)
++{
++ pam_handle_t *pamh = NULL;
++ static struct pam_conv conv = {
++ do_conv,
++ NULL
++ };
++
++ int ret = pam_start("lxdm", user, &conv, &pamh);
++ if (PAM_SUCCESS != ret) {
++ g_warning("pam_start failed.");
++ return 1;
++ }
++
++ new_passwd = pass;
++ ret = pam_chauthtok(pamh, 0);
++ if (PAM_SUCCESS != ret) {
++ g_warning("pam_chauthtok failed: %s", pam_strerror(pamh, ret));
++ return 1;
++ }
++
++ (void)pam_end(pamh, PAM_SUCCESS);
++
++ return 0;
++}
++#endif
++
++int lxdm_change_passwd(const char *user, const char *pass)
++{
++#if HAVE_LIBPAM
++ return lxdm_change_passwd_pam("lxdm", user, pass);
++#else
++ return 0;
++#endif
++}
++
+ static void close_left_fds(void)
+ {
+ struct dirent **list;
+@@ -1446,6 +1513,7 @@ int lxdm_do_auto_login(void)
+ lxdm_do_login(pw,session,lang,option);
+ success=1;
+ }
++
+ g_free(user);g_free(session);g_free(lang);
+ }
+ g_free(last_lang);
+diff --git a/src/lxdm.h b/src/lxdm.h
+index 1c2f837..be3c81f 100644
+--- a/src/lxdm.h
++++ b/src/lxdm.h
+@@ -30,6 +30,7 @@ G_BEGIN_DECLS
+ extern GKeyFile *config;
+
+ int lxdm_auth_user(int type,char *user,char *pass,struct passwd **ppw);
++int lxdm_change_passwd(const char *user, const char *pass);
+ void lxdm_do_login(struct passwd *pw,char *session,char *lang,char *option);
+ void lxdm_do_reboot(void);
+ void lxdm_do_shutdown(void);
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0005-ui.c-handle-password-expire-and-update-new-password.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0005-ui.c-handle-password-expire-and-update-new-password.patch
new file mode 100644
index 0000000..ecbe68d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0005-ui.c-handle-password-expire-and-update-new-password.patch
@@ -0,0 +1,53 @@
+From 54b2ed18ca52fa682ade2fe84e1b0d19d1b78cc4 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Mon, 11 Jan 2021 16:48:26 +0800
+Subject: [PATCH 5/8] ui.c: handle password-expire and update-new-password
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/ui.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/src/ui.c b/src/ui.c
+index f233589..3ddb484 100644
+--- a/src/ui.c
++++ b/src/ui.c
+@@ -161,6 +161,9 @@ static gboolean on_greeter_input(GIOChannel *source, GIOCondition condition, gpo
+ ui_drop();
+ lxdm_do_login(pw, session, lang,NULL);
+ }
++ else if (AUTH_PASSWD_EXPIRE == ret) {
++ xwrite(greeter_pipe[0], "password-expire\n", 16);
++ }
+ else
+ {
+ if(pass!=NULL)
+@@ -205,6 +208,23 @@ static gboolean on_greeter_input(GIOChannel *source, GIOCondition condition, gpo
+ g_free(session);
+ g_free(lang);
+ }
++ else if (!strncmp(str, "update-new-password", 19)) {
++ xwrite(greeter_pipe[0], "update-new-password\n", 20);
++ char *user = greeter_param(str, "user");
++ char *pass = greeter_param(str, "newpass");
++ char *session = greeter_param(str, "session");
++ char *lang = greeter_param(str, "lang");
++
++ int ret = lxdm_change_passwd(user, pass);
++ if (ret) {
++ xwrite(greeter_pipe[0], "invalid-new-password\n", 21);
++ } else {
++ struct passwd *pw;
++ ret = lxdm_auth_user(AUTH_TYPE_NORMAL, user, pass, &pw);
++ ui_drop();
++ lxdm_do_login(pw, session, lang, NULL);
++ }
++ }
+ g_free(str);
+ return TRUE;
+ }
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0006-themes-Industrial-add-info-label-in-ui.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0006-themes-Industrial-add-info-label-in-ui.patch
new file mode 100644
index 0000000..4cadc3d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0006-themes-Industrial-add-info-label-in-ui.patch
@@ -0,0 +1,124 @@
+From 8414d63343cc7909bc7a972941c678509d5d5be6 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Mon, 11 Jan 2021 10:15:45 +0800
+Subject: [PATCH 6/8] themes/Industrial: add info label in ui
+
+Adjust the layout and add a new label "info" under the labe "prompt" in
+themes/Industrial to tell user some useful information such as
+"Authentication failed" or "Invalid password".
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ data/themes/Industrial/greeter-gtk3.ui | 27 +++++++++++++++++++++++++-
+ data/themes/Industrial/greeter.ui | 27 +++++++++++++++++++++++++-
+ data/themes/Industrial/gtk.css | 5 +++++
+ 3 files changed, 57 insertions(+), 2 deletions(-)
+
+diff --git a/data/themes/Industrial/greeter-gtk3.ui b/data/themes/Industrial/greeter-gtk3.ui
+index 2f4e631..e59eee3 100644
+--- a/data/themes/Industrial/greeter-gtk3.ui
++++ b/data/themes/Industrial/greeter-gtk3.ui
+@@ -45,7 +45,12 @@
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+- <object class="GtkHBox" id="hbox3">
++ <object class="GtkVBox" id="vbox3">
++ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
++ <property name="spacing">12</property>
++ <child>
++ <object class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="spacing">12</property>
+ <child>
+@@ -91,6 +96,26 @@
+ </packing>
+ </child>
+ </object>
++ </child>
++ <child>
++ <object class="GtkHBox" id="hbox4">
++ <property name="visible">True</property>
++ <property name="spacing">12</property>
++ <child>
++ <object class="GtkLabel" id="info">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes"></property>
++ <property name="yalign">0.2</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ </object>
++ </child>
++ </object>
+ </child>
+ </object>
+ <packing>
+diff --git a/data/themes/Industrial/greeter.ui b/data/themes/Industrial/greeter.ui
+index 3413922..6a02d8d 100644
+--- a/data/themes/Industrial/greeter.ui
++++ b/data/themes/Industrial/greeter.ui
+@@ -47,7 +47,12 @@
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+- <object class="GtkHBox" id="hbox3">
++ <object class="GtkVBox" id="vbox3">
++ <property name="visible">True</property>
++ <property name="orientation">vertical</property>
++ <property name="spacing">12</property>
++ <child>
++ <object class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="spacing">12</property>
+ <child>
+@@ -93,6 +98,26 @@
+ </packing>
+ </child>
+ </object>
++ </child>
++ <child>
++ <object class="GtkHBox" id="hbox4">
++ <property name="visible">True</property>
++ <property name="spacing">12</property>
++ <child>
++ <object class="GtkLabel" id="info">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes"></property>
++ <property name="yalign">0.2</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">0</property>
++ </packing>
++ </child>
++ </object>
++ </child>
++ </object>
+ </child>
+ </object>
+ <packing>
+diff --git a/data/themes/Industrial/gtk.css b/data/themes/Industrial/gtk.css
+index 7621345..be15f43 100644
+--- a/data/themes/Industrial/gtk.css
++++ b/data/themes/Industrial/gtk.css
+@@ -22,3 +22,8 @@
+ font: Sans 12;
+ color: #9E9D9B;
+ }
++
++#info {
++ font: Sans 14;
++ font-style: italic;
++}
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0007-greeter.c-support-to-update-expired-password.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0007-greeter.c-support-to-update-expired-password.patch
new file mode 100644
index 0000000..84a9fae
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0007-greeter.c-support-to-update-expired-password.patch
@@ -0,0 +1,180 @@
+From bae6a2b3a2232abd16a8d8558dda542d4970f1bb Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Tue, 12 Jan 2021 09:23:05 +0800
+Subject: [PATCH 7/8] greeter.c: support to update expired password
+
+Update greeter to work with ui to handle expired password. It checks
+whether password is expired after input user and password. If expired,
+force user to update password immediately. It allows 3 times to try. If
+exceeds, reset to input user.
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/greeter.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 81 insertions(+), 2 deletions(-)
+
+diff --git a/src/greeter.c b/src/greeter.c
+index f100c72..804fca0 100644
+--- a/src/greeter.c
++++ b/src/greeter.c
+@@ -77,6 +77,8 @@ static GtkWidget *lang_menu;
+
+ static char* user = NULL;
+ static char* pass = NULL;
++static char* new_pass = NULL;
++static gboolean pass_expired = FALSE;
+
+ static char* ui_file = NULL;
+ static char *ui_nobody = NULL;
+@@ -167,10 +169,19 @@ static void switch_to_input_passwd(void)
+ else
+ gtk_widget_hide(user_list);
+ }
+- gtk_label_set_text( GTK_LABEL(prompt), _("Password:") );
++ if (pass_expired) {
++ if (!new_pass) {
++ gtk_label_set_text(GTK_LABEL(prompt), _("New password:"));
++ } else {
++ gtk_label_set_text(GTK_LABEL(prompt), _("Retype new password:"));
++ }
++ } else {
++ gtk_label_set_text( GTK_LABEL(prompt), _("Password:") );
++ }
+ gtk_entry_set_text(GTK_ENTRY(login_entry), "");
+ gtk_entry_set_visibility(GTK_ENTRY(login_entry), FALSE);
+ gtk_widget_show(login_entry);
++ gtk_widget_show(prompt);
+ gtk_widget_grab_focus(login_entry);
+ }
+
+@@ -189,6 +200,8 @@ static void try_login_user(const char *user)
+
+ static void on_entry_activate(GtkEntry* entry)
+ {
++ static int count = 0;
++
+ char* tmp;
+ if( !user )
+ {
+@@ -217,6 +230,46 @@ static void on_entry_activate(GtkEntry* entry)
+ }
+ else
+ {
++ if (pass_expired) {
++ if (!new_pass) {
++ new_pass = g_strdup(gtk_entry_get_text(entry));
++ switch_to_input_passwd();
++ } else {
++ tmp = g_strdup(gtk_entry_get_text(entry));
++ if (strcmp(new_pass, tmp)) {
++ g_free(new_pass);
++ new_pass = NULL;
++ // if new passwords not match, retry for 3 times at most
++ if (++count < 3) {
++ switch_to_input_passwd();
++ } else {
++ count = 0;
++ pass_expired = FALSE;
++ switch_to_input_user();
++ }
++ } else if (!strcmp(pass, g_base64_encode((guchar*)new_pass, strlen(new_pass) + 1))) {
++ // if new password is same as old one
++ g_free(new_pass);
++ new_pass = NULL;
++ if (++count < 3) {
++ switch_to_input_passwd();
++ } else {
++ count = 0;
++ pass_expired = FALSE;
++ switch_to_input_user();
++ }
++ } else {
++ char *session_exec=get_session_exec();
++ char *session_lang=get_session_lang();
++
++ printf("update-new-password user=%s newpass=%s session=%s lang=%s\n",
++ user, new_pass, session_exec, session_lang);
++ }
++ }
++
++ return ;
++ }
++
+ char *session_exec=get_session_exec();
+ char *session_lang=get_session_lang();
+
+@@ -227,6 +280,7 @@ static void on_entry_activate(GtkEntry* entry)
+ printf("login user=%s pass=%s session=%s lang=%s\n",
+ user, pass, session_exec, session_lang);
+
++#if 0
+ /* password check failed */
+ g_free(user);
+ user = NULL;
+@@ -241,6 +295,7 @@ static void on_entry_activate(GtkEntry* entry)
+ gtk_label_set_text( GTK_LABEL(prompt), _("User:") );
+ gtk_entry_set_text(GTK_ENTRY(entry), "");
+ gtk_entry_set_visibility(GTK_ENTRY(entry), TRUE);
++#endif
+ }
+ }
+
+@@ -1091,8 +1146,12 @@ static void on_screen_size_changed(GdkScreen *screen,GtkWidget *win)
+
+ static gint login_entry_on_key_press (GtkWidget *widget,GdkEventKey *event)
+ {
+- if(event->keyval == GDK_Escape)
++ if(event->keyval == GDK_Escape) {
++ g_free(new_pass);
++ new_pass = NULL;
++ pass_expired = FALSE;
+ switch_to_input_user();
++ }
+ return FALSE;
+ }
+
+@@ -1285,8 +1344,10 @@ static void create_win()
+
+ static gboolean on_lxdm_command(GIOChannel *source, GIOCondition condition, gpointer data)
+ {
++
+ GIOStatus ret;
+ char *str;
++ static int count = 0;
+
+ if( !(G_IO_IN & condition) )
+ return FALSE;
+@@ -1300,10 +1361,28 @@ static gboolean on_lxdm_command(GIOChannel *source, GIOCondition condition, gpoi
+ {
+ switch_to_input_user();
+ }
++ else if (!strncmp(str, "password-expire", 15))
++ {
++ pass_expired = TRUE;
++ switch_to_input_passwd();
++ }
+ else if( !strncmp(str, "password", 8))
+ {
+ switch_to_input_passwd();
+ }
++ else if (!strncmp(str, "invalid-new-password", 20))
++ {
++ g_free(new_pass);
++ new_pass = NULL;
++
++ if (count++ < 3) {
++ switch_to_input_passwd();
++ } else {
++ count = 0;
++ pass_expired = FALSE;
++ switch_to_input_user();
++ }
++ }
+ g_free(str);
+ return TRUE;
+ }
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0008-greeter.c-show-information-on-gtk-label-info.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0008-greeter.c-show-information-on-gtk-label-info.patch
new file mode 100644
index 0000000..eab9fd5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0008-greeter.c-show-information-on-gtk-label-info.patch
@@ -0,0 +1,99 @@
+From bb4ff4b134383bfdadf7cb5353d3553a8a72d47e Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 13 Jan 2021 10:45:48 +0800
+Subject: [PATCH 8/8] greeter.c: show information on gtk label 'info'
+
+Show information on a gtk label 'info' which is added under label
+'prompt' in the .glade or .ui files.
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/1/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/greeter.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/src/greeter.c b/src/greeter.c
+index 804fca0..a4a2336 100644
+--- a/src/greeter.c
++++ b/src/greeter.c
+@@ -64,6 +64,7 @@ static GtkWidget* win;
+ static GtkWidget* alignment2;
+ static GtkWidget* prompt;
+ static GtkWidget* login_entry;
++static GtkWidget* info;
+ static GtkWidget* user_list_scrolled;
+ static GtkWidget* user_list;
+
+@@ -241,10 +242,12 @@ static void on_entry_activate(GtkEntry* entry)
+ new_pass = NULL;
+ // if new passwords not match, retry for 3 times at most
+ if (++count < 3) {
++ gtk_label_set_text((GtkLabel *)info, _("Passwords do not match, please retry."));
+ switch_to_input_passwd();
+ } else {
+ count = 0;
+ pass_expired = FALSE;
++ gtk_label_set_text((GtkLabel *)info, _("Maximum number of failed update password attempts exceeded."));
+ switch_to_input_user();
+ }
+ } else if (!strcmp(pass, g_base64_encode((guchar*)new_pass, strlen(new_pass) + 1))) {
+@@ -252,6 +255,7 @@ static void on_entry_activate(GtkEntry* entry)
+ g_free(new_pass);
+ new_pass = NULL;
+ if (++count < 3) {
++ gtk_label_set_text((GtkLabel *)info, _("New password is same as old one, password unchanged."));
+ switch_to_input_passwd();
+ } else {
+ count = 0;
+@@ -1146,6 +1150,9 @@ static void on_screen_size_changed(GdkScreen *screen,GtkWidget *win)
+
+ static gint login_entry_on_key_press (GtkWidget *widget,GdkEventKey *event)
+ {
++
++ gtk_label_set_text(GTK_LABEL(info), "");
++
+ if(event->keyval == GDK_Escape) {
+ g_free(new_pass);
+ new_pass = NULL;
+@@ -1211,11 +1218,14 @@ static void create_win()
+ login_entry = (GtkWidget*)gtk_builder_get_object(builder, "login_entry");
+ if(login_entry!=NULL)
+ {
+- g_signal_connect_after(login_entry,"key-press-event",G_CALLBACK(login_entry_on_key_press),NULL);
++ g_signal_connect(login_entry,"key-press-event",G_CALLBACK(login_entry_on_key_press),NULL);
+ }
+
+ g_signal_connect(login_entry, "activate", G_CALLBACK(on_entry_activate), NULL);
+
++ info = (GtkWidget *)gtk_builder_get_object(builder, "info");
++ gtk_label_set_text(GTK_LABEL(info), "");
++
+ if( g_key_file_get_integer(config, "display", "bottom_pane", 0)==1)
+ {
+ /* hacks to let GtkEventBox paintable with gtk pixmap engine. */
+@@ -1359,11 +1369,13 @@ static gboolean on_lxdm_command(GIOChannel *source, GIOCondition condition, gpoi
+ gtk_main_quit();
+ else if( !strncmp(str, "reset", 5) )
+ {
++ gtk_label_set_text(GTK_LABEL(info), _("Authentication failed."));
+ switch_to_input_user();
+ }
+ else if (!strncmp(str, "password-expire", 15))
+ {
+ pass_expired = TRUE;
++ gtk_label_set_text(GTK_LABEL(info), _("You are required to change your password immediately."));
+ switch_to_input_passwd();
+ }
+ else if( !strncmp(str, "password", 8))
+@@ -1376,6 +1388,7 @@ static gboolean on_lxdm_command(GIOChannel *source, GIOCondition condition, gpoi
+ new_pass = NULL;
+
+ if (count++ < 3) {
++ gtk_label_set_text(GTK_LABEL(info), _("Invalid new password. Please input new password again."));
+ switch_to_input_passwd();
+ } else {
+ count = 0;
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0009-greeter.c-disallow-empty-new-password.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0009-greeter.c-disallow-empty-new-password.patch
new file mode 100644
index 0000000..3b12def
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0009-greeter.c-disallow-empty-new-password.patch
@@ -0,0 +1,53 @@
+From af1c347a31ae243d29c6087da8ffb423b23c74f2 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Mon, 1 Feb 2021 09:54:48 +0800
+Subject: [PATCH] greeter.c: disallow empty new password
+
+Do not clear text of label 'promt' when skip_password is set. When user
+is required to update password, it only shows input box without label
+for about 1 second.
+
+And disallow empty new password when user is required to update it.
+
+Upstream-Status: Submitted [https://sourceforge.net/p/lxdm/code/merge-requests/2/]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ src/greeter.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/greeter.c b/src/greeter.c
+index 7e4a168..c0e6b64 100644
+--- a/src/greeter.c
++++ b/src/greeter.c
+@@ -220,7 +220,6 @@ static void on_entry_activate(GtkEntry* entry)
+ }
+ if(g_key_file_get_integer(config,"base","skip_password",NULL)!=0)
+ {
+- gtk_label_set_text( GTK_LABEL(prompt), "");
+ try_login_user(user);
+ }
+ else
+@@ -235,6 +239,10 @@ static void on_entry_activate(GtkEntry* entry)
+ if (pass_expired) {
+ if (!new_pass) {
+ new_pass = g_strdup(gtk_entry_get_text(entry));
++ if (strlen(new_pass) == 0) {
++ new_pass = NULL;
++ gtk_label_set_text((GtkLabel *)info, _("Empty password is not allowed."));
++ }
+ switch_to_input_passwd();
+ } else {
+ tmp = g_strdup(gtk_entry_get_text(entry));
+@@ -251,7 +259,7 @@ static void on_entry_activate(GtkEntry* entry)
+ gtk_label_set_text((GtkLabel *)info, _("Maximum number of failed update password attempts exceeded."));
+ switch_to_input_user();
+ }
+- } else if (!strcmp(pass, g_base64_encode((guchar*)new_pass, strlen(new_pass) + 1))) {
++ } else if (pass && !strcmp(pass, g_base64_encode((guchar*)new_pass, strlen(new_pass) + 1))) {
+ // if new password is same as old one
+ g_free(new_pass);
+ new_pass = NULL;
+--
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
index db4767b..216bbb6 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
@@ -9,6 +9,15 @@
file://0002-let-autotools-create-lxdm.conf.patch \
file://0003-check-for-libexecinfo-providing-backtrace-APIs.patch \
file://0004-fix-css-under-gtk-3.20.patch \
+ file://0001-greeter-set-visible-when-switch-to-input-user.patch \
+ file://0002-greeter-gdk.c-fix-typo.patch \
+ file://0003-check-whether-password-expired-with-pam.patch \
+ file://0004-lxdm.c-add-function-to-change-password-with-pam.patch \
+ file://0005-ui.c-handle-password-expire-and-update-new-password.patch \
+ file://0006-themes-Industrial-add-info-label-in-ui.patch \
+ file://0007-greeter.c-support-to-update-expired-password.patch \
+ file://0008-greeter.c-show-information-on-gtk-label-info.patch \
+ file://0009-greeter.c-disallow-empty-new-password.patch \
"
SRC_URI[md5sum] = "061caae432634e6db38bbdc84bc6ffa0"
SRC_URI[sha256sum] = "4891efee81c72a400cc6703e40aa76f3f3853833d048b72ec805da0f93567f2f"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb b/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_4.1.1.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb
rename to meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_4.1.1.bb
index 108c339..3eb23dc 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_4.1.1.bb
@@ -4,9 +4,8 @@
SECTION = "libs"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-PV = "4.0.1+git${SRCPV}"
-SRCREV = "7c83deb8f562ae6013fea4c3e65278df93f98fb7"
+SRCREV = "715e29fd4cd71b6e452ae0f4e36d917b43122ce8"
SRC_URI = "git://github.com/fukuchi/libqrencode.git"
S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_1.500.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.000.bb
similarity index 61%
rename from meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_1.500.bb
rename to meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.000.bb
index ce003e9..d3dd417 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_1.500.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.000.bb
@@ -3,15 +3,13 @@
SUMMARY = "Ethiopia and Eritrea (Amharic) font - TTF Edition"
HOMEPAGE = "http://software.sil.org/abyssinica/"
LICENSE = "OFL-1.1"
-LIC_FILES_CHKSUM = "file://OFL.txt;md5=1694c7fc245cdc85c9971db707928159"
+LIC_FILES_CHKSUM = "file://OFL.txt;md5=80cc8cdcdc3f8ce96957bbac946b70ae"
SRCNAME = "AbyssinicaSIL"
SRC_URI = "http://software.sil.org/downloads/r/abyssinica/${SRCNAME}-${PV}.zip"
S = "${WORKDIR}/${SRCNAME}-${PV}"
-SRC_URI[md5sum] = "a3d943d18e303197c8d3d92d2de54d1e"
-SRC_URI[sha256sum] = "e48a77d5ab8ee0b06464a5b29be70f292aa25dc1e73eb39ec933bd7fa47bbd86"
+SRC_URI[sha256sum] = "274204a53b30f64cca662d78c7199e3c0325ea95ad4109886b47af734c92d0f9"
FONT_PACKAGES = "${PN}"
FILES_${PN} = "${datadir}"
-