paparazzi-devel
[Top][All Lists]
Advanced

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

Re: [Paparazzi-devel] Dependency problem


From: Ben Laurie
Subject: Re: [Paparazzi-devel] Dependency problem
Date: Sat, 2 Nov 2013 10:18:30 +0000

On 2 November 2013 03:17, Ben Laurie <address@hidden> wrote:
> On 1 November 2013 17:44, Felix Ruess <address@hidden> wrote:
>> Hi Ben,
>>
>> I believe that with latest commit 8807918 to master the dependencies should
>> be generated correctly.
>> Would be nice if you could double-check if it also works for you.
>
> Thanks. That looks like an improvement. I will try to find time over
> the weekend.

Yes, that seems to work fine.

>
>>
>> Cheers, Felix
>>
>>
>> On Tue, Oct 29, 2013 at 9:04 PM, Ben Laurie <address@hidden> wrote:
>>>
>>> On 29 October 2013 20:00, Felix Ruess <address@hidden> wrote:
>>> > Gotta go, but if I look at the generated .depend file in var/ac_name/ap
>>> > the
>>> > directory prefix is there and seems to be correct at first glance...
>>> > some
>>> > paths are absolute and some are relative though...
>>>
>>> prefixes on the .h files are correct. The problem is with the .o (i.e.
>>> to the left of the : ).
>>>
>>> >
>>> >
>>> > On Tue, Oct 29, 2013 at 8:51 PM, Felix Ruess <address@hidden>
>>> > wrote:
>>> >>
>>> >> Or something like the last solution mentioned here:
>>> >> http://scottmcpeak.com/autodepend/autodepend.html
>>> >>
>>> >>
>>> >> On Tue, Oct 29, 2013 at 8:47 PM, Felix Ruess <address@hidden>
>>> >> wrote:
>>> >>>
>>> >>> Not entirely sure, but there is probably a way to use the -MT option
>>> >>> together with .d dependency files:
>>> >>>
>>> >>>
>>> >>> http://stackoverflow.com/questions/97338/gcc-dependency-generation-for-a-different-output-directory
>>> >>>
>>> >>>
>>> >>> On Tue, Oct 29, 2013 at 8:30 PM, Ben Laurie <address@hidden> wrote:
>>> >>>>
>>> >>>> On 29 October 2013 17:51, Ben Laurie <address@hidden> wrote:
>>> >>>> > On 29 October 2013 17:36, Felix Ruess <address@hidden>
>>> >>>> > wrote:
>>> >>>> >>
>>> >>>> >>
>>> >>>> >>
>>> >>>> >> On Tue, Oct 29, 2013 at 6:14 PM, Ben Laurie <address@hidden> wrote:
>>> >>>> >>>
>>> >>>> >>> On 29 October 2013 14:09, Felix Ruess <address@hidden>
>>> >>>> >>> wrote:
>>> >>>> >>> > Why wouldn't it be legal?
>>> >>>> >>> > The C preprocessor substitutes GPS_TYPE_H by the appropriate
>>> >>>> >>> > header file
>>> >>>> >>> > and
>>> >>>> >>> > then it is included as usual.
>>> >>>> >>>
>>> >>>> >>> Sure, I get it, I just find it mildly surprising.
>>> >>>> >>
>>> >>>> >>
>>> >>>> >> Well, we want to be able to simply include "subsystems/gps.h" in
>>> >>>> >> other parts
>>> >>>> >> of the code and not care about which GPS implementation is
>>> >>>> >> actually
>>> >>>> >> used.
>>> >>>> >> This makes that possible.
>>> >>>> >>
>>> >>>> >>> But I find it even more surprising that it doesn't appear to be
>>> >>>> >>> picked
>>> >>>> >>> up by dependency generation.
>>> >>>> >>
>>> >>>> >>
>>> >>>> >> Would be great if you could look into this, I'm a bit short on
>>> >>>> >> time
>>> >>>> >> right
>>> >>>> >> now.
>>> >>>> >
>>> >>>> > Yeah, I'm going to.
>>> >>>> >
>>> >>>> >> Hint: maybe we should only use the -M flag of gcc instead of -MM
>>> >>>>
>>> >>>> OK. That's not the problem.
>>> >>>>
>>> >>>> The problem is that gcc -MM (or -M or anything else) strips the
>>> >>>> directory off the front. You put it back as $(OBJDIR), using sed, but
>>> >>>> that's not right - for example, gps_ubx.o needs to be in
>>> >>>> $(OBJDIR)/subsystems/gps.
>>> >>>>
>>> >>>> AFAICS, there's no way to fix this easily. I think the only answer is
>>> >>>> a script that generates dependencies a file at a time and puts the
>>> >>>> subdirectories back in. I'd normally write such a thing in Perl or
>>> >>>> Python, but I'm betting you don't want to add those as dependencies.
>>> >>>> And I don't know how to write ML...
>>> >>>>
>>> >>>> Suggestions?
>>> >>>>
>>> >>>> >>
>>> >>>> >>>
>>> >>>> >>> > As mentioned in a previous mail:
>>> >>>> >>> > Dependency generation is specified in the appropriate Makefile,
>>> >>>> >>> > e.g. for
>>> >>>> >>> > the
>>> >>>> >>> > ARDrone in conf/Makefile.omap Line185
>>> >>>> >>>
>>> >>>> >>> Aha. Thanks.
>>> >>>> >>>
>>> >>>> >>> >
>>> >>>> >>> >
>>> >>>> >>> > On Tue, Oct 29, 2013 at 2:33 PM, Ben Laurie <address@hidden>
>>> >>>> >>> > wrote:
>>> >>>> >>> >>
>>> >>>> >>> >> On 29 October 2013 12:33, Felix Ruess <address@hidden>
>>> >>>> >>> >> wrote:
>>> >>>> >>> >> > I think that is because gps_ubx.h is only "transitively"
>>> >>>> >>> >> > included via
>>> >>>> >>> >> > gps.h
>>> >>>> >>> >> > using #include GPS_TYPE_H
>>> >>>> >>> >>
>>> >>>> >>> >> Arg!
>>> >>>> >>> >>
>>> >>>> >>> >> I didn't even know it was legal to do includes like this. But
>>> >>>> >>> >> surprised they're not discovered. I couldn't track down
>>> >>>> >>> >> where/how
>>> >>>> >>> >> dependencies are handled - any hints?
>>> >>>> >>> >>
>>> >>>> >>> >> >
>>> >>>> >>> >> >
>>> >>>> >>> >> > On Tue, Oct 29, 2013 at 1:18 PM, Ben Laurie <address@hidden>
>>> >>>> >>> >> > wrote:
>>> >>>> >>> >> >>
>>> >>>> >>> >> >> On 29 October 2013 12:03, Christophe De Wagter
>>> >>>> >>> >> >> <address@hidden>
>>> >>>> >>> >> >> wrote:
>>> >>>> >>> >> >> > paparazzi (or actually make) tracks dependencies quite
>>> >>>> >>> >> >> > well,
>>> >>>> >>> >> >> > however,
>>> >>>> >>> >> >> > make
>>> >>>> >>> >> >> > does not understand the xml-configuration well.
>>> >>>> >>> >> >>
>>> >>>> >>> >> >> Hmm. When I edit gps_ubx.h and do:
>>> >>>> >>> >> >>
>>> >>>> >>> >> >> % make AIRCRAFT=ardrone2_raw ap.compile
>>> >>>> >>> >> >>
>>> >>>> >>> >> >> it doesn't recompile anything. It should.
>>> >>>> >>> >> >>
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> >  - So if for instance you change your xml and add a
>>> >>>> >>> >> >> > <define
>>> >>>> >>> >> >> > ... >
>>> >>>> >>> >> >> > somewhere,
>>> >>>> >>> >> >> > make does not understand which control or driver files
>>> >>>> >>> >> >> > are
>>> >>>> >>> >> >> > affected.
>>> >>>> >>> >> >> > You
>>> >>>> >>> >> >> > then MUST clean before recompile.
>>> >>>> >>> >> >> >  - Even worse: if you change the board file to another
>>> >>>> >>> >> >> > arch
>>> >>>> >>> >> >> > in the
>>> >>>> >>> >> >> > middle of
>>> >>>> >>> >> >> > some work, it will only rebuild the changed c files so
>>> >>>> >>> >> >> > you
>>> >>>> >>> >> >> > can
>>> >>>> >>> >> >> > have
>>> >>>> >>> >> >> > object
>>> >>>> >>> >> >> > files compiled with different architectures being linked
>>> >>>> >>> >> >> > (which
>>> >>>> >>> >> >> > does
>>> >>>> >>> >> >> > fortunately not work)
>>> >>>> >>> >> >> >  - And if you change a module.xml, the build system does
>>> >>>> >>> >> >> > not
>>> >>>> >>> >> >> > necessarly
>>> >>>> >>> >> >> > know
>>> >>>> >>> >> >> > it should recompile (whjile for subsystems it does know
>>> >>>> >>> >> >> > as
>>> >>>> >>> >> >> > it is
>>> >>>> >>> >> >> > makefile)
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> > Our rules of thumb:
>>> >>>> >>> >> >> >  - make clean anytime you need to be really sure
>>> >>>> >>> >> >> >  - certainly clean after every xml change
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> > PS: thanks for the pull request.
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> > -Christophe
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> > On Tue, Oct 29, 2013 at 12:01 PM, Ben Laurie
>>> >>>> >>> >> >> > <address@hidden>
>>> >>>> >>> >> >> > wrote:
>>> >>>> >>> >> >> >>
>>> >>>> >>> >> >> >> On 28 October 2013 12:50, Felix Ruess
>>> >>>> >>> >> >> >> <address@hidden>
>>> >>>> >>> >> >> >> wrote:
>>> >>>> >>> >> >> >> > Hi Ben,
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> > seems that this is because the gps_ubx_ucenter.c file
>>> >>>> >>> >> >> >> > is
>>> >>>> >>> >> >> >> > INCLUDED
>>> >>>> >>> >> >> >> > in
>>> >>>> >>> >> >> >> > subsystems/gps/gps_ubx.c Line 271 rather than being
>>> >>>> >>> >> >> >> > added
>>> >>>> >>> >> >> >> > as a
>>> >>>> >>> >> >> >> > normal
>>> >>>> >>> >> >> >> > source
>>> >>>> >>> >> >> >> > file.
>>> >>>> >>> >> >> >> > While this was probably easier to implement (to allow
>>> >>>> >>> >> >> >> > access to
>>> >>>> >>> >> >> >> > ubx
>>> >>>> >>> >> >> >> > internals to the ucenter module) it's not very nice.
>>> >>>> >>> >> >> >> > Christophe may have more details as he wrote the
>>> >>>> >>> >> >> >> > gps_ubx_ucenter
>>> >>>> >>> >> >> >> > module.
>>> >>>> >>> >> >> >>
>>> >>>> >>> >> >> >> I am sending a pull request that fixes this.
>>> >>>> >>> >> >> >>
>>> >>>> >>> >> >> >> In general, though, it seems paparazzi doesn't track
>>> >>>> >>> >> >> >> dependencies.
>>> >>>> >>> >> >> >> Am
>>> >>>> >>> >> >> >> I right, or am I missing something?
>>> >>>> >>> >> >> >>
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> > Cheers, Felix
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> > On Sat, Oct 26, 2013 at 7:55 PM, Ben Laurie
>>> >>>> >>> >> >> >> > <address@hidden>
>>> >>>> >>> >> >> >> > wrote:
>>> >>>> >>> >> >> >> >>
>>> >>>> >>> >> >> >> >> If I modify gps_ubx_center.c, then rebuild
>>> >>>> >>> >> >> >> >> ardrone2_raw,
>>> >>>> >>> >> >> >> >> it
>>> >>>> >>> >> >> >> >> does
>>> >>>> >>> >> >> >> >> not
>>> >>>> >>> >> >> >> >> recompile that file...
>>> >>>> >>> >> >> >> >>
>>> >>>> >>> >> >> >> >> _______________________________________________
>>> >>>> >>> >> >> >> >> Paparazzi-devel mailing list
>>> >>>> >>> >> >> >> >> address@hidden
>>> >>>> >>> >> >> >> >>
>>> >>>> >>> >> >> >> >>
>>> >>>> >>> >> >> >> >> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> > _______________________________________________
>>> >>>> >>> >> >> >> > Paparazzi-devel mailing list
>>> >>>> >>> >> >> >> > address@hidden
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >> > https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >> >> >> >
>>> >>>> >>> >> >> >>
>>> >>>> >>> >> >> >> _______________________________________________
>>> >>>> >>> >> >> >> Paparazzi-devel mailing list
>>> >>>> >>> >> >> >> address@hidden
>>> >>>> >>> >> >> >>
>>> >>>> >>> >> >> >> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >> > _______________________________________________
>>> >>>> >>> >> >> > Paparazzi-devel mailing list
>>> >>>> >>> >> >> > address@hidden
>>> >>>> >>> >> >> > https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >> >> >
>>> >>>> >>> >> >>
>>> >>>> >>> >> >> _______________________________________________
>>> >>>> >>> >> >> Paparazzi-devel mailing list
>>> >>>> >>> >> >> address@hidden
>>> >>>> >>> >> >> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >> >
>>> >>>> >>> >> >
>>> >>>> >>> >> >
>>> >>>> >>> >> > _______________________________________________
>>> >>>> >>> >> > Paparazzi-devel mailing list
>>> >>>> >>> >> > address@hidden
>>> >>>> >>> >> > https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >> >
>>> >>>> >>> >>
>>> >>>> >>> >> _______________________________________________
>>> >>>> >>> >> Paparazzi-devel mailing list
>>> >>>> >>> >> address@hidden
>>> >>>> >>> >> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >
>>> >>>> >>> >
>>> >>>> >>> >
>>> >>>> >>> > _______________________________________________
>>> >>>> >>> > Paparazzi-devel mailing list
>>> >>>> >>> > address@hidden
>>> >>>> >>> > https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>> >
>>> >>>> >>>
>>> >>>> >>> _______________________________________________
>>> >>>> >>> Paparazzi-devel mailing list
>>> >>>> >>> address@hidden
>>> >>>> >>> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>
>>> >>>> >>
>>> >>>> >>
>>> >>>> >> _______________________________________________
>>> >>>> >> Paparazzi-devel mailing list
>>> >>>> >> address@hidden
>>> >>>> >> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>> >>
>>> >>>>
>>> >>>> _______________________________________________
>>> >>>> Paparazzi-devel mailing list
>>> >>>> address@hidden
>>> >>>> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >>>
>>> >>>
>>> >>
>>> >
>>> >
>>> > _______________________________________________
>>> > Paparazzi-devel mailing list
>>> > address@hidden
>>> > https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>> >
>>>
>>> _______________________________________________
>>> Paparazzi-devel mailing list
>>> address@hidden
>>> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>
>>
>>
>> _______________________________________________
>> Paparazzi-devel mailing list
>> address@hidden
>> https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>



reply via email to

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