Re: Scons Implicity Dependency not found issue
Hua Yanghao <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAPTzt1DURQG=5WPwk-HBV8gchGHiUm8nxA0MZ3HLpbEQsX+Y=Q@mail.gmail.com> |
It looks like this time even though I reproduced the issue it is not really sticky and always passes on a second run. I have re-run with the trace: https://pastebin.com/2ziqM4ri The part that is important is there is one file, e.g. included <io.h>, and in one version io.h is in folder A/io.h. And then there is a restructure of file and io.h moved to folder B/io.h. Folder A is in search path at commit X, build pass. Folder B is in search path at commit Y, build pass too. However if you first build on commit X (pass) and then switch to commit Y and build again, it fails like above. @Bill Deegan <[email protected]> please help to take a look the trace file and let me know if more experiment I can do. At least now I can reproduce it reliably on-demand. On Wed, Oct 17, 2018 at 10:06 PM Hua Yanghao <[email protected]> wrote: > I finally reproduced this issue, however this --taskmastertrace=trace.log > the compilation passes instead of failing. Thoughts? > > hua@huyangha-mobl:~/git/usw-abc $ ./run configs/pangu.py > Running : ./tools/scons -Q config=configs/pangu.py > INFO: Processing target usw ... Done. > INFO: usw_config completed in 0.19 seconds. > __CONFIG build/configs/pangu/usw/config/config.h > ____SHCC build/configs/pangu/usw/firmware/arch/weak.os > ______AR build/configs/pangu/usw/firmware/arch/libdefault.o > __RANLIB build/configs/pangu/usw/firmware/arch/libdefault.o > ____SHCC build/configs/pangu/usw/firmware/arch/pangu/lib.os > ____SHCC build/configs/pangu/usw/firmware/arch/pangu/main.os > scons: *** [build/configs/pangu/usw/firmware/arch/pangu/test.os] Implicit > dependency `build/configs/pangu/usw/firmware/arch/pangu/include/io.h' not > found, needed by target > `build/configs/pangu/usw/firmware/arch/pangu/test.os'. > hua@huyangha-mobl:~/git/usw-abc $ ./run configs/pangu.py > --taskmastertrace=trace.log > Running : ./tools/scons -Q config=configs/pangu.py > --taskmastertrace=trace.log > INFO: Processing target usw ... Done. > INFO: usw_config completed in 0.21 seconds. > __CONFIG build/configs/pangu/usw/config/config.h > ____SHCC build/configs/pangu/usw/firmware/arch/pangu/test.os > ____SHCC build/configs/pangu/usw/firmware/boards/weak.os > ______AR build/configs/pangu/usw/firmware/boards/libdefault.o > __RANLIB build/configs/pangu/usw/firmware/boards/libdefault.o > ____SHCC build/configs/pangu/usw/firmware/boards/pangu/board.os > ____SHCC build/configs/pangu/usw/firmware/common/cpu.os > ____SHCC build/configs/pangu/usw/firmware/common/weak.os > ____SHCC build/configs/pangu/usw/firmware/common/log.os > ______AR build/configs/pangu/usw/firmware/common/libdefault.o > __RANLIB build/configs/pangu/usw/firmware/common/libdefault.o > ____SHCC build/configs/pangu/usw/firmware/common/main.os > ____SHCC build/configs/pangu/usw/firmware/drivers/pcie/dwc_ep.os > ______AR build/configs/pangu/usw/firmware/drivers/pcie/libdefault.o > __RANLIB build/configs/pangu/usw/firmware/drivers/pcie/libdefault.o > ____SHCC build/configs/pangu/usw/firmware/lib/cmd/cmd.os > ____SHCC build/configs/pangu/usw/firmware/lib/cmd/test.os > ____SHCC build/configs/pangu/usw/firmware/lib/fio/cmd.os > ____SHCC build/configs/pangu/usw/firmware/lib/fio/usw_device.os > ____SHCC build/configs/pangu/usw/firmware/lib/fio/linux64_device.os > ______AR build/configs/pangu/usw/firmware/lib/fio/libdefault.o > __RANLIB build/configs/pangu/usw/firmware/lib/fio/libdefault.o > ____SHCC > build/configs/pangu/usw/firmware/lib/simple_console/simple_console.os > ______AR build/configs/pangu/usw/firmware/lib/simple_console/libdefault.o > __RANLIB build/configs/pangu/usw/firmware/lib/simple_console/libdefault.o > ____SHCC build/configs/pangu/usw/firmware/lib/simple_pipe/connect.os > ____SHCC build/configs/pangu/usw/firmware/lib/simple_pipe/pipe.os > ______AR build/configs/pangu/usw/firmware/lib/simple_pipe/libdefault.o > __RANLIB build/configs/pangu/usw/firmware/lib/simple_pipe/libdefault.o > ____SHCC build/configs/pangu/usw/firmware/test/console/hello.os > ____SHCC build/configs/pangu/usw/firmware/test/console/test.os > ____SHCC build/configs/pangu/usw/firmware/test/example/test.os > ____SHLD build/configs/pangu/usw/libusw.so > _USWHASH build/configs/pangu/usw/libusw.so > _USWHASH build/configs/pangu/usw/libusw.so --> Changed > hua@huyangha-mobl:~/git/usw-abc $ > > On Tue, Oct 16, 2018 at 11:10 PM Hua Yanghao <[email protected]> wrote: > >> Config.h does not include any other headers. And the problem is it is not >> easily reproducible. However once it happens it is sticky. I will try >> harder tomorrow and get back to you. Thanks. >> >> On Tue 16. Oct 2018 at 23:06, Bill Deegan <[email protected]> >> wrote: >> >>> Try running with >>> >>> --taskmastertrace=trace.log >>> >>> You'll get a pretty verbose log there, and search for io.h it should >>> show more information about what's happening. >>> >>> Is io.h included via "-include config.h" ? >>> >>> -Bill >>> >>> On Tue, Oct 16, 2018 at 5:01 PM Hua Yanghao <[email protected]> >>> wrote: >>> >>>> Hi Bill, >>>> Sorry I missed that one. >>>> >>>> The full command line when hit the failure: >>>> gcc -o build/configs/pangu/usw/firmware/arch/pangu/test.os -c -g -Wall >>>> -Werror -include config.h -Wno-error=main -Wno-main -Wno-format-security >>>> -Wno-format -std=gnu99 -D_USW_FLAGS_TEST_0 -D_USW_FLAGS_TEST_1 >>>> -D_USW_FLAGS_TEST_2 -fPIC -Ibuild/configs/pangu/usw/config >>>> -Ibuild/configs/pangu/usw/firmware/arch/pangu/include >>>> -Ibuild/configs/pangu/usw/firmware/include >>>> -Ibuild/configs/pangu/usw/firmware/arch/include >>>> -Ibuild/configs/pangu/usw/firmware/common/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/cmd/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/simple_pipe/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/fio/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/simple_console/include >>>> -Ibuild/configs/pangu/usw/firmware/test/example/include >>>> -Ibuild/configs/pangu/usw/firmware/test/console/include >>>> -Ibuild/configs/pangu/usw/firmware/boards/include >>>> -Ibuild/configs/pangu/usw/firmware/boards/pangu/include >>>> -Ibuild/configs/pangu/usw/firmware/drivers/pcie/include >>>> -Ibuild/configs/pangu/usw/config >>>> -Ibuild/configs/pangu/usw/firmware/arch/pangu/include >>>> -Ibuild/configs/pangu/usw/firmware/include >>>> -Ibuild/configs/pangu/usw/firmware/arch/include >>>> -Ibuild/configs/pangu/usw/firmware/common/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/cmd/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/simple_pipe/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/fio/include >>>> -Ibuild/configs/pangu/usw/firmware/lib/simple_console/include >>>> -Ibuild/configs/pangu/usw/firmware/test/example/include >>>> -Ibuild/configs/pangu/usw/firmware/test/console/include >>>> -Ibuild/configs/pangu/usw/firmware/boards/include >>>> -Ibuild/configs/pangu/usw/firmware/boards/pangu/include >>>> -Ibuild/configs/pangu/usw/firmware/drivers/pcie/include >>>> build/configs/pangu/usw/firmware/arch/pangu/test.c >>>> >>>> And my CPPPATH seems also matching the command line: >>>> ['/home/hua/git/usw/build/configs/pangu/usw/config', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/arch/pangu/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/arch/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/common/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/cmd/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/simple_pipe/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/fio/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/simple_console/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/test/example/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/test/console/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/boards/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/boards/pangu/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/drivers/pcie/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/config', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/arch/pangu/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/arch/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/common/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/cmd/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/simple_pipe/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/fio/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/lib/simple_console/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/test/example/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/test/console/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/boards/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/boards/pangu/include', >>>> '/home/hua/git/usw/build/configs/pangu/usw/firmware/drivers/pcie/include'] >>>> >>>> Note the firmware/include is in both command line and CPPPATH, that's >>>> where my io.h is located. >>>> >>>> Best Regards, >>>> Yanghao >>>> >>>> >>>> On Tue, Oct 16, 2018 at 8:07 PM Bill Deegan <[email protected]> >>>> wrote: >>>> >>>>> You've still not replied with the compile command line. >>>>> Also what's your CPPPATH? >>>>> >>>>> >>>>> On Tue, Oct 16, 2018 at 1:25 PM Hua Yanghao <[email protected]> >>>>> wrote: >>>>> >>>>>> it is the correct path and io.h is actually duplicated from >>>>>> firmware/include/io.h >>>>>> >>>>>> On Tue 16. Oct 2018 at 17:34, Bill Deegan <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Is `build/configs/pangu/usw/firmware/arch/pangu/include/io.h' the >>>>>>> correct path to io.h? >>>>>>> Are you using duplicate=0, or not specifying in you SConscript()? >>>>>>> Are you using chdir somewhere in your SCons logic? >>>>>>> >>>>>>> Also, please paste the compile line for the compile which should >>>>>>> find io.h when it's passing? >>>>>>> >>>>>>> On Tue, Oct 16, 2018 at 11:14 AM Hua Yanghao <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> no it is static file. >>>>>>>> >>>>>>>> On Tue 16. Oct 2018 at 17:08, Bill Deegan < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Is io.h a generated file? >>>>>>>>> Paste the compile line for the compile which should find io.h when >>>>>>>>> it's passing? >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Oct 16, 2018 at 8:54 AM Hua Yanghao <[email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi Bill, >>>>>>>>>> Yes io.h is on my CPPPATH. And I am using variant_dir="build" for >>>>>>>>>> SConscript files. So normally all used header files will end up >>>>>>>>>> in the >>>>>>>>>> build folder too. But occasionally scons seems missed it. I am >>>>>>>>>> struggling to reproduce it ... >>>>>>>>>> >>>>>>>>>> BR, Yanghao >>>>>>>>>> On Tue, Oct 16, 2018 at 2:51 PM Bill Deegan < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> > >>>>>>>>>> > Yes. Headers are scanned recursively. >>>>>>>>>> > Implicit cache should only be enable by command line flag or >>>>>>>>>> SetOption() >>>>>>>>>> > >>>>>>>>>> > Where is io.h located? is it in your CPPPATH? >>>>>>>>>> > >>>>>>>>>> > On Tue, Oct 16, 2018 at 6:43 AM Hua Yanghao < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >> >>>>>>>>>> >> By the way, is scons scanner scans C file headers recursively? >>>>>>>>>> Thanks. >>>>>>>>>> >> On Tue, Oct 16, 2018 at 12:40 PM Hua Yanghao < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >> > >>>>>>>>>> >> > scons: *** >>>>>>>>>> [build/configs/pangu/usw/firmware/arch/pangu/test.os] >>>>>>>>>> >> > Implicit dependency >>>>>>>>>> >> > `build/configs/pangu/usw/firmware/arch/pangu/include/io.h' >>>>>>>>>> not found, >>>>>>>>>> >> > needed by target >>>>>>>>>> `build/configs/pangu/usw/firmware/arch/pangu/test.os' >>>>>>>>>> >> > >>>>>>>>>> >> > I recently run into this odd problem, and it is very >>>>>>>>>> difficult to >>>>>>>>>> >> > reproduce. I did not explicitly enable the "implicit_cache" >>>>>>>>>> option >>>>>>>>>> >> > anywhere in my code. If I simply remove the build folder and >>>>>>>>>> then >>>>>>>>>> >> > re-build everything works as normal. the problem happens >>>>>>>>>> when there is >>>>>>>>>> >> > a old build, and then I pulled in some new code where this >>>>>>>>>> "test.c" >>>>>>>>>> >> > has included an additional header io.h and scons seems not >>>>>>>>>> re-scanning >>>>>>>>>> >> > the file by default. >>>>>>>>>> >> > >>>>>>>>>> >> > I am using scons 3.0.1, is the implict_cache by default >>>>>>>>>> enabled there >>>>>>>>>> >> > and I have to disable it manually? >>>>>>>>>> >> > >>>>>>>>>> >> > Thanks, >>>>>>>>>> >> > Yanghao Hua >>>>>>>>>> >> _______________________________________________ >>>>>>>>>> >> Scons-users mailing list >>>>>>>>>> >> [email protected] >>>>>>>>>> >> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>>>>>>> > >>>>>>>>>> > _______________________________________________ >>>>>>>>>> > Scons-users mailing list >>>>>>>>>> > [email protected] >>>>>>>>>> > https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>>>>>>> _______________________________________________ >>>>>>>>>> Scons-users mailing list >>>>>>>>>> [email protected] >>>>>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Scons-users mailing list >>>>>>>>> [email protected] >>>>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Scons-users mailing list >>>>>>>> [email protected] >>>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> Scons-users mailing list >>>>>>> [email protected] >>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>>>> >>>>>> _______________________________________________ >>>>>> Scons-users mailing list >>>>>> [email protected] >>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>>> >>>>> _______________________________________________ >>>>> Scons-users mailing list >>>>> [email protected] >>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>>> >>>> _______________________________________________ >>>> Scons-users mailing list >>>> [email protected] >>>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>>> >>> _______________________________________________ >>> Scons-users mailing list >>> [email protected] >>> https://pairlist4.pair.net/mailman/listinfo/scons-users >>> >> _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users