回覆: [phosphor-ipmi-flash]: stdplus build failed before building the host-tool on the Host

Chris Chen (TPI) Chris.Chen3 at flex.com
Wed Jun 29 17:57:20 AEST 2022


Hi Brandon and Willy,

  *   First of all, I would like to say thanks for your answer and confirmation, the problems I listed are solved.

  *   For Brandon's question,
  *   > It is totally possible that our instructions in the README is not up to date anymore, but just to make sure - are you building each of the components as specified by https://github.com/openbmc/phosphor-ipmi-flash#building-the-host-tool?
  *
Yes, I followed the README.md to build each of the components.

  *   However, I encountered other fatal errors when building the "phosphor-host-ipmid" package as below. (Overall there are three kinds of fatal errors, which is missing gtest.h, json.hpp, and log.hpp, that occured in several files, so I just list one message of each error for reference.)
  *   =====
  *   ../subprojects/phosphor-objmgr/libmapper/test/mapper.cpp:4:10: fatal error: gtest/gtest.h: No such file or directory
  *       4 | #include <gtest/gtest.h>
  *   ../entity_map_json.hpp:5:10: fatal error: nlohmann/json.hpp: No such file or directory
  *       5 | #include <nlohmann/json.hpp>
  *   ../include/ipmid/message.hpp:26:10: fatal error: phosphor-logging/log.hpp: No such file or directory
  *      26 | #include <phosphor-logging/log.hpp>
  *   =====
  *
  *   Do you have any suggestions on this?
  *
  *   BTW. I use following commands to build the "phosphor-host-ipmid" package, it should be correct, right?
  *   -----
  *   meson setup -Dtests=disabled builddir
  *   ninja -C builddir
  *   ninja -C builddir install
  *   -----

  *   I don't insist to build locally, so as per your recommendation I'm trying to build it by using docker. However, I have limit capability with docker, I for now met a question on building docker image by using the "build-unit-test-docker" script you mentioned, that is after installing the docker-desktop on my Host, I referred to https://github.com/openbmc/docs/blob/master/testing/run-test-docker.md#build-docker-image to build the docker image, of course, I replace the command as below,

./scripts/build-qemu-robot-docker.sh

  *   Then, the error came out after several minutes. (I retried few times, some images are already exists.) Could you help to take a look at this, and give me some suggestions as well?
  *   =====
  *   archer at archer-ArcherCityM:openbmc-build-scripts$ ./scripts/build-unit-test-docker
  *   Image openbmc/ubuntu-unit-test-base:2022-W26-e79767e5378d5a0f already exists.  Skipping.
Image openbmc/ubuntu-unit-test-uscilab-cereal:2022-W26-ab72d4495979e830 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-nlohmann-json:2022-W26-ffba809170eb0a41 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-naios-function2:2022-W26-3b876756bb76be23 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-cliutils-cli11:2022-W26-f53b55bea30b21c6 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-libvnc-libvncserver:2022-W26-90d3acb2a0df9617 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-cppalliance-url:2022-W26-460f317503ba9422 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-boost:2022-W26-d87626309071f65f already exists.  Skipping.
Image openbmc/ubuntu-unit-test-catchorg-catch2:2022-W26-3439038e67e82304 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-leethomason-tinyxml2:2022-W26-323efeff9db53382 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-facebookexperimental-libunifex:2022-W26-1eff6ee41b25d7e1 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-linux-test-project-lcov:2022-W26-13690675d4cda956 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-fmtlib-fmt:2022-W26-8c08817ee76f296a already exists.  Skipping.
Image openbmc/ubuntu-unit-test-google-googletest:2022-W26-41755ba7fe770d1e already exists.  Skipping.
Image openbmc/ubuntu-unit-test-tristanpenman-valijson:2022-W26-2d55955ffea82018 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-open-power-pdbg:2022-W26-ea1338b7d5bcf717 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-openbmc-sdbusplus:2022-W26-4de3de6a7dd74c72 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-openbmc-stdplus:2022-W26-fcc6d0d878d82435 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-openbmc-gpioplus:2022-W26-6e12ea9e28a38a45 already exists.  Skipping.
Image openbmc/ubuntu-unit-test-openbmc-sdeventplus:2022-W26-077c15efe62026d9 already exists.  Skipping.
  *   Package openbmc/linux failed!
Traceback (most recent call last):
  File "/home/archer/Downloads/openbmc-build-scripts/./scripts/build-unit-test-docker", line 852, in <module>
    Package.generate_all()
  File "/home/archer/Downloads/openbmc-build-scripts/./scripts/build-unit-test-docker", line 396, in generate_all
    raise t.exception
  File "/home/archer/Downloads/openbmc-build-scripts/./scripts/build-unit-test-docker", line 365, in run
    Docker.build(self.package, tag, dockerfile)
  File "/home/archer/Downloads/openbmc-build-scripts/./scripts/build-unit-test-docker", line 620, in build
    docker.build(
  File "/home/archer/.local/lib/python3.10/site-packages/sh.py", line 1566, in __call__
    return RunningCommand(cmd, call_args, stdin, stdout, stderr)
  File "/home/archer/.local/lib/python3.10/site-packages/sh.py", line 822, in __init__
    self.wait()
  File "/home/archer/.local/lib/python3.10/site-packages/sh.py", line 879, in wait
    self.handle_command_exit_code(exit_code)
  File "/home/archer/.local/lib/python3.10/site-packages/sh.py", line 905, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1:

  RAN: /usr/local/bin/docker build --network=host --force-rm --no-cache=false -t openbmc/ubuntu-unit-test-openbmc-linux:2022-W26-4d748d691e37a3f6 -

  STDOUT:


  STDERR:
#1 [internal] load build definition from Dockerfile
#1 sha256:7b1d92eec8d42e247f2bb4fd1260a7b209eb6af9dab84c342a27d5cdd089f3f8
#1 transferring dockerfile: 307B 0.0s done
#1 DONE 0.1s

#2 [internal] load .dockerignore
#2 sha256:c8396637158fe442f7870c427fb14a5e1f1f71b781353fcff1a75b6301070bcb
#2 transferring context: 2B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/openbmc/ubuntu-unit-test-base:2022-W26-e79767e5378d5a0f
#3 sha256:053b27ec734906a3cbf79dc0bc99b133a80abc1aa2fd5545010138b72cf16ee0
#3 DONE 0.0s

#4 [1/2] FROM docker.io/openbmc/ubuntu-unit-test-base:2022-W26-e79767e5378d5a0f
#4 sha256:e6e9b48a100df776a75b8dc934e85d3f5282ade34c031f25e3dd74a0ecd13842
#4 CACHED

#5 [2/2] RUN curl -L https://github.com/openbmc/linux/arch... (3475 more, please see e.stderr)
  *   =====

Regards,
Chris Chen

________________________________
寄件者: Willy Tu <wltu at google.com>
寄件日期: 2022年6月28日 下午 11:56
收件者: Brandon Kim <brandonkim at google.com>
副本: Chris Chen (TPI) <Chris.Chen3 at flex.com>; Patrick Williams <patrick at stwcx.xyz>; openbmc at lists.ozlabs.org <openbmc at lists.ozlabs.org>
主旨: Re: [phosphor-ipmi-flash]: stdplus build failed before building the host-tool on the Host

Oh yeah, the README is 100% outdated. We have moved to meson and we
should update it at some point in life.

I think your command to build burn_my_bmc should be fine. The
`host-tool` should be enabled by default.

Can try the following, just in case.
```
meson setup -Dhost-tool=enabled builddir
ninja -C builddir
ninja -C builddir install
```

Willy Tu


On Tue, Jun 28, 2022 at 8:51 AM Brandon Kim <brandonkim at google.com> wrote:
>
> Ah, it seems like the email chains were broken up for some reason - seeing this now after I replied to the other email chain.
>
> It is totally possible that our instructions in the README is not up to date anymore, but just to make sure - are you building each of the components as specified by https://urldefense.com/v3/__https://github.com/openbmc/phosphor-ipmi-flash*building-the-host-tool__;Iw!!HSntlCg!UGWKiK4C2gPBrPnKMLNL78cKJAEnz7sb96UQ2IJR62gd5toQOBTYp5LubQOq6YnHBYCe7qVRsw7I7w$  ?
>
> It details the commands to use for each of the dependencies.
>
> Good point on the burn_my_bmc command in the README description not being not up to date and still using automake (https://urldefense.com/v3/__https://github.com/openbmc/phosphor-ipmi-flash*building-the-host-tool__;Iw!!HSntlCg!UGWKiK4C2gPBrPnKMLNL78cKJAEnz7sb96UQ2IJR62gd5toQOBTYp5LubQOq6YnHBYCe7qVRsw7I7w$ ) - I'll try to run this to verify when I get time later today, but in the meantime perhaps @Willy Tu may know the command off the top of his head as he performed the big meson migration. As a first glance the command looks correct.
>
> Willy recently also migrated phospohr-host-ipmid to meson, so he may know more about the PAM dependency as well.
>
> Thanks,
> Brandon
>
>
> On Tue, Jun 28, 2022 at 8:04 AM Chris Chen (TPI) <Chris.Chen3 at flex.com> wrote:
>>
>> Hi Patrick,
>>
>> Thanks for your prompt reply, and the issue is solved after installing Ubuntu "libfmt-dev" package.
>>
>> >> Do you know why you disabled C++20?  This shouldn't have been necessary
>> >> and some of our code now requires C++20.
>>
>> I disabled C++20 of the "ipmi-blob-tool" package because I got errors below:
>> =====
>> archer at archer-ArcherCityM:ipmi-blob-tool$ ./bootstrap.sh
>> + autoreconf -v -f -i
>> autoreconf: export WARNINGS=
>> autoreconf: Entering directory '.'
>> autoreconf: configure.ac: not using Gettext
>> autoreconf: running: aclocal --force -I m4
>> configure.ac:38: error: invalid first argument `20' to AX_CXX_COMPILE_STDCXX
>> /usr/share/aclocal/ax_cxx_compile_stdcxx.m4:50: AX_CXX_COMPILE_STDCXX is expanded from...
>> configure.ac:38: the top level
>> autom4te: error: /usr/bin/m4 failed with exit status: 1
>> aclocal: error: /usr/bin/autom4te failed with exit status: 1
>> autoreconf: error: aclocal failed with exit status: 1
>> =====
>> Do you have ideas about how to solve it correctly?
>>
>> In addition, i have started to build the burn_my_bmc (the host-tool) on the Host by cloning the "phosphor-ipmi-flash" source. There are some questions came out:
>>
>> The "phosphor-ipmi-flash" package seems became to use "meson" rather than "bootstrap.sh", so I run these commands in the source directory. Is it correct?
>> -----
>> meson setup -Dbmc-blob-handler=disabled builddir
>> ninja -C builddir
>> ninja -C builddir install
>> -----
>>
>> After running "meson setup -Dbmc-blob-handler=disabled builddir", it occurred dependency errors, like 'sdbusplus', 'phosphor-dbus-interfaces', 'libipmid', and so on is required respectively, is it correct?
>>
>> I for now have tried to install these dependencies one-by-one, but be stuck at 'libipmid'. That is I clone the "phosphor-host-ipmid" and run "meson builddir" command to build it, however, I got an error in blow and I can't solve it. Could you please give me some suggestions?
>> =====
>> Dependency sdeventplus from subproject subprojects/sdeventplus found: YES 0.1
>> Dependency systemd found: YES 249 (cached)
>> Run-time dependency libcrypto found: YES 3.0.2
>>
>> meson.build:89:0: ERROR: C++ shared or static library 'pam' not found
>> =====
>>
>> Thanks.
>>
>> Regards,
>> Chris Chen
>>
>> ________________________________ 寄件者: Patrick Williams
>> 已傳送: 星期二, 2022 6 月 28 日 下午 07:20
>> 收件者: Chris Chen (TPI)
>> 副本: openbmc at lists.ozlabs.org
>> 主旨: Re: [phosphor-ipmi-flash]: stdplus build failed before building the host-tool on the Host
>>
>> On Tue, Jun 28, 2022 at 08:43:34AM +0000, Chris Chen (TPI) wrote:
>> > And each library and tool is built successful(only one thing that is I had to disable C++20 for the ipmi-blob-tool, others were fine) untilI started to build the stdplus. I encountered a build failed issue as below. It looks like there is a problem for using libfmt.a, I tried to figure out a solution on google but nothing is related to this. Could anyone help on this? Thanks.
>>
>> Do you know why you disabled C++20?  This shouldn't have been necessary
>> and some of our code now requires C++20.
>>
>> >
>> > =====
>> > archer at archer-ArcherCityM:stdplus$
>> > archer at archer-ArcherCityM:stdplus$ meson setup -Dexamples=false -Dtests=disabled builddir
>> > The Meson build system
>> > Version: 0.61.2
>> > Source dir: /home/archer/Downloads/host-tool/stdplus
>> > Build dir: /home/archer/Downloads/host-tool/stdplus/builddir
>> > Build type: native build
>> > Project name: stdplus
>> > Project version: 0.1
>> > C++ compiler for the host machine: c++ (gcc 11.2.0 "c++ (Ubuntu 11.2.0-19ubuntu1) 11.2.0")
>> > C++ linker for the host machine: c++ ld.bfd 2.38
>> > Host machine cpu family: x86_64
>> > Host machine cpu: x86_64
>> > Found pkg-config: /usr/bin/pkg-config (0.29.2)
>> > Run-time dependency fmt found: YES 8.1.2
>>
>> Where did this `fmt` come from?  Ubuntu has `libfmt-dev` that you can
>> install which is version 8.1.1 on Jammy right now.
>>
>> > Library dl found: YES
>> > Run-time dependency liburing found: YES 2.0
>> > Build targets in project: 1
>> >
>> > stdplus 0.1
>> >
>> >   User defined options
>> >     examples: false
>> >     tests   : disabled
>> >
>> > Found ninja-1.10.1 at /usr/bin/ninja
>> > archer at archer-ArcherCityM:stdplus$
>> > archer at archer-ArcherCityM:stdplus$
>> > archer at archer-ArcherCityM:stdplus$ ninja -C builddir
>> > ninja: Entering directory `builddir'
>> > [9/9] Linking target src/libstdplus.so.0.1
>> > FAILED: src/libstdplus.so.0.1
>> > c++  -o src/libstdplus.so.0.1 src/libstdplus.so.0.1.p/stdplus_exception.cpp.o src/libstdplus.so.0.1.p/stdplus_signal.cpp.o src/libstdplus.so.0.1.p/stdplus_dl.cpp.o src/libstdplus.so.0.1.p/stdplus_fd_create.cpp.o src/libstdplus.so.0.1.p/stdplus_fd_dupable.cpp.o src/libstdplus.so.0.1.p/stdplus_fd_impl.cpp.o src/libstdplus.so.0.1.p/stdplus_fd_managed.cpp.o src/libstdplus.so.0.1.p/stdplus_fd_mmap.cpp.o src/libstdplus.so.0.1.p/stdplus_fd_ops.cpp.o src/libstdplus.so.0.1.p/stdplus_io_uring.cpp.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libstdplus.so.0 /usr/local/lib/libfmt.a -ldl /usr/lib/x86_64-linux-gnu/liburing.so -Wl,--end-group
>> > /usr/bin/ld: /usr/local/lib/libfmt.a(format.cc.o): warning: relocation against `stdout@@GLIBC_2.2.5' in read-only section `.text'
>> > /usr/bin/ld: /usr/local/lib/libfmt.a(format.cc.o): relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
>>
>> However you obtained your libfmt, it was compiled incorrectly.  It
>> shouldn't have a static library but a dynamic one.
>>
>> The `libfmt-dev` package has `libfmt.so` which should be sufficient for
>> linking as a shared library.
>>
>> --
>> Patrick Williams
>> Legal Disclaimer :
>> The information contained in this message may be privileged and confidential.
>> It is intended to be read only by the individual or entity to whom it is addressed
>> or by their designee. If the reader of this message is not the intended recipient,
>> you are on notice that any distribution of this message, in any form,
>> is strictly prohibited. If you have received this message in error,
>> please immediately notify the sender and delete or destroy any copy of this message!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20220629/1454e698/attachment-0001.htm>


More information about the openbmc mailing list