Yury Zaytsev created JENKINS-14064: -------------------------------------- Summary: Copying the source file on the Hudson master failed / Clang / autotools VPATH Key: JENKINS-14064 URL: https://issues.jenkins-ci.org/browse/JENKINS-14064 Project: Jenkins Issue Type: Bug Components: warnings Environment: Master: RHEL 6.2, Jenkins LTS, Warnings 4.5; Slave: Fedora Core 16 Reporter: Yury Zaytsev Assignee: Ulli Hafner Priority: Minor
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: {code} 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) {code} A typical log snippet looks like this: {code} 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; ^ ~~~~~~~~~~ ~~~ {code} 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! -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira