aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2023-05-09Move out r-car specific description to dynamic-layerNaoto Yamaguchi3-2/+2
Existing agl-cluster-demo-lxc-host.bb is including r-car specific description. IMAGE_INSTALL:append:rcar-gen3 = " kernel-module-gles " This patch move this to dynamic-layers/meta-rcar-gen3. Bug-AGL: SPEC-4777 Change-Id: I421e96a65b8a2b09046283d9d9710551639ff1ac Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Remove obsoleted weston configuration recipesNaoto Yamaguchi4-49/+0
The weston-init and the weston-ini-conf ware not used in existing integration. This patch remove these obsoleted recipes. Bug-AGL: SPEC-4777 Change-Id: I8048bc311c1cece40ce5a78b3a0287bde74d2b25 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Initial support for AGL Container ManagerNaoto Yamaguchi3-0/+65
The AGL Instrument Cluster container integration require to container management daemon to support embedded use case such as lifecycle, many device and other. AGL IC-EG is already starting development for that daemon. This patch is initial support for that container management daemon. Bug-AGL: SPEC-4777 Change-Id: I02055c45dd53a80fc6d5ef0ab2c2206c6c0feae2 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Disable guest reboot by lxc-monitorNaoto Yamaguchi2-3/+35
When guest container use reboot command, lxc-monitor will reboot guest automatically. In this case, the container management daemon catch exit from guest init, but it cant reboot guest. This mean container manager can't re-assign dynamic devices. This patch disable automatic reboot. Bug-AGL: SPEC-4777 Change-Id: I3fbd3fca61db29e483b782b0db9c64707b3e488c Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Remove python dependency from packagegroup-selinux-minimalNaoto Yamaguchi2-0/+5
A meta-selinux has issue for force install many packages. A packagegroup-selinux-minimal may support desktop and server runtime use case, may not match AGL (embedded) runtime use case. One of the big issue, that force install unnecessarily python runtime to image. It's caused by backward compatibility for policycoreutils package, maybe. This patch fix this issue temporally. Shall fix at meta-agl layer at SPEC-4778. Bug-AGL: SPEC-4777 Change-Id: I2b844cd928448b024e4a6830ea98e7dc76f0832b Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Rework images to support some integration typesNaoto Yamaguchi4-47/+58
Existing lxc-host-image-minimal support multiconfig based single root filesystem integration. On the other hand, when we want to use multi partition integration, we need to fully replace lxc-host-image-minimal recipe. This patch divide lxc-config installation and single root filesystem integration feature from lxc-host-image-minimal to agl-lxc-install-single-imgage.inc and agl-lxc-autostart.inc. This change realize to support integration types using lxc-host-image-minimal. Bug-AGL: SPEC-4777 Change-Id: I95d866ff6eaddf793927aacb056334e573389804 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Divide lxc autostart from main packageNaoto Yamaguchi2-4/+22
Existing lxc package is including autostart feature. In this case, that can't enable/disable using package install. This patch achieve autostare feature enable/disable by package install. Bug-AGL: SPEC-4777 Change-Id: I0373b294b677a39a670b79e3149a6d8a1d5b4432 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Force enable SELinux feature in agl-ic-containerNaoto Yamaguchi1-1/+1
AGL is already select SELinux for default LSM. This patch follow to this policy. Bug-AGL: SPEC-4777 Change-Id: I20078b87d2caa3a1d76af68957d0056e0d0f6adf Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-09Enable drm-lease support at psplashNaoto Yamaguchi18-0/+4436
The upstream version of psplash is supporting fb based splash screen. On the other hand, drm lease infrastructure is not support fb. This patch enable drm-lease support at psplash. This work contributed by Hiroyuki Ishii at CES2023 demo development. Bug-AGL: SPEC-4766 Change-Id: I50b382c7f8ca4b46a8fb06fd649d0cfa49800c6d Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2023-05-08lz4: Add ptest supportQiu Tingting2-0/+43
Add a ptest for lz4. It is a backport for http://cgit.openembedded.org/openembedded-core/commit/?id=2ee144a0bfb88823bfa788697bb7afc9a572c413 It should be deleted after yocto version up. SPEC-4753 Signed-off-by: Qiu Tingting <qiutt@fujitsu.com> Change-Id: Ibca25bbafc7857d30a1c487ac130fb22774cad97
2023-05-05Add templates for gitlab issues and merge requestsJan-Simon Möller2-0/+4
Notify users to use jira.automotivelinux.org and gerrit.automotivelinux.org in the default messages. Bug-AGL: SPEC-4774 Change-Id: I01b4e849aba18fc1982bfe65257b462c4b231f77 Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
2023-05-05virtio-loopback: v5: Add recipes for virtio-loopback supportAngelos Mouzakitis8-0/+134
Includes the virtio-loopback kernel module, the adapter application, the vhost-user devices from QEMU and a Rust vhost-user-rng device implementation. v2: Update recipes to conform with the OE-Styleguide v3: Recipes fixes for generic builds v4: Generalize the recipes to build for different architectures v5: Update recipes to comply with the OE-Styleguide Change-Id: I67c14fd77e564c0aecdde40dc1cf7e893dae6de1 Signed-off-by: Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com>
2023-04-28e2fsprogs: fix ptest error when using usrmerge DISTRO_FEATURESQiu Tingting1-0/+8
Because usrmerge DISTRO_FEATURES is uesed, in test_script and test_one of ptest scripts, SRCDIR has the wrong path. SRCDIR=/usr/usr/lib/e2fsprogs/ptest/test So we should check and modify SRCDIR in test_script and test_one. It is a backport for https://lists.openembedded.org/g/openembedded-core/message/180486 It should be deleted after yocto version up. SPEC-4753 Signed-off-by: Qiu Tingting <qiutt@fujitsu.com> Change-Id: Iff23c1db2b39d9e3e924068cf6ea2c5e26b952bf
2023-04-26agl-test-framework: fix installation bugYan1-3/+3
aio-stress should be installed to the "aio_stress" folder. Bug-AGL: SPEC-4733 Signed-off-by: Yan <yanxk.fnst@fujitsu.com> Change-Id: If46baf06b9c2db8adeb7c4c8edb9948671f9ee73
2023-04-14agl-test-framework: Bump SRCREVduerpei2-2/+13
Bump agl-test-framework SRCREV to include recently added test suites into the test framework. Bug-AGL: SPEC-4755 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: I570127e7175b89b43c910bd0e4130716377a0ae3
2023-04-03ic-container: qemu: Set connector name for IVI layer manaagerDamian Hobson-Garcia2-3/+10
The ivi-layer manager configuration file needs to know the name of display connector to set up the layer configuration. Adjust the connector name in the configuration file to reflect the connector names in us on the platform being built. This currently only applies to qemu, but could be applied to other build configurations in future. Bug-AGL: SPEC-4464 Change-Id: Ie52c9b8639a2bd5c83c4686ff9b557d05a2a7e1e Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
2023-03-22meta-agl-test: add "linus_stress"yanxk2-0/+21
get this old core test into current agl-test-framework. re-write old bb file, make it working for agl-test-framework. Bug-AGL: SPEC-4345 Signed-off-by: yanxk <yanxk.fnst@fujitsu.com> Change-Id: I341b18516e2b3b57622239f47b4b40d2d4d4a160
2023-03-02ic-container: Add default configuration for qemuDamian Hobson-Garcia5-3/+17
Define the defaults to launch the cluster and ivi containers on qemu. Platform specific customizations can be added in dynamic layers. Bug-AGL: SPEC-4464 Change-Id: I3d2bc4e3dfa8afdad4d29fc29700833f5bc7ecaa Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
2023-02-27agl-test-framework: Bump SRCREVduerpei2-10/+30
Bump agl-test-framework SRCREV to include recently added test suites into the test framework. Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: I73eac509f7394be62c757c2c3b1e443b271064a9
2023-02-13meta-agl-ic-container: fix kernel-module-gles build for guestsScott Murray1-0/+4
Update the kernel-module-gles bbappend so it will actually build with linux-dummy in the guest multiconfigs. Bug-AGL: SPEC-4703 Change-Id: Icc083aecff9f7dd3d5359c843bf04681925db031 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2023-02-13agl-ic-container: Fix host configuration when using agl-demoScott Murray3-8/+14
Changes: - Switch to pulling in a agl-ic-container.inc include file from the feature local.conf.inc template to simplify development. - Add include files for the host ("default" in BitBake) multiconfig to allow disabling agl-demo and related features in the host build. This reduces the impact on the host image when using the images from meta-agl-demo as guest containers. At present the "agl-selinux" feature is left alone, as support pretty much needs to be present in the host to allow using it at all. This likely needs to be investigated further and discussed with respect to the IC EG requirements. Bug-AGL: SPEC-4703 Change-Id: I833fa8754f0044552a8b775bcc06c4ccd3fcac3e Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2023-02-13agl-ic-container: Use new AGL_META_QT5 hookScott Murray1-1/+1
Update agl-ic-container template to use new AGL_META_QT5 variable instead of explicitly adding meta-qt5 to BBLAYERS. This should avoid duplicate layer issues when combining agl-ic-container with other features. Bug-AGL: SPEC-4703 Change-Id: I91ce8ddec689afd1ebe8e275013f9a15152a52f8 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2023-02-13qtlocation: remove bbappendScott Murray2-54/+0
The qtlocation bbappend has been replaced with one in meta-agl-core to avoid collisions when combining with meta-agl-demo. Bug-AGL: SPEC-4703 Change-Id: Icacdf7d4a5777bee8ee98b9cc103f64b6c52749f Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2023-01-31Initial support for raspberry pi 4Naoto Yamaguchi9-0/+61
AGL IC container is supporting R-Car board. This patch add raspberry pi4 support that aim to easy use hobbyists. Bug-AGL: SPEC-4678 Change-Id: Ia0175d57b956d763f1ac8a81ae624a4b93b5f727 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
2022-10-16meta-agl-test: Bump SRCREVoctopus_14.94.0octopus_14.93.0octopus/14.94.0octopus/14.93.014.94.014.93.0duerpei3-2/+34
Bump agl-test-framework SRCREV to include recently added test sets into the test framework. By the way, change a code indentation which is not standard. Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: I314d0e40d02a478d57fc918017456219b5699249
2022-12-16agl-test-framework: Bump SRCREVoctopus_14.92.0octopus/14.92.014.92.0duerpei2-11/+67
Bump agl-test-framework SRCREV to include recently added test sets into the test framework. Move the installation of the test set scripts to a new bbappend file, and this will make subsequent maintenance easier. Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: Iaa08a7eb7d5712a6ff9b38e3d2b28ad8782b506d
2022-12-09meta-agl-test: provide pytest-order for frameworkyanxk2-0/+18
pytest-order is now ready for the framework to use. it is now migrated into agl-test-framework. Bug-AGL: SPEC-4345 Signed-off-by: yanxk <yanxk.fnst@fujitsu.com> Change-Id: If5dbd30be3227086200469b394f78cc5df745317
2022-11-16meta-agl-flutter: Add option agl-shell plugin patch to embedderoctopus_14.91.0octopus/14.91.014.91.0Scott Murray2-0/+283
Add a patch to flutter-auto to add an optional agl_shell static plugin to expose the activate_app call from the agl-shell Wayland protocol that is used when running against the AGL compositor. This provides a way for a homescreen application to activate other application surfaces to switch between multiple applications as is needed for the AGL demo. A new PACKAGECONFIG option is defined to control enabling the plugin, and it is enabled by default in our build. Upstreaming this will be discussed with the Toyota team. Given the previous discussion about not picking up significant meta-flutter updates until after CES, it may be that the patch here is carried for a while. Bug-AGL: SPEC-4612 Change-Id: Ie8e06c88bbf082ee7dc5126dfb3b24b1bb8deabe Signed-off-by: Scott Murray <scott.murray@konsulko.com>
2022-11-10virtualization: Add virtio-can driver as external module.Vasyl Vavrychuk5-0/+1239
This driver should conform RFC spec draft v2 [1]. This driver is based on RFC version [2]. Imported from internal OpenSynergy's revision: 3918336a7caab95a72442c33945a193ca893d5e8 Supply build file `Kbuild` and do not supply makefile [3] since external kernel module could be built without it. On the other hand, module BitBake class relies on wrapper makefile presence, therefore `MAKE_TARGETS` and `MODULES_INSTALL_TARGET` had to be set to specify arguments per [3]. Add driver as an external module to avoid unnecessary kernel rebuild and simplify future updates. [1]: https://lists.oasis-open.org/archives/virtio-dev/202208/msg00159.html [2]: https://lists.oasis-open.org/archives/virtio-dev/202208/msg00160.html [3]: https://www.kernel.org/doc/html/v6.0/kbuild/modules.html Change-Id: I9b654f58cc0c34983cd4103a5f7836263db79ec7 Bug-AGL: SPEC-4597 Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
2022-11-10Allow building vosk-kaldi on arm32 and aarch64Jan-Simon Moeller1-0/+14
Remove -msse and -msse2 as they are x86 only flags. Bug-AGL: SPEC-4600 Change-Id: I48f52c1c8be7ccfa2db9d70f09d81ad52006a891 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
2022-11-03agl-compositor: Fix drm-lease patchMarius Vlad1-16/+15
Synchronize with AGL compositor and update the drm-lease patch to allow the AGL compositor to build. Bug-AGL: SPEC-4601 Change-Id: Ia76c0de7269917cebe19c7b789b62646de1f7914 Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
2022-07-20meta-agl-test: add 'aio-stress' to agl-testduerpei4-0/+49
Add the test set of aio-stress to agl-test Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: Ic5bee24e24ef1b89a6212d72c7a0a08725e1fe36
2022-07-13agl-test-framework.bb: bump SRCREVduerpei1-1/+6
Bump agl-test-framework SRCREV and add scripts of expat and bzip2 to the test framework. Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: Ia80dc0d1155872f387f3ed449fafa2302d6b5475
2022-06-30meta-agl-test: updates due to framework adjustmentduerpei4-65/+5
Due to the previous framework adjustment, the scripts for running glib2 tests has been moved to 'agl-test-framework'. And rpm will support its ptest later, and then its scripts will also be placed under 'agl-test-framework'. So 'agl-test-glib2.bb' and 'agl-test-rpm.bb' are no longer needed The content under 'agl-test-framework' has changed, so 'agl-test-framework.bb' has also been updated. Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: Ia6dd71966e5ba18cbb5cb81fb594d4fc3722db27
2022-06-29agl-test: Add pyhton3-jinja2 moduleduerpei2-1/+1
In the agl-test-framework, the jinja2 module need to be called to process html files. Remove repeat code from packagegroup-agl-extend-test Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: I161ffa6b06da4f44d79e3e61b4c7a0760b943424
2022-09-22Add manifest comparison for IC imagesNaoto Yamaguchi2-0/+988
The agl-cluster-demo-lxc-host will start ci package check. That work require to image manifest to compare reference image and build image. This patch add manifest file for h3ulcb-kf. Bug-AGL : SPEC-4465 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> Change-Id: I7a131d7678d31c9a82b9c36cc0c6a7b011f551e3
2022-09-22egvirt: linux-yocto: Support linux-yocto-dev for VIRTIO.Vasyl Vavrychuk4-3/+128
Bug-AGL: SPEC-4453 Change-Id: Ib3641884bac404c7281df37e5ed4f4939e2830b4 Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
2022-09-22meta-egvirt: Bump layer priority to 61.Vasyl Vavrychuk1-1/+1
Bumped to have higher priority then meta-agl-bsp (60) to overlay recipes files (in particular linux-yocto) from meta-agl-bsp. Bug-AGL: SPEC-4453 Change-Id: Id558df0df39d7b3203da548a8c00db0cdd1a632c Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
2022-09-17drm-lease: Bump SRCREV to fix ptest build failureDamian Hobson-Garcia1-1/+1
Bug-AGL: SPEC-3848 Change-Id: Iafba35a4fedf81b09edef57d7610d3714023cbae Signed-off-by: Damian Hobson-Garcia <dhobsong@igel.co.jp>
2022-09-16agl-ic-container: Add missing kernel config for lxc-net on qemuHiroyuki Ishii1-0/+1
On qemu network bridge setting by lxc-net service fails because of missing kernel module as shown as following message: iptables v1.8.7 (legacy): unknown option "--checksum-fill" With this change we'd like to add missing kernel config to fix that. Bug-AGL: SPEC-4464 Signed-off-by: Hiroyuki Ishii <ishii.hiroyuki002@jp.panasonic.com> Change-Id: I73169289c84755e0eb9a28658e8337c79824ab1b
2022-09-16drm-lease: Fix build error due to weston updateHiroyuki Ishii1-0/+0
The patches seems to be applied correctly without any changes, so we just use wildcard to avoid build error due to version mis-matching. Bug-AGL: SPEC-4564 Signed-off-by: Hiroyuki Ishii <ishii.hiroyuki002@jp.panasonic.com> Change-Id: I61ab8beb1e97190c58987bf54217a9553efa6c39
2022-09-12meta-agl-flutter updatesJoel Winarske15-102/+403
-layer README -flutter workspace configuration file -consolidation of gallery json files -remove flutter sdk version pin; now happens upstream -add engine_sdk.zip to all images (non-production) -add SSH server to debug and profile images -factor out flutter-auto xdg-shell-app-id patch Signed-off-by: Joel Winarske <joel.winarske@gmail.com> Change-Id: I6fdf1277bb4011126103f74eda5e230f34f497d7
2022-09-07meta-agl-test:add new feature 'agl-test'duerpei11-0/+162
'agl-test' is used to compile the test sets and test framework into the image, make it more convenient to test target. Now it's only support the target agl-demo-platform(ivi) Enable the `agl-test` AGL feature when setting up your build environment with aglsetup.sh. This will add the `packagegroup-agl-extend-test` packagegroup to the image, For specific packages to be added, please refer to the file: ./recipes-platform/packagegroup/packagegroup-agl-extend-test.bb For running test using 'agl-test', refer to: https://git.automotivelinux.org/src/agl-test-framework/tree/README Bug-AGL: SPEC-4345 Signed-off-by: duerpei <duep.fnst@fujitsu.com> Change-Id: Ic217bff672f3dae1ac3abc18c01ba802ebcb8fe1
2022-09-06Fix issue for separate directory buildingNaoto Yamaguchi1-2/+2
At 2dd3bafb0c21d7f49fcc2945836924d9c052d268 commit has issue for it can't separate build. At 2ab22b2df67f915c74efab68cf9e6e2424805dd2 commit, I fixed that issue. In this patch I fix to that issue in recipe side. Bug-AGL: SPEC-4551 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> Change-Id: I3623bece877cb9cc76721f340d96eaab677ded17
2022-09-06Fix error for the packagegroup-agl-ic-coreNaoto Yamaguchi1-0/+2
After the kirkstone, packagegroup-agl-ic-core out the error message in build time. Ex: ERROR: mc:agl-container-cluster:packagegroup-agl-ic-core-1.0-r0 do_package_write_rpm: An allarch packagegroup shouldn't depend on packages which are dynamically renamed (libclusterapi-dbg to libcluster-api-dbg) This error is depend on this commit. https://www.mail-archive.com/openembedded-core@lists.openembedded.org/msg155223.html This patch add "PACKAGE_ARCH = "${TUNE_PKGARCH}"" to package group recipe to fix this issue. Bug-AGL: SPEC-4552 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> Change-Id: I70f56e4a96a658cbcefa48ac688b49382b299879
2022-09-01Pin Flutter SDK to ensure reproducible buildsScott Murray1-3/+3
To ensure reproducibility as well as avoid build failures when Google upstream runs ahead of meta-flutter, set FLUTTER_SDK_TAG to pin the Flutter SDK components as opposed to the meta-flutter default of letting them float. Bug-AGL: SPEC-4545 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: If7543329ba13f87abc0b66080494bd8f1e812642
2022-08-09Rename Instrument Cluster Container layerJan-Simon Moeller110-1/+1
meta-agl-lxc is no longer reflecting the actual content and use of the layer. Rename it to 'meta-agl-ic-container' and the feature to 'agl-ic-container'. Also rename the main image to 'agl-cluster-demo-lxc-host' to match the pattern used by all other images e.g. agl-<ivi,cluster,telematics>-demo-* . But keep the names of the underlying images as-is. Bug-AGL: SPEC-4464 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Change-Id: I898c786ca884331b302a3be8e150379fcf5bdc9b
2022-08-09Initial integration for librefopNaoto Yamaguchi2-0/+17
The librefop is a redundancy file operation library. This patch is 1st integration in AGL. Bug-AGL: SPEC-4500 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> Change-Id: I1266e2683f2f427853a10d8db5d9f8db96d465e0
2022-08-09Remove patch included upstreamJan-Simon Moeller1-3/+2
We can remove 0001-Handle-switch-to-proc_ops.patch as it is available in the upstream codebase now. Bug-AGL: SPEC-4376 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Change-Id: I8e26a01c126337cbae44aac862e9eb21fda198fb
2022-08-08Update basesystem revision after build fixJan-Simon Moeller1-1/+1
Update the SRCREV after the build issues was fixed. Bug-AGL: SPEC-4376 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Change-Id: I984813327c03a1adba481dfa80af516f711e2e9b