[odb-users] Support for ODB on QNX

Juan Pablo Samper jp.samper at apex.ai
Thu Aug 20 19:06:52 EDT 2020


Hi Boris,

The workaround works! I managed to compile libodb, libodb-boost, and
libodb-mysql for QNX.
It required patching libcrypto and libmysqlclient to account for some
QNX-specific options.
I still have to test whether our application will compile and run, so I'm
not out of the woods yet.

There is one quirk that would be nice to iron out, though:

I specified config.cxx and config.cxx.target when running bpkg create, but
then when I try to build libz, I got this warning:

$ bpkg build libz
...
libz-1.2.1100+1/build/root.build:6:7: error: cxx and c module target
mismatch
  info: cxx is 'aarch64-nto-qnx7.0.0'
  info: c is 'aarch64-nto-qnx7.0.0'
  info: consider explicitly specifying config.cxx and config.c

It's probably the same underlying mismatch, so I explicitly add it to
build/config.build

config.c = ntoaarch64-gcc
config.c.target = aarch64-nto-qnx7.0.0

I then run bpkg build libz again and everything compiles successfully, but
it prints the following warning:

$ bpkg build libz
...
libz-1.2.1100+1/build/config.build: warning: saving previously inherited
variable config.c
  info: because project
/home/jp.samper/workspace/odb_ws/odb-build/qnx-aarch64-with-c/ no longer
uses it in its configuration
libz-1.2.1100+1/build/config.build: warning: saving previously inherited
variable config.c.target
  info: because project
/home/jp.samper/workspace/odb_ws/odb-build/qnx-aarch64-with-c/ no longer
uses it in its configuration
libz-1.2.1100+1/tests/build/config.build: warning: saving previously
inherited variable config.c
  info: because project
/home/jp.samper/workspace/odb_ws/odb-build/qnx-aarch64-with-c/ no longer
uses it in its configuration
libz-1.2.1100+1/tests/build/config.build: warning: saving previously
inherited variable config.c.target
  info: because project
/home/jp.samper/workspace/odb_ws/odb-build/qnx-aarch64-with-c/ no longer
uses it in its configuration
...
updated libz/1.2.1100+1

I can live with the warning, but it does seem strange that bpkg first asked
me to configure it, and then tells me it no longer uses it.

The actual quirk that would be nice to iron out is that if I try to set
config.c and config.c.target when running bpkg create, bpkg drops it:

qnx-aarch64-with-c/build/config.build: warning: dropping no longer used
variable config.c
  info: variable value: 'ntoaarch64-gcc'
qnx-aarch64-with-c/build/config.build: warning: dropping no longer used
variable config.c.target
  info: variable value: 'aarch64-nto-qnx7.0.0'

Is this all expected or am I missing something?

Thanks!
JP


On Thu, Aug 20, 2020 at 5:34 AM Boris Kolpackov <boris at codesynthesis.com>
wrote:

> Juan Pablo Samper <jp.samper at apex.ai> writes:
>
> > qnx-aarch64-qcc/build/root.build:3:7: error: cxx and bin module target
> > mismatch
> >   info: cxx target is aarch64-nto-qnx7.0.0
> >   info: bin target is aarch64-nto-qnx7.0.0
>
> I looked into this and there is a bug in our handling of target
> triplets (in the first target `nto` is attributed to the system
> while in the second -- to the vendor). I still need to meditate
> on how to best fix this.
>
> In the meantime, you should be able to work around this issue by
> overriding the guessed target:
>
> config.cxx.target=aarch64-nto-qnx7.0.0
>
>
> > W.R.T side note:
> > I think a note in the FAQ like the reply above would be enough to get
> > someone started.
>
> Sounds good, I will add it.
>
>

-- 

Juan Pablo Samper

Software Tooling and Infrastucture

Apex.AI

www.apex.ai


More information about the odb-users mailing list