Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-10596

Improve handling of source code files with duplicate relative path names

    Details

    • Similar Issues:

      Description

      I get the following error when trying to view the source of a compiler warning:

      01 Copying the source file 'main.c' from the workspace to the build folder '/var/lib/jenkins/home/jobs/Job Clean Build/builds/2011-08-05_00-04-13/workspace-files/bf88816e.tmp' on the Hudson master failed.
      02 Seems that the path is relative, however an absolute path is required when copying the sources.
      03 Is the file 'main.c' contained more than once in your workspace?
      04 Is the file 'main.c' a valid filename?
      05 If you are building on a slave: please check if the file is accessible under '$HUDSON_HOME/[job-name]/main.c'
      06 If you are building on the master: please check if the file is accessible under '$HUDSON_HOME/[job-name]/workspace/main.c'
      07 hudson.util.IOException2: remote file operation failed: main.c at hudson.remoting.LocalChannel@1eac6995
      08   at hudson.FilePath.act(FilePath.java:754)
      09   at hudson.FilePath.act(FilePath.java:740)
      10   at hudson.FilePath.copyTo(FilePath.java:1410)
      11   at hudson.plugins.analysis.core.HealthAwarePublisher.copyFilesWithAnnotationsToBuildFolder(HealthAwarePublisher.java:354)
      12   at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:316)
      13   at hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:27)
      14   at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:682)
      15   at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:657)
      16   at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:635)
      17   at hudson.model.Build$RunnerImpl.post2(Build.java:161)
      18   at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:604)
      19   at hudson.model.Run.run(Run.java:1400)
      20   at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      21   at hudson.model.ResourceController.execute(ResourceController.java:88)
      22   at hudson.model.Executor.run(Executor.java:175)
      23 Caused by: java.io.FileNotFoundException: main.c (No such file or directory)
      24   at java.io.FileInputStream.open(Native Method)
      25   at java.io.FileInputStream.<init>(FileInputStream.java:120)
      26   at hudson.FilePath$30.invoke(FilePath.java:1414)
      27   at hudson.FilePath$30.invoke(FilePath.java:1410)
      28   at hudson.FilePath$FileCallableWrapper.call(FilePath.java:1980)
      29   at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
      30   at hudson.FilePath.act(FilePath.java:747)
      31   ... 14 more
      

      This job uses a custom workspace dir so maybe the plugin doesn't support that?

        Attachments

          Issue Links

            Activity

            Hide
            cbennett Colin Bennett added a comment -

            What is that "new gcc parser with make support"? I am BTW using a Freescale/Metrowerks ColdFire compiler... ugh... much prefer gcc of course.

            Show
            cbennett Colin Bennett added a comment - What is that "new gcc parser with make support"? I am BTW using a Freescale/Metrowerks ColdFire compiler... ugh... much prefer gcc of course.
            Hide
            drulli Ulli Hafner added a comment - - edited

            Which parser are you using?

            Did you enable the scan workspace option?

            Show
            drulli Ulli Hafner added a comment - - edited Which parser are you using? Did you enable the scan workspace option?
            Hide
            cbennett Colin Bennett added a comment -

            What is the "scan workspace option"? I see there is a "Scan workspace files" section with an "Add" button that allows one to "Workspace files to scan for compiler warnings using a predefined parser", but that's not what I want, I am already scanning and correctly capturing the warnings on the console output – I don't have a log file to scan. I did try to enable the "Resolve relative paths" checkbox under "Advanced..." but that didn't fix the issue.

            I am using a custom parser for the Freescale (formerly Metrowerks) ColdFire compiler, with the "-msgstyle gcc" option.

            Here's the regex:

            ^\s*(?:\[exec\])\s*(.*):(\d+):\s*(warning|error): (\S.*)$
            

            and here's the mapping script:

            import hudson.plugins.warnings.parser.Warning
            
            String fileName = matcher.group(1)
            String lineNumber = matcher.group(2)
            String category = matcher.group(3)
            String message = matcher.group(4)
            
            return new Warning(fileName, Integer.parseInt(lineNumber), "Dynamic Parser", category, message);
            

            and here's an example message:

                 [exec] ..\..\..\..\common\comps\mx\mqx\mxDefs.h:247: warning: florbity frobbity grokkity goo
            

            I see no problem with the parsing; it works fine and correctly identifies the file path and line number etc.

            Show
            cbennett Colin Bennett added a comment - What is the "scan workspace option"? I see there is a "Scan workspace files" section with an "Add" button that allows one to "Workspace files to scan for compiler warnings using a predefined parser", but that's not what I want, I am already scanning and correctly capturing the warnings on the console output – I don't have a log file to scan. I did try to enable the "Resolve relative paths" checkbox under "Advanced..." but that didn't fix the issue. I am using a custom parser for the Freescale (formerly Metrowerks) ColdFire compiler, with the "-msgstyle gcc" option. Here's the regex: ^\s*(?:\[exec\])\s*(.*):(\d+):\s*(warning|error): (\S.*)$ and here's the mapping script: import hudson.plugins.warnings.parser.Warning String fileName = matcher.group(1) String lineNumber = matcher.group(2) String category = matcher.group(3) String message = matcher.group(4) return new Warning(fileName, Integer.parseInt(lineNumber), "Dynamic Parser", category, message); and here's an example message: [exec] ..\..\..\..\common\comps\mx\mqx\mxDefs.h:247: warning: florbity frobbity grokkity goo I see no problem with the parsing; it works fine and correctly identifies the file path and line number etc.
            Hide
            drulli Ulli Hafner added a comment -

            Yes I thought the 'Resolve relative paths' option will help. Can you please activate the logging for hudson.plugins.analysis.core.ParserResult (level FINE). There should be some messages why the resolve relative path failed.

            Show
            drulli Ulli Hafner added a comment - Yes I thought the 'Resolve relative paths' option will help. Can you please activate the logging for hudson.plugins.analysis.core.ParserResult (level FINE). There should be some messages why the resolve relative path failed.
            Hide
            drulli Ulli Hafner added a comment -
            Show
            drulli Ulli Hafner added a comment - See JENKINS-32150 .

              People

              • Assignee:
                drulli Ulli Hafner
                Reporter:
                hallas David Hallas
              • Votes:
                1 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: