# ROSE Compiler Framework/Jenkins Failures
### Misc. failures

Problem Failure in astFileIOTests:
Solution: This is usually due to a system error so the solution is to simply restart the failed job.
Problem Failure in git-clone:
Solution: This is usually due to a system error so the solution is to simply restart the failed job.
Problem Failure in git-clone or ssh:
Solution: The error here has to do with the SSH configuration (~/.ssh/config), specifically the ControlSocket setting. The solution could be to remove this optional (convenience) configuration.
Problem Failure in git-submodule-update:
Solution: Ensure that you have pushed your accompanying submodule commits.
Problem Input/Output error while executing a script
Solution: Restart the job; this is an I/O error that could be related to NFS.
Problem' Problem fetching from origin / origin - could be unavailable. Continuing anyway.
Solution: Restart the job; this is due to ?.
Problem' $ROSE_INSTALL does not exist
Solution: Ensure that the make-install job has completed first for the given GIT_COMMIT and GCC Version. Then, you may restart the job.
Problem rsync error: some files/attrs were not transferred
Solution: Restarting the job could solve it. This is usually due to some NFS, SSH, or permission problem while a ROSE workspace is being copied.
Problem ../../scripts/dotgenLetterPDF inputCode_wholeAST_1_WholeAST.dot inputCode_ASTWholeGraphGenerator_small.pdf Can't find GraphViz dot program in user's path, ignoring conversion to postscript file (not a problem) ... if ! test -e inputCode_ASTWholeGraphGenerator_small.pdf; then exit 1; fi

### C0-Start

http://hudson-rose-30:8080/job/C0-Start/
1. Problem: can't merge your branch cleanly
Solution: Run git-merge on your local machine to resolve the merge conflicts with master.
For example,
2. Problem: FAILED Has new commits?
Solution: Make sure you've committed your changes and then push your changesets again. Otherwise, ignore the message, maybe your already-integrated branch simply got tested by mistake.
3. Problem: Errors detected by the no tab characters policy. Aborting now.
Solution: Follow the instructions to remove the TAB characters from your source files:
And next time, please run the tests locally before you push! (The policy checks are a part of make all. You can also run ./scripts/policies-checker.sh separately from the top-level of the ROSE source tree.)
4. Problem: Errors detected by the unix line termination policy. Aborting now.
Solution: Follow the instructions to remove the CR+LF line termination characters from your source files:
And next time, please run the tests locally before you push! (The policy checks are a part of make all. You can also run ./scripts/policies-checker.sh separately from the top-level of the ROSE source tree.)
5. Problem: Errors detected by the unused sources policy. Aborting now.
The "Unused Sources Policy" will pass with "Number of remaining unused source files: 1481.". Therefore, you will see at least 1481 lines of output source files. No, they are not your problem. Simply, when this policy was first put into place, there were culprit files already. The point of this policy is simply not to lower the bar, i.e. to not go above 1481 unused sources. (Maybe one day we'll actually fix this).
Solution: Make sure your source file is mentioned in some sort of Makefile that matches this regular expression: /\/(Makefile\.am|Makefile_variables|CMakeList\.txt|make_rule\.inc|Makefile-.*\.inc)$/ (as of commit 213fd5d72, July 26, 2012).
And next time, please run the tests locally before you push! (The policy checks are a part of make all. You can also run ./scripts/policies-checker.sh separately from the top-level of the ROSE source tree.)

### C6-ROSE-distcheck

http://hudson-rose-30:8080/job/C6-ROSE-distcheck/
Problem:
The problem is that some files are not automatically added into the software distribution during "make dist". For example, input test code files, README files, and configuration files.
Prognosis:
Overview of "make distcheck":
1. "make dist": ensure that you can successfully create a tarball distribution of the software package.
2. The tarball distribution is un-tarred (unpackaged) and the tests are then carried out on this distribution source tree.
3. "$ROSE/configure": configure the software package with GNU Autoconf.
4. "make all": build the software package GNU Automake.
5. "make check": execute the software package's regression tests using GNU Automake check-local rules.
Files are not always automatically added into the distribution tarball (during "make dist"). However, most source and header files will be automatically added if they are used to build libraries and executables (specified within Automake makefiles, Makefile.am).
Solution:
* Add the culprit files into the EXTRA_DIST Automake variable in the appropriate Makefile.am file.
* Test "make distcheck" on your local machine before you push next time!
Reference:
* Basics of distribution: http://www.delorie.com/gnu/docs/automake/automake_91.html
Problem: cannot find input file Makefile.in
The problem is that the Makefile.am does not list all of the project's sub-directories. The result is that make dist is unable to create a complete distribution since it does not know to descend into the project's sub-directories since they are not listed.
The $ROSE/projects/RTC/Makefile.am looked like this:
However, there are more sub-directories than just src/:
Solution:
Add ALL sub-directories to $ROSE/projects/RTC/Makefile.am:
Problem:No rule for librose.la
The following Makefile.am is used in the tests directory of a project. The translator simply takes the code in TESTCODES as input and performs the translation.
The problem is that TESTCODES is listed in EXTRA_DIST for distribution and also served as target rule in the Makefile. It's still unclear how Make distdir handles this case. But avoiding using the variable in EXTRA_DIST as Makefile rule can eliminate this issue.
Solution:
* Add another variable for the makefile rule.
Problem Operation not permitted
C6-ROSE-distcheck

### C2-ROSE-language-matrix-linux

http://hudson-rose-30:8080/job/C2-ROSE-language-matrix-linux/ http://hudson-rose-30:8080/job/C2-ROSE-language-matrix-osx/
Problem: ROSE has configuration options (e.g., --enable-only-java) to toggle (compiler frontend) language support (see $ROSE/configure --help for more information).
Many new developers are not aware of this so their work often fails on these tests due to invalid assumptions about which frontends are enabled, or disabled.
Solution: To pass these tests, make sure you have conditional blocks in your GNU Automake Makefile.am to turn on (compiler frontend) language specific logic.
Example: In your Fortran-specific work, use the following conditional:
Language independent test codes can be found in ${ROSE}tests/input_codes/Makefile.for.input.codes:
A full example of these conditionals are given in this file:

### Java unexpected error

../../testTranslator -rose:verbose 0 -rose:detect_dangling_pointers 2 -I../../../../tests/CompileTests/Fortran_tests -rose:f90 -c ../../../../tests/CompileTests/Fortran_tests/test2011_Rice_A-cant-assert-keyword-nonnull.f90