100 Star 60 Fork 240

src-openEuler / kernel

 / 详情

使用rpmbuild 编译kernel, prep阶段打补丁失败

已完成
缺陷 成员
创建于  
2021-07-08 12:45

【标题描述】使用rpmbuild 编译kernel, prep阶段打补丁失败
【环境信息】
硬件信息:

软件信息:
1) kernel-4.19.90
2) kernel-4.19.90
3) kernel.spec

【问题复现步骤】
必现。
前提:
kernel.spec中的with_patch为1,并且至少有一个补丁
步骤:
1.使用rpmbuild -bp编译kernel.编译成功
2.再使用rpmbuild -bp 编译kernel.编译失败,会报补丁打不上的错误

【预期结果】
正常编译
【实际结果】
编译报错
【附件信息】
kernel.spec的prep阶段有下面代码:

%if 0%{?with_patch}
if [ ! -d kernel-%{version}/vanilla-%{TarballVer} ];then
%setup -q -n kernel-%{version} -a 9998 -c
    mv linux-%{TarballVer} vanilla-%{TarballVer}
else
    //s1
    cd kernel-%{version}
fi
cp -rl vanilla-%{TarballVer} linux-%{KernelVer}
%else
%setup -q -n kernel-%{version} -c
mv kernel linux-%{version}
cp -rl linux-%{version} linux-%{KernelVer}
%endif

第二次编译的时候,kernel-%{version}/vanilla-%{TarballVer} 已存在,会走到s1那个地方,但是这里并没有调用%setup宏或者删除rpmbuild/BUILD下相应的编译目录,导致下面打patch时会报错。

一般在prep阶段都会先删除rpmbuidl/BUILD下面的目录,以便于下面打patch, 不知道openeuler的kernel.spec为什么会这么设计?

评论 (6)

苟浩 创建了缺陷
苟浩 关联仓库设置为src-openEuler/kernel
展开全部操作日志

Hey gou-hao-2021, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

openeuler-ci-bot 添加了
 
sig/Kernel
标签

可以这样修改

diff --git a/kernel.spec b/kernel.spec                                                                                                                                                                          
index e00a323..11c76aa 100644                                                                                                                                                                                   
--- a/kernel.spec                                                                                                                                                                                               
+++ b/kernel.spec                                                                                                                                                                                               
@@ -205,20 +205,14 @@ package or when debugging this package.\                                                                                                                                                  
 %endif                                                                                                                                                                                                         
                                                                                                                                                                                                                
 %prep                                                                                                                                                                                                          
-%if 0%{?with_patch}                                                                                                                                                                                            
-if [ ! -d kernel-%{version}/vanilla-%{TarballVer} ];then                                                                                                                                                       
-%setup -q -n kernel-%{version} -a 9998 -c                                                                                                                                                                      
-    mv linux-%{TarballVer} vanilla-%{TarballVer}
-else
-    cd kernel-%{version}
-fi
-cp -rl vanilla-%{TarballVer} linux-%{KernelVer}
-%else
+
 %setup -q -n kernel-%{version} -c
-mv kernel linux-%{version}
-cp -rl linux-%{version} linux-%{KernelVer}
+
+%if 0%{?with_patch}
+tar -xjf %{SOURCE9998}
 %endif
 
+mv linux-%{version} linux-%{KernelVer}
 cd linux-%{KernelVer}
 
 %if 0%{?with_patch}
--

您好,之前的 kernel.spec 没有适配过 with_patch 的情况。我这边复测还发现了其他问题。

把 patch 打包到 patches.tar.bz2 中, 然后放到 SOURCE 目录下

tar -jcvf patches.tar.bz2 *.patch

运行报错

rpmbuild -ba SPECS/kernel.spec 
warning: line 113: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-headers
warning: line 126: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-tools-libs
warning: line 141: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-tools-libs-devel
warning: line 155: It's not recommended to have unversioned Obsoletes: Obsoletes: python-perf
error: Bad source: /root/rpmbuild/SOURCES/linux-4.19.90.tar.gz: No such file or directory
[root@localhost rpmbuild]# rpmbuild -ba SPECS/kernel.spec 
warning: line 113: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-headers
warning: line 126: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-tools-libs
warning: line 141: It's not recommended to have unversioned Obsoletes: Obsoletes: kernel-tools-libs-devel
warning: line 155: It's not recommended to have unversioned Obsoletes: Obsoletes: python-perf
error: Bad source: /root/rpmbuild/SOURCES/linux-4.19.90.tar.gz: No such file or directory

发现是因为内核包名的命名:

URL:     http://www.kernel.org/
%if 0%{?with_patch}
Source0: linux-%{TarballVer}.tar.gz
%else
Source0: linux-%{version}.tar.gz#/kernel.tar.gz
%endif
From 5a7841b518dd1f62a872fb1c9b2fd1760f8d44e7 Mon Sep 17 00:00:00 2001
From: ABC  <abc@abc.com>
Date: Fri, 8 Dec 2028 03:57:47 +0800
Subject: [PATCH] spec: debug with patch

---
 kernel.spec     |  16 +++-------------
 patches.tar.bz2 | Bin 0 -> 1059 bytes
 series.conf     |   1 +
 3 files changed, 4 insertions(+), 13 deletions(-)
 create mode 100644 patches.tar.bz2
 create mode 100644 series.conf

diff --git a/kernel.spec b/kernel.spec
index 472ca77..35432de 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -14,7 +14,7 @@
 
 %global hulkrelease 2106.3.0
 
-%define with_patch 0
+%define with_patch 1
 
 %define debuginfodir /usr/lib/debug
 
@@ -36,11 +36,7 @@ Release: %{hulkrelease}.0095
 Summary: Linux Kernel
 License: GPLv2
 URL:	 http://www.kernel.org/
-%if 0%{?with_patch}
-Source0: linux-%{TarballVer}.tar.gz
-%else
 Source0: linux-%{version}.tar.gz#/kernel.tar.gz
-%endif
 Source10: sign-modules
 Source11: x509.genkey
 Source12: extra_certificates
@@ -222,19 +218,13 @@ package or when debugging this package.\
 
 %prep
 %if 0%{?with_patch}
-if [ ! -d kernel-%{version}/vanilla-%{TarballVer} ];then
 %setup -q -n kernel-%{version} -a 9998 -c
-    mv linux-%{TarballVer} vanilla-%{TarballVer}
-else
-    cd kernel-%{version}
-fi
-cp -rl vanilla-%{TarballVer} linux-%{KernelVer}
 %else
 %setup -q -n kernel-%{version} -c
-mv kernel linux-%{version}
-cp -rl linux-%{version} linux-%{KernelVer}
 %endif
 
+mv kernel linux-%{version}
+cp -rl linux-%{version} linux-%{KernelVer}
 cd linux-%{KernelVer}
 
 %if 0%{?with_patch}
