Change-Id: I5a21fb835f37cc031b823b7376422476c8b6e546
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/1248
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
Tested-by: gerrit-photon <photon-checkins@vmware.com>
... | ... |
@@ -1,17 +1,16 @@ |
1 |
-%define LINUX_VERSION 4.4.8 |
|
2 | 1 |
Summary: initramfs |
3 | 2 |
Name: initramfs |
4 | 3 |
Version: 1.0 |
5 |
-Release: 4%{?dist} |
|
4 |
+Release: 4%{?kernelsubrelease}%{?dist} |
|
6 | 5 |
License: Apache License |
7 | 6 |
Group: System Environment/Base |
8 | 7 |
Vendor: VMware, Inc. |
9 | 8 |
Distribution: Photon |
10 | 9 |
Provides: initramfs |
11 |
-BuildRequires: linux = %{LINUX_VERSION} |
|
10 |
+BuildRequires: linux = %{KERNEL_VERSION}-%{KERNEL_RELEASE} |
|
12 | 11 |
BuildRequires: dracut |
13 | 12 |
BuildRequires: ostree |
14 |
-Requires: linux = %{LINUX_VERSION} |
|
13 |
+Requires: linux = %{KERNEL_VERSION}-%{KERNEL_RELEASE} |
|
15 | 14 |
|
16 | 15 |
%description |
17 | 16 |
Photon release files such as yum configs and other /etc/ release related files |
... | ... |
@@ -29,7 +28,7 @@ echo 'add_drivers+="tmem xen-acpi-processor xen-evtchn xen-gntalloc xen-gntdev x |
29 | 29 |
echo 'add_dracutmodules+=" ostree systemd "' > /etc/dracut.conf.d/ostree.conf |
30 | 30 |
|
31 | 31 |
%build |
32 |
-dracut --force --kver %{LINUX_VERSION} initrd.img-no-kmods |
|
32 |
+dracut --force --kver %{KERNEL_VERSION} initrd.img-no-kmods |
|
33 | 33 |
%install |
34 | 34 |
rm -rf $RPM_BUILD_ROOT |
35 | 35 |
install -d $RPM_BUILD_ROOT/boot |
... | ... |
@@ -46,6 +45,8 @@ rm -rf $RPM_BUILD_ROOT |
46 | 46 |
/boot/initrd.img-no-kmods |
47 | 47 |
|
48 | 48 |
%changelog |
49 |
+* Mon Aug 1 2016 Divya Thaluru <dthaluru@vmware.com> 1.0-4 |
|
50 |
+- Added kernel macros |
|
49 | 51 |
* Thu Jun 30 2016 Xiaolin Li <xiaolinl@vmware.com> 1.0-4 |
50 | 52 |
- Exapand setup macro and remove the source file. |
51 | 53 |
* Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.0-3 |
... | ... |
@@ -1,11 +1,7 @@ |
1 |
-# This package depends on exact version of kernel rpm |
|
2 |
-# since it provides kernel modules |
|
3 |
-%define LINUX_VERSION 4.4.8 |
|
4 |
- |
|
5 | 1 |
Summary: A New Scripting Dynamic Tracing Tool For Linux |
6 | 2 |
Name: ktap |
7 | 3 |
Version: 0.4 |
8 |
-Release: 3%{?dist} |
|
4 |
+Release: 3%{?kernelsubrelease}%{?dist} |
|
9 | 5 |
License: GPLv2 |
10 | 6 |
URL: https://github.com/ktap/ktap |
11 | 7 |
Source: %{name}-master.zip |
... | ... |
@@ -15,11 +11,11 @@ Vendor: VMware, Inc. |
15 | 15 |
Patch0: linux-4.4-support.patch |
16 | 16 |
Distribution: Photon |
17 | 17 |
BuildRequires: elfutils-devel |
18 |
-BuildRequires: linux-dev = %{LINUX_VERSION} |
|
19 |
-BuildRequires: linux = %{LINUX_VERSION} |
|
18 |
+BuildRequires: linux-dev = %{KERNEL_VERSION}-%{KERNEL_RELEASE} |
|
19 |
+BuildRequires: linux = %{KERNEL_VERSION}-%{KERNEL_RELEASE} |
|
20 | 20 |
BuildRequires: unzip |
21 | 21 |
Requires: kmod |
22 |
-Requires: linux = %{LINUX_VERSION} |
|
22 |
+Requires: linux = %{KERNEL_VERSION}-%{KERNEL_RELEASE} |
|
23 | 23 |
|
24 | 24 |
%description |
25 | 25 |
ktap is a new scripting dynamic tracing tool for Linux, it uses a scripting language and lets users trace the Linux kernel dynamically. ktap is designed to give operational insights with interoperability that allows users to tune, troubleshoot and extend the kernel and applications. It's similar to Linux Systemtap and Solaris Dtrace. |
... | ... |
@@ -33,11 +29,11 @@ make ktap |
33 | 33 |
# ugly hack: disable security hardening to build kernel module |
34 | 34 |
# we need to remove sec hard specs file for that. |
35 | 35 |
rm -f `dirname $(gcc --print-libgcc-file-name)`/../specs |
36 |
-make KVERSION=%{LINUX_VERSION} mod |
|
36 |
+make KVERSION=%{KERNEL_VERSION} mod |
|
37 | 37 |
|
38 | 38 |
%install |
39 | 39 |
mkdir -p %{buildroot}%{_bindir} |
40 |
-make install DESTDIR=%{buildroot} KVERSION=%{LINUX_VERSION} |
|
40 |
+make install DESTDIR=%{buildroot} KVERSION=%{KERNEL_VERSION} |
|
41 | 41 |
|
42 | 42 |
%post |
43 | 43 |
/sbin/depmod -a |
... | ... |
@@ -49,9 +45,11 @@ make install DESTDIR=%{buildroot} KVERSION=%{LINUX_VERSION} |
49 | 49 |
%defattr(-, root, root, 0755) |
50 | 50 |
%doc README.md |
51 | 51 |
%{_bindir}/ktap |
52 |
-/lib/modules/%{LINUX_VERSION}/extra/ktapvm.ko |
|
52 |
+/lib/modules/%{KERNEL_VERSION}/extra/ktapvm.ko |
|
53 | 53 |
|
54 | 54 |
%changelog |
55 |
+* Mon Aug 1 2016 Divya Thaluru <dthaluru@vmware.com> 0.4-3 |
|
56 |
+- Added kernel macros |
|
55 | 57 |
* Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.4-3 |
56 | 58 |
- GA - Bump release of all rpms |
57 | 59 |
* Thu Apr 28 2016 Alexey Makhalov <amakhalov@vmware.com> 0.4-2 |
... | ... |
@@ -1,9 +1,8 @@ |
1 | 1 |
%global security_hardening none |
2 |
-%define LINUX_VERSION 4.4.8 |
|
3 | 2 |
Summary: Sysdig is a universal system visibility tool with native support for containers. |
4 | 3 |
Name: sysdig |
5 | 4 |
Version: 0.10.1 |
6 |
-Release: 2%{?dist} |
|
5 |
+Release: 2%{?kernelsubrelease}%{?dist} |
|
7 | 6 |
License: GPLv2 |
8 | 7 |
URL: http://www.sysdig.org/ |
9 | 8 |
Group: Applications/System |
... | ... |
@@ -12,11 +11,12 @@ Distribution: Photon |
12 | 12 |
Source0: https://github.com/draios/sysdig/archive/%{name}-%{version}.tar.gz |
13 | 13 |
%define sha1 sysdig=272b95ad02be4d194bba66d360ff935084d9c842 |
14 | 14 |
BuildRequires: cmake |
15 |
-BuildRequires: linux-dev = %{LINUX_VERSION} |
|
15 |
+BuildRequires: linux-dev = %{KERNEL_VERSION}-%{KERNEL_RELEASE} |
|
16 | 16 |
BuildRequires: openssl-devel |
17 | 17 |
BuildRequires: curl |
18 | 18 |
BuildRequires: zlib-devel |
19 | 19 |
BuildRequires: ncurses-devel |
20 |
+Requires: linux = %{KERNEL_VERSION}-%{KERNEL_RELEASE} |
|
20 | 21 |
Requires: zlib |
21 | 22 |
Requires: ncurses |
22 | 23 |
Requires: openssl |
... | ... |
@@ -39,17 +39,17 @@ cmake \ |
39 | 39 |
-DUSE_BUNDLED_ZLIB=OFF \ |
40 | 40 |
-DUSE_BUNDLED_NCURSES=OFF .. |
41 | 41 |
|
42 |
-make KERNELDIR="/lib/modules/%{LINUX_VERSION}/build" |
|
42 |
+make KERNELDIR="/lib/modules/%{KERNEL_VERSION}/build" |
|
43 | 43 |
|
44 | 44 |
%install |
45 | 45 |
cd build |
46 |
-make install DESTDIR=%{buildroot} KERNELDIR="/lib/modules/%{LINUX_VERSION}/build" |
|
46 |
+make install DESTDIR=%{buildroot} KERNELDIR="/lib/modules/%{KERNEL_VERSION}/build" |
|
47 | 47 |
mv %{buildroot}/usr/src/sysdig* %{buildroot}/usr/src/sysdig-%{version} |
48 | 48 |
mkdir -p %{buildroot}/etc/ |
49 | 49 |
mv %{buildroot}/usr/etc/bash_completion.d %{buildroot}/etc/ |
50 | 50 |
rm -rf %{buildroot}/usr/share/zsh/ |
51 |
-mkdir -p %{buildroot}/lib/modules/%{LINUX_VERSION}/extra |
|
52 |
-mv driver/sysdig-probe.ko %{buildroot}/lib/modules/%{LINUX_VERSION}/extra |
|
51 |
+mkdir -p %{buildroot}/lib/modules/%{KERNEL_VERSION}/extra |
|
52 |
+mv driver/sysdig-probe.ko %{buildroot}/lib/modules/%{KERNEL_VERSION}/extra |
|
53 | 53 |
|
54 | 54 |
%clean |
55 | 55 |
rm -rf %{buildroot}/* |
... | ... |
@@ -66,9 +66,11 @@ rm -rf %{buildroot}/* |
66 | 66 |
%{_bindir} |
67 | 67 |
/usr/src |
68 | 68 |
%{_datadir} |
69 |
-/lib/modules/%{LINUX_VERSION}/extra/sysdig-probe.ko |
|
69 |
+/lib/modules/%{KERNEL_VERSION}/extra/sysdig-probe.ko |
|
70 | 70 |
|
71 | 71 |
%changelog |
72 |
+* Mon Aug 1 2016 Divya Thaluru <dthaluru@vmware.com> 0.10.1-2 |
|
73 |
+- Added kernel macros |
|
72 | 74 |
* Thu Jul 14 2016 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 0.10.1-2 |
73 | 75 |
- Updated sysdig to build the kernel module |
74 | 76 |
* Tue Jun 28 2016 Anish Swaminathan <anishs@vmware.com> 0.10.1-1 |
... | ... |
@@ -27,8 +27,6 @@ class PackageUtils(object): |
27 | 27 |
|
28 | 28 |
self.rpmbuildBinary = "rpmbuild" |
29 | 29 |
self.rpmbuildBuildallOption = "-ba --clean" |
30 |
- self.rpmbuildBuildNum = '--define \\\"photon_build_number %s\\\"' % constants.buildNumber |
|
31 |
- self.rpmbuildReleaseVer = '--define \\\"photon_release_version %s\\\"' % constants.releaseVersion |
|
32 | 30 |
self.rpmbuildNocheckOption = "--nocheck" |
33 | 31 |
self.rpmbuildDistOption = '--define \\\"dist %s\\\"' % constants.dist |
34 | 32 |
self.queryRpmPackageOptions = "-qa" |
... | ... |
@@ -185,6 +183,11 @@ class PackageUtils(object): |
185 | 185 |
|
186 | 186 |
self.copyAdditionalBuildFiles(listAdditionalFiles,chrootID) |
187 | 187 |
|
188 |
+ #Adding rpm macros |
|
189 |
+ listRPMMacros = constants.specData.getRPMMacros() |
|
190 |
+ for macroName in listRPMMacros.keys(): |
|
191 |
+ macros.append(macroName+" "+listRPMMacros[macroName]) |
|
192 |
+ |
|
188 | 193 |
listRPMFiles=[] |
189 | 194 |
listSRPMFiles=[] |
190 | 195 |
try: |
... | ... |
@@ -215,7 +218,6 @@ class PackageUtils(object): |
215 | 215 |
rpmBuildcmd+=" "+self.rpmbuildNocheckOption |
216 | 216 |
for macro in macros: |
217 | 217 |
rpmBuildcmd+=' --define \\\"%s\\\"' % macro |
218 |
- rpmBuildcmd+=" "+self.rpmbuildBuildNum+" "+self.rpmbuildReleaseVer |
|
219 | 218 |
rpmBuildcmd+=" "+specFile |
220 | 219 |
|
221 | 220 |
cmdUtils = CommandUtils() |
... | ... |
@@ -25,6 +25,7 @@ class SerializableSpecObjectsUtils(object): |
25 | 25 |
self.mapSerializableSpecObjects={} |
26 | 26 |
self.mapPackageToSpec={} |
27 | 27 |
self.logger=Logger.getLogger("Serializable Spec objects", logPath ) |
28 |
+ self.userDefinedMacros={} |
|
28 | 29 |
|
29 | 30 |
def readSpecsAndConvertToSerializableObjects(self,specFilesPath): |
30 | 31 |
listSpecFiles=[] |
... | ... |
@@ -79,10 +80,35 @@ class SerializableSpecObjectsUtils(object): |
79 | 79 |
if self.mapSerializableSpecObjects[specName].installRequiresPackages.has_key(package): |
80 | 80 |
return self.mapSerializableSpecObjects[specName].installRequiresPackages[package] |
81 | 81 |
return None |
82 |
- |
|
82 |
+ |
|
83 |
+ def addMacro(self, macroName, macroValue): |
|
84 |
+ if macroName == "": |
|
85 |
+ self.logger.error("Given invalid macro: name:"+macroName+" value:"+macroValue) |
|
86 |
+ return |
|
87 |
+ self.userDefinedMacros[macroName]=macroValue |
|
88 |
+ |
|
89 |
+ def getRPMMacros(self): |
|
90 |
+ return self.userDefinedMacros |
|
91 |
+ |
|
92 |
+ def processData(self, data): |
|
93 |
+ for macroName in self.userDefinedMacros.keys(): |
|
94 |
+ value = self.userDefinedMacros[macroName] |
|
95 |
+ macro="%{?"+macroName+"}" |
|
96 |
+ if data.find(macro) != -1: |
|
97 |
+ data = data.replace(macro,value) |
|
98 |
+ continue |
|
99 |
+ macro="%{"+macroName+"}" |
|
100 |
+ if data.find(macro) != -1: |
|
101 |
+ data = data.replace(macro,value) |
|
102 |
+ continue |
|
103 |
+ macro="%"+macroName |
|
104 |
+ if data.find(macro) != -1: |
|
105 |
+ data = data.replace(macro,value) |
|
106 |
+ return data |
|
107 |
+ |
|
83 | 108 |
def getRelease(self, package): |
84 | 109 |
specName=self.getSpecName(package) |
85 |
- return self.mapSerializableSpecObjects[specName].release |
|
110 |
+ return self.processData(self.mapSerializableSpecObjects[specName].release) |
|
86 | 111 |
|
87 | 112 |
def getVersion(self, package): |
88 | 113 |
specName=self.getSpecName(package) |
... | ... |
@@ -1,5 +1,3 @@ |
1 |
-import constants |
|
2 |
- |
|
3 | 1 |
class rpmMacro(object): |
4 | 2 |
|
5 | 3 |
def __init__(self): |
... | ... |
@@ -76,12 +74,6 @@ class Package(object): |
76 | 76 |
if content.find("%{version}") != -1: |
77 | 77 |
content = content.replace('%{version}',self.version) |
78 | 78 |
|
79 |
- if content.find("%{?dist}") != -1: |
|
80 |
- content = content.replace('%{?dist}',constants.constants.dist) |
|
81 |
- |
|
82 |
- if content.find("%{dist}") != -1: |
|
83 |
- content = content.replace('%{dist}',constants.constants.dist) |
|
84 |
- |
|
85 | 79 |
return content |
86 | 80 |
|
87 | 81 |
def updatePackageMacro(self,macro): |
... | ... |
@@ -46,7 +46,7 @@ class ToolChainUtils(object): |
46 | 46 |
rpmFile=pkgUtils.findRPMFileForGivenPackage(package) |
47 | 47 |
if rpmFile is None: |
48 | 48 |
specFile=constants.specData.getSpecFile(package) |
49 |
- cmd=self.rpmbuildCommand+" -ba --nocheck --define \'_topdir "+chrootID+constants.topDirPath+"\' --define \'_dbpath "+chrootID+"/var/lib/rpm\' --define \'dist "+constants.dist+"\' --define \'photon_build_number "+constants.buildNumber+"\' --define \'photon_release_version "+constants.releaseVersion+"\' "+specFile |
|
49 |
+ cmd=self.rpmbuildCommand+" -ba --nocheck --define \'_topdir "+chrootID+constants.topDirPath+"\' --define \'_dbpath "+chrootID+"/var/lib/rpm\' --define \'dist "+constants.dist+"\' "+specFile |
|
50 | 50 |
self.logger.info(cmd) |
51 | 51 |
cmdUtils.runCommandInShell(cmd,self.logPath+"/filesystem.log") |
52 | 52 |
filesystemrpmFile = cmdUtils.findFile(package+"-[0-9]*.rpm", chrootID+constants.topDirPath+"/RPMS") |
... | ... |
@@ -270,8 +270,33 @@ class constants(object): |
270 | 270 |
constants.pullsourcesConfig = options.pullsourcesConfig |
271 | 271 |
constants.inputRPMSPath=options.inputRPMSPath |
272 | 272 |
constants.rpmCheck = options.rpmCheck |
273 |
+ constants.updateRPMMacros() |
|
273 | 274 |
|
275 |
+ @staticmethod |
|
276 |
+ def updateRPMMacros(): |
|
277 |
+ #adding distribution rpm macro |
|
278 |
+ constants.specData.addMacro("dist",constants.dist) |
|
274 | 279 |
|
280 |
+ #adding buildnumber rpm macro |
|
281 |
+ constants.specData.addMacro("photon_build_number",constants.buildNumber) |
|
282 |
+ |
|
283 |
+ #adding releasenumber rpm macro |
|
284 |
+ constants.specData.addMacro("photon_release_version",constants.releaseVersion) |
|
285 |
+ |
|
286 |
+ #adding kernelversion rpm macro |
|
287 |
+ kernelversion = constants.specData.getVersion("linux") |
|
288 |
+ constants.specData.addMacro("KERNEL_VERSION",kernelversion) |
|
289 |
+ |
|
290 |
+ #adding kernelrelease rpm macro |
|
291 |
+ kernelrelease = constants.specData.getRelease("linux") |
|
292 |
+ constants.specData.addMacro("KERNEL_RELEASE",kernelrelease) |
|
275 | 293 |
|
276 |
- |
|
277 |
- |
|
294 |
+ #adding kernelsubrelease rpm macro |
|
295 |
+ kernelversion = kernelversion.replace(".","") |
|
296 |
+ if kernelversion.isdigit(): |
|
297 |
+ kernelversion = int(kernelversion) << 8 |
|
298 |
+ kernelsubrelease = str(kernelversion)+kernelrelease |
|
299 |
+ kernelsubrelease = kernelsubrelease.replace(constants.dist,"") |
|
300 |
+ if kernelsubrelease: |
|
301 |
+ kernelsubrelease = "."+kernelsubrelease |
|
302 |
+ constants.specData.addMacro("kernelsubrelease",kernelsubrelease) |