# openmamba kernel specfile for embedded kernels # Copyright (C) 2011-2013 by Silvan Calarco # # To build a specific target: # # rpmbuild -ba --define="KERNEL_TARGET " kernel.spec # # To cross-compile: # rpmbuild -ba kernel-sgn.spec --target arm --define="cross_target_cpu arm" # # To cross-compile using an alternative compiler: # rpmbuild -ba kernel-sgn.spec --target arm --define="cross_target_cpu arm" \ # --define="_target_platform arm-none-linux-gnueabi" # # Archive created from opensgn-easy project with the following commands: # git clone https://github.com/X-Stranger/N8000.git -b arch # cd N8000 # git archive --format=tar --prefix=kernel-sgn-3.0.31.git20130916/ HEAD | xz > /usr/src/RPM/SOURCES/kernel-sgn-3.0.31.git20130916.tar.xz %define kernel_ver %(echo %version | cut -d. -f1-3) %define KERNEL_TARGET sgn %if "%{_target_cpu}" == "i586" %define KIMAGE arch/i386/boot/bzImage %define KIMAGE_DEST vmlinuz %define DEPMOD /sbin/depmod %endif %if "%{_target_cpu}" == "arm" %define KIMAGE arch/arm/boot/zImage %define KIMAGE_DEST zImage %define DEPMOD /sbin/depmod %endif %if "%{_target_cpu}" == "x86_64" %if "%{KERNEL_TARGET}" == "mamba-xen" %define KIMAGE arch/x86_64/boot/vmlinuz %define KIMAGE_DEST vmlinuz %define DEPMOD /sbin/depmod %else %define KIMAGE arch/x86_64/boot/bzImage %define KIMAGE_DEST vmlinuz %define DEPMOD /sbin/depmod %endif %endif %if "%{_target_cpu}" == "ppc" %define KIMAGE vmlinux %define KIMAGE_DEST vmlinux %define DEPMOD /bin/true %endif %if "%{_target_cpu}" == "i586" %define target_cpu i386 %else %define target_cpu %{_target_cpu} %endif # disable internal dependency generator for scriptlets %define _use_internal_dependency_generator 1 Name: kernel-sgn Version: 3.0.31.git20130916 Release: 3mamba Summary: The Linux Kernel, the operating system core itself for the Samsung Galaxy Note 10.1 Tablet Group: System/Kernel and Hardware Vendor: openmamba Distribution: openmamba Packager: Silvan Calarco URL: http://github.com/mambasoft/iconia-gnu-kernel Source0: %{name}-%{version}.tar.xz Source20: %{name}-logo.png Source100: %{name}-%{kernel_ver}-arm-config Patch0: kernel-sgn-3.0.31-poweroff-when-charging.patch License: GPL ## AUTOBUILDREQ-BEGIN BuildRequires: glibc-devel BuildRequires: libperl BuildRequires: perl-devel ## AUTOBUILDREQ-END BuildRequires: android-prebuilt-toolchain.i586 BuildRequires: /bin/bash /bin/sh /usr/bin/perl BuildRequires: kmod BuildRequires: mkbootimg Provides: kernel Requires: broadcom-firmware BuildRoot: %{_tmppath}/%{name}-build %description The Linux Kernel, the operating system core itself for the Samsung Galaxy Note 10.1 Tablet. The kernel package contains the Linux kernel (%{KIMAGE_DEST}), the operating system core itself. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc. This is the source package used to build kernel for different architectures and targets. This kernel was build for %{_target_cpu} architecture and the following target: %{?KERNEL_TARGET}. %package source Group: Development/Kernel Summary: The source code for the Linux kernel Requires: kernel-%{KERNEL_TARGET}-headers == %{version}-%{release} Provides: kernelsource %description source The kernel-source package contains the source code files for the Linux kernel. The source files can be used to build a custom kernel that is better tuned to your particular hardware, if you are so inclined (and you know what you're doing). This kernel sources are configured for %{TARGET_CPU} architecture and the following target: %{?KERNEL_TARGET}. %package headers Group: Development/Kernel Summary: Headers, scripts, configuration and Makefile for the linux kernel Provides: kernelheaders %description headers The kernel-headers package contains the headers, scripts, configuration and Makefile to develop with the linux kernel The kernel-headers can be used to build modules for the kernel. This kernel headers are configured for %{TARGET_CPU} architecture and the following target: %{?KERNEL_TARGET}. %package headers-sanitised Group: Development/Kernel Summary: Sanitised kernel headers used for glibc build Provides: kernelsanitisedheaders %description headers-sanitised Sanitised kernel headers used for glibc build. This kernel sanitised headers are configured for %{TARGET_CPU} architecture and the following target: %{?KERNEL_TARGET}. %package modules Group: System/Kernel and Hardware Summary: The kernel base modules normally used by the device Requires: kernel-%{KERNEL_TARGET} == %{version}-%{release} Provides: kernelmodules %description modules The kernel-modules package contains the base modules normally used by the device %prep %setup -q -D -T :<< ___EOF %if "%{?KERNEL_TARGET}" == "" echo "No target specified, aborting." exit 1 %else echo "I'm going to build a %{KERNEL_TARGET} kernel..." %endif # # patch and configure STANDARD kernel # make mrproper # create build dirs for each kernel # and copy proper configuration %if %{_target_cpu} == arm case %{?KERNEL_TARGET} in sgn) kernel_cfg=%{SOURCE100} ;; esac %endif cp $kernel_cfg ./.config cp Makefile Makefile.orig sed -i "s/\(EXTRAVERSION =.*\)/\1-%{?KERNEL_TARGET}/" Makefile # add custom logo pngtopnm %{SOURCE20} | ppmquant -plain 224 > drivers/video/logo/logo_linux_clut224.ppm %patch0 -p1 %build :<< ___EOF # # build kernel for given target # CC=/opt/prebuilt/toolchain/arm-eabi-4.4.3/bin/arm-eabi- ARCH=%{target_cpu} make oldconfig ARCH=%{target_cpu} make \ CROSS_COMPILE=$CC \ %{?_smp_mflags} %install [ "%{buildroot}" != / ] && rm -rf "%{buildroot}" # create system dirs in install environment install -d %{buildroot}{/usr/src/,/boot,%{_initrddir},/lib/modules,/lib/firmware} ARCH=%{target_cpu} make \ modules_install INSTALL_MOD_PATH=%{buildroot} DEPMOD=%{DEPMOD} install -m0644 modules.builtin %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/ install -m0644 modules.order %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/ (cd %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET} rm -f build && ln -sf /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET} build ) cp %{KIMAGE} %{buildroot}/boot/%{KIMAGE_DEST}-%{kernel_ver}-%{?KERNEL_TARGET} cp System.map %{buildroot}/boot/System.map-%{kernel_ver}-%{?KERNEL_TARGET} gzip usr/initramfs_data.cpio # NOTE: passing cmdline from boot loader/mkbootimg is disabled for this kernel mkbootimg \ --kernel %{buildroot}/boot/%{KIMAGE_DEST}-%{kernel_ver}-%{?KERNEL_TARGET} \ --cmdline "\ root=/dev/mmcblk1p1 rw rootfstype=ext4 rootwait vmalloc=144M quiet splash loglevel=0" \ --ramdisk usr/initramfs_data.cpio.gz \ -o %{buildroot}/boot/kernel-%{kernel_ver}-%{?KERNEL_TARGET}.img mkbootimg \ --kernel %{buildroot}/boot/%{KIMAGE_DEST}-%{kernel_ver}-%{?KERNEL_TARGET} \ --cmdline "\ root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait vmalloc=144M debug" \ --ramdisk usr/initramfs_data.cpio.gz \ -o %{buildroot}/boot/kernel-%{kernel_ver}-%{?KERNEL_TARGET}-debug.img # recreate kernel sources [ -e kernel-headers.files ] && rm -f kernel-headers.files [ -e kernel-source.files ] && rm -f kernel-source.files cp -R %{_builddir}/%{name}-%{version} %{buildroot}/usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET} cd %{buildroot}/usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET} ARCH=%{target_cpu} make mrproper %if %{_target_cpu} == arm case %{?KERNEL_TARGET} in sgn) kernel_cfg=%{SOURCE100} ;; esac %endif cp $kernel_cfg %{buildroot}/usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/.config cp %{_builddir}/%{name}-%{version}/Module.symvers %{buildroot}/usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET} ARCH=%{target_cpu} make oldconfig #cp Makefile Makefile.orig #sed -i "s/\(EXTRAVERSION =.*\)/\1-%{?KERNEL_TARGET}/" Makefile #%if "%{_target_platform}" == "%{_build}" ARCH=%{target_cpu} make \ HOSTCC=%{_target_platform}-gcc \ CROSS_COMPILE=%{_target_platform}- \ prepare scripts oldconfig #%endif rm .config.old # clean modules files created by depmod rm -f %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/modules.{alias,alias.bin,ccwmap,dep,dep.bin,devname,ieee1394map} rm -f %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/modules.{inputmap,isapnpmap,ofmap,pcimap,seriomap,softdep} rm -f %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/modules.{symbols,symbols.bin,usbmap} # remove .tmp files if any rm -f %{buildroot}%{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/.tmp* || true # fix symlink pointing to sources rm -f %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/source ln -s %{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET} %{buildroot}/lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/source # # create kernel-source.files and kernel-headers.files # cd %{buildroot}%{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET} splitdirs="block crypto drivers fs ipc kernel lib mm net security sound" case %{_target_cpu} in i586|x86_64) headers_arch="x86" ;; arm) headers_arch="arm" ;; ppc) headers_arch="ppc" ;; esac find $splitdirs -type f -name *.h -exec \ echo "%{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/"{} >> \ %{_builddir}/%{name}-%{version}/kernel-headers.files \; %if "%{with_full_source}" == "1" find $splitdirs -type f -not -name *.h -exec \ echo "%{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/"{} >> \ %{_builddir}/%{name}-%{version}/kernel-source.files \; %else touch %{_builddir}/%{name}-%{version}/kernel-source.files find $splitdirs -type f -not -name *.h -exec rm -f {} \; rm -rf firmware samples virt %endif archs=" `ls %{buildroot}%{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/arch` " for i in $archs; do [ "$i" == "$headers_arch" ] || \ %if "%{with_full_source}" == "1" echo "%{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/arch/$i" >> \ %{_builddir}/%{name}-%{version}/kernel-source.files %else rm -rf arch/$i %endif done echo "%{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/arch/$headers_arch" >> \ %{_builddir}/%{name}-%{version}/kernel-headers.files # install sanitised headers used by glibc ARCH=%{target_cpu} make headers_install \ HOSTCC=%{_target_platform}-gcc \ CROSS_COMPILE=%{_target_platform}- \ INSTALL_HDR_PATH=%{buildroot}%{_prefix}/src/linux-%{kernel_ver}-%{KERNEL_TARGET}/usr #install %{SOURCE1} %{buildroot}/lib/firmware/brcm/bcm4329-fullmac-4.txt %clean [ "%{buildroot}" != / ] && rm -rf "%{buildroot}" %post # new install or upgrade if [ $1 -ge 1 ]; then /sbin/depmod -A -F /boot/System.map-%{kernel_ver}-%{?KERNEL_TARGET} \ %{kernel_ver}-%{?KERNEL_TARGET} &>/dev/null # /sbin/mkinitramfs -f /boot/initramfs-%{kernel_ver}-%{?KERNEL_TARGET}.img %{kernel_ver}-%{?KERNEL_TARGET} fi [ -e /dev/mtd3 ] && { flash_eraseall /dev/mtd3 cat /boot/%{KIMAGE_DEST}-%{kernel_ver}-%{?KERNEL_TARGET} > /dev/mtd3 } exit 0 %postun # erase this package if [ $1 -eq 0 ]; then [ -f /boot/%{KIMAGE_DEST}-%{kernel_ver}-%{?KERNEL_TARGET} ] || rm -f /boot/initramfs-%{kernel_ver}-%{?KERNEL_TARGET}.img fi exit 0 %post headers # touch file so it results up-to-date on make touch %{_prefix}/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/include/config/MARKER exit 0 %post modules # new install or upgrade if [ $1 -ge 1 ]; then /sbin/depmod -A -F /boot/System.map-%{kernel_ver}-%{?KERNEL_TARGET} \ %{kernel_ver}-%{?KERNEL_TARGET} &>/dev/null fi exit 0 %files %defattr (-, root, root) /boot/System.map-%{kernel_ver}-%{?KERNEL_TARGET} /boot/%{KIMAGE_DEST}-%{kernel_ver}-%{?KERNEL_TARGET} /boot/kernel-%{kernel_ver}-%{?KERNEL_TARGET}.img /boot/kernel-%{kernel_ver}-%{?KERNEL_TARGET}-debug.img %files source -f kernel-source.files %defattr(-,root,root) /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/Documentation /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/drivers/media/video/samsung/mali/arch /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/drivers/media/video/samsung/ump/arch /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/drivers/media/video/samsung/ump_r3p2/arch/arch-pegasus-m400 /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/init /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/REPORTING-BUGS /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/usr/gen_init_cpio.c /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/usr/initramfs_data*.S /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/usr/Kconfig /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/usr/Makefile /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/tools /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/.missing-syscalls.d /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/Kconfig /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/README.n8000 %if "%{with_full_source}" == "1" /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/block /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/firmware /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/samples /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/virt %endif %files headers-sanitised %defattr(-,root,root) /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/usr/include %files headers -f kernel-headers.files %defattr(-,root,root) /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/COPYING /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/CREDITS /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/Kbuild /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/include /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/Makefile /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/Makefile.orig /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/Module.symvers /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/MAINTAINERS /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/README /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/scripts /usr/src/linux-%{kernel_ver}-%{?KERNEL_TARGET}/.config /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/build /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/source %files modules %defattr (-, root, root) %dir /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET} /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/modules.builtin /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/modules.builtin.bin /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/modules.order %dir /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/kernel /lib/modules/%{kernel_ver}-%{?KERNEL_TARGET}/kernel/* %changelog * Sat Sep 13 2014 Silvan Calarco 3.0.31.git20130916-3mamba - pass real (empty) ramdisk to mkbootimg --ramdisk to fix boot on recent devices * Fri Oct 25 2013 Silvan Calarco 3.0.31.git20130916-2mamba - patched to poweroff instead of rebooting when charging - config: set CONFIG_CRYPTO_XTS=y for cryptosetup * Mon Sep 16 2013 Silvan Calarco 3.0.31.git20130916-1mamba - package created on kernel-iconia specfile base