diff --git a/patches.tar.bz2 b/patches.tar.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..5881eda00dc73bdbe001932be19eafeb0070e04a
GIT binary patch
literal 1059
zcmV+;1l;>VT4*^jL0KkKSysf!h5!Qle}u@e0AN^u|NVdaeQN*z|NZ~~fCx|nzV7Z<
zJGwg=v7nShnAG%56HiKbX-`ws{F*}{4@QZm5CD3HgVRtoQxh?%sLFW>wJ|UN6A);~
zX@CF#Aka++O${1>>S!7oXaE2J0001U38N!JLm`A{WHiyB0}+!T7(g%yM41|BCRFwy
z5_)9RHm9NkPf*Aj0iZo5jGu#_vdeL}Y6y^!L_oDu21~L_KsO}!l$0-u03ak1Oq|w&
z6P$%!zHP><<1g$Pbs1Q~g=TJ3#Hke4OZ8BLnYI`3QBWI)t<7u#b@D>N@N;l?Fs2hB
z{cu$aCfcZO8pMB&UkT#9vuEs*>xeFGCV;aW3(FJ(5_0`JZP$-wj4Fe;N;nj_t=DoA
z67H6sn9@3@Ag0l&H6gq{IyAFD`pgCbsL2Ut8e_VB{kZXqtEgty@eUaARFR0tgFg+t
z=Lc6aC2*jl*o;(DiHv%AD!qnLOfj{sU@Z;B#iL)3SMz{JiJMW#GfEKY7V;M3@E}~O
zpm?>g4qw(`HCpA2C2)RI(MF{AtGGR-!*i@mx?v)s2*)sCjMbQm>uea2=USc%v|Pv$
zmDb-J@+eZ#!KoBj3G)2Q;Z87wkbO4n%uAfcVc_t1nIM&7ostj%(naL_##Jadb*POp
z8bT7HQInAOH+iLNz_y2$S5^NsMlHprs>~#UY7Z#WQc<r@*yuj|#*f_7F7L3;#rK^N
z^a>Oo!I7z;>c-NuaU4Ng2i#%(6%+L^G->ZDzJoOSs`cE<n!|*KCYFX|kcZE~$?&po
z66ton60~aMT^xDcpi%e}zJBNs%k7{?BPJ*2zkU?-5%zeyP+yDCB~hq%bWzjUuOC&J
zim(yUYE~WbJWM&35ikgal3Y;*5Esl)YD$PyIT#>`1{27Zj9Qdl5j`Q+DNw9eA#}Fb
z?7tX;X2SAt>71tv<Po)Rq+sIHdvQ@?xZz@6jN`P5oL|z!#6fBl&Dv8?#MZ?UcCiE4
z%;dSkSA;UGLd>&+kXZ1sBS<l{XhQ=O3jA$KxcfxSwt`VNKf<~SXS~DbNtT4DsWJbY
za)O)u{Oy?x_eyQeA-f(3U7`hfTpQ+S=y7!ltUOFGswE_d)Ka%0B0_Xw5U3oWkOey-
zP)tz~dyI{OI7BR@!w|n3ptVRmCy5M-N+gfvQK3e{nnS!e*XiQXGT*;Qz5j2!5C#I|
z6n+<##Ez@cAmXtz9LHG^2vmqkX%c84Qrt{%)(VM5<;^H%%Azn=C_t4-proM@2+X5q
zlt~9&d<a1tgV6`nKNYk{EvrP&Dj}r@nv6tx?uBpcDXj|-n29V#sw#>kh6!56C=J4-
dUKb_ds)cRR@q;Bo+@J^iUC9*TLP1*-CK!sJ>}LP~

literal 0
HcmV?d00001

diff --git a/series.conf b/series.conf
new file mode 100644
index 0000000..0c99b22
--- /dev/null
+++ b/series.conf
@@ -0,0 +1 @@
+patches/0001-bpf-move-new-add-member-to-the-end-of-the-struct-bpf.patch
-- 
2.27.0

hi, 成坚,我把咱两的修改做了下整合,在我修改的基准上,把你修改Source0为kernel.tar.gz这个加了进去,你看一下。

From ee414a4577c36539064e50be75cc38657932dddc Mon Sep 17 00:00:00 2001
From: gouhao <gouhao@uniontech.com>
Date: Tue, 20 Jul 2021 09:45:38 +0800
Subject: [PATCH] update kerner.spec

---
 kernel.spec | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/kernel.spec b/kernel.spec
index e00a323..c11a4b6 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -28,11 +28,8 @@ Release: %{hulkrelease}.0036
 Summary: Linux Kernel
 License: GPLv2
 URL:    http://www.kernel.org/
-%if 0%{?with_patch}
-Source0: linux-%{TarballVer}.tar.gz
-%else
-Source0: linux-%{version}.tar.gz#/kernel.tar.gz
-%endif
+
+Source0: kernel.tar.gz
 Source10: sign-modules
 Source11: x509.genkey
 Source12: extra_certificates
@@ -205,20 +202,14 @@ package or when debugging this package.\
 %endif
 
 %prep
-%if 0%{?with_patch}
-if [ ! -d kernel-%{version}/vanilla-%{TarballVer} ];then
-%setup -q -n kernel-%{version} -a 9998 -c
-    mv linux-%{TarballVer} vanilla-%{TarballVer}
-else
-    cd kernel-%{version}
-fi
-cp -rl vanilla-%{TarballVer} linux-%{KernelVer}
-%else
+
 %setup -q -n kernel-%{version} -c
-mv kernel linux-%{version}
-cp -rl linux-%{version} linux-%{KernelVer}
+
+%if 0%{?with_patch}
+tar -xjf %{SOURCE9998}
 %endif
 
+mv kernel linux-%{KernelVer}
 cd linux-%{KernelVer}
 
 %if 0%{?with_patch}
-- 
2.20.1

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
5329419 openeuler ci bot 1632792936 9250373 gou hao 2021 1623390923
1
https://gitee.com/src-openeuler/kernel.git
git@gitee.com:src-openeuler/kernel.git
src-openeuler
kernel
kernel

搜索帮助