Hello,
I suspect a potential side-effect when Ninja, and ccache(shared with 
multiple users on a workstation) are working together.
Consider the following scenario. This assumes a shared cache(CCACHE_DIR set 
to /ccache/common_cachestore) for both the users.

User A runs a build under /ws/aosp_A for a particular revision of AOSP, and 
he produces the cache at /ccache/common_cachestore
User B runs a build under /ws/aosp_B, and for some of the files, cache hit 
occurs, thus, all the compiler data is copied into user B's workspace.(this 
includes the .d file) and thus, the Ninja dependency database now points to 
the system headers from user A's workspace, because, ccache had produced .d 
file with system header paths which are absolute, and thus, they point to 
user A's workspace.

Now, User B fetches updated content by doing a repo sync, and lets assume 
the system headers are newer Or he deliberately changed some system headers 
for some reason. 
However, Ninja's dependency database points to the system headers from User 
A's workspace, thus, it *may *so happen that it doesn't rebuild.

(It is likely that I'm missing the very technical details of Ninja's 
dependency database. Also, this is a once in blue moon scenario)
With an assumption that this is possible, I'm trying to think of a way to 
have relative paths to system headers. 

Do I have a point? If I do, apparently, shared ccache should not be used at 
all with AOSP?
thanks for your feedback in advance,

Best regards,
Venkat.


On Friday, September 2, 2016 at 4:06:00 PM UTC+2, Chih-Wei Huang wrote:
>
> It's very helpful.
> Thank you very much!
>
> Dan Willemsen於 2016年9月1日星期四 UTC+8下午10時30分18秒寫道:
>>
>> We've switched to using ninja to do our builds, which defaults to reading 
>> the depfile into it's database, then deleting it. You can either keep the 
>> depfile:
>>
>>   NINJA_ARGS="-d keepdepfile" m ...
>>
>> Or just ask ninja what the deps are for a specific file: 
>> (NINJA_EXTRA_ARGS has to be empty as a workaround in this case)
>>
>>   NINJA_ARGS= "-t deps out/...o" m NINJA_EXTRA_ARGS=
>>
>> You can also see some of the other ninja tools and debug modes that are 
>> useful with -d/-t list:
>>
>> ninja subtools:
>>     browse  browse dependency graph in a web browser
>>      clean  clean built files
>>   commands  list all commands required to rebuild given targets
>>       deps  show dependencies stored in the deps log
>>      graph  output graphviz dot file for targets
>>      query  show inputs/outputs for a path
>>    targets  list targets by their rule or depth in the DAG
>>     compdb  dump JSON compilation database to stdout
>>  recompact  recompacts ninja-internal data structures
>>
>> debugging modes:
>>   stats        print operation counts/timing info
>>   explain      explain what caused a command to execute
>>   keepdepfile  don't delete depfiles after they're read by ninja
>>   keeprsp      don't delete @response files on success
>> multiple modes can be enabled via -d FOO -d BAR
>>
>>
>> On Thu, Sep 1, 2016 at 7:05 AM Chih-Wei Huang <cwh...@android-x86.org> 
>> wrote:
>>
>>> Hi,
>>> Anyone knows why Android 7.0 build system doesn't generate
>>> the .P file, the dependency file of the .o to be included?
>>> Without the .P file it's hard to debug the dependency issue.
>>> Or any alternative way to check the dependency of the .o in Android 7.0?
>>>
>>> -- 
>>>
>>

-- 
-- 
You received this message because you are subscribed to the "Android Building" 
mailing list.
To post to this group, send email to android-building@googlegroups.com
To unsubscribe from this group, send email to
android-building+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-building?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"Android Building" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to android-building+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to