[Buildroot] [PATCH] package/jitterentropy-library: fix build failure due to missing -fPIC

Matthew Weber matthew.weber at rockwellcollins.com
Fri Oct 25 08:17:09 UTC 2019


Arnout, Giulio,

On Thu, Oct 24, 2019 at 7:03 AM Matthew Weber
<matthew.weber at rockwellcollins.com> wrote:
>
> Arnout, Giulio,
>
> On Wed, Oct 23, 2019 at 9:28 PM Matthew Weber
> <matthew.weber at rockwellcollins.com> wrote:
> >
> > Arnout,
> >
> > On Wed, Oct 23, 2019 at 7:02 PM Matthew Weber
> > <matthew.weber at rockwellcollins.com> wrote:
> > >
> > > On Wed, Oct 23, 2019 at 4:56 PM Arnout Vandecappelle <arnout at mind.be> wrote:
> > > >
> > > >
> > > >
> > > > On 23/10/2019 13:06, Giulio Benetti wrote:
> > > > > jitterentropy-library needs -fPIC flag to build so add it when building.
> > > > >
> > > > > Fixes:
> > > > > http://autobuild.buildroot.net/results/505/5059207ec9ab0b502717626cc84956dafd0c3c32/
> > > > >
> > > > > Signed-off-by: Giulio Benetti <giulio.benetti at benettiengineering.com>
> > > > > ---
> > > > >  package/jitterentropy-library/jitterentropy-library.mk | 5 ++++-
> > > > >  1 file changed, 4 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/package/jitterentropy-library/jitterentropy-library.mk b/package/jitterentropy-library/jitterentropy-library.mk
> > > > > index 4e791e19dd..b8db1ccb80 100644
> > > > > --- a/package/jitterentropy-library/jitterentropy-library.mk
> > > > > +++ b/package/jitterentropy-library/jitterentropy-library.mk
> > > > > @@ -10,8 +10,11 @@ JITTERENTROPY_LIBRARY_LICENSE = GPL-2.0 or BSD-3-Clause
> > > > >  JITTERENTROPY_LIBRARY_LICENSE_FILES = COPYING COPYING.bsd COPYING.gplv2
> > > > >  JITTERENTROPY_LIBRARY_INSTALL_STAGING = YES
> > > > >
> > > > > +JITTERENTROPY_LIBRARY_CFLAGS = $(TARGET_CFLAGS)
> > > > > +JITTERENTROPY_LIBRARY_CFLAGS += -fPIC
> > > >
> > > >  This is not good. Options like fPIC should be added by the package build system
> > > > itself.
> > >
> > > Upstream was really receptive to other changes.  Giulio, do you want
> > > to submit it?  If not I can.
> >
> > Oops looking close are this it looks like what Arnout mentioned about
> > moving the TARGET_CONFIGURE_OPTS to be part of the env.  Guessing that
> > will create some other failures with overlapping hardening and ssp
> > flags but then the intent of the O0 and fPIC come through.
>
> This snippet works to resolve the failure.
>
>       3 --- a/package/jitterentropy-library/jitterentropy-library.mk
>       4 +++ b/package/jitterentropy-library/jitterentropy-library.mk
>       5 @@ -11,7 +11,7 @@ JITTERENTROPY_LIBRARY_LICENSE_FILES =
> COPYING COPYING.bsd COPYING.gplv2
>       6  JITTERENTROPY_LIBRARY_INSTALL_STAGING = YES
>       7
>       8  define JITTERENTROPY_LIBRARY_BUILD_CMDS
>       9 -       $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)
>      10 +       $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
>      11  endef
>

I've sent a v2 of this one proposing the reordering for now.
http://patchwork.ozlabs.org/patch/1183895/

> >
> > >
> > > >
> > > > > +
> > > > >  define JITTERENTROPY_LIBRARY_BUILD_CMDS
> > > > > -     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)
> > > > > +     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(JITTERENTROPY_LIBRARY_CFLAGS)"
> > > >
> > > >  And here we see the actual issue: TARGET_CONFIGURE_OPTS should be passed in the
> > > > environment instead of as arguments, so the Makefile can add its stuff to it.
> > > >
> > > >  Hm, but maybe there are indeed good reasons to override the CFLAGS, because the
> > > > fstack-protector-all requires support from the toolchain. On the other hand, we
> > > > probably *do* want to keep the -O0 and -fwrapv flags...
> > > >
> > > >  Also, I notice now that it always builds both a static and a shared library,
> > > > even on BR2_STATIC_LIBS. That will probably trigger a different build failure...
> > > >
> > >
> > > I'll take a look at some other packages to see how we didi this.
> > > Right not upstream isn't setup to break the two apart.
> > >
> >
> > It doesn't look like the current upstream pkg Makefile is installing
> > the static library beyond creating it in the local build folder.  As
> > rng-tools solely uses it as shared, do you think I can just go with
> > adding "depends on !BR2_STATIC_LIBS" to the jitter-entropy-library
> > Config.in?  It looks like in rng-tools the jitter support is just
> > disabled when it can't find the library so in the static case it
> > shouldn't break the build.  I'd just need to also add a conditional on
> > the  jitter-entropy-library dependency in rng-tools based on
> > BR2_STATIC_LIBS.
> >
>
> Something like this?
> https://pastebin.com/aeWL40Yr

Ignore, +Fabrice Fontaine handled this in
http://patchwork.ozlabs.org/project/buildroot/list/?series=138439

Regards,
Matt



More information about the buildroot mailing list