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