summaryrefslogtreecommitdiff
path: root/packaging
diff options
context:
space:
mode:
Diffstat (limited to 'packaging')
-rw-r--r--packaging/linux-kernel.spec125
1 files changed, 106 insertions, 19 deletions
diff --git a/packaging/linux-kernel.spec b/packaging/linux-kernel.spec
index 5e644415990..e199f9bfbaf 100644
--- a/packaging/linux-kernel.spec
+++ b/packaging/linux-kernel.spec
@@ -1,5 +1,6 @@
+%bcond_with abidev
%define config_name tizen_defconfig
-%define abiver current
+%define abiver 1
%define build_id %{config_name}.%{abiver}
Name: linux-kernel
@@ -12,7 +13,12 @@ Vendor: The Linux Community
URL: http://www.kernel.org
Source0: %{name}-%{version}-%{build_id}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{PACKAGE_VERSION}-root
+
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(libelf)
+
BuildRequires: linux-glibc-devel
+BuildRequires: u-boot-tools
BuildRequires: bc
%define kernel_build_dir_name .%{name}-%{version}-%{build_id}
@@ -21,6 +27,15 @@ BuildRequires: bc
%description
The Linux Kernel, the operating system core itself
+%if %{with abidev}
+%package abi-dev
+Summary: Header files for the Linux kernel for use by glibc
+Group: Development/System
+
+%description abi-dev
+The package provide linux kernel API/ABI development file.
+%endif
+
%package headers
Summary: Header files for the Linux kernel for use by glibc
Group: Development/System
@@ -29,11 +44,18 @@ 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
+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 abi-tools
+Summary: Kernael ABI tools
+Group: Development/System
+
+%description abi-tools
+The package provide set of tools to test and create ABI/API dumps.
+
%package sources
Summary: Full linux kernel sources for out-of-tree modules
Group: Development/System
@@ -50,10 +72,20 @@ Requires: kernel-sources = %{version}-%{build_id}
%description build
Prebuilt linux kernel for out-of-tree modules.
+%package uImage
+Summary: Linux kernel image
+Group: Development/System
+
+%description uImage
+Linux kernel uImage
+
%prep
%setup -q
%build
+# 0. Build abi checker
+make -C abi-checker/src
+
# 1. Create main build directory
rm -rf %{kernel_build_dir}
mkdir -p %{kernel_build_dir}
@@ -68,6 +100,15 @@ mkdir -p %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}
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}
+# 4.1 Test ABI/API kernel change
+%if %{with abidev}
+echo "No linuks kernel ABI/API checks"
+%else
+( cd abi-checker/src; chmod 755 build_api_kernel_checker.sh; ./build_api_kernel_checker.sh "%{version}" "%{abiver}" )
+%endif
+
+make EXTRAVERSION="-%{build_id}" O=%{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id} uImage %{?jobs:-j%jobs}
+
# 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
@@ -82,32 +123,63 @@ 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}
+mkdir -p %{buildroot}/boot/abi/
+mkdir -p %{buildroot}/usr/local/bin
-# 2. Restore source and build irectory
+# 2. Install uImage
+cp %{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id}/arch/arm/boot/uImage %{buildroot}/boot/
+
+# 3. 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
+# 4. Install kernel headers
+make INSTALL_PATH=%{buildroot}/boot INSTALL_MOD_PATH=%{buildroot} O=%{kernel_build_dir}/linux-kernel-build-%{version}-%{build_id} install
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 {} +
+# 4.1 Install ABI/API tools
+cp abi-checker/src/abi-checker %{buildroot}/usr/local/bin
+
+# 4.2 Install abi_%{version} file
+%if %{with abidev}
+find ../.. -name "Module.symvers" -exec cp {} %{buildroot}/boot/abi/abi_devel \;
+%else
+cp abi-checker/data/abi* %{buildroot}/boot/abi/.
+ln -sf /boot/abi/abi_%{version}_%{abiver} %{buildroot}/boot/abi/current
+%endif
+
+# 5. 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-build-%{version}-%{build_id} -name "uImage" -exec rm -f {} \;
+find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "zImage" -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/src/linux-kernel-build-%{version}-%{build_id} -name "\.*dtb*tmp" -exec rm -f {} \;
+find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "*\.*tmp" -exec rm -f {} \;
+find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "*\.c" -exec rm -f {} \;
+find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "*\.S" -exec rm -f {} \;
+find %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id} -name "*\.ko" -exec rm -f {} \;
+
+find %{buildroot}/usr/src/linux-kernel-sources-%{version}-%{build_id} -name "*.c" -exec rm -f {} \;
+
+find %{buildroot}/usr -name "\.\.install.cmd" -exec rm -f {} \;
+find %{buildroot}/usr -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
+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 -rf %{buildroot}/usr/src/linux-kernel-sources-%{version}-%{build_id}/abi-checker
-# 5. Create symbolic links
+rm -rf %{buildroot}/System.map*
+rm -rf %{buildroot}/vmlinux*
+
+rm -rf %{buildroot}/boot/System.map*
+rm -rf %{buildroot}/boot/vmlinux*
+
+# 6. Create symbolic links
ln -sf /usr/src/linux-kernel-sources-%{version}-%{build_id} %{buildroot}/usr/src/linux-kernel-build-%{version}-%{build_id}/source
%clean
@@ -124,3 +196,18 @@ rm -rf %{buildroot}
%files build
%defattr (-, root, root)
/usr/src/linux-kernel-build-%{version}-%{build_id}
+
+%files uImage
+%if %{without abidev}
+/boot/
+%else
+/boot/uImage
+%endif
+
+%files abi-tools
+/usr/local/bin
+
+%if %{with abidev}
+%files abi-dev
+/boot/abi
+%endif