Hi,

I am using ccache for local compilation of comm-central
TB.

After the checkout a few hours ago, and tinkering
with my local hg patch queues,
I noticed some files are NOT compiled using ccache any more.
(I was debugging a local ccache that groks -gsplit-dwarf option
to gcc. This option and use of GNU ld.gold makes linking rather fast.)

I have not figured out which files are not compiled using ccache
completely, but, as starters,
the files under  comm-central/mozilla/js/src/*
such as jsobj.cpp and friends,
and the files below such as comm-central/mozilla/js/src/vm/*
such as CallNonGenericMethod.o and friends
are compiled without using ccache :-(

(I see the name of .o files printed out and I can link the
final TB. So the build as a whole works: I use mk_add_options
MOZ_MAKE_FLAGS="-s" to make the build log terse.)

In the ccache log, compilation of these files mentioned above is not
recorded at all.
So presumably somehow the ccache is not invoked for these files.
(But some files under mozilla/js/ subdirectories are compiled using
ccache. See below.)

My question is:
Is this omission of ccache usage intentional for these files?

In the following, I list files under mozilla/js directories
which are still compiled using ccache (and thus the source file
information was recorded in ccache log.)
Th list is a sorted list in alphabetic order.
Their order of compilation may differ.

Note 1:
I took out the common path prefix which is
/REF-COMM-CENTRAL/comm-central which is my TOPSRCDIR directory and
replaced it with ".".

Note 2:
But note that there is a strange path
at the end, which is
/REF-OBJ-DIR/objdir-tb3/js/xpconnect/src/dom_quickstubs.cpp

/REF-OBJ-DIR/objedir-tb3 is my MOZ_OBJ directory.
So it looks that this dom-quickstubs.cpp is
COPIED to MOZ_OBJ/js/xpconnect/src/ directory
whereas other source files remain in the original source directory
and some make hackery (VPATH maybe) makes the references to the original
source files
when the compilation proceed in MOZ_OBJ directory.

E.g.: files under ./mozilla/js/ directory that are compiled using ccache
[and recorded in ccache log].
"..." means that  I omit the repetition of files under the same directory.

./mozilla/js/ductwork/debugger/JSDebugger.cpp
./mozilla/js/ipc/JavaScriptChild.cpp
./mozilla/js/ipc/JavaScriptParent.cpp
./mozilla/js/ipc/JavaScriptShared.cpp
./mozilla/js/ipc/WrapperAnswer.cpp
./mozilla/js/ipc/WrapperOwner.cpp
./mozilla/js/src/ctypes/libffi/src/closures.c
./mozilla/js/src/ctypes/libffi/src/debug.c
./mozilla/js/src/ctypes/libffi/src/java_raw_api.c
        ...
./mozilla/js/src/ctypes/libffi/src/x86/ffi64.c
./mozilla/js/xpconnect/loader/mozJSComponentLoader.cpp
./mozilla/js/xpconnect/loader/mozJSLoaderUtils.cpp
./mozilla/js/xpconnect/loader/mozJSSubScriptLoader.cpp
./mozilla/js/xpconnect/shell/xpcshell.cpp
./mozilla/js/xpconnect/src/ExportHelpers.cpp
./mozilla/js/xpconnect/src/Sandbox.cpp
./mozilla/js/xpconnect/src/XPCCallContext.cpp
./mozilla/js/xpconnect/src/XPCComponents.cpp
./mozilla/js/xpconnect/src/XPCContext.cpp
        ...
./mozilla/js/xpconnect/src/XPCWrapper.cpp
./mozilla/js/xpconnect/src/nsScriptError.cpp
./mozilla/js/xpconnect/src/nsXPConnect.cpp
./mozilla/js/xpconnect/tests/components/native/xpctest_attributes.cpp
./mozilla/js/xpconnect/tests/components/native/xpctest_module.cpp
./mozilla/js/xpconnect/tests/components/native/xpctest_params.cpp
./mozilla/js/xpconnect/wrappers/AccessCheck.cpp
./mozilla/js/xpconnect/wrappers/AddonWrapper.cpp
./mozilla/js/xpconnect/wrappers/ChromeObjectWrapper.cpp
./mozilla/js/xpconnect/wrappers/FilteringWrapper.cpp
./mozilla/js/xpconnect/wrappers/WaiveXrayWrapper.cpp
./mozilla/js/xpconnect/wrappers/WrapperFactory.cpp
. /mozilla/js/xpconnect/wrappers/XrayWrapper.cpp
/REF-OBJ-DIR/objdir-tb3/js/xpconnect/src/dom_quickstubs.cpp

On a not so powerful PC at hand, not using ccache is
a grave problem.
I push and pop hg patch queues often and
such qpush/qpop re-invokes the compilation of files of which mtime only
are changed (the contents remain intact).
ccache saves the day by not invoking the code generation path of the
compilation.

So, if there is no compelling reason for not using ccache for files under
mozilla/js/ and its subdirectories (some directories use ccache as seen
from above), I would like to see the ccache compilation restored.

Yes, I think jsobj.cpp and friends were compiled using ccache before.
But I don't know exactly when ccache became ineffective for these files.

I would not have realized this problem unless I was hacking modified
ccache to make sure it was working well.

TIA

PS: Despite I am using a local hacked version of ccache, I doubt if
this is the cause of this problem.
I have been using the series of locally hacked ccache versions,
and it has performed well: I have been linking C-C TB for about a year
and more successfully.

PPS: Come to think of it, I am using Debian GNU/Linux, and
I remember reading something about upcoming GNU Make
changing behavior very slightly to conform to the latest POSIX standard
in Debian's release note.
That *may* explain the change in behavior.

But someone familiar with the build process and/or
mozilla/js source tree needs to take a look at to find out the root cause.




_______________________________________________
dev-builds mailing list
dev-builds@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-builds

Reply via email to