Looks pretty clear from your stack trace what's going on. I was wrong:
when creating a repository, we seem to individually symlink every
file:
https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java#L337
Sample stack trace:
"skyframe-evaluator 142" #722 prio=5 os_prio=0 tid=0x00007f1c5c22f000
nid=0x1265a runnable [0x00007f1c333e5000]
java.lang.Thread.State: RUNNABLE
at (C/C++) __pthread_cond_wait( (/usr/grte/v4/lib64/libpthread.so.0))
at (C/C++) Monitor::ILock(Thread*)(
(/usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/amd64/server/libjvm.so))
at (C/C++) Monitor::lock_without_safepoint_check()(
(/usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/amd64/server/libjvm.so))
at (C/C++) SafepointSynchronize::block(JavaThread*)(
(/usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/amd64/server/libjvm.so))
at (C/C++) JavaThread::check_safepoint_and_suspend_for_native_trans(JavaThread*)(
(/usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/amd64/server/libjvm.so))
at (C/C++) ThreadStateTransition::transition_from_native(JavaThread*,
JavaThreadState) [clone .constprop.96](
(/usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/amd64/server/libjvm.so))
at (C/C++) jni_GetStringLength(
(/usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/amd64/server/libjvm.so))
at (C/C++) JNIEnv_::GetStringLength(_jstring*)(
(/home/claridge/.cache/bazel/_bazel_claridge/install/a195658d9801c77a5fa56b06ff9698a7/_embedded_binaries/libunix.so))
at (C/C++) GetStringLatin1Chars(JNIEnv_*, _jstring*)(
(/home/claridge/.cache/bazel/_bazel_claridge/install/a195658d9801c77a5fa56b06ff9698a7/_embedded_binaries/libunix.so))
at (C/C++) link_common(JNIEnv_*, _jstring*, _jstring*, int (*)(char
const*, char const*))(
(/home/claridge/.cache/bazel/_bazel_claridge/install/a195658d9801c77a5fa56b06ff9698a7/_embedded_binaries/libunix.so))
at (C/C++) Java_com_google_devtools_build_lib_unix_FilesystemUtils_symlink(
(/home/claridge/.cache/bazel/_bazel_claridge/install/a195658d9801c77a5fa56b06ff9698a7/_embedded_binaries/libunix.so))
at com.google.devtools.build.lib.unix.FilesystemUtils.symlink(Native Method)
at com.google.devtools.build.lib.vfs.UnixFileSystem.createSymbolicLink(UnixFileSystem.java:315)
- locked <0x00000000989f7480> (a com.google.devtools.build.lib.vfs.Path)
at com.google.devtools.build.lib.vfs.Path.createSymbolicLink(Path.java:778)
at com.google.devtools.build.lib.vfs.FileSystemUtils.ensureSymbolicLink(FileSystemUtils.java:417)
at com.google.devtools.build.lib.vfs.FileSystemUtils.ensureSymbolicLink(FileSystemUtils.java:368)
at com.google.devtools.build.lib.rules.repository.RepositoryFunction.createSymbolicLink(RepositoryFunction.java:351)
at com.google.devtools.build.lib.rules.repository.RepositoryFunction.symlinkLocalRepositoryContents(RepositoryFunction.java:333)
at com.google.devtools.build.lib.rules.repository.NewLocalRepositoryFunction.fetch(NewLocalRepositoryFunction.java:41)
at com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction.compute(RepositoryDelegatorFunction.java:82)
at com.google.devtools.build.skyframe.ParallelEvaluator$Evaluate.run(ParallelEvaluator.java:933)
Not sure why that's necessary, as opposed to just symlinking the
directories. @kchodorow?
>
https://groups.google.com/d/msgid/bazel-discuss/83f28fbe-19cf-44b1-b0de-53fe20fafc25%40googlegroups.com.