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 17:36:53 +0000

On 2 November 2013 12:55, Felix Ruess <address@hidden> wrote:
>
>
>
> On Sat, Nov 2, 2013 at 11:18 AM, Ben Laurie <address@hidden> wrote:
>>
>> 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.
>
>
> Thanks, applied to v5.0 as well..

Cool. I noticed you had to apply essentially the same change in
multiple places. I was wondering if it would be possible to refactor
that.

>
>>
>>
>> >
>> >>
>> >> 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
>> >>
>>
>> _______________________________________________
>> 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]