ROSE 編譯器框架/Jenkins 失敗
問題 失敗於astFileIOTests:
filename = /getcwd: : No such file or directory ... Error preDeleteTests(): classType->get_declaration() = 0x25492af0 = SgClassDeclaration make[5]: *** [test-read-medium] Aborted make[4]: *** [check-local] Error 2
解決方案:這通常是由於系統錯誤導致的,因此解決方案是簡單地重新啟動失敗的作業。
問題 失敗於git-clone:
ERROR: Error cloning remote repo 'origin' : Could not clone rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git hudson.plugins.git.GitException: Could not clone rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git at hudson.plugins.git.GitAPI.clone(GitAPI.java:271) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1040) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2273) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:270) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) ...
解決方案:這通常是由於系統錯誤導致的,因此解決方案是簡單地重新啟動失敗的作業。
問題 失敗於git-clone或者ssh:
ControlSocket /tmp/rose-dev@rosecompiler.llnl.gov:22 already exists fatal: The remote end hung up unexpectedly at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:863) at hudson.plugins.git.GitAPI.access$000(GitAPI.java:40) at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:267) at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:246) at hudson.FilePath.act(FilePath.java:852) at hudson.FilePath.act(FilePath.java:825) at hudson.plugins.git.GitAPI.clone(GitAPI.java:246) ... 12 more Trying next repository ERROR: Could not clone repository FATAL: Could not clone
解決方案:此處的錯誤與 SSH 配置有關 (~/.ssh/config),特別是ControlSocket設定。解決方案可能是刪除此可選 (方便) 配置。
問題 失敗於git-submodule-update:
Commencing build of Revision 1d4fd18f6d17dd66553a248496026ceb88773fac (detached) Merging Revision 1d4fd18f6d17dd66553a248496026ceb88773fac (detached) onto master FATAL: Command "git submodule update" returned status code 1: fatal: reference is not a tree: d19d03c5d63860f0e9cc1c35afc4f8b8ca682afd Unable to checkout 'd19d03c5d63860f0e9cc1c35afc4f8b8ca682afd' in submodule path 'src/frontend/CxxFrontend/EDG'
解決方案:確保您已推送了伴隨的子模組提交。
問題 執行指令碼時出現輸入/輸出錯誤
/tmp/hudson2706138848682410422.sh: line 29: /home/hudson-rose/Applications/jenkins/scripts/tests/rose-test.sh: Input/output error Build step 'Execute shell' marked build as failure
解決方案:重新啟動作業;這是一個可能與 NFS 相關的 I/O 錯誤。
問題' 從 origin / origin 獲取失敗 - 可能不可用。繼續執行。
Fetching upstream changes from rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway. hudson.plugins.git.GitException: Command "git fetch -t rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: stdout: stderr: ssh_exchange_identification: Connection closed by remote host fatal: The remote end hung up unexpectedly at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:863)
解決方案:重新啟動作業;這是由於 ?。
問題' $ROSE_INSTALL 不存在
$ROSE_INSTALL does not exist: '/home/hudson-rose/opt/rose/edg4x//frontend/EDG_4_4/gcc/4.2.4' + exit 1
解決方案:確保在給定的 GIT_COMMIT 和 GCC 版本下,make-install 作業已完成。然後,您可以重新啟動作業。
問題 rsync 錯誤:一些檔案/屬性未傳輸
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
解決方案:重新啟動作業可以解決問題。這通常是由於在複製 ROSE 工作區時遇到了一些 NFS、SSH 或許可權問題。
問題 ../../scripts/dotgenLetterPDF inputCode_wholeAST_1_WholeAST.dot inputCode_ASTWholeGraphGenerator_small.pdf 無法在使用者的路徑中找到 GraphViz dot 程式,忽略轉換為 PostScript 檔案 (不是問題) ... 如果 ! test -e inputCode_ASTWholeGraphGenerator_small.pdf; 然後退出 1; fi
http://hudson-rose-30:8080/job/C0-Start/
1. 問題無法乾淨地合併您的分支
解決方案:執行git-merge在您的本地機器上,以解決與 master 的合併衝突。
例如,
2. 問題失敗 有新的提交?
解決方案:確保您已提交了更改,然後再次推送您的更改集。否則,忽略訊息,也許您已經整合的分支只是被錯誤地測試了。
3. 問題無製表符字元策略檢測到錯誤。現在中止。
The following C/C++ source files contain TAB characters, which can be fixed
in a variety of ways. Perhaps the easiest is to run this script again with
the "--fix" switch (see "./scripts/policies/NoTabCharacters.pl --help" for details).
src/midend/programAnalysis/genericDataflow/analysis/analysis.C
src/midend/programAnalysis/genericDataflow/analysis/dataflow.C
src/midend/programAnalysis/genericDataflow/simpleAnalyses/liveDeadVarAnalysis.C
Errors detected by the no tab characters policy. Aborting now.
Build step 'Execute shell' marked build as failure
Project C0-Start still waiting for 12 builds to complete
Notifying upstream projects of job completion
Finished: FAILURE
解決方案:按照說明從您的原始檔中刪除製表符字元
$ cd $ROSE_SOURCE $ ./scripts/policies/NoTabCharacters.pl --fix
下次,請在推送之前在本地執行測試!(策略檢查是make all的一部分。您也可以單獨執行./scripts/policies-checker.sh從 ROSE 原始碼樹的頂層執行。)
4. 問題Unix 行結束策略檢測到錯誤。現在中止。
POLICY Checking unix line termination policy (./scripts/policies/UnixLineTermination.pl)
ROSE developers predominantly use Unix-like systems for development. These
systems use the ASCII LF (line feed, '\n') character for line termination.
Some other operating systems insert a CR (carriage return, '\r') in front of
the LF. Insertion of the extra CR causes problems for revision management
software and some Unix-based text editors which developers then have to work
around and/or correct. To convert a file from any mixture of CR+LF or
LF-only line endings to LF-only line endings, use:
* the unix command "dos2unix"
* vim 7.0 and later commands ':update', ':setlocal ff=unix'.
* in XEmacs use the "M-x set-buffer-file-coding-system RET" and
enter "undecided-unix".
The following source files have CR+LF line termination:
3 ( 100%) lines in ./tests/CompileTests/Fortran_tests/test2011_Rice_function-no-result-1.f90
6 ( 100%) lines in ./tests/CompileTests/Fortran_tests/test2011_Rice_function-no-result-2.f90
3 ( 100%) lines in ./tests/CompileTests/Fortran_tests/test2011_Rice_function-result-1.f90
Errors detected by the unix line termination policy. Aborting now.
...
Finished: FAILURE
解決方案:按照說明從您的原始檔中刪除 CR+LF 行結束符字元
$ man dos2unix
$ dos2unix ${ROSE_SOURCE}/path/to/culprit/file_1
$ dos2unix ${ROSE_SOURCE}/path/to/culprit/file_2
...
$ dos2unix ${ROSE_SOURCE}/path/to/culprit/file_N
下次,請在推送之前在本地執行測試!(策略檢查是make all的一部分。您也可以單獨執行./scripts/policies-checker.sh從 ROSE 原始碼樹的頂層執行。)
5. 問題未使用原始碼策略檢測到錯誤。現在中止。
Number of remaining unused source files: 1482. Errors detected by the unused sources policy. Aborting now. ... Finished: FAILURE
“未使用原始碼策略”將透過“剩餘未使用的原始檔數量:1481。”。因此,您將看到至少 1481 行輸出原始檔。不,這不是您的問題。簡單來說,當此策略首次實施時,已經存在違規檔案。此策略的意義僅僅是不降低門檻,即不要超過 1481 個未使用的原始碼。(也許有一天我們真的會修復這個問題)。
解決方案:確保您的原始檔在與以下正則表示式匹配的某種 Makefile 中被提及/\/(Makefile\.am|Makefile_variables|CMakeList\.txt|make_rule\.inc|Makefile-.*\.inc)$/(截至提交213fd5d72,2012 年 7 月 26 日)。
下次,請在推送之前在本地執行測試!(策略檢查是make all的一部分。您也可以單獨執行./scripts/policies-checker.sh從 ROSE 原始碼樹的頂層執行。)
http://hudson-rose-30:8080/job/C6-ROSE-distcheck/
問題:
make[3]: *** No rule to make target `README', needed by `distdir'. Stop. ... make: *** [distdir] Error 1 ******************************************************************************** *** FAILED make distcheck step ********************************************************************************
問題在於,在執行“make dist” 時,某些檔案不會自動新增到軟體分發中。例如,輸入測試程式碼檔案,README檔案和配置檔案。
預後:
“make distcheck":
1. "make dist” 的概述:確保您可以成功建立軟體包的 tarball 分發。
2. tarball 分發被解壓縮(解包),然後對該分發原始碼樹執行測試。
3. "$ROSE/configure”:使用 GNU Autoconf 配置軟體包。
4. "make all”:使用 GNU Automake 構建軟體包。
5. "make check”:使用 GNU Automake 執行軟體包的迴歸測試check-local規則。
檔案並不總是自動新增到分發 tarball 中(在“make dist” 期間)。但是,如果大多數原始碼和標頭檔案用於構建庫和可執行檔案(在 Automake Makefile 中指定,Makefile.am).
),則它們會自動新增。:
- 解決方案將違規檔案新增到EXTRA_DISTMakefile.am中,該變數位於適當的
EXTRA_DIST = README project.config
- 檔案中。make distcheck下次推送之前,在您的本地機器上測試“
” !
- 參考
問題: 分發基礎知識:http://www.delorie.com/gnu/docs/automake/automake_91.html
config.status: error: cannot find input file: projects/RTC/docs/Makefile.in make: *** [distcheck] Error 1
找不到輸入檔案 Makefile.inMakefile.am問題是,make dist沒有列出專案的所有子目錄。結果是,
無法建立完整的分發,因為它不知道要進入專案的子目錄,因為這些目錄沒有被列出。該$ROSE/projects/RTC/Makefile.am
SUBDIRS = src
看起來像這樣但是,除了:
$ ls projects/RTC/ docs/ include/ libs/ Makefile.am Makefile.in Makefile.in~ RTC.C src/ tests/
),則它們會自動新增。:
src/該:
SUBDIRS = \ docs \ include \ libs \ src \ tests
之外,還有更多子目錄。
make[4]: *** No rule to make target `../../../src/librose.la', needed by `vectorization'. Stop. make[4]: *** Waiting for unfinished jobs.... ... make: *** [distdir] Error 1 ******************************************************************************** *** FAILED make distcheck step ********************************************************************************
將所有子目錄新增到問題:沒有為 librose.la 指定規則以下 Makefile.am 用於專案的 tests 目錄中。翻譯器只將
TESTCODES = \
simpleArithmetic.c \
simpleIntegerArithmetic.c \
multiDimensionArray.c
../src/vectorization:
$(MAKE) -C $(top_builddir)/projects/vectorization/src
...
$(TESTCODES): ../src/vectorization
../src/vectorization $(srcdir)/$@
check-local:
@$(MAKE) $(TESTCODES)
EXTRA_DIST = $(TESTCODES)
TESTCODES問題:沒有為 librose.la 指定規則中的程式碼作為輸入並執行翻譯。將違規檔案新增到問題是,將違規檔案新增到在
),則它們會自動新增。:
- 中被列為分發物件,並且也用作 Makefile 中的目標規則。目前尚不清楚 Make distdir 如何處理這種情況。但是,避免在
TESTCODES = \
simpleArithmetic.c \
simpleIntegerArithmetic.c \
multiDimensionArray.c
+TEST_OUTPUTS = $(TESTCODES:.c=)
../src/vectorization:
$(MAKE) -C $(top_builddir)/projects/vectorization/src
...
$(TEST_OUTPUTS): ../src/vectorization
../src/vectorization $(srcdir)/$(@:=.c)
check-local:
@$(MAKE) $(TEST_OUTPUTS)
EXTRA_DIST = $(TESTCODES)
中使用該變數作為 Makefile 規則可以消除此問題。
C6-ROSE-distcheck
********************************************************************************
*** Starting ROSE-build setup step
********************************************************************************
chmod: changing permissions of `./ROSE-build/rose-0.9.5a': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/docs': Operation not permitted
chmod: cannot read directory `./ROSE-build/rose-0.9.5a/docs': Permission denied
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/rose_config.h': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/rose_config.h.in': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2008-09-SignatureVisualizationOfSoftwareBinaries-SoftVis.pdf': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2009-TechniquesForSoftwareQualityAnalysisOfBinaries-ISTA.pdf': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/lcpc03_qsys_final.tgz': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2007-CommunicatingSoftwareArchitectureUsingAUnifiedSingle-ViewVisualization-ICECCS.pdf': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2003-ParallelObject-OrientedFrameworkOptimization-CPC.pdf': Operation not permitted
chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2007-AnalyzingAndVisualizingWholeProgramArchitectures-Aerose-ICSE.pdf': Operation not permitted
[many more similar lines omitted...]
新增另一個變數以用於 makefile 規則。
問題 操作不被允許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/問題: ROSE 具有配置選項(例如,--enable-only-java) 來切換 (編譯器前端) 語言支援(有關詳細資訊,請參見
$ROSE/configure --help
...: Assertion `! "[FATAL] [ROSE] [frontend] [C/C++] " "ROSE was not configured to support the C/C++ frontend."' failed.
)。Makefile.am許多新開發者對此並不瞭解,因此他們的工作經常在這些測試中失敗,因為他們對啟用或停用的前端有錯誤的假設。
解決方案:要透過這些測試,請確保您的 條件塊 在 GNU Automake 中
if ROSE_BUILD_FORTRAN_LANGUAGE_SUPPORT check-local: echo "Fortran (compiler frontend) language support is ENABLED!" else echo "Fortran (compiler frontend) language support is DISABLED!" endif
開啟 (編譯器前端) 語言特定邏輯。示例:在您特定於 Fortran 的工作中,使用以下條件:
與語言無關的測試程式碼 可以在
# TODO: add CUDA and OpenCL ##------------------------------------------------------------------------------ ## Minimal input codes (just enough to be 'compiled') #ROSE_BUILD_C_LANGUAGE_SUPPORT and ROSE_BUILD_CXX_LANGUAGE_SUPPORT are equivalent in ROSE due to the same EDG C++ frontend used. if ROSE_BUILD_C_LANGUAGE_SUPPORT __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.cpp else if ROSE_BUILD_FORTRAN_LANGUAGE_SUPPORT __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.f90 else if ROSE_BUILD_JAVA_LANGUAGE_SUPPORT __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.java else if ROSE_BUILD_PHP_LANGUAGE_SUPPORT __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.php else if ROSE_BUILD_PYTHON_LANGUAGE_SUPPORT __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.py else if ROSE_BUILD_BINARY_ANALYSIS_SUPPORT __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.binary endif # Binary analysis endif # Python endif # PHP endif # Java endif # Fortran endif # C
${ROSE}tests/input_codes/Makefile.for.input.codes
中找到。../../testTranslator -rose:java:d javac-output-classes -rose:verbose 0 ../../../../tests/CompileTests/Java_tests/test2011_02.java # # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00002b2e79c63961, pid=24881, tid=47481965754688 # # Java VM: Java HotSpot(TM) 64-Bit Server VM (11.0-b16 mixed mode linux-amd64) # Problematic frame: # V [libjvm.so+0x484961] # # An error report file with more information is saved as: # /export/tmp.hudson-rose/hudson/workspace/C1-ROSE-from-scratch-linux/ROSE_TEST_BUILD_STYLE/make-check-install-minimal/ROSE_TEST_GCC_VERSION/4.0.4/label/amd64-linux/ROSE-build/tests/CompileTests/Java_tests/hs_err_pid24881.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # make[5]: *** [test2011_02.o] Error 1 make[5]: *** Waiting for unfinished jobs.... Test using Java 1.4 version support.
這些條件的完整示例在 此檔案 中給出。
# # An unexpected error has been detected by Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00d38750, pid=12219, tid=3012402064 # # Java VM: Java HotSpot(TM) Server VM (11.0-b16 mixed mode linux-x86) # Problematic frame: # C [libstdc++.so.6+0xb5750] __dynamic_cast+0x20 # # An error report file with more information is saved as: # /export/tmp.hudson-rose/hudson/workspace/C1-ROSE-from-scratch-linux/ROSE_TEST_BUILD_STYLE/make-check-install-minimal/ROSE_TEST_GCC_VERSION/4.1.2/label/i686-linux/ROSE-build/tests/CompileTests/Fortran_tests/hs_err_pid12219.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # Note: astNode = 0x98dc790 = SgBasicBlock parent = 0x98fdad8 Note: parentNode = 0x98dc790 = SgBasicBlock <font style="color:red">ERROR: <b>building test2011_Rice_A-cant-assert-keyword-nonnull.o</b></font> Hide Details make[6]: *** [test2011_Rice_A-cant-assert-keyword-nonnull.o] Aborted make[6]: *** Waiting for unfinished jobs....