Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Dimi Tomov <dimi@tpm.dev>
To: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH 1/1] package/wolftpm: new package
Date: Thu, 02 Jun 2022 00:03:39 +0300	[thread overview]
Message-ID: <4499743c804d1a5a091055a8bb58be72@tpm.dev> (raw)
In-Reply-To: <20220601225031.79aca2b0@windsurf>

Hello Thomas,

I have this working on a STM32MP157F-DK2 board with a ST33 TPM.

https://gist.github.com/tomoveu/8f0519cb8d75a5374a999f29640cf45c

Could it be that because I am using $make wolftpm-rebuild is saving me 
from seeing the same errors?

ps: Do I need to submit v4?

Thanks,

Dimi

On 2022-06-01 11:50 PM, Thomas Petazzoni via buildroot wrote:
> Hello Dimitar,
> 
> On Wed,  1 Jun 2022 22:47:46 +0300
> Dimi Tomov <dimi@tpm.dev> wrote:
> 
>> From: Dimitar Tomov <dimi@tpm.dev>
>> 
>> wolfTPM is an open-source TPM 2.0 stack with backward API 
>> compatibility,
>> designed for embedded use. It is highly portable, and has native 
>> support
>> for Linux. wolfTPM has a compact code size with low resource usage.
>> 
>> Signed-off-by: Dimitar Tomov <dimi@tpm.dev>
> 
> I've applied to our next branch, but after doing several additional
> fixes. Also, there is something to be fixed upstream, see below.
> 
>> diff --git a/DEVELOPERS b/DEVELOPERS
>> index 71cc3da6d7..c123d1b915 100644
>> --- a/DEVELOPERS
>> +++ b/DEVELOPERS
>> @@ -3072,3 +3072,6 @@ F:	package/quazip/
>>  F:	package/shapelib/
>>  F:	package/simple-mail/
>>  F:	package/tinc/
>> +
>> +N:	Dimi Tomov <dimi@tpm.dev>
>> +F:	package/wolftpm/
> 
> Entries in this file are alphabetically sorted, so you shouldn't have
> added yourself at the end, but at the "right" place.
> 
>> diff --git a/package/wolftpm/Config.in b/package/wolftpm/Config.in
>> new file mode 100644
>> index 0000000000..23932a4170
>> --- /dev/null
>> +++ b/package/wolftpm/Config.in
>> @@ -0,0 +1,15 @@
>> +config BR2_PACKAGE_WOLFTPM
>> +	bool "wolftpm"
>> +	depends on BR2_TOOLCHAIN_HAS_THREADS
> 
> You forgot:
> 
> 	depends on !BR2_STATIC_LIBS
> 
> which you need to replicate because you select BR2_PACKAGE_WOLFSSL_ALL.
> 
>> +	select on BR2_PACKAGE_WOLFSSL
>> +	select on BR2_PACKAGE_WOLFSSL_ALL
> 
> I'm wondering if you tested this, because "select on" doesn't exist in
> Kconfig. It's either "select" or "depends on", but not a mix of both.
> 
>> +	help
>> +	  wolfTPM is a portable, open-source TPM 2.0 stack with
>> +	  backward API compatibility, designed for embedded use.
>> +	  No external dependencies, compact code size with low
>> +	  resource usage.
>> +
>> +	  https://www.wolfssl.com/
>> +
>> +comment "wolftpm needs a toolchain w/ threads"
>> +	depends on !BR2_TOOLCHAIN_HAS_THREADS
> 
> The comment had to be adjusted due to the !BR2_STATIC_LIBS dependency.
> 
>> diff --git a/package/wolftpm/wolftpm.hash 
>> b/package/wolftpm/wolftpm.hash
>> new file mode 100644
>> index 0000000000..6dbf143ffe
>> --- /dev/null
>> +++ b/package/wolftpm/wolftpm.hash
>> @@ -0,0 +1,2 @@
>> +# Hash from 
>> https://github.com/wolfSSL/wolfTPM/archive/refs/tags/v2.3.1.tar.gz
>> +sha256  
>> f0d7c095491ac2cc9e44aa4ac3c22febf15942ef080431d8b43a9d0312ca6567  
>> wolftpm-2.3.1.tar.gz
> 
> Gaah, I'm noticing now that the hash of the LICENSE file is missing,
> and I didn't realize before applying. I will fix this up.
> 
>> diff --git a/package/wolftpm/wolftpm.mk b/package/wolftpm/wolftpm.mk
>> new file mode 100644
>> index 0000000000..1e1ddc13e3
>> --- /dev/null
>> +++ b/package/wolftpm/wolftpm.mk
>> @@ -0,0 +1,29 @@
>> +################################################################################
>> +#
>> +# wolftpm
>> +#
>> +################################################################################
>> +
>> +WOLFTPM_VERSION = 2.3.1
>> +WOLFTPM_SITE = $(call github,wolfSSL,wolfTPM,v$(WOLFTPM_VERSION))
>> +WOLFTPM_INSTALL_STAGING = YES
>> +WOLFTPM_LICENSE = GPL-2.0+
>> +WOLFTPM_LICENSE_FILES = LICENSE
>> +WOLFTPM_CPE_ID_VENDOR = wolfssl
>> +
>> +WOLFTPM_DEPENDENCIES = host-pkgconf
> 
> I've added:
> 
> WOLFTPM_CONFIG_SCRIPTS = wolftpm-config
> 
> so that the wolftpm-config script installed in $(STAGING_DIR)/usr/bin
> returns correct results.
> 
>> +# wolfTPM's source code is released without a configure script,
>> +# therefore we need autoreconf
>> +WOLFTPM_AUTORECONF = YES
>> +
>> +WOLFTPM_CONF_OPTS = --disable-examples --enable-devtpm
> 
> With just this, the build was failing for me, as wolftpm couldn't find
> wolfssl. I had to add:
> 
>         --with-wolfcrypt=$(STAGING_DIR)/usr
> 
>> +define WOLFTPM_CONFIG_RPATH
> 
> I renamed the hook to WOLFTPM_TOUCH_CONFIG_RPATH
> 
>> +    mkdir $(@D)/build-aux
> 
> Changed to "mkdir -p" so that the hook can be re-executed without
> failing.
> 
>> +    touch $(@D)/build-aux/config.rpath
>> +endef
>> +# Fix for autoconf bug with config.rconf
> 
> There is no autoreconf bug. The bug is in the code of wolftpm. In the
> configure.ac script line 165, it uses the AC_LIB_HAVE_LINKFLAGS m4
> macro, which comes from gnulib. This macro is documented at, which
> specifies:
> 
> Example of using AC_LIB_LINKFLAGS
> 
> Suppose you want to use libz, the compression library.
> 
>    (1)  In configure.ac you add the line
> 
>       AC_CONFIG_AUX_DIR([build-aux])
>       AC_LIB_LINKFLAGS([z])
> 
>     Note that since the AC_LIB_LINKFLAGS invocation modifies the
>     CPPFLAGS, it should precede all tests that check for header files,
>     declarations, structures or types.
> 
> 
>     (2) To the package’s build-aux directory you add the file
>     config.rpath, also part of the Gnulib havelib module. (gnulib-tool
>     will usually do this for you automatically.)
> 
> 
>     (3) In Makefile.in you add @LIBZ@ to the link command line of your
>     program. Or, if you are using Automake, you add $(LIBZ) to the
>     LDADD variable that corresponds to your program.
> 
> See point (2) ? This is what wasn't done correctly in wolftpm when
> integrating this gnulib m4 macro.
> 
> Ideally this should be fixed in the upstream wolftpm code. However, to
> be honest, I'm not even sure why your configure.ac file is using
> AC_LIB_HAVE_LINKFLAGS(). You should probably just migrate to use
> pkg-config.
> 
> Thanks for your contribution!
> 
> Thomas

