Merge branch 'packaging' into SLE12
[opensuse:kernel-source.git] / rpm / kernel-source.spec.in
1 #
2 # spec file for package kernel-source@VARIANT@
3 #
4 # Copyright (c) @YEAR@ SUSE LINUX Products GmbH, Nuernberg, Germany.
5 #
6 # All modifications and additions to the file contributed by third parties
7 # remain the property of their copyright owners, unless otherwise agreed
8 # upon. The license for this file, and modifications and additions to the
9 # file, is the same license as for the pristine package itself (unless the
10 # license for the pristine package is not an Open Source License, in which
11 # case the license is the MIT License). An "Open Source License" is a
12 # license that conforms to the Open Source Definition (Version 1.9)
13 # published by the Open Source Initiative.
14
15 # Please submit bugfixes or comments via http://bugs.opensuse.org/
16 #
17 # icecream 0
18
19
20 %define srcversion @SRCVERSION@
21 %define patchversion @PATCHVERSION@
22 %define variant @VARIANT@%{nil}
23 %define vanilla_only @VANILLA_ONLY@
24
25 %include %_sourcedir/kernel-spec-macros
26
27 %define src_install_dir usr/src/linux-%kernelrelease%variant
28
29 Name:           kernel-source@VARIANT@
30 Summary:        The Linux Kernel Sources
31 License:        GPL-2.0
32 Group:          Development/Sources
33 Version:        @RPMVERSION@
34 %if 0%{?is_kotd}
35 Release:        <RELEASE>.g@COMMIT@
36 %else
37 Release:        @RELEASE@
38 %endif
39 Url:            http://www.kernel.org/
40 AutoReqProv:    off
41 BuildRequires:  coreutils
42 BuildRequires:  fdupes
43 BuildRequires:  sed
44 Requires(post): coreutils sed
45 Provides:       %name = %version-%source_rel
46 Provides:       linux
47 Provides:       multiversion(kernel)
48 Source0:        @TARBALL_URL@linux-%srcversion.tar.xz
49 Source2:        source-post.sh
50 Source3:        kernel-source.rpmlintrc
51 Source8:        devel-pre.sh
52 Source9:        devel-post.sh
53 Source10:       preun.sh
54 Source11:       postun.sh
55 Source12:       pre.sh
56 Source13:       post.sh
57 Source14:       series.conf
58 Source16:       guards
59 Source17:       apply-patches
60 Source21:       config.conf
61 Source23:       supported.conf
62 Source33:       check-for-config-changes
63 Source35:       group-source-files.pl
64 Source36:       README.PATCH-POLICY.SUSE
65 Source37:       README.SUSE
66 Source38:       README.KSYMS
67 Source39:       config-options.changes.txt
68 Source40:       source-timestamp
69 Source44:       find-provides
70 Source45:       split-modules
71 Source46:       modversions
72 Source48:       macros.kernel-source
73 Source49:       kernel-module-subpackage
74 Source50:       kabi.pl
75 Source51:       mkspec
76 Source52:       kernel-source%variant.changes
77 Source53:       kernel-source.spec.in
78 Source54:       kernel-binary.spec.in
79 Source55:       kernel-syms.spec.in
80 Source56:       kernel-docs.spec.in
81 Source57:       kernel-cert-subpackage
82 Source58:       constraints.in
83 Source60:       config.sh
84 Source61:       compute-PATCHVERSION.sh
85 Source62:       old-flavors
86 Source63:       arch-symbols
87 Source64:       package-descriptions
88 Source65:       kernel-spec-macros
89 Source66:       configtool.pl
90 Source67:       log.sh
91 Source68:       host-memcpy-hack.h
92 Source69:       try-disable-staging-driver
93 Source70:       kernel-obs-build.spec.in
94 Source71:       kernel-obs-qa.spec.in
95 Source72:       compress-vmlinux.sh
96 Source90:       SLES-UEFI-SIGN-Certificate-2048.crt
97 Source100:      config.tar.bz2
98 Source101:      config.addon.tar.bz2
99 Source102:      patches.arch.tar.bz2
100 Source103:      patches.drivers.tar.bz2
101 Source104:      patches.fixes.tar.bz2
102 Source105:      patches.rpmify.tar.bz2
103 Source106:      patches.suse.tar.bz2
104 Source107:      patches.xen.tar.bz2
105 Source108:      patches.addon.tar.bz2
106 Source109:      patches.kernel.org.tar.bz2
107 Source110:      patches.apparmor.tar.bz2
108 Source111:      patches.rt.tar.bz2
109 Source112:      patches.trace.tar.bz2
110 Source113:      patches.kabi.tar.bz2
111 Source120:      kabi.tar.bz2
112 Source121:      sysctl.tar.bz2
113 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
114 BuildArch:      noarch
115 Prefix:         /usr/src
116 # Source is only complete with devel files.
117 Requires:       kernel-devel%variant = %version-%release
118
119 %(chmod +x %_sourcedir/{@SCRIPTS@})
120
121 %define symbols %(set -- $([ -e %_sourcedir/extra-symbols ] && cat %_sourcedir/extra-symbols) ; echo $*)
122 %define variant_symbols %(case %name in (*-rt) echo "RT" ;; esac)
123
124 %define do_vanilla "%variant" == ""
125
126 %description
127 Linux kernel sources with many fixes and improvements.
128
129
130 %source_timestamp
131 %package -n kernel-devel%variant
132 Summary:        Development files needed for building kernel modules
133 Group:          Development/Sources
134 AutoReqProv:    off
135 Provides:       kernel-devel%variant = %version-%source_rel
136 Provides:       multiversion(kernel)
137
138 %description -n kernel-devel%variant
139 Kernel-level headers and Makefiles required for development of
140 external kernel modules.
141
142
143 %source_timestamp
144 %package vanilla
145 Summary:        Vanilla Linux kernel sources with minor build fixes.
146 Group:          Development/Sources
147 AutoReqProv:    off
148 Provides:       %name-vanilla = %version-%source_rel
149 Provides:       multiversion(kernel)
150
151 %description vanilla
152 Vanilla Linux kernel sources with minor build fixes.
153
154
155 %source_timestamp
156 %prep
157
158 echo "Symbol(s): %symbols"
159
160 # Unpack all sources and patches
161 %setup -q -c -T @UNPACK_PATCHES@
162
163 %build
164 mkdir -p $RPM_BUILD_ROOT/usr/src
165 cd $RPM_BUILD_ROOT/usr/src
166
167 # Unpack the vanilla kernel sources
168 tar -xf %{S:0}
169 if test "%srcversion" != "%kernelrelease%variant"; then
170         mv linux-%srcversion linux-%kernelrelease%variant
171 fi
172
173 %if %do_vanilla
174 %if %vanilla_only
175         mv \
176 %else
177         cp -al \
178 %endif
179         linux-%kernelrelease%variant linux-%kernelrelease-vanilla
180 cd linux-%kernelrelease-vanilla
181 %_sourcedir/apply-patches --vanilla %_sourcedir/series.conf %my_builddir %symbols
182 rm -f $(find . -name ".gitignore")
183 cd ..
184 %endif
185
186 %if ! %vanilla_only
187 ln -sf linux%variant linux%variant  # dummy symlink
188
189 cd linux-%kernelrelease%variant
190 %_sourcedir/apply-patches %_sourcedir/series.conf %my_builddir %symbols
191 rm -f $(find . -name ".gitignore")
192
193 if [ -f %_sourcedir/localversion ] ; then
194     cat %_sourcedir/localversion > localversion
195 fi
196 %endif
197
198 # Hardlink duplicate files automatically (from package fdupes).
199 %fdupes $RPM_BUILD_ROOT
200
201 %install
202 %if ! %vanilla_only
203 # Install the documentation and example Kernel Module Package.
204 DOC=$RPM_BUILD_ROOT/usr/share/doc/packages/%name
205 mkdir -p $DOC
206 cp %_sourcedir/README.SUSE %_sourcedir/config-options.changes.txt $DOC
207 ln -s /usr/share/doc/packages/%name/README.SUSE %buildroot/%src_install_dir/
208
209 install -m 755 -d $RPM_BUILD_ROOT/etc/rpm
210 install -m 644 %_sourcedir/macros.kernel-source $RPM_BUILD_ROOT/etc/rpm/
211 install -m 755 -d $RPM_BUILD_ROOT/usr/lib/rpm
212 install -m 644 %_sourcedir/kernel-{module,cert}-subpackage \
213     $RPM_BUILD_ROOT/usr/lib/rpm/
214
215 for script in post; do
216     sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
217         -e "s:@SRCVARIANT@:%variant:g" \
218         %_sourcedir/source-$script.sh > %name-$script.sh
219 done
220
221 pushd "%buildroot"
222 perl "%_sourcedir/group-source-files.pl" \
223         -D "$OLDPWD/devel.files" -N "$OLDPWD/nondevel.files" \
224         -L "%src_install_dir"
225 popd
226
227 # kernel-source and kernel-$flavor-devel are built independently, but the
228 # shipped sources (/usr/src/linux/) need to be older than generated files
229 # (/usr/src/linux-obj). We rely on the git commit timestamp to not point into
230 # the future and be thus lower than the timestamps of files built from the
231 # source (bnc#669669).
232 ts="$(head -n1 %_sourcedir/source-timestamp)"
233 find %buildroot/usr/src/linux* ! -type l | xargs touch -d "$ts"
234
235 %post -f %name-post.sh
236
237 %post -n kernel-devel%variant -f %name-post.sh
238
239 %files -f nondevel.files
240 %defattr(-, root, root)
241
242 %files -n kernel-devel%variant -f devel.files
243 %defattr(-,root,root)
244 %ghost /usr/src/linux%variant
245 /usr/share/doc/packages/%name
246 /etc/rpm/macros.kernel-source
247 /usr/lib/rpm/kernel-*-subpackage
248 %endif
249
250 %if %do_vanilla
251
252 %files vanilla
253 %defattr(-, root, root)
254 /usr/src/linux-%kernelrelease-vanilla
255 %endif
256
257 %changelog