All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni via buildroot <buildroot@buildroot.org>
To: Wilfred Mallawa via buildroot <buildroot@buildroot.org>
Cc: Wilfred Mallawa <wilfred.mallawa@wdc.com>,
	alistair.francis@wdc.com, yann.morin.1998@free.fr
Subject: Re: [Buildroot] [PATCH v2 1/1] package/spdm-utils: new package
Date: Fri, 12 Jul 2024 23:54:49 +0200	[thread overview]
Message-ID: <20240712235449.766c2931@windsurf> (raw)
In-Reply-To: <20240402035140.71770-2-wilfred.mallawa@wdc.com>

Hello Wilfred,

I wanted to merge this package, but got some build issues. See below.

On Tue,  2 Apr 2024 13:51:41 +1000
Wilfred Mallawa via buildroot <buildroot@buildroot.org> wrote:

> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
> Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
> ---
> Changes in V2:                                                   
>         - Added required python3 dependencies
>         - Now depends on `udev` instead of selecting `eudev`
>         - Now depends on `libspdm`
>         - Hook define moved below the hook, stylistically similar to
>             other packages
>         - Removed cargo package re-vendoring as we aren't patching
>         - Changed certificate/manifest installation path to be system wide.
> 
>  package/Config.in                  |  1 +
>  package/spdm-utils/Config.in       | 24 ++++++++++++++++++++
>  package/spdm-utils/spdm-utils.hash |  2 ++
>  package/spdm-utils/spdm-utils.mk   | 36 ++++++++++++++++++++++++++++++
>  4 files changed, 63 insertions(+)
>  create mode 100644 package/spdm-utils/Config.in
>  create mode 100644 package/spdm-utils/spdm-utils.hash
>  create mode 100644 package/spdm-utils/spdm-utils.mk

In order to validate the dependencies, I went back to a simpler
package, like this:

config BR2_PACKAGE_SPDM_UTILS
	bool "spdm-utils"
	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HAS_UDEV
	select BR2_PACKAGE_HOST_RUSTC
	help
	  SPDM-Utils is a Linux application designed to support,
	  test and develop SPDM requesters and responders.
	  SPDM-Utils uses libspdm as the backend to perform SPDM
	  communication. SPDM-Utils currently supports the
	  PCIe Data Object Exchange (DOE) Capability.

	  https://github.com/westerndigitalcorporation/spdm-utils

comment "spdm-utils needs udev /dev management"
	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
        depends on !BR2_PACKAGE_HAS_UDEV

and in the .mk file, reduced the DEPENDENCIES variable to:

SPDM_UTILS_DEPENDENCIES = udev

And with this, I get:

  Unable to find libclang: "couldn't find any valid shared libraries matching: ['libclang.so', 'libclang-*.so', 'libclang.so.*', 'libclang-*.so.*'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"

However, none of your dependencies where related to libclang, so I
believe something is probably missing in terms of dependencies in your
submission. Could you double check?

Also, see below some comments.


> diff --git a/package/spdm-utils/Config.in b/package/spdm-utils/Config.in
> new file mode 100644
> index 0000000000..b96365451f
> --- /dev/null
> +++ b/package/spdm-utils/Config.in
> @@ -0,0 +1,24 @@
> +config BR2_PACKAGE_SPDM_UTILS
> +	bool "spdm-utils"
> +	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # python3
> +	depends on BR2_USE_WCHAR # eudev

Not needed, you simply need BR2_PACKAGE_HAS_UDEV.

> +	depends on !BR2_STATIC_LIBS

Please drop, you have this line duplicated below.

> +	depends on BR2_USE_MMU # eudev

We don't care about eudev dependencies, BR2_PACKAGE_HAS_UDEV is enough.
However, BR2_USE_MMU is needed for python3, so add # python3 at the end
of this line (if python3 is really needed, of course)

> +	depends on !BR2_STATIC_LIBS  # python3

> +	depends on BR2_USE_MMU  # eudev, python3
> +	depends on BR2_PACKAGE_HAS_UDEV
> +	depends on BR2_PACKAGE_LIBSPDM

Please select this library, but then you need:

	depends on BR2_PACKAGE_LIBSPDM_ARCH_SUPPORTS

> +	select BR2_PACKAGE_HOST_RUSTC
> +	select BR2_PACKAGE_OPENSSL
> +	select BR2_PACKAGE_PCIUTILS
> +	select BR2_PACKAGE_EUDEV

This select is not needed.

> +	select BR2_PACKAGE_PYTHON3
> +	help
> +	  SPDM-Utils is a Linux application designed to support,
> +	  test and develop SPDM requesters and responders.
> +	  SPDM-Utils uses libspdm as the backend to perform SPDM
> +	  communication. SPDM-Utils currently supports the
> +	  PCIe Data Object Exchange (DOE) Capability.
> +
> +	  https://github.com/westerndigitalcorporation/spdm-utils

Please add Config.in comments about the dependencies. So probably:

comment "spdm-utils needs a toolchain w/ threads, dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_PACKAGE_LIBSPDM_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS

comment "spdm-utils needs udev /dev management"
	depends on BR2_USE_MMU
	depends on BR2_PACKAGE_LIBSPDM_ARCH_SUPPORTS
	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
        depends on !BR2_PACKAGE_HAS_UDEV


> diff --git a/package/spdm-utils/spdm-utils.hash b/package/spdm-utils/spdm-utils.hash
> new file mode 100644
> index 0000000000..aaa243315e
> --- /dev/null
> +++ b/package/spdm-utils/spdm-utils.hash
> @@ -0,0 +1,2 @@
> +# Locally calculated
> +sha256  3f06f087220b126262a2becf68c9e06a59d8d613816f82a168c81093de087d1a  spdm-utils-0.3.0.tar.gz

This needs to be fixed with recent changes in the Cargo infrastructure.
Do a build, you'll notice.

> diff --git a/package/spdm-utils/spdm-utils.mk b/package/spdm-utils/spdm-utils.mk
> new file mode 100644
> index 0000000000..4176f61871
> --- /dev/null
> +++ b/package/spdm-utils/spdm-utils.mk
> @@ -0,0 +1,36 @@
> +################################################################################
> +#
> +# spdm-utils
> +#
> +################################################################################
> +
> +SPDM_UTILS_VERSION = 0.3.0
> +SPDM_UTILS_SITE = $(call github,westerndigitalcorporation,spdm-utils,v$(SPDM_UTILS_VERSION))
> +SPDM_UTILS_LICENSE = Apache-2.0 or MIT
> +SPDM_UTILS_DEPENDENCIES += pciutils libspdm openssl udev

Just =, not +=. What about python3? Not needed as a dependency?

> +
> +# Note that we also copy `setup_certs.sh` and `generate_certs.sh`.
> +# `setup_certs.sh` shall be used by a responder to regenerate it's mutable
> +# certificate chain. `generate_certs.sh` can be used to generate a new
> +# certificate chain, which maybe useful in testing and development.
> +define SPDM_UTILS_INSTALL_CERTS
> +	$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/spdm_certs
> +	cp -r $(@D)/certs/generate_certs.sh $(TARGET_DIR)/usr/local/spdm_certs
> +	cp -r $(@D)/certs/openssl.cnf $(TARGET_DIR)/usr/local/spdm_certs
> +	cp -r $(@D)/certs/setup_certs.sh $(TARGET_DIR)/usr/local/spdm_certs
> +
> +	$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/spdm_certs/slot0
> +	cp $(@D)/certs/slot0/immutable.der $(TARGET_DIR)/usr/local/spdm_certs/slot0
> +	cp $(@D)/certs/slot0/device.cert.der $(TARGET_DIR)/usr/local/spdm_certs/slot0
> +	cp $(@D)/certs/slot0/device.der $(TARGET_DIR)/usr/local/spdm_certs/slot0
> +	cp $(@D)/certs/slot0/device.key $(TARGET_DIR)/usr/local/spdm_certs/slot0
> +	cp $(@D)/certs/slot0/param.pem $(TARGET_DIR)/usr/local/spdm_certs/slot0
> +	cp $(@D)/certs/slot0/bundle_responder.certchain.der $(TARGET_DIR)/usr/local/spdm_certs/slot0

Meh, a bit verbose. Maybe:

SPDM_UTILS_CERT_SCRIPTS = \
	generate_certs.sh \
	setup_certs.sh

SPDM_UTILS_CERT_DATA_FILES = \
	openssl.cnf \
	slot0/immutable.der \
	slot0/device.cert.der \
	slot0/device.der \
	slot0/device.key \
	slot0/param.pem \
	slot0/bundle_responder.certchain.der

and then in SPDM_UTILS_INSTALL_CERTS:

	$(foreach f,$(SPDM_UTILS_CERT_DATA_FILES),
		$(INSTALL) -D -m 0644 $(f) $(TARGET_DIR)/usr/local/spdm_certs/$(f)
	)

	$(foreach f,$(SPDM_UTILS_CERT_SCRIPTS),
		$(INSTALL) -D -m 0755 $(f) $(TARGET_DIR)/usr/local/spdm_certs/$(f)
	)

Also, why do we install those files in /usr/local/ ?
/usr/local/spdm_certs and /usr/local/spdm_manifest seem like very
unconventional paths. I would rather expect those in
/usr/share/spdm/certs/ and /usr/share/spdm/manifest/ or something like
this.

Could you have a look at those different suggestions, and come back
with a v3 of your submission?

Thanks a lot!

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  parent reply	other threads:[~2024-07-12 21:54 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-02  3:51 [Buildroot] [PATCH v2 1/1] package/spdm-utils: new package Wilfred Mallawa via buildroot
2024-04-12  0:40 ` Wilfred Mallawa via buildroot
2024-04-21 23:06 ` Wilfred Mallawa
2024-05-02  0:27 ` Wilfred Mallawa
2024-07-12 21:54 ` Thomas Petazzoni via buildroot [this message]
2024-07-19  7:04   ` Wilfred Mallawa via buildroot
2024-07-19  7:27     ` Thomas Petazzoni via buildroot
2024-07-19 23:09       ` Wilfred Mallawa via buildroot
  -- strict thread matches above, loose matches on Subject: below --
2024-02-24  0:39 Wilfred Mallawa via buildroot
2024-03-05  1:37 ` Wilfred Mallawa via buildroot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240712235449.766c2931@windsurf \
    --to=buildroot@buildroot.org \
    --cc=alistair.francis@wdc.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=wilfred.mallawa@wdc.com \
    --cc=yann.morin.1998@free.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.