-- 
Founder of TPM.dev
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2022-06-01 21:03 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-08 21:20 [Buildroot] [PATCH 1/1] package/wolftpm: new package, wolfTPM library for TPM2.0 Dimi Tomov
2022-05-17 19:05 ` Dimi Tomov
2022-05-30 20:30 ` [Buildroot] [PATCH 1/2] " Dimi Tomov
2022-05-30 20:30   ` [Buildroot] [PATCH 2/2] v2: Fix typo in the hash file and create path before using touch Dimi Tomov
2022-05-30 21:32     ` Thomas Petazzoni via buildroot
2022-05-30 21:31   ` [Buildroot] [PATCH 1/2] package/wolftpm: new package, wolfTPM library for TPM2.0 Thomas Petazzoni via buildroot
2022-06-01 19:47   ` [Buildroot] [PATCH 1/1] package/wolftpm: new package Dimi Tomov
2022-06-01 19:51     ` Dimi Tomov
2022-06-01 20:50     ` Thomas Petazzoni via buildroot
2022-06-01 21:03       ` Dimi Tomov [this message]
2022-06-01 21:36         ` Thomas Petazzoni via buildroot
2022-06-02  5:01           ` Dimi Tomov

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=4499743c804d1a5a091055a8bb58be72@tpm.dev \
    --to=dimi@tpm.dev \
    --cc=buildroot@buildroot.org \
    --cc=thomas.petazzoni@bootlin.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox