gpsd-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: master fails to build/check


From: Ladislav Michl
Subject: Re: master fails to build/check
Date: Fri, 31 Jan 2020 12:16:25 +0100

On Thu, Jan 30, 2020 at 02:39:05PM -0800, Gary E. Miller wrote:
> Yo Ladislav!
> 
> On Thu, 30 Jan 2020 21:49:55 +0100
> Ladislav Michl <address@hidden> wrote:
> 
> > > Nice.  I think the major scons changes for this cycle are all done.
> > >  I hope some of the cross-compile people also do some tests.  
> > 
> > Care to check more scons questions asked few months ago?
> > https://lists.nongnu.org/archive/html/gpsd-dev/2019-11/msg00004.html
> 
> Yeah, I remember those.  Those were alst cycle, I'm talking about this
> cycle.

Sure, there's no way to fix things in the past, but those questions
are still valid.

> Way too many patches mushed together that made no sense to me.
> 
> I don't cross-compile, but others that do have not the problems you
> bring up, so I suspect some misunderstandings.
> 
> The sysroot patch makes no sense.  As used by scons, sysroot is a
> on the command line, yet you pull it from a non standard environment
> variable.  Can't do both.  Does not compute.

I'm pulling it the same way as other options from the very same group
of options are pulled. See bellow.

> The other patch removes an important build flag:
> 
> -    if config.env['python'] and config.env['target_python']:
>         ^^^^^^^^^^^^^^^^^^^^
> 
> That is how SConstruct flags not to do any python thing.
> 
> Patches are great, but they can't just solve your problem and break
> things for others.
> 
> If you want, let's discuss what the confusion is for the sysroot variable
> first.  My quick take is you just did not notice it belongs on the
> command line as an option.

Fair enough. sysroot is listed in nonboolopts together with gpsd_group,
gpsd_user, max_clients, max_devices, (those seems not to be used anywhere,
btw) and others like prefix, python_coverage, target_python, etc.
Values of these variables are read as env['python_coverage'] and
my build script just does:
scons -C 
/home/ladis/src/C-ITS.Devices.O2.Firmware/platform-imx6/build-target/gpsd-3.20 \
        aivdm=no ashtech=no bluez=no clientdebug=no control_socket=yes 
controlsend=yes \
        coveraging=no dbus_export=yes debug=no earthmate=no evermore=no 
force_global=yes \
        fury=no fv18=no garmin=no garmintxt=no geostar=no gpsclock=no gpsd=yes \
        gpsdclients=yes greis=no implicit_link=yes isync=no itrax=no 
libdir=/usr/lib \
        libgpsmm=no magic_hat=no manbuild=no minimal=yes mtk3301=no navcom=no 
ncurses=yes \
        netfeed=yes nmea0183=yes nmea2000=yes nostrip=yes ntrip=no 
oceanserver=no \
        oncore=no oscillator=no passthrough=no prefix=/usr profiling=no 
python=yes \
        python_libdir=/usr/lib/python3.7 qt=no reconfigure=yes rtcm104v2=no 
rtcm104v3=no \
        shared=yes shm_export=yes sirf=no skytraq=no socket_export=yes 
squelch=yes \
        superstar2=no sysconfdir=/etc \
        
sysroot=/home/ladis/src/C-ITS.Devices.O2.Firmware/platform-imx6/sysroot-target \
        systemd=yes target=arm-v7a-linux-gnueabihf \
        
target_python=/home/ladis/src/C-ITS.Devices.O2.Firmware/platform-imx6/sysroot-cross/bin/python3.7
 \
        timeservice=no tnt=no tripmate=no tsip=no ublox=yes 
udevdir=/usr/lib/udev usb=no xgps=no -j16
as you can see, sysroot is listed on the command line the same way as
other options [*]. So now that sysroot value is used like this
(SConstruct line 642):
# while this makes perfect sense
if env['target']:
    for (name, toolname) in devenv:
        env[name] = env['target'] + '-' + toolname
# why this?
if env['sysroot']:
    env.MergeFlags({"CFLAGS": ["--sysroot=%s" % env['sysroot']]})
    env.MergeFlags({"LINKFLAGS": ["--sysroot=%s" % env['sysroot']]})

Every single cross-compiler I've worked with so far is aware of it's
own headers and passing --sysroot= here makes it blind.

- if SConstruct uses sysroot as a toolchain sysroot it is the only
  tool doing so this way and question is why it is doing so.
  However it will work if:
  - all libraries gpsd depends on are installed into toolchains sysroot.
    This pollutes toolchain installation.
  - toolchain sysroot is installed into staging area and then all
    libraries are installed here. Unusual.
- if SConstruct is using sysroot as all other packages, passing --sysroot
  to toolchain is just wrong.

I would deeply appreciate if someone could explain me how is this
SConstruct thing supposed to work.

Thank you,
        ladis

[*] See here: https://git.pengutronix.de/cgit/ptxdist/tree/rules/gpsd.make#n55
    and as PTXdist developers are trying to minimize out of tree patches and
    upstream them, I hope we can find solution.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]