Open liusheng opened 3 years ago
NOTE: 留存一个批量创建openeuler包仓库分支的脚本:
#!/bin/bash
set -e
branch_names="oepkg_openstack-rocky_oe-20.03-LTS-SP2 oepkg_openstack-queens_oe-20.03-LTS-SP2"
project_list=./projects
src_yaml=./community/repository/src-openeuler.yaml
miss_list=""
miss=0
for p_name in $(cat $project_list)
do
grep -Eo '^- name: '$p_name'$' ./community/repository/src-openeuler.yaml >/dev/null && echo "Creating branch for project: $p_name" || { miss_list="${miss_list}$p_name "; let miss+=1; continue; }
for b_name in $branch_names
do
sed -n '/^- name: '$p_name'$/,/^- name:/p' $src_yaml |grep $b_name > /dev/null && { echo "Project $p_name already has branch: $b_name"; continue; }
sed -i '/^- name: '$p_name'$/{:a;n;/type: protected/!ba;s/type: protected/type: protected\n\ \ - name: '$b_name'\n\ \ \ \ type:\ protected\n\ \ \ \ create_from:\ master/}' $src_yaml
done
done
echo "$miss projects missed in src-openeuler.yaml: $miss_list"
注意:需要在脚本同目录放community项目,以及一个projects
文件,改文件存放要添加分支的项目名称列表。
0. 准备工作
首先准备一个openEuler环境,docker 环境更加方便,Docker镜像在这里下载 以
openEuler 20.09
为例,使用如下命令来导入Docker镜像:基于openEuler的容器镜像,重新build一个容器镜像,包含gcc等基础组件,由于这些组件在容器中没法直接安装(存在bug), 但是可以提前打在镜像中:
1. 安装打镜像的依赖
创建容器
这里要注意的是openEuler系统一段时间未有操作会自动断联,所以需要配置一下
sed -i s'/TMOUT=300/TMOUT=300000000000/' /etc/bashrc
容器里安装打包所需依赖
生成RPM打包各个目录
会在当前目录生成
SPECS
、BUILD
、RPMS
等目录下载源码放到
~/rpmbuild/SOURCES
目录下面在
~/rpmbuild/SPECS
目录中创建specs文件,这里可以参考fedora
和centos
的官方包的spec记录一个技巧 从
source rpm
文件中提取spec文件,如下:参考:https://vault.centos.org/7.5.1804/cloud/Source/
生成rpm包
安装验证生成rpm包
对于Python包,有一个方便的工具可以快速生成spec文件:
打patch的方法 生成patch文件,如下:
编辑spec文件,增加:
2. 提交PR到openEuler社区
3. 其他
编写Spec中一些有用的宏:
VERSION
默认为%version
, EXT默认为tar.gz