summaryrefslogtreecommitdiff
path: root/packaging/linux-kernel.spec
blob: 5e644415990ac988fa13addd0fb409544ff8bdef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
%define config_name tizen_defconfig
%define abiver current
%define build_id %{config_name}.%{abiver}

Name: linux-kernel
Summary: The Linux Kernel
Version: 3.10.19
Release: 1
License: GPL
Group: System Environment/Kernel
Vendor: The Linux Community
URL: http://www.kernel.org
Source0:   %{name}-%{version}-%{build_id}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root
BuildRequires: linux-glibc-devel
BuildRequires: bc

%define kernel_build_dir_name .%{name}-%{version}-%{build_id}
%define kernel_build_dir %{_builddir}/%{name}-%{version}/%{kernel_build_dir_name}

%description
The Linux Kernel, the operating system core itself

%package headers
Summary: Header files for the Linux kernel for use by glibc
Group: Development/System
Obsoletes: kernel-headers
Provides: kernel-headers = %{version}

%description headers
Kernel-headers includes the C header files that specify the interface
between the Linux kernel and userspace libraries and programs.  The
header files define structures and constants that are needed for
building most standard programs and are also needed for rebuilding the
glibc package.

%package sources
Summary: Full linux kernel sources for out-of-tree modules
Group: Development/System
Provides: kernel-sources = %{version}-%{build_id}

%description sources
Full linux kernel sources for out-of-tree modules.

%package build
Summary: Prebuilt linux kernel for out-of-tree modules
Group: Development/System
Requires: kernel-sources = %{version}-%{build_id}

%description build
Prebuilt linux kernel for out-of-tree modules.

%prep
%setup -q

%build
# 1. Create main build directory
rm -rf %{kernel_build_dir}
mkdir -p %{kernel_build_dir}

# 2. Create tar archive for sources
tar cpsf %{kernel_build_dir}/linux-kernel-sources-%{version}-%{build_id}.tar . --one-file-system --exclude ".git*"

# 3. Create kernel build directory
mkdir -p %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}

# 4. Compile sources
make EXTRAVERSION="-%{build_id}" O=%{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id} %{config_name}
make EXTRAVERSION="-%{build_id}" O=%{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id} %{?_smp_mflags}

# 5. Update Makefile in output build
cat %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}/Makefile | sed 's/\/home\/abuild\/rpmbuild\/BUILD\/%{name}-%{version}/\/usr\/src\/linux-kernel-sources-%{version}-%{build_id}/' > %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}/Makefile.new
mv %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}/Makefile.new %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}/Makefile
rm -f %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}/Makefile.new

# 6. Create tar repo for build directory
( cd %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id} ; tar cpsf %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}.tar . )

%install
QA_SKIP_BUILD_ROOT="DO_NOT_WANT"; export QA_SKIP_BUILD_ROOT

# 1. Destynation directories
mkdir -p %{buildroot}/usr/src/linux-kernel-sources-%{version}-%{build_id}
mkdir -p %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id}

# 2. Restore source and build irectory
tar -xf %{kernel_build_dir}/linux-kernel-sources-%{version}-%{build_id}.tar -C %{buildroot}/usr/src/linux-kernel-sources-%{version}-%{build_id}
tar -xf %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}.tar   -C %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id}

# 3. Install kernel headers
make INSTALL_PATH=%{buildroot} INSTALL_MOD_PATH=%{buildroot} O=%{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id} INSTALL_HDR_PATH=%{buildroot}/usr headers_install

# 4. Remove files
find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name ".tmp_vmlinux1" -exec rm -f {} +
find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name ".tmp_vmlinux2" -exec rm -f {} +
find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "vmlinux" -exec rm -f {} +
find %{buildroot}/usr/src/linux-kernel-sources-%{version}-%{build_id} -name "*.c" -exec rm -f {} +
find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "*.cmd" -exec rm -f {} +
find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "*\.o" -exec rm -f {} +
find %{buildroot}/usr -name "..install.cmd" -exec rm -f {} +

find %{buildroot}/usr/include -name "\.\.install.cmd"  -exec rm -f {} +
find %{buildroot}/usr/include -name "\.install"  -exec rm -f {} +

rm -rf %{buildroot}/usr/src/linux-kernel-sources-%{version}-%{build_id}/%{kernel_build_dir_name}
rm -f %{buildroot}/usr/src/linux-kernel-sources-%{version}-%{build_id}/source
rm -f %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id}/source
rm -f %{buildroot}/System.map-3.10.0 %{buildroot}/vmlinux-3.10.0

# 5. Create symbolic links
ln -sf /usr/src/linux-kernel-sources-%{version}-%{build_id} %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id}/source

%clean
rm -rf %{buildroot}

%files headers
%defattr (-, root, root)
/usr/include

%files sources
%defattr (-, root, root)
/usr/src/linux-kernel-sources-%{version}-%{build_id}

%files build
%defattr (-, root, root)
/usr/src/linux-kernel-build-%{version}-%{build_id}