[OE-core] [PATCH] wic/DirectPlugin: don't update fstab if --no-fstab-update

2023-12-06 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The function `update_fstab` should not touch the fstab for partitions with `--no-fstab-update`. Signed-off-by: Jörg Sommer --- scripts/lib/wic/plugins/imager/direct.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/lib/wic/plugins/imager/direct.py

[OE-core] [PATCH] i2cdev: New recipe with i2c tools

2023-12-27 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The main part is the tool lsi2c to scan the i2c bus, like lspci and lsusb do. This recipe also ships a static library *libi2cdev.a*. Because this library contains the file *smbus.c* which is *GPL v2+,* and a static library can't be linked dynamically to satisfy the LGPL, the wh

Re: [OE-core] [PATCH] uboot-sign: support to load optee-os and TFA images

2024-01-16 Thread Jörg Sommer via lists . openembedded . org
On 15.01.24 08:54, Jamin Lin via lists.openembedded.org wrote: > Currently, u-boot FIT image only support to load u-boot image. > To support optee-os and trusted-firmware-a, update ITS file generation > scripts, so users are able to use u-boot FIT image to load > u-boot, optee-os and treustred-firm

Re: [OE-core] New to the group

2024-05-30 Thread Jörg Sommer via lists . openembedded . org
faganronan via lists.openembedded.org schrieb am Do 23. Mai, 12:58 (GMT): > I'm brand new to the group, apologies if this is not the right spot. I've > been working a lot with SBOMs for embedded devices lately and been playing > around with the recipes for spdx and cve with limited success. The SPD

[OE-core] [PATCH] classes/kernel: No symlink in postinst without KERNEL_IMAGETYPE_SYMLINK

2024-06-09 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The commit “Use a copy of image for kernel*.rpm if fs doesn't support symlinks” [1] added postinst and postrm scripts to the kernel package which create a symlink after package installation. This should not happen if `KERNEL_IMAGETYPE_SYMLINK` is not `1`. Background: The u-boot

Re: [OE-core] [PATCH] classes/kernel: No symlink in postinst without KERNEL_IMAGETYPE_SYMLINK

2024-06-09 Thread Jörg Sommer via lists . openembedded . org
Jörg Sommer via lists.openembedded.org schrieb am So 09. Jun, 16:59 (GMT): > diff --git a/meta/classes-recipe/kernel.bbclass > b/meta/classes-recipe/kernel.bbclass > index d6eedf942c..89badd90f1 100644 > --- a/meta/classes-recipe/kernel.bbclass > +++ b/meta/classes-recipe/kernel.bbclass > @@ -115,

Re: [OE-core] [PATCH] classes/kernel: No symlink in postinst without KERNEL_IMAGETYPE_SYMLINK

2024-06-16 Thread Jörg Sommer via lists . openembedded . org
Jörg Sommer via lists.openembedded.org schrieb am So 09. Jun, 16:59 (GMT): > From: Jörg Sommer > > The commit “Use a copy of image for kernel*.rpm if fs doesn't support > symlinks” [1] added postinst and postrm scripts to the kernel package which > create a symlink after package installation. Thi

Re: [OE-core] [PATCH] linux: Modify kernel configuration to fix runqlat issue

2024-07-03 Thread Jörg Sommer via lists . openembedded . org
Sadineni, Harish via lists.openembedded.org schrieb am Mi 03. Jul, 05:52 (GMT): > The following commit addressed the issue which checks whether the struct > "task_struct" has __state or state > https://github.com/chenhengqi/bcc/commit/d3cf5dcecfaeb6d8d346e2228626a7dbe506ad38 > The above patch requ

Re: [OE-core] [PATCH] linux: Modify kernel configuration to fix runqlat issue

2024-07-03 Thread Jörg Sommer via lists . openembedded . org
Bruce Ashfield via lists.openembedded.org schrieb am Mi 03. Jul, 14:44 (GMT): > On Wed, Jul 3, 2024 at 2:34 PM Jörg Sommer via lists.openembedded.org > wrote: > > > > Sadineni, Harish via lists.openembedded.org schrieb am Mi 03. Jul, 05:52 > > (GMT): > > > The following commit addressed the issue

[OE-core] [PATCH] u-boot: do not pass O=$B, if $B = $S

2024-07-04 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The u-boot Makefile (even v2024.07) doesn't like it, when `O=…` is the same directory as the source directory and complains about a dirty source directory; see below. This happens when `UBOOT_MACHINE` is set and not `UBOOT_CONFIG`. ``` % make O=$PWD all make[1]: Entering direct

[OE-core] [PATCH] u-boot: set B = WORKDIR/build

2024-07-05 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The build of u-boot fails, if `UBOOT_MACHINE` (instead of `UBOOT_CONFIG`) is used. U-boot doe not like the setting of `O=$S` in the make call, which happen when `UBOOT_MACHINE` is used. Therefore, use a dedicated build directory to circumvent the conflict `$B == $S`. Yocto buil

[OE-core] [PATCH v2] u-boot: set B = WORKDIR/build

2024-07-05 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The build of u-boot fails, if `UBOOT_MACHINE` (instead of `UBOOT_CONFIG`) is used. U-boot doe not like the setting of `O=$S` in the make call, which happen when `UBOOT_MACHINE` is used. Therefore, use a dedicated build directory to circumvent the conflict `$B == $S`. Yocto buil

Re: [OE-core] [PATCH] u-boot: do not pass O=$B, if $B = $S

2024-07-05 Thread Jörg Sommer via lists . openembedded . org
Richard Purdie schrieb am Do 04. Jul, 20:38 (GMT): > On Thu, 2024-07-04 at 21:18 +0200, Jörg Sommer via > lists.openembedded.org wrote: > > From: Jörg Sommer > > > > The u-boot Makefile (even v2024.07) doesn't like it, when `O=…` is > > the same > > directory as the source directory and complains

Re: [OE-core] [PATCH v2] u-boot: set B = WORKDIR/build

2024-07-05 Thread Jörg Sommer via lists . openembedded . org
Richard Purdie schrieb am Fr 05. Jul, 11:03 (GMT): > On Fri, 2024-07-05 at 11:39 +0200, Jörg Sommer via lists.openembedded.org > wrote: > > From: Jörg Sommer > > > > The build of u-boot fails, if `UBOOT_MACHINE` (instead of `UBOOT_CONFIG`) is > > used. U-boot doe not like the setting of `O=$S` i

[OE-core] [PATCH] classes/kernel: Delay module signing until after strip

