Spec rpm:如何在不使用 tar 文件的情况下进入构建目录?
Spec rpm: how to enter in build directory without using tar files?
我想从 git 构建一个项目,并创建 rpm,这是规范,不完整,但最有趣的部分是第一个。
我需要输入 git 创建的构建目录,但失败了
这是规范的一部分。文件
%define build_timestamp %(date +"%Y%m%d")
#
Summary: My git project
Name: gitproject
Release: 1
Version: %{build_timestamp}
License: GPLv2+
Group: Unspecified
URL: https://mygitserver.com/myname/myproject
#-----------------------------------------------------
Requires: openssl
BuildRequires: compat-openssl10-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
#-----------------------------------------------------
AutoReqProv: no
%description
Git personal project, is in testing
%prep
git clone https://mygitserver.com/myname %{name}
cd %{name}
问题是..不是在 %{name} 中输入,而是在 BUILD 中输入..这当然包含很多目录..但不包含 makefile。
+ umask 022
+ cd /home/user/rpmbuild/BUILD
+ make -j2
make: *** No targets specified and no makefile found. Stop.
如何输入 %{name}?
我不会跳过 tgz 部分,但让 git
为您完成工作。我解决这个问题的方法:在您的规范文件中使用 Source
和 %setup -q
:
Source: %{name}-%{version}.tgz
%prep
%setup -q
现在您可以使用 git 为您创建此 tgz 文件:
git archive --format=tgz --prefix=gitproject-1.2.3-1 <hash or tag> > /home/user/rpmbuild/SOURCES/gitproject-1.2.3.tgz
请注意,前缀 ang 文件名需要与规范文件中 Source
标记中的 %name-%version.tgz
相匹配。您当然可以更改这些命名约定。
PS:我已经围绕这个写了一个完整的方便脚本;但是使用这些命令,您应该可以完成大部分工作。
我想从 git 构建一个项目,并创建 rpm,这是规范,不完整,但最有趣的部分是第一个。 我需要输入 git 创建的构建目录,但失败了 这是规范的一部分。文件
%define build_timestamp %(date +"%Y%m%d")
#
Summary: My git project
Name: gitproject
Release: 1
Version: %{build_timestamp}
License: GPLv2+
Group: Unspecified
URL: https://mygitserver.com/myname/myproject
#-----------------------------------------------------
Requires: openssl
BuildRequires: compat-openssl10-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
#-----------------------------------------------------
AutoReqProv: no
%description
Git personal project, is in testing
%prep
git clone https://mygitserver.com/myname %{name}
cd %{name}
问题是..不是在 %{name} 中输入,而是在 BUILD 中输入..这当然包含很多目录..但不包含 makefile。
+ umask 022
+ cd /home/user/rpmbuild/BUILD
+ make -j2
make: *** No targets specified and no makefile found. Stop.
如何输入 %{name}?
我不会跳过 tgz 部分,但让 git
为您完成工作。我解决这个问题的方法:在您的规范文件中使用 Source
和 %setup -q
:
Source: %{name}-%{version}.tgz
%prep
%setup -q
现在您可以使用 git 为您创建此 tgz 文件:
git archive --format=tgz --prefix=gitproject-1.2.3-1 <hash or tag> > /home/user/rpmbuild/SOURCES/gitproject-1.2.3.tgz
请注意,前缀 ang 文件名需要与规范文件中 Source
标记中的 %name-%version.tgz
相匹配。您当然可以更改这些命名约定。
PS:我已经围绕这个写了一个完整的方便脚本;但是使用这些命令,您应该可以完成大部分工作。