From fd2a61c1f26b4aecbe116e3f0afcb8ae85d2282d Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 3 Jul 2014 03:49:53 -0700 Subject: Initial version of cross-kernel-headers for Fedora pkgs repo. --- .gitignore | 1 + cross-kernel-headers.spec | 283 ++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 285 insertions(+) create mode 100644 .gitignore create mode 100644 cross-kernel-headers.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5bb17fd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +linux-*.xz diff --git a/cross-kernel-headers.spec b/cross-kernel-headers.spec new file mode 100644 index 0000000..5a80d31 --- /dev/null +++ b/cross-kernel-headers.spec @@ -0,0 +1,283 @@ + +%define cross cross +%define rpmprefix %{nil} + +# These build_* macros match cross-binutils.spec. +# +# The subpackages created here are only really useful if the "sysroot" +# directory paths where they install the kernel headers match the +# sysroot that the cross-tools are looking for. So be sure to keep +# this list and the "do_package", "install_package", and "do_files" +# lists of target names in synch with cross-{binutils,gcc}.spec. + +%define build_all 1 +%define build_alpha %{build_all} +%define build_arm %{build_all} +%define build_aarch64 %{build_all} +%define build_avr32 %{build_all} +%define build_blackfin %{build_all} +%define build_c6x %{build_all} +%define build_frv %{build_all} +%define build_h8300 %{build_all} +%define build_hppa %{build_all} +%define build_hppa64 %{build_all} +%define build_ia64 %{build_all} +%define build_m32r %{build_all} +%define build_m68k %{build_all} +%define build_metag %{build_all} +%define build_microblaze %{build_all} +%define build_mips64 %{build_all} +%define build_mn10300 %{build_all} +%define build_openrisc %{build_all} +%define build_powerpc64 %{build_all} +%define build_s390x %{build_all} +%define build_score %{build_all} +%define build_sh %{build_all} +%define build_sh64 %{build_all} +%define build_sparc64 %{build_all} +%define build_tile %{build_all} +%define build_x86_64 %{build_all} +%define build_xtensa %{build_all} + +# As of linux-3.15, 'make ARCH=cris headers_install' fails out of the box. +%define build_cris 0 + +# 32-bit packages we don't build as we can use the 64-bit package instead +%define build_i386 0 +%define build_mips 0 +%define build_powerpc 0 +%define build_s390 0 +%define build_sparc 0 +%define build_sh4 0 + +# not available in binutils-2.24 +%define build_hexagon 0 +%define build_unicore32 0 + + +Summary: Header files for the Linux kernel for use by glibc +Name: %{cross}-kernel-headers +Version: 3.15 +Release: 1%{?dist} +License: GPLv2 +Group: Development/System +URL: http://www.kernel.org/ +BuildArch: noarch + +Source: ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-%{version}.tar.xz + +%description +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. + +%define do_package() \ +%if %2 \ +%package -n %{rpmprefix}kernel-headers-%1 \ +Summary: Cross-build Linux kernel headers for %1 \ +Group: Development/System \ +%description -n %{rpmprefix}kernel-headers-%1 \ +Linux kernel header files for cross-compilation support. \ +%endif + + +# The "do_symlink" (and "symlink_target", below) cases are where there +# is more than one toolchain target with a distinct GNU tuple and +# tooldir for it, corresponding to a single kernel arch/ subdirectory. +# For each of these sets, one target tuple is chosen (arbitrarily) as +# "primary" and the other packages just depend on the primary target's +# package and populate their own sysroot's /usr/include with symlinks +# into the primary target's sysroot. +# +# Note that this is a completely disjoint set of cases from the ones +# that are "do_symlink" in cross-binutils.spec: those don't actually +# have separate toolchains and just symlink the entire tooldir, so +# there is no need for another kernel-headers package at all. + +%define do_symlink() \ +%if %2 \ +%package -n %{rpmprefix}kernel-headers-%1 \ +Summary: Cross-build Linux kernel headers for %1 \ +Group: Development/System \ +Requires: %{rpmprefix}kernel-headers-%3 == %{version}-%{release} \ +%description -n %{rpmprefix}kernel-headers-%1 \ +Linux kernel header files for cross-compilation support. \ +%endif + +%do_package alpha-linux-gnu %{build_alpha} +%do_package arm-linux-gnu %{build_arm} +%do_package aarch64-linux-gnu %{build_aarch64} +%do_package avr32-linux-gnu %{build_avr32} +%do_package bfin-linux-gnu %{build_blackfin} +%do_package c6x-linux-gnu %{build_c6x} +%do_package cris-linux-gnu %{build_cris} +%do_package frv-linux-gnu %{build_frv} +%do_package hexagon-linux-gnu %{build_hexagon} +%do_package hppa-linux-gnu %{build_hppa} +%do_symlink hppa64-linux-gnu %{build_hppa64} hppa-linux-gnu +%do_symlink i386-linux-gnu %{build_i386} x86_64-linux-gnu +%do_package ia64-linux-gnu %{build_ia64} +%do_package m32r-linux-gnu %{build_m32r} +%do_package m68k-linux-gnu %{build_m68k} +%do_package metag-linux-gnu %{build_metag} +%do_package microblaze-linux-gnu %{build_microblaze} +%do_package mips64-linux-gnu %{build_mips64} +%do_package mips-linux-gnu %{build_mips} mips64-linux-gnu +%do_package mn10300-linux-gnu %{build_mn10300} +%do_package openrisc-linux-gnu %{build_openrisc} +%do_package powerpc64-linux-gnu %{build_powerpc64} +%do_symlink powerpc-linux-gnu %{build_powerpc} powerpc64-linux-gnu +%do_package s390x-linux-gnu %{build_s390x} +%do_symlink s390-linux-gnu %{build_s390} s390x-linux-gnu +%do_package score-linux-gnu %{build_score} +%do_package sh-linux-gnu %{build_sh} +%do_symlink sh4-linux-gnu %{build_sh4} sh-linux-gnu +%do_symlink sh64-linux-gnu %{build_sh64} sh-linux-gnu +%do_symlink sparc-linux-gnu %{build_sparc} sparc64-linux-gnu +%do_package sparc64-linux-gnu %{build_sparc64} +%do_package tile-linux-gnu %{build_tile} +%do_package unicore32-linux-gnu %{build_unicore32} +%do_package x86_64-linux-gnu %{build_x86_64} +%do_package xtensa-linux-gnu %{build_xtensa} + + +%prep +%setup -q -n linux-%{version} + +%build + +%install +rm -rf %{buildroot} + +# The first argument "target" is the GNU tool target tuple. +# The third argument "arch" is the kernel ARCH= architecture name. +install_target() { + local target="$1" + local cond="$2" + local arch="$3" + + if [ $cond -ne 0 ]; then + echo "=== INSTALL target $target ===" + local sysroot="%{buildroot}%{_prefix}/${target}/sys-root" + mkdir -p "$sysroot" + # Note that this will complain about not finding the cross-compiler + # because we don't have a BuildRequires for it. But not having the + # compiler doesn't actually make a difference in the installed headers, + # so we don't bloat the BuildRequires just to tidy the build log. + # It would be "BuildRequires: %{rpmprefix}gcc-%1 \" after %%package + # in the %%do_package macro. + make %{_smp_mflags} \ + ARCH="${arch}" \ + CROSS_COMPILE="${target}-" \ + INSTALL_HDR_PATH="${sysroot}/usr" \ + headers_install + find "${sysroot}/usr" -name '.*' ! -type d -print0 | xargs -0 rm -f + fi +} + +# The first argument "target" is the target tuple being created. +# The third argument "other" is the other target that will symlink to. +# This expects that "install_target $target" has already run. +symlink_target() { + local target="$1" + local cond="$2" + local other="$3" + + if [ $cond -ne 0 ]; then + echo "=== SYMLINK target $target -> $other ===" + local sysroot="%{buildroot}%{_prefix}/${target}/sys-root" + local includedir="${sysroot}/usr/include" + mkdir -p "${includedir}" + ( + cd "${includedir}" + ln -snf ../../../../${other}/sys-root/usr/include/* . + ) + fi +} + +install_target alpha-linux-gnu %{build_alpha} alpha +install_target arm-linux-gnu %{build_arm} arm +install_target aarch64-linux-gnu %{build_aarch64} arm64 +install_target avr32-linux-gnu %{build_avr32} avr32 +install_target bfin-linux-gnu %{build_blackfin} blackfin +install_target c6x-linux-gnu %{build_c6x} c6x +install_target cris-linux-gnu %{build_cris} cris +install_target frv-linux-gnu %{build_frv} frv +install_target hexagon-linux-gnu %{build_hexagon} hexagon +install_target hppa-linux-gnu %{build_hppa} parisc +symlink_target hppa64-linux-gnu %{build_hppa64} hppa-linux-gnu +symlink_target i386-linux-gnu %{build_i386} x86_64-linux-gnu +install_target ia64-linux-gnu %{build_ia64} ia64 +install_target m32r-linux-gnu %{build_m32r} m32r +install_target m68k-linux-gnu %{build_m68k} m68k +install_target metag-linux-gnu %{build_metag} metag +install_target microblaze-linux-gnu %{build_microblaze} microblaze +install_target mips64-linux-gnu %{build_mips64} mips +symlink_target mips-linux-gnu %{build_mips} mips64-linux-gnu +install_target mn10300-linux-gnu %{build_mn10300} mn10300 +install_target openrisc-linux-gnu %{build_openrisc} openrisc +install_target powerpc64-linux-gnu %{build_powerpc64} powerpc +symlink_target powerpc-linux-gnu %{build_powerpc} powerpc64-linux-gnu +install_target s390x-linux-gnu %{build_s390x} s390 +symlink_target s390-linux-gnu %{build_s390} s390x-linux-gnu +install_target score-linux-gnu %{build_score} score +install_target sh-linux-gnu %{build_sh} sh +symlink_target sh4-linux-gnu %{build_sh4} sh-linux-gnu +symlink_target sh64-linux-gnu %{build_sh64} sh-linux-gnu +install_target sparc64-linux-gnu %{build_sparc64} sparc +symlink_target sparc-linux-gnu %{build_sparc} sparc64-linux-gnu +install_target tile-linux-gnu %{build_tile} tile +install_target unicore32-linux-gnu %{build_unicore32} unicore32 +install_target x86_64-linux-gnu %{build_x86_64} x86 +install_target xtensa-linux-gnu %{build_xtensa} xtensa + + +%define do_files() \ +%if %2 \ +%files -n %{rpmprefix}kernel-headers-%1 \ +%defattr(-,root,root) \ +%{_prefix}/%1/sys-root/usr/include/* \ +%endif + +%do_files alpha-linux-gnu %{build_alpha} +%do_files arm-linux-gnu %{build_arm} +%do_files aarch64-linux-gnu %{build_aarch64} +%do_files avr32-linux-gnu %{build_avr32} +%do_files bfin-linux-gnu %{build_blackfin} +%do_files c6x-linux-gnu %{build_c6x} +%do_files cris-linux-gnu %{build_cris} +%do_files frv-linux-gnu %{build_frv} +%do_files hexagon-linux-gnu %{build_hexagon} +%do_files hppa64-linux-gnu %{build_hppa64} +%do_files hppa-linux-gnu %{build_hppa} +%do_files i386-linux-gnu %{build_i386} +%do_files ia64-linux-gnu %{build_ia64} +%do_files m32r-linux-gnu %{build_m32r} +%do_files m68k-linux-gnu %{build_m68k} +%do_files metag-linux-gnu %{build_metag} +%do_files microblaze-linux-gnu %{build_microblaze} +%do_files mips-linux-gnu %{build_mips} +%do_files mips64-linux-gnu %{build_mips64} +%do_files mn10300-linux-gnu %{build_mn10300} +%do_files openrisc-linux-gnu %{build_openrisc} +%do_files powerpc-linux-gnu %{build_powerpc} +%do_files powerpc64-linux-gnu %{build_powerpc64} +%do_files s390-linux-gnu %{build_s390} +%do_files s390x-linux-gnu %{build_s390x} +%do_files score-linux-gnu %{build_score} +%do_files sh-linux-gnu %{build_sh} +%do_files sh4-linux-gnu %{build_sh4} +%do_files sh64-linux-gnu %{build_sh64} +%do_files sparc-linux-gnu %{build_sparc} +%do_files sparc64-linux-gnu %{build_sparc64} +%do_files tile-linux-gnu %{build_tile} +%do_files unicore32-linux-gnu %{build_unicore32} +%do_files x86_64-linux-gnu %{build_x86_64} +%do_files xtensa-linux-gnu %{build_xtensa} + + +%changelog +* Thu Jul 3 2014 Roland McGrath +- Initial version. diff --git a/sources b/sources new file mode 100644 index 0000000..e0a1b26 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +97ca1625bb40368dc41b9a7971549071 linux-3.15.tar.xz -- cgit