2024-07-05 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The current do_package does not strip the kernel modules, if they are signed. Hence, the files in a release image stay very big and the debug information are not split into the kernel-dbg package. The idea of this change is to suppress the signing of the modules on `modules_ins

Re: [OE-core] [PATCH] classes/kernel: Delay module signing until after strip

2024-07-05 Thread Jörg Sommer via lists . openembedded . org
Bruce Ashfield via lists.openembedded.org schrieb am Fr 05. Jul, 10:08 (GMT): > On Fri, Jul 5, 2024 at 9:19 AM Jörg Sommer via lists.openembedded.org > wrote: > > > > From: Jörg Sommer > > > > The current do_package does not strip the kernel modules, if they are > > signed. Hence, the files in a

Re: [OE-core][PATCH v2 3/5] vex.bbclass: add a new class

2024-07-23 Thread Jörg Sommer via lists . openembedded . org
Marta Rybczynska via lists.openembedded.org schrieb am Di 23. Jul, 13:53 (GMT): > The "vex" class generates the minimum information that is necessary > for VEX generation by an external CVE checking tool. It is a drop-in > replacement of "cve-check". It uses the same variables from recipes > to mak

[OE-core] [PATCH] ptest-runner: Update 2.4.4 -> 2.4.5

2024-08-21 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer Changelog: aea9f42 ptest_list_remove: Fix pointer adjustment of prev and next Signed-off-by: Jörg Sommer --- .../{ptest-runner_2.4.4.bb => ptest-runner_2.4.5.bb}| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename meta/recipes-support/ptest-runner/{ptest

[OE-core] dbus patch 1916cb6 in master branch, but not in kirkstone

2023-09-15 Thread Jörg Sommer via lists . openembedded . org
Hello, the patch »dbus: Specify runstatedir configure option« [1] is in the master branch, but not in the kirkstone branch. Is it possible to get it applied there, too? Whom can I ping for this? [1] https://git.yoctoproject.org/poky/commit/meta/recipes-core/dbus?id=1916cb69980dbe1de79c3809f502

[OE-core] [kirkstone cherry-pick] dbus: Specify runstatedir configure option

2023-09-15 Thread Jörg Sommer via lists . openembedded . org
From: Pavel Zhukov Without specifing runstatedir tmpfiles.d is configured to use /var/run for dbus and this causes deprecation warnings in system logs. (From OE-Core rev: 4df1a16e5c38d0fb724f63d37cc032aa37fa122f) Signed-off-by: Pavel Zhukov Signed-off-by: Luca Ceresoli Signed-off-by: Richard

[OE-core] Fw: [poky] [PATCH] runqemu-ifupdown: Add support for ip tuntap

2023-06-09 Thread Jörg Sommer via lists . openembedded . org
Sorry, I have to resend this message, because I wasn't subscribed to oe-core. From: Jörg Sommer Sent: Friday, 9 June 2023 09:30 To: Richard Purdie ; p...@lists.yoctoproject.org ; openembedded-core@lists.openembedded.org Subject: Re: [poky] [PATCH] runqemu-ifup

[OE-core] [PATCH 1/2] runqemu-gen-tapdevs: Refactoring

2023-06-09 Thread Jörg Sommer via lists . openembedded . org
The changes are mostly about early exit which causes indentation changes; check with `git diff -w`. Another change is the check for ip by simply calling it and deciding upon the exit code, if it's fine or not. Signed-off-by: Jörg Sommer --- scripts/runqemu-gen-tapdevs | 77 ++

[OE-core] [PATCH 2/2] runqemu-ifupdown/get-tapdevs: Add support for ip tuntap

2023-06-09 Thread Jörg Sommer via lists . openembedded . org
The *ip* command supports the creation and destruction of TAP devices since 2009 and might be more likely installed on systems then *tunctl*. Therefore it should be tried to setup or teardown the TAP interface with *ip* before falling back to *tunctl*. https://git.kernel.org/pub/scm/network/iprout

Re: [OE-core] [PATCH 1/9] runqemu-ifup: remove uid parameter

2023-06-23 Thread Jörg Sommer via lists . openembedded . org
On 22 June 2023 19:01, openembedded-core@lists.openembedded.org wrote: > ip tuntap does not need the uid, it was an unused variable/parameter. > Backward compatibility should be fine. > > Signed-off-by: Adrian Freihofer > --- > scripts/runqemu-ifup | 13 - > 1 file changed, 8 insertions

Re: [OE-core] [PATCH 4/9] runqemu-ifup: remove only our taps

2023-06-23 Thread Jörg Sommer via lists . openembedded . org
On 22 June 2023 19:01, openembedded-core@lists.openembedded.org wrote: > If there are other tap interfaces than the interfaces created by the > runqemu-* scripts, these interfaces are not ignored. This is now fixed > by filtering the interfaces for a specific prefix in the interface name. > > Signe

[OE-core] [PATCH] bonnie++: New recipe for version 2.0

2023-06-26 Thread Jörg Sommer via lists . openembedded . org
Newer versions of bonnie get published on . Unfortunately, the new version doesn't compile with g++ 11 which requires *fix-csv2html-data.patch* and configure fails due to cross compilation which gets fixed with *fix-configure-lfs.patch* Signed-off-by: Jör

[OE-core] [PATCH] libtirpc: Support ipv6 in DISTRO_FEATURES

2023-10-12 Thread Jörg Sommer via lists . openembedded . org
If the ipv6 feature for the distribution is not set, the package should not contain settings for ipv6. This makes rpcbind doesn't try to bind to a IPv6 socket, and complain that this fails. Signed-off-by: Jörg Sommer --- meta/recipes-extended/libtirpc/libtirpc_1.3.2.bb | 14 +- 1 fil

[OE-core] [PATCH v2] libtirpc: Support ipv6 in DISTRO_FEATURES

2023-10-12 Thread Jörg Sommer via lists . openembedded . org
If the ipv6 feature for the distribution is not set, the package should not contain settings for ipv6. This makes rpcbind doesn't try to bind to a IPv6 socket, and complain that this fails. Signed-off-by: Jörg Sommer --- .../libtirpc/libtirpc/ipv6.patch | 52 +++ ...

[OE-core] [PATCH v3] libtirpc: Support ipv6 in DISTRO_FEATURES

2023-10-12 Thread Jörg Sommer via lists . openembedded . org
If the ipv6 feature for the distribution is not set, the package should not contain settings for ipv6. This makes rpcbind doesn't try to bind to a IPv6 socket, and complain that this fails. Signed-off-by: Jörg Sommer --- .../libtirpc/libtirpc/ipv6.patch | 52 +++ ...

Re: [OE-core] [PATCH v3] libtirpc: Support ipv6 in DISTRO_FEATURES

2023-10-12 Thread Jörg Sommer via lists . openembedded . org
This is only a minor change, because oelint-adv had warned about the space after " of PACKAGECONFIG. From: openembedded-core@lists.openembedded.org on behalf of Jörg Sommer via lists.openembedded.org Sent: Thursday, 12 October 2023 18:34 To: openembedded-core@

Re: [OE-core] [PATCH v3] libtirpc: Support ipv6 in DISTRO_FEATURES

2023-10-13 Thread Jörg Sommer via lists . openembedded . org
On 12 October 2023 21:13, Dan McGregor wrote: > On Thu, 12 Oct 2023 at 11:10, Jörg Sommer via lists.openembedded.org > wrote: > > > > This is only a minor change, because oelint-adv had warned about the space > > after " of PACKAGECONFIG. > > > > > > From: openemb

[OE-core] [PATCH] base-files: Remove localhost ::1 from hosts if ipv6 missing

2023-10-16 Thread Jörg Sommer via lists . openembedded . org
If a distribution doesn't provide IPv6, the mapping of localhost and ::1 has to be removed. Signed-off-by: Jörg Sommer --- meta/recipes-core/base-files/base-files_3.0.14.bb | 4 1 file changed, 4 insertions(+) diff --git a/meta/recipes-core/base-files/base-files_3.0.14.bb b/meta/recipes-c

[OE-core] [PATCH v4] libtirpc: Support ipv6 in DISTRO_FEATURES

2023-10-16 Thread Jörg Sommer via lists . openembedded . org
If the ipv6 feature for the distribution is not set, the package should not contain settings for ipv6. This makes rpcbind doesn't try to bind to a IPv6 socket, and complain that this fails. Signed-off-by: Jörg Sommer --- .../libtirpc/libtirpc/ipv6.patch | 52 +++ ...

[OE-core] [PATCH] package_qa_check_rdepends: Allow /usr/bin/sh if usrmerge

2023-10-20 Thread Jörg Sommer via lists . openembedded . org
If the distro feature usrmerge is set, all files from /bin are moved to /usr/bin, i.e. /usr/bin/sh is the same as /bin/sh and should be allowed be ignored, because it's always present. Signed-off-by: Jörg Sommer --- meta/classes-global/insane.bbclass | 4 1 file changed, 4 insertions(+) di

Re: [OE-core] [PATCH] openssh: Don't hardcode the dir in sshd.service

2023-10-26 Thread Jörg Sommer via lists . openembedded . org
On 26.10.23 09:04, Yu, Mingli via lists.openembedded.org wrote: > From: Mingli Yu > > Don't hardcode the directory of the binary in sshd.service. > > Signed-off-by: Mingli Yu > --- > meta/recipes-connectivity/openssh/openssh/sshd.service | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-)

[OE-core] [PATCH] sngrep: new recipe for ncurses SIP Messages flow viewer

2024-03-13 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer Signed-off-by: Jörg Sommer --- .../recipes-support/sngrep/sngrep_1.8.0.bb| 37 +++ 1 file changed, 37 insertions(+) create mode 100644 meta-networking/recipes-support/sngrep/sngrep_1.8.0.bb diff --git a/meta-networking/recipes-support/sngrep/sngrep_1.8.0.

[OE-core] [PATCH] autotools: update link in comment for cross compiling

2024-03-14 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer Signed-off-by: Jörg Sommer --- meta/classes-recipe/autotools.bbclass | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meta/classes-recipe/autotools.bbclass b/meta/classes-recipe/autotools.bbclass index ca76cde0e7..9359c9b4e1 100644 --- a/meta/classes-reci

[OE-core] [PATCH] runqemu: Fix detection of -serial parameter

2024-08-29 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer The pattern `-serial` matches also `-device usb-serial` and `virtio-serial` which are not the desired parameter. This causes the serial console ttyS1 is missing and Systemd's getty@ttyS1 fails constantly. Signed-off-by: Jörg Sommer --- scripts/runqemu | 4 ++-- 1 file changed

[OE-core] [PATCH] buildcfg.py: add dirty status to get_metadata_git_describe

2024-08-30 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer For postmortem analysis it's helpful to know if the build environment was clean or contained any modifications. Signed-off-by: Jörg Sommer --- meta/lib/oe/buildcfg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/lib/oe/buildcfg.py b/meta/lib/oe/bui

[OE-core] [PATCH] systemd: Remove permission/owner changes of /u/s/polkit-1/rules.d

2024-08-30 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer This reverts "systemd: Fix rootfs transaction error when PACKAGECONFIG has polkit" [1], because the opposite situation came true. When building with ``` INIT_MANAGER = "systemd" DISTRO_FEATURES:append = " polkit usrmerge" IMAGE_INSTALL:append = " polkit" ``` the build fails wi

Re: [OE-core] [PATCH] openssh: Be more restrictive on private key file permissions

2024-10-10 Thread Jörg Sommer via lists . openembedded . org
Khem Raj via lists.openembedded.org schrieb am Do 10. Okt, 11:51 (GMT): > mkdir -p "$DIR" > rm -f ${FILE}.tmp > ssh-keygen -q -f "${FILE}.tmp" -N '' -t $TYPE > - > +chmod 0600 "$FILE.tmp" Or maybe `(umask 700 && ssh-keygen -q -f "${FILE}.tmp" -N '' -t $TYPE)` or do at least `chm

