packaging: Add _wrong_version_format_terminate_build macro
[platform/kernel/linux-exynos.git] / packaging / linux-exynos-tm2.spec
1 # Ignore double dash in version for rpmbuild
2 %define _wrong_version_format_terminate_build 0
3
4 %define config_name tizen_tm2_defconfig
5 %define buildarch arm64
6 %define target_board tm2
7 %define variant %{buildarch}-%{target_board}
8
9 Name: %{target_board}-linux-kernel
10 Summary: The Linux Kernel for TM2/TM2E board
11 Version: 4.14.99
12 Release: 0
13 License: GPL-2.0
14 ExclusiveArch: %{arm} aarch64
15 Group: System/Kernel
16 Vendor: The Linux Community
17 URL: https://www.kernel.org
18 Source0:   linux-kernel-%{version}.tar.xz
19 BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root
20
21 %define fullVersion %{version}-%{variant}
22 %define __spec_install_post /usr/lib/rpm/brp-compress || :
23 %define debug_package %{nil}
24
25 BuildRequires: bc
26 BuildRequires: module-init-tools
27 BuildRequires: u-boot-tools >= 2016.03
28
29 %description
30 The Linux Kernel, the operating system core itself
31
32 %ifarch aarch64
33 %package -n %{variant}-linux-kernel
34 License: GPL-2.0
35 Summary: Tizen kernel for %{target_board}
36 Group: System/Kernel
37 Provides: %{variant}-kernel-profile-mobile = %{version}-%{release}
38 Provides: %{variant}-kernel-uname-r = %{fullVersion}
39 Provides: linux-kernel = %{version}-%{release}
40
41 %description -n %{variant}-linux-kernel
42 This package contains the Linux kernel for Tizen (mobile profile, arch %{buildarch}, target board %{target_board})
43
44 %package -n %{variant}-linux-kernel-modules
45 Summary: Kernel modules for %{target_board}
46 Group: System/Kernel
47 Provides: %{variant}-kernel-modules = %{fullVersion}
48 Provides: %{variant}-kernel-modules-uname-r = %{fullVersion}
49
50 %description -n %{variant}-linux-kernel-modules
51 Kernel-modules includes the loadable kernel modules(.ko files) for %{target_board}
52
53 %package -n %{variant}-linux-kernel-debuginfo
54 License: GPL-2.0
55 Summary: Linux support debug symbol
56 Group: System/Kernel
57
58 %description -n %{variant}-linux-kernel-debuginfo
59 This package provides the %{target_board} linux kernel's debugging files.
60
61 %package -n %{variant}-linux-kernel-devel
62 License: GPL-2.0
63 Summary: Linux support kernel map and etc for other packages
64 Group: System/Kernel
65 Provides: %{variant}-kernel-devel = %{fullVersion}
66 Provides: %{variant}-kernel-devel-uname-r = %{fullVersion}
67
68 %description -n %{variant}-linux-kernel-devel
69 This package provides kernel map and etc information.
70 %endif
71
72 %package -n %{variant}-linux-kernel-headers
73 License: GPL-2.0
74 Summary: Linux support headers for userspace development
75 Group: System/Kernel
76 Provides: kernel-headers-tizen-dev
77
78 %description -n %{variant}-linux-kernel-headers
79 This package provides userspaces headers from the Linux kernel. These
80 headers are used by the installed headers for GNU glibc and other system
81  libraries.
82
83 %prep
84 %setup -q -n linux-kernel-%{version}
85
86 %build
87 %{?asan:/usr/bin/gcc-unforce-options}
88 %{?ubsan:/usr/bin/gcc-unforce-options}
89
90 # Make sure EXTRAVERSION says what we want it to say
91 sed -i "s/^EXTRAVERSION.*/EXTRAVERSION = -%{variant}/" Makefile
92
93 # 1-1. extract uapi headers
94 mkdir -p uapi-headers/usr
95 make mrproper
96 make headers_check
97 make headers_install INSTALL_HDR_PATH=uapi-headers/usr
98
99 %ifarch aarch64
100 # 1-2. set config file
101 make %{config_name}
102
103 # 1-3. Build Image/Image.gz
104 make %{?_smp_mflags}
105
106 # 1-4. Build dtbs
107 make dtbs %{?_smp_mflags}
108
109 # 1-5. Build u-boot itb image
110 mkimage -f arch/arm64/boot/tizen-tm2.its kernel.img
111
112 # 1-6. Build modules
113 make modules %{?_smp_mflags}
114 %endif
115
116 %install
117 QA_SKIP_BUILD_ROOT="DO_NOT_WANT"; export QA_SKIP_BUILD_ROOT
118
119 # 2-1. Destination directories
120 mkdir -p %{_builddir}/boot
121 %ifarch aarch64
122 mkdir -p %{_builddir}/lib/modules
123
124 # 2-2. Install kernel.img
125 install -m 644 kernel.img %{_builddir}/boot/
126
127 # 2-3. Install Image.gz, dtbs, System.map, ...
128 install -m 644 arch/%{buildarch}/boot/Image.gz %{_builddir}/boot/
129 install -m 644 arch/%{buildarch}/boot/dts/exynos/*.dtb %{_builddir}/boot/
130 install -m 644 System.map %{_builddir}/boot/
131 install -m 644 .config %{_builddir}/boot/config-%{fullVersion}
132 install -m 644 vmlinux %{_builddir}/boot/
133 install -m 644 COPYING %{_builddir}/boot/
134
135 # 2-4. Install modules
136 make INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=%{_builddir} modules_install
137 %endif
138
139 # 2-5. Install uapi headers
140 find uapi-headers/usr/include -name ".install" -delete
141 find uapi-headers/usr/include -name "..install.cmd" -delete
142 rm -f uapi-headers/usr/include/asm*/atomic.h
143 rm -f uapi-headers/usr/include/asm*/io.h
144 mv uapi-headers/usr %{_builddir}/
145
146 # 3-1. remove unnecessary files to prepare for devel package
147 rm -rf arch/%{buildarch}/boot/vmlinux*
148 rm -rf System.map*
149 rm -rf vmlinux*
150 rm -rf kernel.img
151 rm -rf uapi-headers
152 rm -f tools/mkimage*
153 find %{_builddir}/linux-kernel-%{version} -name "*\.HEX" -type f -delete
154 find %{_builddir}/linux-kernel-%{version} -name ".tmp_vmlinux*" -delete
155 find %{_builddir}/linux-kernel-%{version} -name ".gitignore" -delete
156 find %{_builddir}/linux-kernel-%{version} -name "\.*dtb*tmp" -delete
157 find %{_builddir}/linux-kernel-%{version} -name "\.*dtb" -delete
158 find %{_builddir}/linux-kernel-%{version} -name "*\.*tmp" -delete
159 find %{_builddir}/linux-kernel-%{version} -name "vmlinux" -delete
160 find %{_builddir}/linux-kernel-%{version} -name "Image" -delete
161 find %{_builddir}/linux-kernel-%{version} -name "Image.gz" -delete
162 find %{_builddir}/linux-kernel-%{version} -name "*.cmd" -delete
163 find %{_builddir}/linux-kernel-%{version} -name "*\.ko" -delete
164 find %{_builddir}/linux-kernel-%{version} -name "*\.o" -delete
165 find %{_builddir}/linux-kernel-%{version} -name "*\.S" -delete
166 find %{_builddir}/linux-kernel-%{version} -name "*\.c" -not -path "%{_builddir}/linux-kernel-%{version}/scripts/*" -delete
167
168 # 3-2. move files for devel package
169 cd %{_builddir}
170 mv %{_builddir}/usr %{buildroot}/
171 %ifarch aarch64
172 mv linux-kernel-%{version} kernel-devel-%{variant}
173 mkdir -p linux-kernel-%{version}
174
175 # 4. Move files for each package
176 mkdir -p %{buildroot}/boot/kernel/devel
177 mv %{_builddir}/boot/COPYING %{buildroot}/
178 mv %{_builddir}/boot/* %{buildroot}/boot/
179 rm -rf %{_builddir}/boot
180 mv %{_builddir}/lib %{buildroot}/
181 mv %{_builddir}/kernel-devel-%{variant} %{buildroot}/boot/kernel/devel/
182 %endif
183
184 %clean
185 rm -rf %{buildroot}
186 rm -rf %{_builddir}/COPYING
187 rm -rf %{_builddir}/boot
188 rm -rf %{_builddir}/lib
189 rm -rf %{_builddir}/usr
190 rm -rf %{_builddir}/kernel-devel-%{variant}
191
192 %ifarch aarch64
193 %files -n %{variant}-linux-kernel
194 %license /COPYING
195 /boot/kernel.img
196
197 %files -n %{variant}-linux-kernel-modules
198 /lib/modules/
199
200 %files -n %{variant}-linux-kernel-devel
201 /boot/kernel/devel/*
202
203 %files -n %{variant}-linux-kernel-debuginfo
204 /boot/Image.gz
205 /boot/*.dtb
206 /boot/System.map*
207 /boot/config*
208 /boot/vmlinux*
209 %endif
210
211 %files -n %{variant}-linux-kernel-headers
212 /usr/include/*