LoongArchLinux 开发工具箱
1 2 3
+---------+ +---------+ +---------+
|archlinux| A | Repos | A | Core/ |
| Gitlab |------> | |------>| Extra |
+---------+ +---------+ +---------+
图示说明:
archlinux Gitlab
: https://gitlab.archlinux.org/archlinux/packaging/packages archlinux 官方仓库
Repos
: https://github.com/loongarchlinux/repos 重制 archlinux 多软件仓库为单一仓库,每次提交为官方仓库某时刻的snapshot
Core
: https://github.com/loongarchlinux/core 从 Repos 分库,对应 core 二进制仓库
Extra
: https://github.com/loongarchlinux/extra 从 Repos 分库,对应 extra 二进制仓库
A
: update-repos.py
脚本,完成从archlinux官方重制 Repos 仓库,对 core/extra 分库,并提交 repos/core/extra 仓库的arch分支、创建 x86 tag等。
流程介绍
- 运行脚本,更新 Repos 仓库
Repos 仓库,只有一个 main
分支,提取当前时刻的 ArchLinux 上游快照,并按 core/extra/core-testing... 组织目录。
每个提交记录,为一次 ArchLinux 的上游快照。
- 运行脚本,更新 Core/Extra 仓库分支及tag
core、extra 为 loongarchlinux 发行版仓库,其中 arch
分支为从 Repos
分库而来,且同步打上 x86.YYYYMMDD
的 tag。
- 在 core/extra 仓库上进行 loongarchlinux 日常开发
main
分支,为工作分支,每次开始工作时
- 首先会创建一个 `YYYY.MM` 的分支副本,以保留当前开发周期的完整历史,
- 其次会 squash 本开发周期内所有commit为一次提交,
- 然后基于更新后的 `arch` 分支进行 rebase 操作,
- 最后开始构建增量变化的软件包。
所谓增量变化的包,指的是前后 2 个 x86.YYYYMMDD
tag 之间 PKGBUILD 文件有变化的软件,如果在一个同步开发周期内,多次执行过 update-repos.py
脚本,则这个增量变化的包,可能需要在3个或更多个tag之间对比产生。
注:在 main
分支历史记录中,通常在 x86.YYYYMMDD
tag 之后,一般会存在一个 Add support for LoongArch
提交,这是在 rebase 操作时,为了避免对同一处冲突文件进行多次修改(多次提交,会产生多次相同冲突),而将前一次开发周期产生的修改进行了压缩。
1 2 3 4 5
+-------------+ +--------------+ +----------+ +-----------+ +--------------+
|archlinux.dev| --A-> | archlinux.pub| --A-> |TestServer| --B-> |wsyu server|--C-->| Mirror Server|
+----+--------+ +------+-------+ +----+-----+ +-----+-----+ +--------------+
| | | |
+-----development-------+ testing production
图示说明:
archlinux.dev
: 位于本地服务器上的开发环境仓库
archlinux.pub
: 位于本地服务器上的预发布环境仓库
TestServer
: 位于公网服务器的非公开测试仓库
wsyu server
: https://mirrors.wsyu.edu.cn/loongarch/archlinux/ 位于公网服务器的公开主仓库(武昌首义学院)
Mirror Server
: 位于公网服务器的各镜像仓库(如南京大学、北京大学镜像网站)
A
: repo-release.py
脚本,从 archlinux.dev
仓库制作 archlinux.pub
仓库,以及同步 archlinux.pub
仓库到 TestServer
服务器
B
: rsync 命令,从 TestServer
同步到公网主仓库服务器
C
: rsync 命令,由各镜像网站,自行使用 rsync 从公网主仓库服务器同步仓库
流程介绍
-
本地构建软件包(pkgctl),每构建完成一个包,将自动进入
archlinux.dev
本地仓库 -
运行
repo-release.py
脚本,从archlinux.dev
仓库生成可预发布的archlinux.pub
仓库结构(增加iso、images等等) -
运行
repo-release.py
脚本,将archlinux.pub
仓库同步到公网的测试服务器TestServer
,此服务器对外提供debuginfod
服务 -
在
TestServer
上,运行 rsync 命令,将仓库同步到wsyu server
武昌首义学院主仓库服务器 -
其他镜像站,使用
rsync
命令将主仓库同步到各自的镜像服务器