Re: Scons Implicity Dependency not found issue
Hua Yanghao <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAPTzt1CU6X1-E2RdWk_nEeeyrj8+N6nqmsf6nwFFLTv_-q0zmQ@mail.gmail.com> |
However, if on commit Y you do a clean and re-build, everything passes. Seems some cached state is in play here? On Wed, Oct 17, 2018 at 10:35 PM Hua Yanghao <[email protected]> wrote: > 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