#2 DONE 1.6s #3 [internal] load .dockerignore #3 transferring context: 2B done #3 DONE 0.0s #4 [internal] load build context #4 transferring context: 21.85kB done #4 DONE 0.0s #5 [1/9] FROM docker.io/library/rockylinux:9@sha256:d7be1c094cc5845ee815d4632fe377514ee6ebcf8efaed6892889657e5ddaaa6 #5 resolve docker.io/library/rockylinux:9@sha256:d7be1c094cc5845ee815d4632fe377514ee6ebcf8efaed6892889657e5ddaaa6 0.0s done #5 sha256:d7be1c094cc5845ee815d4632fe377514ee6ebcf8efaed6892889657e5ddaaa6 4.72kB / 4.72kB done #5 sha256:d644d203142cd5b54ad2a83a203e1dee68af2229f8fe32f52a30c6e1d3c3a9e0 1.04kB / 1.04kB done #5 sha256:9cc24f05f309508aa852967ab1e3b582b302afc92605c24ce27715c683acd805 578B / 578B done #5 DONE 0.1s #6 [2/9] RUN mkdir /licenses #6 DONE 0.1s #7 [3/9] COPY licensing.txt /licenses #7 DONE 0.1s #8 [4/9] RUN mkdir -p /etc/yum.repos.d.bak/ ; cp -f /etc/yum.repos.d/* /etc/yum.repos.d.bak/ #8 0.100 /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) #8 DONE 0.1s #9 [5/9] COPY *.repo /etc/yum.repos.d/ #9 DONE 0.1s #10 [6/9] COPY pip.conf /etc/ #10 DONE 0.1s #11 [7/9] COPY *.sh / #11 DONE 0.1s #12 [8/9] RUN set -ex ; if ! dnf info git-review ; then dnf -y install epel-release ; fi #12 0.100 /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) #12 0.100 + dnf info git-review #12 0.325 Failed to set locale, defaulting to C.UTF-8 #12 0.671 added from: http://tf-mirrors.gz1.opensdn.io/re 88 MB/s | 14 MB 00:00 #12 2.637 added from: http://tf-mirrors.gz1.opensdn.io/re 7.1 MB/s | 1.9 MB 00:00 #12 3.029 added from: http://tf-mirrors.gz1.opensdn.io/re 16 MB/s | 402 kB 00:00 #12 3.339 added from: http://tf-mirrors.gz1.opensdn.io/re 86 MB/s | 16 MB 00:00 #12 6.486 added from: http://tf-mirrors.gz1.opensdn.io/re 80 MB/s | 11 MB 00:00 #12 8.696 added from: http://tf-mirrors.gz1.opensdn.io/re 32 MB/s | 1.1 MB 00:00 #12 9.037 added from: http://tf-mirrors.gz1.opensdn.io/re 58 MB/s | 4.8 MB 00:00 #12 10.10 added from: http://tf-mirrors.gz1.opensdn.io/re 23 MB/s | 697 kB 00:00 #12 10.36 added from: http://tf-mirrors.gz1.opensdn.io/re 18 MB/s | 474 kB 00:00 #12 10.57 added from: http://tf-mirrors.gz1.opensdn.io/re 1.0 MB/s | 18 kB 00:00 #12 10.72 added from: http://tf-mirrors.gz1.opensdn.io/re 15 kB/s | 257 B 00:00 #12 10.87 added from: http://tf-mirrors.gz1.opensdn.io/re 837 kB/s | 15 kB 00:00 #12 11.03 added from: http://tf-mirrors.gz1.opensdn.io/re 4.6 MB/s | 96 kB 00:00 #12 11.52 added from: http://tf-mirrors.gz1.opensdn.io/re 117 MB/s | 39 MB 00:00 #12 19.60 Third parties for OpenSDN 48 MB/s | 5.1 MB 00:00 #12 24.33 Available Packages #12 24.33 Name : git-review #12 24.33 Version : 2.3.1 #12 24.33 Release : 7.el9 #12 24.33 Architecture : noarch #12 24.33 Size : 86 k #12 24.33 Source : git-review-2.3.1-7.el9.src.rpm #12 24.33 Repository : tf-mirrors.ci_repos_epel9.repo #12 24.33 Summary : A Git helper for integration with Gerrit #12 24.33 URL : https://opendev.org/opendev/git-review #12 24.33 License : ASL 2.0 #12 24.33 Description : An extension for source control system Git that creates and manages #12 24.33 : review requests in the patch management system Gerrit. It replaces the #12 24.33 : rfc.sh script. #12 24.33 #12 DONE 24.6s #13 [9/9] RUN set -ex ; source /etc/os-release ; find /etc/yum.repos.d/ | grep -i centos | xargs -r rm ; ls -l /etc/yum.repos.d/ ; dnf -y update-minimal --security --sec-severity=Important --sec-severity=Critical ; dnf install -y hostname iproute less wget openssl glibc-langpack-en rsync procps-ng python3-pip ; dnf clean all -y ; rm -rf /var/cache/yum ; groupadd --gid 1999 --system contrail ; useradd -md /home/contrail --uid 1999 --shell /sbin/nologin --system --gid 1999 contrail #13 0.070 /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) #13 0.070 + source /etc/os-release #13 0.070 ++ NAME='Rocky Linux' #13 0.070 ++ VERSION='9.3 (Blue Onyx)' #13 0.070 ++ ID=rocky #13 0.070 ++ ID_LIKE='rhel centos fedora' #13 0.070 ++ VERSION_ID=9.3 #13 0.070 ++ PLATFORM_ID=platform:el9 #13 0.070 ++ PRETTY_NAME='Rocky Linux 9.3 (Blue Onyx)' #13 0.070 ++ ANSI_COLOR='0;32' #13 0.070 ++ LOGO=fedora-logo-icon #13 0.070 ++ CPE_NAME=cpe:/o:rocky:rocky:9::baseos #13 0.070 ++ HOME_URL=https://rockylinux.org/ #13 0.070 ++ BUG_REPORT_URL=https://bugs.rockylinux.org/ #13 0.070 ++ SUPPORT_END=2032-05-31 #13 0.070 ++ ROCKY_SUPPORT_PRODUCT=Rocky-Linux-9 #13 0.070 ++ ROCKY_SUPPORT_PRODUCT_VERSION=9.3 #13 0.070 ++ REDHAT_SUPPORT_PRODUCT='Rocky Linux' #13 0.070 ++ REDHAT_SUPPORT_PRODUCT_VERSION=9.3 #13 0.071 + find /etc/yum.repos.d/ #13 0.071 + grep -i centos #13 0.071 + xargs -r rm #13 0.073 + ls -l /etc/yum.repos.d/ #13 0.075 total 32 #13 0.075 -rw-r--r--. 1 root root 2707 Jun 17 10:38 mirror-base-rocky9.repo #13 0.075 -rw-r--r--. 1 root root 217 Jun 17 10:38 mirror-docker9.repo #13 0.075 -rw-r--r--. 1 root root 204 Jun 17 10:38 mirror-epel9.repo #13 0.075 -rw-r--r--. 1 root root 1 Jun 17 10:38 rocky-addons.repo #13 0.075 -rw-r--r--. 1 root root 1 Jun 17 10:38 rocky-devel.repo #13 0.075 -rw-r--r--. 1 root root 1 Jun 17 10:38 rocky-extras.repo #13 0.075 -rw-r--r--. 1 root root 1 Jun 17 10:38 rocky.repo #13 0.075 -rw-r--r--. 1 root root 140 Jun 17 10:38 tpc.repo #13 0.075 + dnf -y update-minimal --security --sec-severity=Important --sec-severity=Critical #13 0.146 Failed to set locale, defaulting to C.UTF-8 #13 0.509 Last metadata expiration check: 0:00:05 ago on Wed Jun 17 10:38:57 2026. #13 0.682 No security updates needed, but 101 updates available #13 0.733 Dependencies resolved. #13 0.734 Nothing to do. #13 0.734 Complete! #13 0.762 + dnf install -y hostname iproute less wget openssl glibc-langpack-en rsync procps-ng python3-pip #13 0.829 Failed to set locale, defaulting to C.UTF-8 #13 1.182 Last metadata expiration check: 0:00:06 ago on Wed Jun 17 10:38:57 2026. #13 1.328 Package hostname-3.23-6.el9.x86_64 is already installed. #13 1.331 Package less-590-2.el9_2.x86_64 is already installed. #13 1.333 Package openssl-1:3.0.7-24.el9.x86_64 is already installed. #13 1.376 Dependencies resolved. #13 1.378 ============================================================================================= #13 1.378 Package Arch Version Repository Size #13 1.378 ============================================================================================= #13 1.378 Installing: #13 1.378 glibc-langpack-en x86_64 2.34-231.el9_7.2 tf-mirrors.ci_repos_yum9-baseos 555 k #13 1.378 iproute x86_64 6.14.0-2.el9 tf-mirrors.ci_repos_yum9-baseos 808 k #13 1.378 procps-ng x86_64 3.3.17-14.el9 tf-mirrors.ci_repos_yum9-baseos 332 k #13 1.378 python3-pip noarch 21.3.1-1.el9 tf-mirrors.ci_repos_yum9-appstream 1.7 M #13 1.378 rsync x86_64 3.2.5-3.el9 tf-mirrors.ci_repos_yum9-baseos 403 k #13 1.378 wget x86_64 1.21.1-8.el9_4 tf-mirrors.ci_repos_yum9-appstream 768 k #13 1.378 Upgrading: #13 1.378 glibc x86_64 2.34-231.el9_7.2 tf-mirrors.ci_repos_yum9-baseos 2.0 M #13 1.378 glibc-common x86_64 2.34-231.el9_7.2 tf-mirrors.ci_repos_yum9-baseos 298 k #13 1.378 glibc-minimal-langpack x86_64 2.34-231.el9_7.2 tf-mirrors.ci_repos_yum9-baseos 25 k #13 1.378 less x86_64 590-6.el9 tf-mirrors.ci_repos_yum9-baseos 160 k #13 1.378 openssl x86_64 1:3.5.1-7.el9_7 tf-mirrors.ci_repos_yum9-baseos 1.4 M #13 1.378 openssl-libs x86_64 1:3.5.1-7.el9_7 tf-mirrors.ci_repos_yum9-baseos 2.3 M #13 1.378 Installing dependencies: #13 1.378 libbpf x86_64 2:1.5.0-2.el9 tf-mirrors.ci_repos_yum9-baseos 185 k #13 1.378 libmnl x86_64 1.0.4-16.el9_4 tf-mirrors.ci_repos_yum9-baseos 27 k #13 1.378 libpsl x86_64 0.21.1-5.el9 tf-mirrors.ci_repos_yum9-baseos 63 k #13 1.378 openssl-fips-provider x86_64 1:3.5.1-7.el9_7 tf-mirrors.ci_repos_yum9-baseos 812 k #13 1.378 psmisc x86_64 23.4-3.el9 tf-mirrors.ci_repos_yum9-baseos 226 k #13 1.378 publicsuffix-list-dafsa noarch 20210518-3.el9 tf-mirrors.ci_repos_yum9-baseos 58 k #13 1.378 Installing weak dependencies: #13 1.378 libxcrypt-compat x86_64 4.4.18-3.el9 tf-mirrors.ci_repos_yum9-appstream 88 k #13 1.378 python3-setuptools noarch 53.0.0-15.el9 tf-mirrors.ci_repos_yum9-baseos 831 k #13 1.378 #13 1.378 Transaction Summary #13 1.378 ============================================================================================= #13 1.378 Install 14 Packages #13 1.378 Upgrade 6 Packages #13 1.378 #13 1.379 Total download size: 13 M #13 1.380 Downloading Packages: #13 1.399 (1/20): libbpf-1.5.0-2.el9.x86_64.rpm 11 MB/s | 185 kB 00:00 #13 1.404 (2/20): libmnl-1.0.4-16.el9_4.x86_64.rpm 5.6 MB/s | 27 kB 00:00 #13 1.414 (3/20): glibc-langpack-en-2.34-231.el9_7.2.x86_ 17 MB/s | 555 kB 00:00 #13 1.418 (4/20): libpsl-0.21.1-5.el9.x86_64.rpm 4.9 MB/s | 63 kB 00:00 #13 1.432 (5/20): openssl-fips-provider-3.5.1-7.el9_7.x86 46 MB/s | 812 kB 00:00 #13 1.445 (6/20): iproute-6.14.0-2.el9.x86_64.rpm 13 MB/s | 808 kB 00:00 #13 1.451 (7/20): psmisc-23.4-3.el9.x86_64.rpm 13 MB/s | 226 kB 00:00 #13 1.457 (8/20): procps-ng-3.3.17-14.el9.x86_64.rpm 8.4 MB/s | 332 kB 00:00 #13 1.460 (9/20): publicsuffix-list-dafsa-20210518-3.el9. 4.0 MB/s | 58 kB 00:00 #13 1.467 (10/20): libxcrypt-compat-4.4.18-3.el9.x86_64.r 14 MB/s | 88 kB 00:00 #13 1.479 (11/20): python3-setuptools-53.0.0-15.el9.noarc 29 MB/s | 831 kB 00:00 #13 1.488 (12/20): rsync-3.2.5-3.el9.x86_64.rpm 14 MB/s | 403 kB 00:00 #13 1.501 (13/20): wget-1.21.1-8.el9_4.x86_64.rpm 36 MB/s | 768 kB 00:00 #13 1.511 (14/20): glibc-common-2.34-231.el9_7.2.x86_64.r 30 MB/s | 298 kB 00:00 #13 1.532 (15/20): python3-pip-21.3.1-1.el9.noarch.rpm 27 MB/s | 1.7 MB 00:00 #13 1.536 (16/20): glibc-minimal-langpack-2.34-231.el9_7. 1.0 MB/s | 25 kB 00:00 #13 1.540 (17/20): less-590-6.el9.x86_64.rpm 22 MB/s | 160 kB 00:00 #13 1.571 (18/20): glibc-2.34-231.el9_7.2.x86_64.rpm 24 MB/s | 2.0 MB 00:00 #13 1.587 (19/20): openssl-3.5.1-7.el9_7.x86_64.rpm 28 MB/s | 1.4 MB 00:00 #13 1.613 (20/20): openssl-libs-3.5.1-7.el9_7.x86_64.rpm 32 MB/s | 2.3 MB 00:00 #13 1.613 -------------------------------------------------------------------------------- #13 1.613 Total 56 MB/s | 13 MB 00:00 #13 1.614 Running transaction check #13 2.006 Transaction check succeeded. #13 2.006 Running transaction test #13 2.187 Transaction test succeeded. #13 2.187 Running transaction #13 2.532 Preparing : 1/1 #13 2.598 Upgrading : glibc-common-2.34-231.el9_7.2.x86_64 1/26 #13 2.608 Upgrading : glibc-minimal-langpack-2.34-231.el9_7.2.x86_64 2/26 #13 2.612 Running scriptlet: glibc-2.34-231.el9_7.2.x86_64 3/26 #13 2.663 Upgrading : glibc-2.34-231.el9_7.2.x86_64 3/26 #13 2.673 Running scriptlet: glibc-2.34-231.el9_7.2.x86_64 3/26 #13 2.847 Installing : glibc-langpack-en-2.34-231.el9_7.2.x86_64 4/26 #13 2.861 Installing : libbpf-2:1.5.0-2.el9.x86_64 5/26 #13 2.867 Installing : libmnl-1.0.4-16.el9_4.x86_64 6/26 #13 2.887 Installing : openssl-fips-provider-1:3.5.1-7.el9_7.x86_64 7/26 #13 2.937 Upgrading : openssl-libs-1:3.5.1-7.el9_7.x86_64 8/26 #13 2.950 Installing : psmisc-23.4-3.el9.x86_64 9/26 #13 2.959 Installing : libxcrypt-compat-4.4.18-3.el9.x86_64 10/26 #13 3.022 Installing : python3-setuptools-53.0.0-15.el9.noarch 11/26 #13 3.036 Installing : publicsuffix-list-dafsa-20210518-3.el9.noarch 12/26 #13 3.042 Installing : libpsl-0.21.1-5.el9.x86_64 13/26 #13 3.056 Installing : wget-1.21.1-8.el9_4.x86_64 14/26 #13 3.228 Installing : python3-pip-21.3.1-1.el9.noarch 15/26 #13 3.273 Installing : iproute-6.14.0-2.el9.x86_64 16/26 #13 3.289 Installing : rsync-3.2.5-3.el9.x86_64 17/26 #13 3.338 Upgrading : openssl-1:3.5.1-7.el9_7.x86_64 18/26 #13 3.360 Installing : procps-ng-3.3.17-14.el9.x86_64 19/26 #13 3.372 Upgrading : less-590-6.el9.x86_64 20/26 #13 3.382 Cleanup : openssl-1:3.0.7-24.el9.x86_64 21/26 #13 3.392 Cleanup : openssl-libs-1:3.0.7-24.el9.x86_64 22/26 #13 3.399 Cleanup : less-590-2.el9_2.x86_64 23/26 #13 3.408 Cleanup : glibc-2.34-83.el9.7.x86_64 24/26 #13 3.418 Cleanup : glibc-minimal-langpack-2.34-83.el9.7.x86_64 25/26 #13 3.424 Cleanup : glibc-common-2.34-83.el9.7.x86_64 26/26 #13 3.429 Running scriptlet: iproute-6.14.0-2.el9.x86_64 26/26 #13 3.439 Running scriptlet: glibc-common-2.34-83.el9.7.x86_64 26/26 #13 3.848 Verifying : glibc-langpack-en-2.34-231.el9_7.2.x86_64 1/26 #13 3.848 Verifying : iproute-6.14.0-2.el9.x86_64 2/26 #13 3.848 Verifying : libbpf-2:1.5.0-2.el9.x86_64 3/26 #13 3.848 Verifying : libmnl-1.0.4-16.el9_4.x86_64 4/26 #13 3.848 Verifying : libpsl-0.21.1-5.el9.x86_64 5/26 #13 3.848 Verifying : openssl-fips-provider-1:3.5.1-7.el9_7.x86_64 6/26 #13 3.848 Verifying : procps-ng-3.3.17-14.el9.x86_64 7/26 #13 3.848 Verifying : psmisc-23.4-3.el9.x86_64 8/26 #13 3.848 Verifying : publicsuffix-list-dafsa-20210518-3.el9.noarch 9/26 #13 3.848 Verifying : python3-setuptools-53.0.0-15.el9.noarch 10/26 #13 3.849 Verifying : rsync-3.2.5-3.el9.x86_64 11/26 #13 3.849 Verifying : libxcrypt-compat-4.4.18-3.el9.x86_64 12/26 #13 3.849 Verifying : python3-pip-21.3.1-1.el9.noarch 13/26 #13 3.849 Verifying : wget-1.21.1-8.el9_4.x86_64 14/26 #13 3.849 Verifying : glibc-2.34-231.el9_7.2.x86_64 15/26 #13 3.849 Verifying : glibc-2.34-83.el9.7.x86_64 16/26 #13 3.849 Verifying : glibc-common-2.34-231.el9_7.2.x86_64 17/26 #13 3.849 Verifying : glibc-common-2.34-83.el9.7.x86_64 18/26 #13 3.849 Verifying : glibc-minimal-langpack-2.34-231.el9_7.2.x86_64 19/26 #13 3.849 Verifying : glibc-minimal-langpack-2.34-83.el9.7.x86_64 20/26 #13 3.849 Verifying : less-590-6.el9.x86_64 21/26 #13 3.849 Verifying : less-590-2.el9_2.x86_64 22/26 #13 3.850 Verifying : openssl-1:3.5.1-7.el9_7.x86_64 23/26 #13 3.850 Verifying : openssl-1:3.0.7-24.el9.x86_64 24/26 #13 3.850 Verifying : openssl-libs-1:3.5.1-7.el9_7.x86_64 25/26 #13 3.850 Verifying : openssl-libs-1:3.0.7-24.el9.x86_64 26/26 #13 3.918 #13 3.918 Upgraded: #13 3.918 glibc-2.34-231.el9_7.2.x86_64 #13 3.918 glibc-common-2.34-231.el9_7.2.x86_64 #13 3.918 glibc-minimal-langpack-2.34-231.el9_7.2.x86_64 #13 3.918 less-590-6.el9.x86_64 #13 3.918 openssl-1:3.5.1-7.el9_7.x86_64 #13 3.918 openssl-libs-1:3.5.1-7.el9_7.x86_64 #13 3.918 Installed: #13 3.918 glibc-langpack-en-2.34-231.el9_7.2.x86_64 #13 3.918 iproute-6.14.0-2.el9.x86_64 #13 3.918 libbpf-2:1.5.0-2.el9.x86_64 #13 3.918 libmnl-1.0.4-16.el9_4.x86_64 #13 3.918 libpsl-0.21.1-5.el9.x86_64 #13 3.918 libxcrypt-compat-4.4.18-3.el9.x86_64 #13 3.918 openssl-fips-provider-1:3.5.1-7.el9_7.x86_64 #13 3.918 procps-ng-3.3.17-14.el9.x86_64 #13 3.918 psmisc-23.4-3.el9.x86_64 #13 3.918 publicsuffix-list-dafsa-20210518-3.el9.noarch #13 3.918 python3-pip-21.3.1-1.el9.noarch #13 3.918 python3-setuptools-53.0.0-15.el9.noarch #13 3.918 rsync-3.2.5-3.el9.x86_64 #13 3.918 wget-1.21.1-8.el9_4.x86_64 #13 3.918 #13 3.918 Complete! #13 4.052 + dnf clean all -y #13 4.200 77 files removed #13 4.229 + rm -rf /var/cache/yum #13 4.231 + groupadd --gid 1999 --system contrail #13 4.256 + useradd -md /home/contrail --uid 1999 --shell /sbin/nologin --system --gid 1999 contrail #13 4.269 useradd warning: contrail's uid 1999 is greater than SYS_UID_MAX 999 #13 DONE 4.3s #14 exporting to image #14 exporting layers #14 exporting layers 1.0s done #14 writing image sha256:50c340600ad600c87ff579b5d50b8fad9315ab1cc5553c7aab516a939cc14723 done #14 naming to nexus.gz1.opensdn.io:5101/opensdn-general-base:master-2_3_5_4-1_2 done #14 DONE 1.0s 2026-06-17 10:39:07,495: INFO: Docker build duration: 33 seconds The push refers to repository [nexus.gz1.opensdn.io:5101/opensdn-general-base] a012d6d14a3c: Preparing 9b00d2272a7f: Preparing dcd9bf5632a7: Preparing 05eed9afb430: Preparing 6c82b9bb1c77: Preparing 7dae6ee4a110: Preparing afa449187a20: Preparing 12d210c4aaf9: Preparing 44343de3ea1d: Preparing afa449187a20: Waiting 12d210c4aaf9: Waiting 44343de3ea1d: Waiting 7dae6ee4a110: Waiting 05eed9afb430: Pushed 6c82b9bb1c77: Pushed dcd9bf5632a7: Pushed 7dae6ee4a110: Pushed 44343de3ea1d: Layer already exists afa449187a20: Pushed 12d210c4aaf9: Pushed a012d6d14a3c: Pushed 9b00d2272a7f: Pushed master-2_3_5_4-1_2: digest: sha256:563560a94d0c00e1e1937936332b34e325eaf4fbc12abeabb1a09f6f9698f35e size: 2198 2026-06-17 10:39:17,914: INFO: Building opensdn-general-base finished successfully, duration: 43 seconds WARNING: This output is designed for human readability. For machine-readable output, please use --format. IMAGE ID DISK USAGE CONTENT SIZE EXTRA nexus.gz1.opensdn.io:5101/opensdn-ansible-deployer-src:master-2_3_5_4-1_2 43eed54fa100 1.41MB 0B nexus.gz1.opensdn.io:5101/opensdn-build-manifest-src:master-2_3_5_4-1_2 4183dacc45dc 4.17kB 0B nexus.gz1.opensdn.io:5101/opensdn-charms-src:master-2_3_5_4-1_2 380e3a9544c2 6.05MB 0B nexus.gz1.opensdn.io:5101/opensdn-container-builder-src:master-2_3_5_4-1_2 de55b3f6fd75 2.48MB 0B nexus.gz1.opensdn.io:5101/opensdn-general-base:master-2_3_5_4-1_2 50c340600ad6 428MB 0B nexus.gz1.opensdn.io:5101/opensdn-kolla-ansible-src:master-2_3_5_4-1_2 52a777b30bd4 32.7MB 0B nexus.gz1.opensdn.io:5101/tf-dev-sandbox:frozen dd881792a4bf 21GB 0B U tf-dev-sandbox:compile 5234d30221bb 21.8GB 0B