[Scons-users] Scons Implicity Dependency not found issue

Hua Yanghao huayanghao at gmail.com
Wed Oct 17 16:35:12 EDT 2018


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 <bill at baddogconsulting.com>  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 <huayanghao at gmail.com> wrote:

> I finally reproduced this issue, however this --taskmastertrace=trace.log
> the compilation passes instead of failing. Thoughts?
>
> hua at 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 at 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 at huyangha-mobl:~/git/usw-abc $
>
> On Tue, Oct 16, 2018 at 11:10 PM Hua Yanghao <huayanghao at gmail.com> 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 <bill at baddogconsulting.com>
>> 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 <huayanghao at gmail.com>
>>> 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 <bill at baddogconsulting.com>
>>>> 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 <huayanghao at gmail.com>
>>>>> 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 <bill at baddogconsulting.com>
>>>>>> 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 <huayanghao at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> no it is static file.
>>>>>>>>
>>>>>>>> On Tue 16. Oct 2018 at 17:08, Bill Deegan <
>>>>>>>> bill at baddogconsulting.com> 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 <huayanghao at gmail.com>
>>>>>>>>> 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 <
>>>>>>>>>> bill at baddogconsulting.com> 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 <
>>>>>>>>>> huayanghao at gmail.com> wrote:
>>>>>>>>>> >>
>>>>>>>>>> >> By the way, is scons scanner scans C file headers recursively?
>>>>>>>>>> Thanks.
>>>>>>>>>> >> On Tue, Oct 16, 2018 at 12:40 PM Hua Yanghao <
>>>>>>>>>> huayanghao at gmail.com> 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
>>>>>>>>>> >> Scons-users at scons.org
>>>>>>>>>> >> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>>>>>> >
>>>>>>>>>> > _______________________________________________
>>>>>>>>>> > Scons-users mailing list
>>>>>>>>>> > Scons-users at scons.org
>>>>>>>>>> > https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Scons-users mailing list
>>>>>>>>>> Scons-users at scons.org
>>>>>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Scons-users mailing list
>>>>>>>>> Scons-users at scons.org
>>>>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Scons-users mailing list
>>>>>>>> Scons-users at scons.org
>>>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Scons-users mailing list
>>>>>>> Scons-users at scons.org
>>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Scons-users mailing list
>>>>>> Scons-users at scons.org
>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>>
>>>>> _______________________________________________
>>>>> Scons-users mailing list
>>>>> Scons-users at scons.org
>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>
>>>> _______________________________________________
>>>> Scons-users mailing list
>>>> Scons-users at scons.org
>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>
>>> _______________________________________________
>>> Scons-users mailing list
>>> Scons-users at scons.org
>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20181017/f37ed35e/attachment-0001.html>


More information about the Scons-users mailing list