[OE-core] [PATCH] lib/oe/utils.cpu_count: Raise maximum count from 64 to 192

2024-11-27 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer We have a system with 96 CPUs and 128 are not uncommon. The border of 64 limits the number of parallel tasks make or ninja spawns, because the value goes into `PARALLEL_MAKE ?= "-j ${@oe.utils.cpu_count()}"`. If only a single recipe gets build (e.g. rust, due to dependencies) th

Re: [OE-core][PATCH v2 1/2] init-manager: define dev_manager for all init managers

2024-11-27 Thread Jörg Sommer via lists . openembedded . org
Peter Marko via lists.openembedded.org schrieb am Mi 27. Nov, 18:24 (+0100): > From: Peter Marko > > Currently VIRTUAL-RUNTIME_dev_manager is defined by some init managers > with "??=" and in packagegroup-core-boot with "?=". > This means that this variable is different in this package group and

Re: [OE-core] [PATCH] lib/oe/utils.cpu_count: Raise maximum count from 64 to 192

2024-11-28 Thread Jörg Sommer via lists . openembedded . org
Ross Burton schrieb am Do 28. Nov, 13:36 (+): > On 27 Nov 2024, at 16:33, Jörg Sommer via lists.openembedded.org > wrote: > > > > From: Jörg Sommer > > > > We have a system with 96 CPUs and 128 are not uncommon. The border of 64 > > limits the number of parallel tasks make or ninja spawns,

