-
Improvement
-
Resolution: Fixed
-
Major
-
None
-
Master: RHEL 6.2, Jenkins LTS, Warnings 4.5; Slave: Fedora Core 16
-
-
beta8 (warnings-ng), beta17 (analysis-model-api)
Hi,
I set up a VPATH build of an autotools-based software in a custom workspace (set per node) in "build" directory:
/mnt/ram/workspace/[job-id]/build
Therefore generally files are referenced in the log as ../../folder/file.cpp, because the build directory only contains Makefiles and other temporarily generated data. E.g. when files from nestkernel are compiled through the Makefiles in
/mnt/ram/workspace/[job-id]/build/nestkernel
the source files are referenced as ../../nestkernel/file.cpp so that it resolves as
/mnt/ram/workspace/[job-id]/nestkernel/file.cpp
I'm afraid this can't be possibly changed. Now because of that LLVM parser extracts warnings as belonging e.g. to "../../nestkernel", so apparently the file references are later resolved as
/mnt/nestkernel/file.cpp
relative to
/mnt/ram/workspace/[job-id]/
and not to
/mnt/ram/workspace/[job-id]/build/nestkernel
which of course doesn't exist so I'm getting the following kind of errors when I try to see the file:
Content of file connection_manager.cpp 01 Copying the source file '../../nestkernel/connection_manager.cpp' from the workspace to the build folder '/var/lib/jenkins/jobs/nest-clang-test/builds/2012-06-08_17-46-33/workspace-files/7976711b.tmp' on the Hudson master failed. 02 Seems that the path is relative, however an absolute path is required when copying the sources.%nIs the file 'connection_manager.cpp' contained more than once in your workspace? 03 Is the file '../../nestkernel/connection_manager.cpp' a valid filename? 04 If you are building on a slave: please check if the file is accessible under '$HUDSON_HOME/[job-name]/../../nestkernel/connection_manager.cpp' 05 If you are building on the master: please check if the file is accessible under '$HUDSON_HOME/[job-name]/workspace/../../nestkernel/connection_manager.cpp' 06 hudson.util.IOException2: remote file operation failed: ../../nestkernel/connection_manager.cpp at hudson.remoting.Channel@68b7cdc6:fc-16-i386-2 07 at hudson.FilePath.act(FilePath.java:780) 08 at hudson.FilePath.act(FilePath.java:766) 09 at hudson.FilePath.copyTo(FilePath.java:1460) 10 at hudson.plugins.analysis.core.HealthAwarePublisher.copyFilesWithAnnotationsToBuildFolder(HealthAwarePublisher.java:398) 11 at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:355) 12 at hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:27) 13 at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:697) 14 at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:672) 15 at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:650) 16 at hudson.model.Build$RunnerImpl.post2(Build.java:162) 17 at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:619) 18 at hudson.model.Run.run(Run.java:1429) 19 at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 20 at hudson.model.ResourceController.execute(ResourceController.java:88) 21 at hudson.model.Executor.run(Executor.java:238) 22 Caused by: java.io.FileNotFoundException: ../../nestkernel/connection_manager.cpp (No such file or directory) 23 at java.io.FileInputStream.open(Native Method) 24 at java.io.FileInputStream.<init>(FileInputStream.java:137) 25 at hudson.FilePath$31.invoke(FilePath.java:1465) 26 at hudson.FilePath$31.invoke(FilePath.java:1460) 27 at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2045) 28 at hudson.remoting.UserRequest.perform(UserRequest.java:118) 29 at hudson.remoting.UserRequest.perform(UserRequest.java:48) 30 at hudson.remoting.Request$2.run(Request.java:287) 31 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 32 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 33 at java.util.concurrent.FutureTask.run(FutureTask.java:166) 34 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 35 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 36 at java.lang.Thread.run(Thread.java:679)
A typical log snippet looks like this:
mv -f .deps/libdevelopermodule_la-maturing_connector_fr.Tpo .deps/libdevelopermodule_la-maturing_connector_fr.Plo /bin/sh ../libtool --tag=CXX --mode=compile clang++ -DHAVE_CONFIG_H -I. -I../../developer -I../libnestutil -I../../libnestutil -I../../librandom -I../../sli -I../../nestkernel -I../../models -I../../libltdl -I/usr/include -W -Wall -pedantic -Wno-long-long -O2 -MT libdevelopermodule_la-stdp_triplet_connection.lo -MD -MP -MF .deps/libdevelopermodule_la-stdp_triplet_connection.Tpo -c -o libdevelopermodule_la-stdp_triplet_connection.lo `test -f 'stdp_triplet_connection.cpp' || echo '../../developer/'`stdp_triplet_connection.cpp libtool: compile: clang++ -DHAVE_CONFIG_H -I. -I../../developer -I../libnestutil -I../../libnestutil -I../../librandom -I../../sli -I../../nestkernel -I../../models -I../../libltdl -I/usr/include -W -Wall -pedantic -Wno-long-long -O2 -MT libdevelopermodule_la-stdp_triplet_connection.lo -MD -MP -MF .deps/libdevelopermodule_la-stdp_triplet_connection.Tpo -c ../../developer/stdp_triplet_connection.cpp -fPIC -DPIC -o .libs/libdevelopermodule_la-stdp_triplet_connection.o In file included from ../../developer/stdp_triplet_connection.cpp:19: In file included from ../../nestkernel/network.h:24: In file included from ../../nestkernel/model.h:23: In file included from ../../nestkernel/node.h:28: In file included from ../../sli/dictdatum.h:22: In file included from ../../sli/interpret.h:28: In file included from ../../sli/tokenstack.h:25: ../../sli/tokenarray.h:422:19: warning: operands of ? are integers of different signs: 'unsigned long' and 'long' [-Wsign-compare] rot = (rot < 0) ? rot+size() : rot; ^ ~~~~~~~~~~ ~~~
Apparently this problem is not specific to Clang, but probably is also valid for GCC (but I don't seem to remember anything like that, can it be that workspace scan is not working for LLVM?!), so as long as VPATH (out of source tree) builds are involved this problem manifests itself.
Is there any way in which this can be disambiguated?
Thanks!
- is blocking
-
JENKINS-32150 Cannot resolve relative filenames referencing parent directory
- Resolved
- is duplicated by
-
JENKINS-54858 Detect working directory from build output
- Resolved
- is related to
-
JENKINS-10596 Improve handling of source code files with duplicate relative path names
- Resolved
-
JENKINS-22386 Warnings Plugin cannot show details for MSBuild warnings
- Resolved