跳到内容

ROSE 编译器框架/开发者指南

来自维基教科书,开放世界中的开放书籍


我们简要介绍了 ROSE 开发人员的工作流程。

ROSE 开发人员的基本技能

[编辑 | 编辑源代码]

有这些经验,或者准备好学习它们

  • Shell 编程: Bash(默认 shell)
  • Unix 命令: grep, find, ssh等等。
  • C++ 编程
  • GDB/Valgrind
  • Git
  • 构建系统
    • Make
    • CMake Windows 端口使用此,我们正在考虑在其他地方使用它
    • autoconf/automake
    • libtool
  • LaTeX: 文档标准
  • 编译器技术: 直觉非常宝贵

有用的资源

[编辑 | 编辑源代码]

有价值的贡献

[编辑 | 编辑源代码]

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 开发人员的里程碑

[编辑 | 编辑源代码]

与我们合作的一些实习生一起工作后,我们大致确定了 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),或设置其他合作方法。

代码审查

[编辑 | 编辑源代码]

有关详细信息,请参阅代码审查部分。

从内部 LLNL 计算机工作

[编辑 | 编辑源代码]

工具链

[编辑 | 编辑源代码]

/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
华夏公益教科书