diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-graphics')
18 files changed, 843 insertions, 178 deletions
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 2eb50a5a3..000000000 --- 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 000000000..25e851883 --- /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 index e2f4dbebc..c5a7c5bff 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 @@ HOMEPAGE = "https://glm.g-truc.net" 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 bc46a11d3..8fe837b75 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 @@ DEPENDS_append_class-nativesdk = " ${BPN}-native" 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 000000000..0605b32e3 --- /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 8f1960d8a..6b6a531d3 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 @@ DEPENDS = "virtual/libsdl2 flac libmikmod libvorbis" 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 000000000..e01dc7fa7 --- /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 000000000..da0212975 --- /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 000000000..c64854373 --- /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 000000000..29c1000d1 --- /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 000000000..ecbe68d14 --- /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 000000000..4cadc3d9b --- /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 000000000..84a9faebb --- /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 000000000..eab9fd5e2 --- /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 000000000..3b12defb0 --- /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 db4767bb3..216bbb624 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 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}%20${PV}/${BPN}-${PV}.tar. 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 index 108c339bf..3eb23dc0f 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 @@ HOMEPAGE = "http://fukuchi.org/works/qrencode/" 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 index ce003e922..d3dd417dc 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 @@ require ttf.inc 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}" - |