ROSE 編譯器框架/開發者指南
外觀
我們簡要介紹了 ROSE 開發人員的工作流程。
有這些經驗,或者準備好學習它們
- Shell 程式設計: Bash(預設 shell)
- Unix 命令: grep, find, ssh等等。
- C++ 程式設計
- GDB/Valgrind
- Git
- 構建系統
- Make
- CMake Windows 埠使用此,我們正在考慮在其他地方使用它
- autoconf/automake
- libtool
- LaTeX: 文件標準
- 編譯器技術: 直覺非常寶貴
- Git
ROSE 專案重視以下貢獻
發展
- 程式碼: 實現新的編譯器功能,改進現有工作,透過程式碼審查和 Jenkins。只有合併到中央主分支的提交才算作貢獻。
- 擴充套件語言支援
- 分析 (AST 分析是一個好的起點)
- 最佳化
- 構建系統
- Bug 修復: 透過程式碼審查和 Jenkins (未來,Klocwork、Coverity 等分析工具)
- SciDAC 外聯中心錯誤跟蹤器中發現的使用者錯誤
- 內部錯誤: 通常是開發人員錯誤,它們可以在 github.com 或 redmine 上找到
- 文件
- ROSE 工作原理
- 教程、手冊、常見問題解答等 (更新這些是最有幫助的)
- 專案文件 (專案可以在 projects 目錄中找到)
- 設計/架構/API 文件,
- 工作流程文件
- 系統管理: 維護和改進工作流程元件 (主要是內部開發人員工作,但建議是有用的)
- 網站: rosecompiler.org
- Git 倉庫
- 專案管理: Redmine
- 程式碼審查: Github 企業版
- Jenkins: 持續整合,改進測試
研究
- 出版物: 技術報告、論文、簡報、海報
- 簡報幻燈片 (將幻燈片上傳到相關 Redmine 專案的 @Files Tab@。(@.pptx@ 格式是必需的)
建議
- 協作提案
反饋: 請記住,您遇到的任何問題可能並非只屬於您
- 一般性困難 (在管理上或實施上)
- 對軟體和人員的一般性改進/增強想法
與我們合作的一些實習生一起工作後,我們大致確定了 ROSE 開發人員的以下里程碑
- 開發環境: 選擇您選擇的平臺 (Linux 或 Mac OS),並熟悉該特定平臺 (shell、編輯器、環境變數設定等)
- 物理位置: 位置很重要!坐在您應該經常互動的人附近。讓您的辦公桌/辦公室方便他人使用。物理上隔離的辦公室/辦公桌可能會對您的工作效率產生非常負面的影響。
- 安裝 ROSE: 能夠順利配置、編譯和安裝 ROSE
- 構建系統: 能夠透過修改將專案 (第一個骨架) 新增到 ROSE 中Makefile.am等等。
- 貢獻遵循ROSE 程式碼標準並透過程式碼審查
- 文件: 關於您所做的工作的充分文件
- 軟體工程:
- 風格指南: Doxygen 註釋、命名約定、放置位置等。
- 介面: 程式碼是否具有使用者可以使用的乾淨簡潔的介面?
- 演算法設計: 透過原始碼註釋記錄預計的工作方式
- 編碼實現: 正確實現設計的演算法
- 測試: 每個貢獻都必須有相應的測試,以確保它按預期工作
- 持續整合: 將提交推送到 Jenkins 每兩三週進行程式碼審查和測試,以獲取您增量開發的結果。
- 如果沒有現有的測試工作測試您的專案,請新增一個新的測試工作
- 確認您的提交已合併到 ROSE 專案的中央主分支: github.com 提供個人影響力的圖表
我們經常有實習生/合作者/分包商完成與我們的官方職責。以下是他們終止前的一份簡短清單
- 完成學生計劃清單 (我們不知道您需要做什麼 :-))
- 完成我們提供的績效評估表: 主要提供客觀事實來證明貢獻,因為主觀印象可能非常不準確。
- 完成我們提供的簡短反饋表,您可以在其中討論與開發 ROSE 或與 ROSE 團隊合作相關的任何事項。您的坦誠反饋對於我們合作計劃的未來至關重要。
- 在官方結束日期前兩週安排與至少一名工作人員進行一對一會議,以進行狀態檢查和計劃退出
- 將所有不在 git 倉庫中的文件 (LaTeX、word、powerpoint 等) 提交到 redmine 專案的 File 選項卡
- 在結束日期前至少一週停止開發任何新功能,以便我們專注於確保所有原始碼貢獻都能透過 Jenkins
- 如果您打算繼續與我們合作,請詢問獲取內部訪問許可權 (例如 VPN),或設定其他合作方法。
有關詳細資訊,請參閱程式碼審查部分。
在/nfs/apps掛載點上預裝了許多工具
$ ls /nfs/apps
apr bin etc grace java mpc neon pygobject sqlite toolworks.old
asciidoc binutils flex graphviz libtool mpfr openssh python src totalview
asymptote blender gcc hdf5 m4 mpich perl qt subversion upc
autoconf doc++ git insure++ maple mpich2 pgi rdesktop swig visit
automake doxygen gmp intel matlab mplayer psi ruby texinfo xemacs
大多數這些工具的根目錄都包含一個setup.sh檔案,您可以將其作為原始檔。這將正確設定您的庫路徑 ($LD_LIBRARY_PATH) 和程式路徑 ($PATH)
GCC
$ source /nfs/apps/gcc/4.5.0/setup.sh
這個 GCCsetup.sh檔案也應該作為 MPFR 和 GMP 的源,但如果不是,請手動執行
$ source /nfs/apps/mpfr/3.0.0/setup.sh
$ source /nfs/apps/gmp/4.3.2/setup.sh
如果您沒有正確地將這些依賴項作為源,您可能會遇到此錯誤
/nfs/apps/gcc/4.3.2/libexec/gcc/x86_64-unknown-linux-gnu/4.3.2/f951: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory