Add swtpm to host packages
cover Add swtpm to host packages
This work originates from my test sandbox for linux-tpmdd korg tree. I'm not sure how to refine this as mainline BuildRoot patch set so I just dump what I've used for long time with RFC stamp :-) Please instruct me and I'll try to follow the steps.
References:
- https://gitlab.com/jarkkojs/linux-tpmdd-test/-/blob/main/board/qemu/run-qemu.sh.in?ref_type=heads
- https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
Jarkko Sakkinen (2):
package/json-glib: add host build
package/swtpm: add host package
package/json-glib/json-glib.mk | 1 + package/libtpms/Config.in | 9 ++++ package/libtpms/libtpms.hash | 1 + package/libtpms/libtpms.mk | 15 ++++++ .../0001-comment-out-expect-and-socat.patch | 46 +++++++++++++++++++ package/swtpm/Config.host.in | 8 ++++ package/swtpm/swtpm.hash | 1 + package/swtpm/swtpm.mk | 17 +++++++ 8 files changed, 98 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
--
2.43.0
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
RFC PATCH 1/2 package/json-glib: add host build
--- package/json-glib/json-glib.mk | 1 + 1 file changed, 1 insertion(+)
package/json-glib/json-glib.mk +1 -0
@@ -34,3 +34,4 @@ endif JSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) $(eval $(meson-package)) +$(eval $(host-meson-package))
Signature · 6 lines
2.43.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
RFC PATCH 2/2 package/swtpm: add host package
In reply to Jarkko SakkinenAdd swtpm and its dependency libtpms to host packages. These are useful for emulating TPM in QEMU environment.
--- package/libtpms/Config.in | 9 ++++ package/libtpms/libtpms.hash | 1 + package/libtpms/libtpms.mk | 15 ++++++ .../0001-comment-out-expect-and-socat.patch | 46 +++++++++++++++++++ package/swtpm/Config.host.in | 8 ++++ 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
package/libtpms/Config.in new file +9 -0
@@ -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 + help + TPM emulation library + + https://github.com/stefanberger/libtpms
package/libtpms/libtpms.hash new file +1 -0
@@ -0,0 +1 @@ +sha256 2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0 v0.9.6.tar.gz
package/libtpms/libtpms.mk new file +15 -0
@@ -0,0 +1,15 @@ +################################################################################ +# +# libtpms +# +################################################################################ + +LIBTPMS_VERSION = v0.9.6 +LIBTPMS_SOURCE = $(LIBTPMS_VERSION).tar.gz +LIBTPMS_SITE = $(call github,stefanberger,libtpms,$(LIBTPMS_VERSION)) +LIBTPMS_LICENSE = BSD-3-Clause +LIBTPMS_INSTALL_STAGING = YES +LIBTPMS_AUTORECONF = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package))
package/swtpm/0001-comment-out-expect-and-socat.patch new file +46 -0
46 lines not on this page · raw message
package/swtpm/Config.host.in new file +8 -0
@@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_SWTPM + bool "swtpm-host" + depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection + select BR2_PACKAGE_GOBJECT_INTROSPECTION + help + Compiles SWTPM software TPM emulator for the host. + + https://github.com/stefanberger/swtpm
package/swtpm/swtpm.hash new file +1 -0
@@ -0,0 +1 @@ +sha256 7bba52aa41090f75087034fac5fe8daed10c3e7e7234df7c9558849318927f41 v0.8.1.tar.gz
package/swtpm/swtpm.mk new file +17 -0
@@ -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 + +HOST_SWTPM_DEPENDENCIES = host-libtasn1 host-openssl host-pkgconf host-json-glib host-libtpms +HOST_SWTPM_CONF_ENV = PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" +HOST_SWTPM_CONF_OPTS = --without-seccomp + +$(eval $(host-autotools-package))
Signature · 6 lines
2.43.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 58 lines · Stefan Berger
Quoted 33 lines · Jarkko Sakkinen
Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.---
+--- + configure.ac | 16 ++++++++--------+ 1 file changed, 8 insertions(+), 8 deletions(-)
package/swtpm/0001-comment-out-expect-and-socat.patch new file +6
-0+ +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])package/swtpm/0001-comment-out-expect-and-socat.patch new file +13
-0+ +-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])package/swtpm/0001-comment-out-expect-and-socat.patch line 40
Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10
-0+ 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]) ++# fisocat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before runningautogen.sh:tmpdir=$(mktemp -d) || exit 1
cp/usr/bin/true"${tmpdir}/socat"
cp/usr/bin/true"${tmpdir}/expect"
Quoted 5 lines
PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"Stefan
... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.
Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen
Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.---
+--- + configure.ac | 16 ++++++++--------+ 1 file changed, 8 insertions(+), 8 deletions(-)
package/swtpm/0001-comment-out-expect-and-socat.patch new file +6
-0+ +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])package/swtpm/0001-comment-out-expect-and-socat.patch new file +13
-0+ +-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])package/swtpm/0001-comment-out-expect-and-socat.patch line 40
Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10
-0+ 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]) ++# ficat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before runningautogen.sh:tmpdir=$(mktemp -d) || exit 1
cp/usr/bin/true"${tmpdir}/socat"
cp/usr/bin/true"${tmpdir}/expect"Quoted 5 lines
PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"Stefan
Quoted 8 lines
... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.
Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.
And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.
It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 76 lines · Jarkko Sakkinen
Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen
Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.---
+--- + configure.ac | 16 ++++++++--------+ 1 file changed, 8 insertions(+), 8 deletions(-)
package/swtpm/0001-comment-out-expect-and-socat.patch new file +6
-0+ +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])package/swtpm/0001-comment-out-expect-and-socat.patch new file +13
-0+ +-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])package/swtpm/0001-comment-out-expect-and-socat.patch line 40
Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10
-0+ 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]) ++# ficat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before runningautogen.sh:tmpdir=$(mktemp -d) || exit 1
cp/usr/bin/true"${tmpdir}/socat"
cp/usr/bin/true"${tmpdir}/expect"Quoted 5 lines
PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"Stefan
Quoted 8 lines
... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.
Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.
Quoted 5 lines
And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.
It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.
I put out an issue:
https://github.com/stefanberger/swtpm/issues/843
It's not a huge problem for BuildRoot as the build version is always fixed. We can update the version in BuildRoot and remove the patch when the time comes.
This is a bigger issue than swtpm in autotools projects. Most of them have test suites that are not compatible with cross-compilation but instead assume implicitly that the machine which builds is also the one that runs the tests, which does not hold when building full OS images.
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 86 lines · Stefan Berger
Quoted 83 lines · Jarkko Sakkinen
Quoted 81 lines · Jarkko Sakkinen
Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen
Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.---
+--- + configure.ac | 16 ++++++++--------+ 1 file changed, 8 insertions(+), 8 deletions(-)
package/swtpm/0001-comment-out-expect-and-socat.patch new file +6
-0+ +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])package/swtpm/0001-comment-out-expect-and-socat.patch new file +13
-0+ +-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])package/swtpm/0001-comment-out-expect-and-socat.patch line 40
Quoted 10 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +10
-0+ 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]) ++# ficat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before runningautogen.sh:tmpdir=$(mktemp -d) || exit 1
cp/usr/bin/true"${tmpdir}/socat"
cp/usr/bin/true"${tmpdir}/expect"Quoted 5 lines
PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"Stefan
Quoted 8 lines
... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.
Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.
And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.
It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.
Quoted 6 lines
Quoted 3 lines
I put out an issue:
This PR should help resolve the issue:
It does thanks!
As commented to the PR I was successfully able to run full TPM2 kselftest:
https://gitlab.com/jarkkojs/linux-tpmdd-test/-/commits/swtpm-fix
Possible to tag a version with the fix? Alternatively I can export your patch from your tree and include it to the next revision of this patch set.
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 99 lines · Stefan Berger
Quoted 96 lines · Jarkko Sakkinen
Quoted 86 lines · Stefan Berger
Quoted 83 lines · Jarkko Sakkinen
Quoted 81 lines · Jarkko Sakkinen
Quoted 66 lines · Jarkko Sakkinen
Quoted 59 lines · Stefan Berger
Quoted 34 lines · Jarkko Sakkinen
Add swtpm and its dependency libtpms to host packages. These are useful
for emulating TPM in QEMU environment.---
+--- + configure.ac | 16 ++++++++--------+ 1 file changed, 8 insertions(+), 8 deletions(-)
(quoted diff) +6
-0+ +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])(quoted diff) +13
-0+ +-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])Review
Quoted 10 lines
(quoted diff) +10
-0+ 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]) ++# ficat and expect are used for running the test cases. When not running
the tests then an alternative to commenting the above out may be to do
the following before runningautogen.sh:tmpdir=$(mktemp -d) || exit 1
cp/usr/bin/true"${tmpdir}/socat"
cp/usr/bin/true"${tmpdir}/expect"Quoted 5 lines
PATH=$PATH:${tmpdir}
./autogen --prefix=...
rm -rf "${tmpdir}"Stefan
Quoted 8 lines
... which would be more tedious than simply commenting them out because then you would have to tweak the build itself with manual steps instead of using autotools build command.
Up until this is fixed in the upstream project, we are better off simply commenting them out, as they are test dependency, not a build dependency for building e.g. initramfs image or some other type of OS image.
And there's a lot of shenanigans related to the cross-compilation environment, which render out the suggestion anyway in that form.
It's a bug because neither socat nor expect are actua build dependencies, and the patch works around the bug.
Quoted 6 lines
Quoted 3 lines
I put out an issue:
This PR should help resolve the issue:
It does thanks!
Quoted 8 lines
Quoted 6 lines
As commented to the PR I was successfully able to run full TPM2 kselftest:
https://gitlab.com/jarkkojs/linux-tpmdd-test/-/commits/swtpm-fix
Possible to tag a version with the fix? Alternatively I can export
I'll create v0.8.2 with only this patch.
OK, cool, thanks!
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 11 lines · Stefan Berger
Quoted 6 lines · Jarkko Sakkinen
Quoted 2 lines · Stefan Berger
I'll create v0.8.2 with only this patch.
OK, cool, thanks!
I tagged it now.
I'll address the remarks from Arnout and bump the version, thanks.
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
In reply to Jarkko SakkinenHi Jarkko.
Quoted 2 lines · Jarkko Sakkinen
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?
Quoted 7 lines
--- 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
Quoted 2 lines
.../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
Quoted 17 lines
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 100644package/libtpms/libtpms.mk
create mode 100644package/swtpm/0001-comment-out-expect-and-socat.patchcreate mode 100644 package/swtpm/Config.host.in
create mode 100644 package/swtpm/swtpm.hash
create mode 100644package/swtpm/swtpm.mkpackage/libtpms/Config.in new file +0
-0
package/libtpms/Config.in line 5
Quoted 5 lines
package/libtpms/Config.in new file +5
-0@@ -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.
package/libtpms/libtpms.hash line 1
Quoted 11 lines
package/libtpms/Config.in new file +4
-0+ help + TPM emulation library + + https://github.com/stefanberger/libtpmspackage/libtpms/libtpms.hash new file +1
-0@@ -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.
package/libtpms/libtpms.mk line 7
Quoted 13 lines
package/libtpms/libtpms.mk new file +7
-0@@ -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.
package/libtpms/libtpms.mk line 8
Quoted 1 line
package/libtpms/libtpms.mk new file +1
-0+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.
package/libtpms/libtpms.mk line 9
Quoted 1 line
package/libtpms/libtpms.mk new file +1
-0+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))
package/libtpms/libtpms.mk line 10
Quoted 1 line
package/libtpms/libtpms.mk new file +1
-0+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
package/libtpms/libtpms.mk line 12
Quoted 2 lines
package/libtpms/libtpms.mk new file +2
-0+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.
package/swtpm/0001-comment-out-expect-and-socat.patch line 4
Quoted 13 lines
package/libtpms/libtpms.mk new file +3
-0+ +$(eval $(autotools-package)) +$(eval $(host-autotools-package))package/swtpm/0001-comment-out-expect-and-socat.patch new file +4
-0@@ -0,0 +1,46 @@ +From 067c32ba93774b273de9af872b5587798dcabb15 Mon Sep 17 00:00:00 2001 +From: Jarkko Sakkinen <[email protected]> +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).
Quoted 48 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +42
-0+ +Signed-off-by: Jarkko Sakkinen <[email protected]> +--- + 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 +package/swtpm/Config.host.in new file +0
-0
package/swtpm/Config.host.in line 2
Quoted 2 lines
package/swtpm/Config.host.in new file +2
-0@@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_SWTPM + bool "swtpm-host"
Should be "host swtpm"
package/swtpm/Config.host.in line 4
Quoted 2 lines
package/swtpm/Config.host.in new file +2
-0+ 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.
package/swtpm/Config.host.in line 8
Quoted 4 lines
package/swtpm/Config.host.in new file +4
-0+ 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
Quoted 14 lines
package/swtpm/swtpm.hash new file +1
-0@@ -0,0 +1 @@ +sha256 7bba52aa41090f75087034fac5fe8daed10c3e7e7234df7c9558849318927f41 v0.8.1.tar.gzpackage/swtpm/swtpm.mk new file +1
-0@@ -0,0 +1,17 @@ +################################################################################
package/swtpm/swtpm.mk line 11
Quoted 10 lines
package/swtpm/swtpm.mk new file +10
-0+# +# 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.
package/swtpm/swtpm.mk line 13
Quoted 2 lines
package/swtpm/swtpm.mk new file +2
-0+ +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?
package/swtpm/swtpm.mk line 14
Quoted 1 line
package/swtpm/swtpm.mk new file +1
-0+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?
Regards,
Arnout
package/swtpm/swtpm.mk line 17
Quoted 3 lines
package/swtpm/swtpm.mk new file +3
-0+HOST_SWTPM_CONF_OPTS = --without-seccomp + +$(eval $(host-autotools-package))
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 8 lines · Arnout Vandecappelle
Hi Jarkko.
Quoted 2 lines · Jarkko Sakkinen
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
Quoted 13 lines
Quoted 8 lines
--- 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
Quoted 7 lines
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.
Quoted 5 lines
Quoted 3 lines
.../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
Quoted 11 lines
Quoted 11 lines
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 100644package/libtpms/libtpms.mk
create mode 100644package/swtpm/0001-comment-out-expect-and-socat.patchcreate mode 100644 package/swtpm/Config.host.in
create mode 100644 package/swtpm/swtpm.hash
create mode 100644package/swtpm/swtpm.mk
Quoted 15 lines
package/libtpms/Config.in line 5
Quoted 11 lines
package/libtpms/Config.in new file +5
-0@@ -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 # glib2If 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
Quoted 15 lines
package/libtpms/libtpms.hash line 1
Quoted 12 lines
package/libtpms/Config.in new file +4
-0+ help + TPM emulation library + + https://github.com/stefanberger/libtpmspackage/libtpms/libtpms.hash new file +1
-0@@ -0,0 +1 @@ +sha256 2807466f1563ebe45fdd12dd26e501e8a0c4fbb99c7c428fbb508789efd221c0 v0.9.6.tar.gzPlease make sure that the license file is also in the .hash file. You can
check this withmake legal-info.
+1
Quoted 17 lines
Quoted 7 lines
package/libtpms/libtpms.mk new file +0
-0package/libtpms/libtpms.mk line 7
Quoted 7 lines
package/libtpms/libtpms.mk new file +7
-0@@ -0,0 +1,15 @@ +################################################################################ +# +# libtpms +# +################################################################################ + +LIBTPMS_VERSION = v0.9.6Drop the v from the version, otherwise release-monitoring and CPE/CVE checks
don't work. You can add the v below.
+1
Quoted 6 lines
package/libtpms/libtpms.mk line 8
Quoted 2 lines
package/libtpms/libtpms.mk new file +1
-0+LIBTPMS_SOURCE = $(LIBTPMS_VERSION).tar.gzDon'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
Quoted 6 lines
package/libtpms/libtpms.mk line 9
Quoted 2 lines
package/libtpms/libtpms.mk new file +1
-0+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
Quoted 9 lines
package/libtpms/libtpms.mk line 10
Quoted 2 lines
package/libtpms/libtpms.mk new file +1
-0+LIBTPMS_LICENSE = BSD-3-ClauseIt'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
Quoted 8 lines
package/libtpms/libtpms.mk line 12
Quoted 3 lines
package/libtpms/libtpms.mk new file +2
-0+LIBTPMS_INSTALL_STAGING = YES +LIBTPMS_AUTORECONF = YESYou 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
Quoted 17 lines
Quoted 10 lines
package/libtpms/libtpms.mk new file +3
-0+ +$(eval $(autotools-package)) +$(eval $(host-autotools-package))package/swtpm/0001-comment-out-expect-and-socat.patch new file +0
-0package/swtpm/0001-comment-out-expect-and-socat.patch line 4
Quoted 4 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +4
-0@@ -0,0 +1,46 @@ +From 067c32ba93774b273de9af872b5587798dcabb15 Mon Sep 17 00:00:00 2001 +From: Jarkko Sakkinen <[email protected]> +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
Quoted 45 lines
Quoted 45 lines
package/swtpm/0001-comment-out-expect-and-socat.patch new file +42
-0+ +Signed-off-by: Jarkko Sakkinen <[email protected]> +--- + 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 +package/swtpm/Config.host.in new file +0
-0
Quoted 8 lines
package/swtpm/Config.host.in line 2
Quoted 6 lines
index 0000000000..e77eea2aa5
package/swtpm/Config.host.in new file +2
-0@@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_SWTPM + bool "swtpm-host"Should be "host swtpm"
+1
Quoted 6 lines
package/swtpm/Config.host.in line 4
Quoted 3 lines
package/swtpm/Config.host.in new file +2
-0+ depends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection + select BR2_PACKAGE_GOBJECT_INTROSPECTIONThis 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.
Quoted 8 lines
package/swtpm/Config.host.in line 8
Quoted 5 lines
package/swtpm/Config.host.in new file +4
-0+ help + Compiles SWTPM software TPM emulator for the host. + + https://github.com/stefanberger/swtpmWe want to point to something like documentation, which in this case is the
wiki: https://github.com/stefanberger/swtpm/wiki
+1
Quoted 19 lines
Quoted 19 lines
package/swtpm/swtpm.hash new file +1
-0@@ -0,0 +1 @@ +sha256 7bba52aa41090f75087034fac5fe8daed10c3e7e7234df7c9558849318927f41 v0.8.1.tar.gzpackage/swtpm/swtpm.mk new file +5
-0@@ -0,0 +1,17 @@ +################################################################################ +# +# swtpm +# +################################################################################
Quoted 8 lines
package/swtpm/swtpm.mk line 11
Quoted 6 lines
package/swtpm/swtpm.mk new file +6
-0+ +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 = YESSame comments as for libtpms for the above 5 lines.
+1
Quoted 6 lines
package/swtpm/swtpm.mk line 13
Quoted 3 lines
package/swtpm/swtpm.mk new file +2
-0+ +HOST_SWTPM_DEPENDENCIES = host-libtasn1 host-openssl host-pkgconf host-json-glib host-libtpmsCan you try inside a container (e.g. using utils/docker-run) if this is really
sufficient?
Does it work with podman?
Quoted 5 lines
package/swtpm/swtpm.mk line 14
Quoted 2 lines
package/swtpm/swtpm.mk new file +1
-0+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!
Quoted 7 lines
Regards,
Arnoutpackage/swtpm/swtpm.mk line 17
Quoted 3 lines
package/swtpm/swtpm.mk new file +3
-0+HOST_SWTPM_CONF_OPTS = --without-seccomp + +$(eval $(host-autotools-package))
OK, thanks for the throughout and sane remarks!
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
In reply to Arnout Vandecappelle via buildrootQuoted 10 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Arnout" == Arnout Vandecappelle via buildroot <[email protected]> writes:
Hi Jarkko.
Quoted 2 lines · Jarkko Sakkinen
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, swtpm listens on a unix socket and you can configure qemu to expose that to the VM with the tpm-tis driver:
https://www.qemu.org/docs/master/specs/tpm.html
Quite handy for doing TPM stuff (E.G. CI) without having to mess with real HW.
Signature · 5 lines
Bye, Peter Korsgaard _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH RFC 2/2] package/swtpm: add host package
Quoted 11 lines · Peter Korsgaard
Quoted 10 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Arnout" == Arnout Vandecappelle via buildroot <[email protected]> writes:
Hi Jarkko.
Quoted 2 lines · Jarkko Sakkinen
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?
Quoted 7 lines
yes, swtpm listens on a unix socket and you can configure qemu to expose that to the VM with the tpm-tis driver:
https://www.qemu.org/docs/master/specs/tpm.html
Quite handy for doing TPM stuff (E.G. CI) without having to mess with real HW.
Yeah, for instance Linux based operating systems have started to use TPM2 chips for encrypted boot. And it is pretty generic passive smart card like chip so you have bunch of ways to realize that. BuildRoot is a great tool for prototyping such things.
And I don't see it totally unimaginable that someone would might want to do similar e.g. in a home router some day.
BR, Jarkko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot