最近我在试用 OpenSUSE Build Service 为 Arch Linux 打包时遇到了一些难题,就是怎么样写 _service 来实现以下格式的版本号。
第一种:
源代码是一个Git仓库,版本号是由
git describe --always | sed 's|-|.|g'
的结果决定的。
例子是 goldendict-git ,见 https://aur.archlinux.org/packages/go/g … t/PKGBUILD
目前的版本号应该是 1.5.0.RC.428.gebad891
我不知道怎么写_service才能实现自动填充版本号,有新的版本的话只需要执行 osc service rr 就可以。
目前我是这样写的:
<services>
<service name="tar_scm">
<param name="scm">git</param>
<param name="url">git://github.com/goldendict/goldendict.git</param>
<param name="versionformat">g%h</param>
<param name="versionprefix">1.5.0.RC.428</param>
<param name="filename">goldendict</param>
</service>
<service name="recompress">
<param name="file">*.tar</param>
<param name="compression">gz</param>
</service>
<service name="set_version"/>
</services>
=============================
第二种:
源代码是一个Git仓库,版本号是由
printf "%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
的结果决定的。例子是 oh-my-zsh-git ,见 https://aur.archlinux.org/packages/oh/o … t/PKGBUILD
目前的版本号应该是 2774.96e4e5d
我不知道怎么写_service才能实现自动填充版本号,有新的版本的话只需要执行 osc service rr 就可以。
目前我是这样写的:
<services>
<service name="tar_scm">
<param name="scm">git</param>
<param name="url">git://github.com/robbyrussell/oh-my-zsh.git</param>
<param name="versionformat">%h</param>
<param name="versionprefix">2774</param>
<param name="filename">oh-my-zsh</param>
</service>
<service name="recompress">
<param name="file">*.tar</param>
<param name="compression">gz</param>
</service>
<service name="set_version"/>
</services>
=============================
求指导!!!
最近编辑记录 danielhugo (2014-10-26 00:50:58)
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线
来社区的编译机上打包吧,那样就不用纠结 obs 的问题了~
离线
来社区的编译机上打包吧,那样就不用纠结 obs 的问题了~
这篇帖子是照搬我在OpenSUSE论坛发的求助帖,所以对于 Arch Linux 用户来说,问题描述得似乎不是很清楚,这样吧,我把它细化一下。
OpenSUSE Build Service 在打包的时候是不支持联网的,所以所有下载源码的操作都必须在 _service 文件中阐明,然后这个 _service 支持下载 Git 仓库代码的操作,并且可以把下载下来的源码打包成tar,现在的问题是如何让 _service 实现原来的 pkgver() 函数的内容。
主要是这两个参数:
<param name="versionformat">
<description>
Auto-generate version from checked out source using this format
string. This parameter is used if the 'version' parameter is not
specified.
For git, the value is passed to git log --date=short --pretty=format:...
for the topmost commit, and the output from git is cleaned up to
remove some unhelpful characters. Here are some useful examples of
strings which are expanded, see the git-log documentation for more.
%ct Commit time as a UNIX timestamp, e.g. 1384855776.
This is the default.
%at Author time as a UNIX timestamp, e.g. 1384855776.
%cd Commit date in YYYYMMDD format, e.g. 20131119
%ad Author date in YYYYMMDD format, e.g. 20131119
%h Abbreviated hash, e.g. cc62c54
@PARENT_TAG@ the first tag that is reachable, e.g. v0.2.3
For hg, the value is passed to hg log --template=.... See the
hg documentation for more information. The default is '{rev}'
For bzr and svn, '%r' is expanded to the revision, and is the default.
</description>
</param>
<param name="versionprefix">
<description>specify a base version as prefix.</description>
</param>
一个叫 versionprefix 就是一个固定字符串的前缀,另一个叫 versionformat 是命令 git log --date=short --pretty=format: 的输出。
所以问题可以转化为:如何只使用 git log --date=short --pretty=format: 命令,实现以下几个命令的效果(或者部分效果):
git describe --always | sed 's|-|.|g'
printf "%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
git show --pretty=format:%ci HEAD | cut -d ' ' -f 1 | sed 's/-//g'
这样就转化为一个 Git 的使用问题了吧?
=========================
目前的进度是,对于
git describe --always | sed 's|-|.|g'
前面的Tag和提交计数部分只能人工更新,后面的SHA-1值部分可以用 g%h 格式来实现。
(前面的Tag可以用 @PARENT_TAG@ 实现)
对于
printf "%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
前面的提交计数部分只能人工更新,后面的SHA-1值部分可以用 %h 格式来实现。
对于
git show --pretty=format:%ci HEAD | cut -d ' ' -f 1 | sed 's/-//g'
可以用 %cd 格式来实现。
最近编辑记录 danielhugo (2014-10-05 01:35:37)
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线
就是说版本号部分,obs 只支持固定的格式,而不支持 shell 代码?
离线
就是说版本号部分,obs 只支持固定的格式,而不支持 shell 代码?
是的,OBS里面关于 Arch Linux 的部分据 @fasheng 说是由 Google Summer of Code 贡献,貌似不支持 pacman 4.1 以后新增的 pkgver() 特性……这点比较郁闷……
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线
这样吧,请问怎么样用
git show --pretty=format:
实现
git rev-list --count HEAD
的效果?
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线
来社区的编译机上打包吧,那样就不用纠结 obs 的问题了~
话说这是加入ArchLinuxCN仓库维护团队的意思吗?还是社区考虑开放,允许坛友建立个人仓库?
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线
百合仙子 说:来社区的编译机上打包吧,那样就不用纠结 obs 的问题了~
话说这是加入ArchLinuxCN仓库维护团队的意思吗?还是社区考虑开放,允许坛友建立个人仓库?
当然是加入进来啦~为什么不加入呢?难道你弄的是非开源的私有仓库?或者因为版权原因不能加入?
离线
百合仙子 说:来社区的编译机上打包吧,那样就不用纠结 obs 的问题了~
话说这是加入ArchLinuxCN仓库维护团队的意思吗?还是社区考虑开放,允许坛友建立个人仓库?
喵~凤凰的社区成长计划 https://bbs.archlinuxcn.org/viewtopic.php?id=2875
离线
发到英文论坛上也没有人解答,是我的问题描述不够详细吗?还是此问题无解?
1年之前考虑过参与仓库团队,对Wiki上这段话有点顾虑:
摘自 https://github.com/archlinuxcn/repo/wiki/申请维护者
您的详细身份和联系信息,例如您的工作、当前所在城市/公司/学校或其他单位,以及您的其他可靠联系方式。(我们绝不会将您的隐私信息公开给任何第三方,要求这些信息仅作为身份确认及责任分配。)
现在还需要这些信息吗?
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线
发到英文论坛上也没有人解答,是我的问题描述不够详细吗?还是此问题无解?
1年之前考虑过参与仓库团队,对Wiki上这段话有点顾虑:
摘自 https://github.com/archlinuxcn/repo/wiki/申请维护者
您的详细身份和联系信息,例如您的工作、当前所在城市/公司/学校或其他单位,以及您的其他可靠联系方式。(我们绝不会将您的隐私信息公开给任何第三方,要求这些信息仅作为身份确认及责任分配。)
现在还需要这些信息吗?
这谁写这么正式的……
只需要说明你是谁,如何取得联系就可以了。比如XYZ大学学生,GMail abcd@gmail.com。
离线