跳到主要内容

Golang

这个文档讲述了在 openRuyi 打包时,如何使用名为 golanggolangmodules 的声明式构建系统。

通常来说,Go 语言的库包可用自动化工具生成大部分的内容,不需要人工编写。

依赖

如需要使用 golanggolangmodules 构建系统,那么需要添加这些 BuildRequires

BuildRequires:  go
BuildRequires: go-rpm-macros

使用需要什么宏

至少应该在头部定义 _namego_import_path。前者通常为 Go 库的名称,后者通常为 Go 库的导入路径。

示例

无论是 golang 还是 golangmodules 构建系统,都可直接使用通用的准备 (%prep) 配置:

BuildOption(prep):  -n %{_name}-%{version}

仅打包库

通常来说,因为库打包不需要编译,golangmodules 构建系统内已经包含安装 (%install) 和测试 (%check)配置。

如果需要添加测试参数,可以用以下的配置:

BuildOption(check):  -vet=off -short

打包二进制+库

打包时可根据实际情况使用 golanggolangmodules 构建系统。如果想在使用一个构建系统时使用另一个构建系统的内容,可直接进行调用。例如在打包该类软件包时使用 golangmodules 构建系统,但需要编译和安装二进制时:

# Build binaries for tools
%build
%go_common
cd %{_builddir}/go/src/%{go_import_path}
go install -trimpath -v -p %{?_smp_build_ncpus} ./cmd/...

# Install binaries for tools
%install -a
install -d %{buildroot}%{_bindir}
install -m 0755 %{_builddir}/go/bin/* %{buildroot}%{_bindir}/

反之,如果在打包该类软件包时使用 golang 构建系统,但需要安装 Go 库源码时:

# This is for the source package
%install -a
%buildsystem_golangmodules_install

构建系统宏说明

Go 语言的两个构建系统宏为 /usr/lib/rpm/macros.d/macros.buildsystem.golang/usr/lib/rpm/macros.d/macros.buildsystem.golangmodules