diff options
author | Jacek Pielaszkiewicz <j.pielaszkie@samsung.com> | 2013-12-09 13:37:39 +0100 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-11-18 11:46:06 +0900 |
commit | 7257d3889df13e9360e4ba5c3e12d2469f985c92 (patch) | |
tree | 4d86e3a6ce430215c3570b51b7d1eeb29e1c744c /packaging | |
parent | f58c85a39e2cc22b401e08f68887b1b6136d2339 (diff) | |
download | linux-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.spec | 125 |
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 |