summaryrefslogtreecommitdiff
path: root/packaging
diff options
context:
space:
mode:
authorJacek Pielaszkiewicz <j.pielaszkie@samsung.com>2013-12-09 13:37:39 +0100
committerChanho Park <chanho61.park@samsung.com>2014-11-18 11:46:06 +0900
commit7257d3889df13e9360e4ba5c3e12d2469f985c92 (patch)
tree4d86e3a6ce430215c3570b51b7d1eeb29e1c744c /packaging
parentf58c85a39e2cc22b401e08f68887b1b6136d2339 (diff)
downloadlinux-3.10-7257d3889df13e9360e4ba5c3e12d2469f985c92.tar.gz
linux-3.10-7257d3889df13e9360e4ba5c3e12d2469f985c92.tar.bz2
linux-3.10-7257d3889df13e9360e4ba5c3e12d2469f985c92.zip
linux-kernel and linux kernel modules ABI tools.
The following changes have been implemented: 1. A new tool "abi-checker" has been created. The tool allows: - compare two Module.symvers files. - reports which symbols are new, changed or have been removed. - create dump all kernel symbols that are present in external kernel module. 2. linux-3.10.spec has been updated to check changes in kernel ABI/API. In case if any change kernel installation process aborts. In such case user is requested to update kernel version and update ABI dump file. ABI dump file should be located in "abi-checker/data" directory. 3. Output rpm with uImage has been extended by ABI dump. Default location for the file is /boot/abi/_kernel_version_. 4. New output rpm package is build - "abi-tools". The package delivers ABI-checker. By default the rpm install ABI-checker tool into /usr/local/bin directory. Change-Id: I37a2a52f64fde915cff24aa85349aa1dbee3a5b8 Signed-off-by: Jacek Pielaszkiewicz <j.pielaszkie@samsung.com>
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