[OE-core] [PATCH] python3-ctypes: depend on ldconfig only if distro-feature set

2024-11-22 Thread Jörg Sommer via lists . openembedded . org
From: Jörg Sommer In the source code is only usage of ldconfig (for Linux) in Lib/ctypes/util.py:301. This is wrapped in try-execpt which causes _findSoname_ldconfig return Nothing. This is handled properly in find_library and other methods to find the library a tried. So, the code can handle th

Re: [OE-core] [PATCH RESEND] kernel-yocto: fix merge_config.sh flag set when KBUILD_DEFCONFIG is used

2025-01-26 Thread Jörg Sommer via lists . openembedded . org
Slawomir Stepien via lists.openembedded.org schrieb am So 26. Jan, 13:43 (+0100): > Based on the documentation of KCONFIG_MODE[1], when we use "in-tree" > defconfig (the KBUILD_DEFCONFIG is set), then the alldefconfig mode > should be used with merge_config.sh. > > This commit fixes the logic beh

Re: [OE-core] [PATCH kirkstone 6/6] base-passwd: Add the sgx group

2025-01-02 Thread Jörg Sommer via lists . openembedded . org
Jonas Gorski via lists.openembedded.org schrieb am Di 17. Dez, 12:12 (+0100): > From: Alex Kiernan > > To avoid errors from eudev/udev we need an sgx group, but if we add it > via groupadd that causes shadow login to be brought into an image, Does this work for useradd-staticids.bbclass? I still

