我正在寻找一个关于在几天的搜索中没有引起我注意的软件的建议。
是否有任何软件解决方案可以同时部署多个项目,在源代码构建包管理器级别运行(如端口、端口或nix),但可以驻留在本地?
至于细节,我们有几个松散连接的软件项目,具有以下特点:
- 项目主要是在C/C++和Python上编写的,但更多的语言表示为少量的混合语言(Haskell、Rust、Perl)
- 项目在git超级项目中分组在一起,具有针对特定环境精心调整的某些构建/部署预设(并通过类似布尔的选项子集进行调整以用于特定目的)
- 我们已经为C++项目完成了精心设计的CMake构建脚本,这些脚本可以支持选项、构建配置、导出目标等等。现在从它切换会很昂贵
- 我们被迫处理各种Linux发行版(从Gentoo和Ubuntu到Debian和CentOS)
我们需要一个统一的构建&用于各种环境的部署工具。CMake不能很好地与非编译语言集成(例如,不能通过virtualenv本地支持本地Python安装)。
我不想改变我们已经开发的东西,而是想以操作系统包管理器的方式使用它们。在我看来,它应该与所谓的元构建工具非常相似。事实上,Gentoo Portages非常接近:
- 使用简单的布尔选项(使用标志、配置文件)轻松定制
- 将构建程序委托给专门为此目的设计和测试的可靠和可定制工具(CMake、autotools、Bazel等)
- 提供了一种使用标准化指令集以明确的声明方式更改目标编译器安装和指定构建过程的能力。门户网站不能在本地运行(还有其他不相关的缺陷)
在将整个构建系统切换到Meson或Bazel或我目前能找到的任何其他系统之前,我必须变得非常自信。
更新
更具体地说,我可以提及我们迄今为止所做的工作。我们维护的超级项目之一涉及特定的科学实验:
- 所有子项目都列为git子模块
- 一个简单的BASH脚本,用于维护整个构建-安装-部署生命周期
- 引用具体环境的特定设置的预设表示为BASH源,并包含在这个维护shell脚本中
由于几天之后都没有结果,我打算根据这些shell脚本活动已经获得的经验编写自己的解决方案。
对于类似的任务,Bob是一段时间前开发的。如果您仍然需要一个构建系统,那么它可能值得一看。这里有一些小教程,还有一个从零开始构建linux的复杂基础示例。
基本上,它只是一个控制bash脚本执行的环境,具有依赖项和变量处理、CI集成、IDE支持等功能,。。
看看Sparrow-Linux脚本平台,它支持项目层次结构和任务-可配置脚本,其中以声明方式以Yaml、Json格式进行配置。这有望解决您在这里提到的许多(如果不是全部的话)需求。
披露-我是工具的作者。