paparazzi-devel
[Top][All Lists]
Advanced

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

Re: [Paparazzi-devel] Dependency problem


From: Felix Ruess
Subject: Re: [Paparazzi-devel] Dependency problem
Date: Sun, 3 Nov 2013 17:17:15 +0100

Ben,

sure it would be possible to refactor the makefiles further and put some of the rules (including the dep include) in one common Makefile.
I doubt it would make the Makefiles easier to read though...

Jake,

Has there been an update to the gcc-arm-none-eab dependency so it doesn't have to be built from source on the most resent Ubuntu yet?

You don't have to build from source. You can just download the tarball with the pre-built gcc, unpack it and add it to your PATH, so that the binary is found.
This is actually the most common form of "installation" for toolchains like this.
There is also a source tarball, but unless you have special requirements there is no need to build it from source.

Cheers, Felix

On Sat, Nov 2, 2013 at 1:36 PM, Ben Laurie <address@hidden> wrote:
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
>

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