Re: [OE-core] [PATCH] Revert "python3-ctypes: depend on ldconfig only if distro-feature set"

2025-02-27 Thread Jörg Sommer via lists . openembedded . org
Changqing Li schrieb am Di 25. Feb, 10:02 (+0800): > On 2/25/25 07:36, Jörg Sommer wrote: > > CAUTION: This email comes from a non Wind River email account! > > Do not click links or open attachments unless you recognize the sender and > > know the content is safe. > > > > Changqing Li via lists.

Re: [OE-core] [PATCH] Revert "python3-ctypes: depend on ldconfig only if distro-feature set"

2025-02-28 Thread Jörg Sommer via lists . openembedded . org
Richard Purdie schrieb am Fr 28. Feb, 10:20 (+): > On Fri, 2025-02-28 at 06:42 +0100, Jörg Sommer wrote: > > Changqing Li schrieb am Fr 28. Feb, 10:56 (+0800): > > > > But you can't remove ldconfig if you need it. Why do you remove it? > > > > If you want the ldconfig feature of python3-ctype

Re: [OE-core] [PATCH] Revert "python3-ctypes: depend on ldconfig only if distro-feature set"

2025-02-28 Thread Jörg Sommer via lists . openembedded . org
Changqing Li schrieb am Fr 28. Feb, 10:56 (+0800): > On 2/28/25 06:32, Jörg Sommer wrote: > > ``` > > root@qemux86-64:~# python3 -c 'from ctypes.util import find_library; > > print(find_library("m"))' > > libm.so.6 > > root@qemux86-64:~# python3 -c 'from ctypes.util import find_library; > > print

Re: [OE-core] [PATCH] Revert "python3-ctypes: depend on ldconfig only if distro-feature set"

2025-02-24 Thread Jörg Sommer via lists . openembedded . org
Changqing Li schrieb am Di 25. Feb, 10:02 (+0800): > On 2/25/25 07:36, Jörg Sommer wrote: > > CAUTION: This email comes from a non Wind River email account! > > Do not click links or open attachments unless you recognize the sender and > > know the content is safe. > > > > Changqing Li via lists.

Re: [OE-core] [PATCH] Revert "python3-ctypes: depend on ldconfig only if distro-feature set"

2025-02-24 Thread Jörg Sommer via lists . openembedded . org
Changqing Li via lists.openembedded.org schrieb am Do 20. Feb, 11:57 (+0800): > The reverted commit causes regression when ldconfig not in > DISTRO_FEATURES, before, without ldconfig in DISTRO_FEATURES, > ctypes.util.find_library(name) can find the lib if it is installed, Hello Changqing Li, Did