[yocto] build ntp with openssl support

Lennart Sorensen lsorense at csclub.uwaterloo.ca
Fri Sep 23 09:16:58 PDT 2016


On Fri, Sep 23, 2016 at 02:19:20PM +0200, Oliver Graute wrote:
> On 22/09/16, Khem Raj wrote:
> > On Thu, Sep 22, 2016 at 12:16 AM, Oliver Graute <oliver.graute at gmail.com> wrote:
> > > On 19/09/16, Oliver Graute wrote:
> > >> On 16/09/16, Andre McCurdy wrote:
> > >> > On Fri, Sep 16, 2016 at 1:24 AM, Oliver Graute <oliver.graute at gmail.com> wrote:
> > >> > > Hello,
> > >> > >
> > >> > > how can I build ntp with openssl support?
> > >> > >
> > >> > > I already created a ntp_%.bbappend file to extend the recipe ntp_4.2.8p4.bb.
> > >> > >
> > >> > > FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
> > >> >
> > >> > You don't really need this line unless you are adding a file to
> > >> > SRC_URI or replacing a file already in SRC_URI with your own version.
> > >> >
> > >> > > PACKAGECONFIG += "openssl"
> > >> >
> > >> > This will enable openssl, but it will also disable all the default
> > >> > PACKAGECONFIG options (cap, debug and refclocks) which is probably not
> > >> > what you want. Try this instead:
> > >> >
> > >> >   PACKAGECONFIG_append = " openssl"
> > >> >
> > >> > Note the space between " and openssl. It's required.
> > >>
> > >> ok now I see the right configure script options during the configuration
> > >> of the ntp build.
> > >>
> > >> --with-openssl-libdir=/home/graute/5411_IBIS/yocto/build-imx6ulevk-nand/tmp/sysroots/imx6ulevk/usr/lib
> > >> --with-openssl-incdir=/home/graute/5411_IBIS/yocto/build-imx6ulevk-nand/tmp/sysroots/imx6ulevk/usr/include
> > >> --with-crypto
> > >>
> > >> But ntp is still build without openssl support. The configure scripts
> > >> can't find the relevant openssl stuff.
> > >>
> > >> configure:34762: checking for openssl library directory
> > >> configure:34802: result: no
> > >> configure:34807: WARNING: libcrypto and libssl not found in any of /home/graute/5411_IBIS/yocto/build-imx6ulevk-nand/tmp/sysroots/imx6ulevk/usr/lib
> > >> configure:34811: checking for openssl include directory
> > >> configure:34833: result: /home/graute/5411_IBIS/yocto/build-imx6ulevk-nand/tmp/sysroots/imx6ulevk/usr/include
> > >> configure:34877: checking if we will use crypto
> > >> configure:34879: result: no
> > >> configure:35109: checking if we want to use OpenSSL's crypto random (if available)
> > >> configure:35119: result: yes
> > >>
> > >> some clue whats wrong here?
> > >
> > > in my sysroots/imx6ulevk/usr/lib I have
> > >
> > > ls -la libssl*
> > >
> > > libssl3.so
> > > libssl.a
> > > libssl.so -> libssl.so.1.0.0
> > > libssl.so.1.0.0
> > >
> > > ls -la libcrypt*
> > >
> > > libcrypt.a
> > > libcrypt_pic.a
> > > libcrypt_pic.map
> > > libcrypt.so -> ../../lib/libcrypt.so.1
> > >
> > >
> > > but no libcrypto.so. I guess thats the reason why my ntp configure
> > > script is complaining.
> > >
> > > Some ideas how to get libcrypto.so in my /usr/lib folder in the yocto
> > > sysroot?
> > >
> > 
> > It seems your openssl is not being compiled correctly. Can you go into
> > builddir or openssl
> > and see if libcrypto.so.1.0.0 is built ? if not then you have to do
> > some digging why its not
> > configuring to build libcrypto
> 
> libcrypto is build by openssl
> 
> openssl/1.0.2d-r0/openssl-1.0.2d$ ls -la  libcrypt*
> libcrypto.a
> libcrypto.pc
> libcrypto.so -> libcrypto.so.1.0.0
> libcrypto.so.1.0.0
> 
> but in my sysroot libcrypto is located in lib NOT in usr/lib
> 
> the ntp recipe in meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p4.bb
> defines:
> 
>  --with-openssl-libdir=${STAGING_LIBDIR}
> 
> I assume I need ${STAGING_BASELIBDIR} here instead. But currently I fail
> with overwriting this in my bbappend file.
> 
> If I use EXTRA_OECONF to overwrite it in my bbappend I see two --with-openssl-libdir
> statements while configuring. The first with /lib the second one with /usr/lib. 
> 
> EXTRA_OECONF  += "\
> 		--with-openssl \
> 		--with-openssl-libdir=${STAGING_BASELIBDIR} \
> 		--with-openssl-incdir=${STAGING_INCDIR} \
> 		--with-crypto \
> "

I have a .bbappend file containing:

# This is wrong in the upstream .bb file and doesn't work so override it
PACKAGECONFIG[openssl] = "--with-crypto, \
                          --without-crypto, \
                          openssl"
PACKAGECONFIG_append = " openssl"

By NOT specifying the directories, it uses pkg-config, which of course
returns both directories correctly.  The ntp configure script can't
imagine that the openssl libraries are in two different directories at
the same time and hence fails to find them even though it searches both
of them, but only trying one at a time.

-- 
Len Sorensen



More information about the yocto mailing list