From: "Jarkko Sakkinen" <jarkko@kernel.org>
To: "Arnout Vandecappelle" <arnout@mind.be>, <buildroot@buildroot.org>
Cc: Stefan Berger <stefanb@linux.ibm.com>
Subject: Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Date: Sat, 23 Mar 2024 20:52:13 +0200 [thread overview]
Message-ID: <D01CU8Q4DIO9.1PINW90AAMZU4@kernel.org> (raw)
In-Reply-To: <a5a18fd5-6c05-4231-a7b1-a6c1965919c8@mind.be>
On Fri Mar 22, 2024 at 10:47 PM EET, Arnout Vandecappelle wrote:
> Hi Jarkko.
>
> On 21/03/2024 19:21, Jarkko Sakkinen wrote:
> > Add swtpm and its dependency libtpms to host packages. These are useful
> > for emulating TPM in QEMU environment.
>
> I don't understand... Does it mean that you run host-swtpm next to host-qemu
> and you somehow connect them so it gets exposed as a TPM2 device inside the qemu VM?
Yes:
https://gitlab.com/jarkkojs/linux-tpmdd-test/-/blob/main/board/qemu/run-qemu.sh.in?ref_type=heads
>
> >
> > Link: https://gitlab.com/jarkkojs/linux-tpmdd-test
> > Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > ---
> > package/libtpms/Config.in | 9 ++++
> > package/libtpms/libtpms.hash | 1 +
> > package/libtpms/libtpms.mk | 15 ++++++
>
> Please split this in a separate patch for libtpms (so 3 patches in the series).
>
> You also need package/Config.in to source package/libtpms/Config.in
>
> Also, please run `make check-package`. There will undoubtedly be some coding
> style issues.
>
> Finally, please add yourself to the DEVELOPERS file for this package. This
> way, you'll get an e-mail if the package fails in the autobuilders, or when a
> new version is released if the package is registered on release-monitoring.org.
> See https://nightly.buildroot.org/#DEVELOPERS
OK, got it. I'll follow the steps.
Yeah, these used to be lying in BR2_EXTERNAL and I was not exactly sure
how to proceed so I thought that better not to over-engineer.
>
> > .../0001-comment-out-expect-and-socat.patch | 46 +++++++++++++++++++
> > package/swtpm/Config.host.in | 8 ++++
>
> You also need to add this to package/Config.in.host
+1
> > package/swtpm/swtpm.hash | 1 +
> > package/swtpm/swtpm.mk | 17 +++++++
> > 7 files changed, 97 insertions(+)
> > create mode 100644 package/libtpms/Config.in
> > create mode 100644 package/libtpms/libtpms.hash
> > create mode 100644 package/libtpms/libtpms.mk
> > create mode 100644 package/swtpm/0001-comment-out-expect-and-socat.patch
> > create mode 100644 package/swtpm/Config.host.in
> > create mode 100644 package/swtpm/swtpm.hash
> > create mode 100644 package/swtpm/swtpm.mk
> >
> > diff --git a/package/libtpms/Config.in b/package/libtpms/Config.in
> > new file mode 100644
> > index 0000000000..7ef61cf53c
> > --- /dev/null
> > +++ b/package/libtpms/Config.in
> > @@ -0,0 +1,9 @@
> > +config BR2_PACKAGE_LIBTPMS
> > + bool "libtpms"
> > + depends on BR2_USE_WCHAR # glib2
> > + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2
> > + depends on BR2_USE_MMU # glib2
>
> If you have those dependencies, I'd expect a corresponding `select
> BR2_PACKAGE_GLIB2`. However, there isn't any dependency at all in the .mk file,
> so I guess this is in fact not needed.
+1
>
> > + help
> > + TPM emulation library
> > +
> > + https://github.com/stefanberger/libtpms
> > diff --git a/package/libtpms/libtpms.hash b/package/libtpms/libtpms.hash
> > new file mode 100644
> > index 0000000000..c31d824af6
> > --- /dev/null
> > +++ b/package/libtpms/libtpms.hash
> > @@ -0,0 +1 @@
> > +sha256 2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0 v0.9.6.tar.gz
>
> Please make sure that the license file is also in the .hash file. You can
> check this with `make legal-info`.
+1
>
> > diff --git a/package/libtpms/libtpms.mk b/package/libtpms/libtpms.mk
> > new file mode 100644
> > index 0000000000..5b1151baff
> > --- /dev/null
> > +++ b/package/libtpms/libtpms.mk
> > @@ -0,0 +1,15 @@
> > +################################################################################
> > +#
> > +# libtpms
> > +#
> > +################################################################################
> > +
> > +LIBTPMS_VERSION = v0.9.6
>
> Drop the v from the version, otherwise release-monitoring and CPE/CVE checks
> don't work. You can add the v below.
+1
>
> > +LIBTPMS_SOURCE = $(LIBTPMS_VERSION).tar.gz
>
> Don't override LIBTPMS_SOURCE, there's no need for that, the default
> (libtpms-0.9.6.tar.gz) is better. The github URL will still work. Note that the
> hash will change if you change the filename.
+1
>
> > +LIBTPMS_SITE = $(call github,stefanberger,libtpms,$(LIBTPMS_VERSION))
>
> This is where the v should be added:
>
> LIBTPMS_SITE = $(call github,stefanberger,libtpms,v$(LIBTPMS_VERSION))
+1
>
> > +LIBTPMS_LICENSE = BSD-3-Clause
>
> It's actually BSD-4-Clause. And unfortunately, it also contains file which
> seem to be covered with a modified BSD-2-Clause instead, but let's ignore that :-)
>
> Please add the license file as well:
>
> LIBTPMS_LICENSE_FILES = LICENSE
+1
>
> > +LIBTPMS_INSTALL_STAGING = YES
> > +LIBTPMS_AUTORECONF = YES
>
> You should add a comment explaining why autoreconf is needed - in this case,
> because we get the source from git. It's also good to mention in the commit
> message that upstream doesn't create release tarballs that include the configure
> script.
+1
>
> > +
> > +$(eval $(autotools-package))
> > +$(eval $(host-autotools-package))
> > diff --git a/package/swtpm/0001-comment-out-expect-and-socat.patch b/package/swtpm/0001-comment-out-expect-and-socat.patch
> > new file mode 100644
> > index 0000000000..09dcc49a7b
> > --- /dev/null
> > +++ b/package/swtpm/0001-comment-out-expect-and-socat.patch
> > @@ -0,0 +1,46 @@
> > +From 067c32ba93774b273de9af872b5587798dcabb15 Mon Sep 17 00:00:00 2001
> > +From: Jarkko Sakkinen <jarkko@kernel.org>
> > +Date: Tue, 19 Dec 2023 05:21:20 +0200
> > +Subject: [PATCH] configure.ac: comment out "expect" and "socat"
>
> Please replace this with the patch from PR 844 (and add --disable-tests). Or
> wait until Stefan releases v0.8.2 (probably very soon).
Yeah, this happened after I sent this (had a short discussion and I
tested and ack'd the fix).
Anyway:
+1
>
> > +
> > +Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
> > +---
> > + configure.ac | 16 ++++++++--------
> > + 1 file changed, 8 insertions(+), 8 deletions(-)
> > +
> > +diff --git a/configure.ac b/configure.ac
> > +index 49caf96..4acc763 100644
> > +--- a/configure.ac
> > ++++ b/configure.ac
> > +@@ -394,20 +394,20 @@ AS_IF([test "x$enable_default_pcr_banks" != "x"],[
> > + pcr_bank_checks
> > + AC_SUBST([DEFAULT_PCR_BANKS])
> > +
> > +-AC_PATH_PROG([EXPECT], expect)
> > +-if test "x$EXPECT" = "x"; then
> > +- AC_MSG_ERROR([expect is required: expect package])
> > +-fi
> > ++# AC_PATH_PROG([EXPECT], expect)
> > ++# if test "x$EXPECT" = "x"; then
> > ++# AC_MSG_ERROR([expect is required: expect package])
> > ++# fi
> > +
> > + AC_PATH_PROG([GAWK], gawk)
> > + if test "x$GAWK" = "x"; then
> > + AC_MSG_ERROR([gawk is required: gawk package])
> > + fi
> > +
> > +-AC_PATH_PROG([SOCAT], socat)
> > +-if test "x$SOCAT" = "x"; then
> > +- AC_MSG_ERROR([socat is required: socat package])
> > +-fi
> > ++# AC_PATH_PROG([SOCAT], socat)
> > ++# if test "x$SOCAT" = "x"; then
> > ++# AC_MSG_ERROR([socat is required: socat package])
> > ++# fi
> > +
> > + AC_PATH_PROG([BASE64], base64)
> > + if test "x$BASE64" = "x"; then
> > +--
> > +2.40.1
> > +
> > diff --git a/package/swtpm/Config.host.in b/package/swtpm/Config.host.in
> > new file mode 100644
> > index 0000000000..e77eea2aa5
> > --- /dev/null
> > +++ b/package/swtpm/Config.host.in
> > @@ -0,0 +1,8 @@
> > +config BR2_PACKAGE_HOST_SWTPM
> > + bool "swtpm-host"
>
> Should be "host swtpm"
+1
>
> > + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection
> > + select BR2_PACKAGE_GOBJECT_INTROSPECTION
>
> This is selecting the _target_ gobject-introspection, which makes no sense for
> a host package.
Hmm... do not want to say anything just yet because tbh cannot recall
why it is there but I'll look into this.
>
> > + help
> > + Compiles SWTPM software TPM emulator for the host.
> > +
> > + https://github.com/stefanberger/swtpm
>
> We want to point to something like documentation, which in this case is the
> wiki: https://github.com/stefanberger/swtpm/wiki
+1
>
> > diff --git a/package/swtpm/swtpm.hash b/package/swtpm/swtpm.hash
> > new file mode 100644
> > index 0000000000..882f06d7a5
> > --- /dev/null
> > +++ b/package/swtpm/swtpm.hash
> > @@ -0,0 +1 @@
> > +sha256 7bba52aa41090f75087034fac5fe8daed10c3e7e7234df7c9558849318927f41 v0.8.1.tar.gz
> > diff --git a/package/swtpm/swtpm.mk b/package/swtpm/swtpm.mk
> > new file mode 100644
> > index 0000000000..79fbf1f420
> > --- /dev/null
> > +++ b/package/swtpm/swtpm.mk
> > @@ -0,0 +1,17 @@
> > +################################################################################
> > +#
> > +# swtpm
> > +#
> > +################################################################################
> > +
> > +SWTPM_VERSION = v0.8.1
> > +SWTPM_SOURCE = $(SWTPM_VERSION).tar.gz
> > +SWTPM_SITE = $(call github,stefanberger,swtpm,$(SWTPM_VERSION))
> > +SWTPM_LICENSE = BSD-3-Clause
> > +SWTPM_AUTORECONF = YES
>
> Same comments as for libtpms for the above 5 lines.
+1
>
> > +
> > +HOST_SWTPM_DEPENDENCIES = host-libtasn1 host-openssl host-pkgconf host-json-glib host-libtpms
>
> Can you try inside a container (e.g. using utils/docker-run) if this is really
> sufficient?
Does it work with podman?
>
> > +HOST_SWTPM_CONF_ENV = PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)"
>
> This should already be part of the default configure environment, are you sure
> it is needed?
Tbh, no I'm not sure :-) I'll try to remove it and see what happens!
>
> Regards,
> Arnout
>
> > +HOST_SWTPM_CONF_OPTS = --without-seccomp
> > +
> > +$(eval $(host-autotools-package))
OK, thanks for the throughout and sane remarks!
BR, Jarkko
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2024-03-23 18:52 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-21 18:21 [Buildroot] [PATCH RFC 0/2] Add swtpm to host packages Jarkko Sakkinen
2024-03-21 18:21 ` [Buildroot] [PATCH RFC 1/2] package/json-glib: add host build Jarkko Sakkinen
2024-03-21 18:21 ` [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package Jarkko Sakkinen
[not found] ` <be88778f-53fc-493b-829a-2434ea0782ef@linux.ibm.com>
2024-03-22 8:22 ` Jarkko Sakkinen
2024-03-22 8:35 ` Jarkko Sakkinen
2024-03-22 9:00 ` Jarkko Sakkinen
[not found] ` <72dda3ce-5cf6-4830-9f18-30a64a01af15@linux.ibm.com>
2024-03-22 15:11 ` Jarkko Sakkinen
[not found] ` <267dc37d-86aa-407f-96e0-5be4d2464b13@linux.ibm.com>
2024-03-22 16:46 ` Jarkko Sakkinen
[not found] ` <baa6bac2-394c-4dee-ac2b-65c3aebddd20@linux.ibm.com>
2024-03-23 19:01 ` Jarkko Sakkinen
2024-03-22 20:47 ` Arnout Vandecappelle via buildroot
2024-03-23 18:52 ` Jarkko Sakkinen [this message]
2024-03-26 15:08 ` Peter Korsgaard
2024-03-26 17:06 ` Jarkko Sakkinen
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=D01CU8Q4DIO9.1PINW90AAMZU4@kernel.org \
--to=jarkko@kernel.org \
--cc=arnout@mind.be \
--cc=buildroot@buildroot.org \
--cc=stefanb@linux.ibm.com \
/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.