02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

11 Jul, 2017

2 commits


10 Jul, 2017

2 commits


22 Jun, 2017

1 commit

  • Since commit fcc8487d477a ("uapi: export all headers under uapi
    directories") fakechroot make bindeb-pkg fails, mismatching files for
    directories:
    touch: cannot touch 'usr/include/video/uvesafb.h/.install': Not a
    directory

    This due to a bug in fakechroot:
    when using the function $(wildcard $(srcdir)/*/.) in a makefile, under a
    fakechroot environment, not only directories but also files are
    returned.

    To circumvent that, we are using the functions:
    $(sort $(dir $(wildcard $(srcdir)/*/))))

    Fixes: fcc8487d477a ("uapi: export all headers under uapi directories")
    Signed-off-by: Richard Genoud
    Signed-off-by: Masahiro Yamada

    Richard Genoud
     

18 May, 2017

1 commit

  • Since commit 61562f981e92 ("uapi: export all arch specifics
    directories"), "make INSTALL_HDR_PATH=$root/usr headers_install"
    deletes standard glibc headers and others in $(root)/usr/include.

    The cause of the issue is that headers_install now starts descending
    from arch/$(hdr-arch)/include/uapi with $(root)/usr/include for its
    destination when installing asm headers. So, headers already there
    are assumed to be unwanted.

    When headers_install starts descending from include/uapi with
    $(root)/usr/include for its destination, it works around the problem
    by creating an dummy destination $(root)/usr/include/uapi, but this
    is tricky.

    To fix the problem in a clean way is to skip headers install/check
    in include/uapi and arch/$(hdr-arch)/include/uapi because we know
    there are only sub-directories in uapi directories. A good side
    effect is the empty destination $(root)/usr/include/uapi will go
    away.

    I am also removing the trailing slash in the headers_check target to
    skip checking in arch/$(hdr-arch)/include/uapi.

    Fixes: 61562f981e92 ("uapi: export all arch specifics directories")
    Reported-by: Dan Williams
    Signed-off-by: Masahiro Yamada
    Tested-by: Dan Williams
    Acked-by: Nicolas Dichtel

    Masahiro Yamada
     

10 May, 2017

4 commits

  • This patch removes the need of subdir-y. Now all files/directories under
    arch//include/uapi/ are exported.

    The only change for userland is the layout of the command 'make
    headers_install_all': directories asm- are replaced by arch-/.
    Those new directories contains all files/directories of the specified arch.

    Note that only cris and tile have more directories than only asm:
    - arch-v[10|32] for cris;
    - arch for tile.

    Signed-off-by: Nicolas Dichtel
    Signed-off-by: Masahiro Yamada

    Nicolas Dichtel
     
  • Regularly, when a new header is created in include/uapi/, the developer
    forgets to add it in the corresponding Kbuild file. This error is usually
    detected after the release is out.

    In fact, all headers under uapi directories should be exported, thus it's
    useless to have an exhaustive list.

    After this patch, the following files, which were not exported, are now
    exported (with make headers_install_all):
    asm-arc/kvm_para.h
    asm-arc/ucontext.h
    asm-blackfin/shmparam.h
    asm-blackfin/ucontext.h
    asm-c6x/shmparam.h
    asm-c6x/ucontext.h
    asm-cris/kvm_para.h
    asm-h8300/shmparam.h
    asm-h8300/ucontext.h
    asm-hexagon/shmparam.h
    asm-m32r/kvm_para.h
    asm-m68k/kvm_para.h
    asm-m68k/shmparam.h
    asm-metag/kvm_para.h
    asm-metag/shmparam.h
    asm-metag/ucontext.h
    asm-mips/hwcap.h
    asm-mips/reg.h
    asm-mips/ucontext.h
    asm-nios2/kvm_para.h
    asm-nios2/ucontext.h
    asm-openrisc/shmparam.h
    asm-parisc/kvm_para.h
    asm-powerpc/perf_regs.h
    asm-sh/kvm_para.h
    asm-sh/ucontext.h
    asm-tile/shmparam.h
    asm-unicore32/shmparam.h
    asm-unicore32/ucontext.h
    asm-x86/hwcap2.h
    asm-xtensa/kvm_para.h
    drm/armada_drm.h
    drm/etnaviv_drm.h
    drm/vgem_drm.h
    linux/aspeed-lpc-ctrl.h
    linux/auto_dev-ioctl.h
    linux/bcache.h
    linux/btrfs_tree.h
    linux/can/vxcan.h
    linux/cifs/cifs_mount.h
    linux/coresight-stm.h
    linux/cryptouser.h
    linux/fsmap.h
    linux/genwqe/genwqe_card.h
    linux/hash_info.h
    linux/kcm.h
    linux/kcov.h
    linux/kfd_ioctl.h
    linux/lightnvm.h
    linux/module.h
    linux/nbd-netlink.h
    linux/nilfs2_api.h
    linux/nilfs2_ondisk.h
    linux/nsfs.h
    linux/pr.h
    linux/qrtr.h
    linux/rpmsg.h
    linux/sched/types.h
    linux/sed-opal.h
    linux/smc.h
    linux/smc_diag.h
    linux/stm.h
    linux/switchtec_ioctl.h
    linux/vfio_ccw.h
    linux/wil6210_uapi.h
    rdma/bnxt_re-abi.h

    Note that I have removed from this list the files which are generated in every
    exported directories (like .install or .install.cmd).

    Thanks to Julien Floret for the tip to get all
    subdirs with a pure makefile command.

    For the record, note that exported files for asm directories are a mix of
    files listed by:
    - include/uapi/asm-generic/Kbuild.asm;
    - arch//include/uapi/asm/Kbuild;
    - arch//include/asm/Kbuild.

    Signed-off-by: Nicolas Dichtel
    Acked-by: Daniel Vetter
    Acked-by: Russell King
    Acked-by: Mark Salter
    Acked-by: Michael Ellerman (powerpc)
    Signed-off-by: Masahiro Yamada

    Nicolas Dichtel
     
  • This option was added in commit c7bb349e7c25 ("kbuild: introduce destination-y
    for exported headers") but never used in-tree.

    Signed-off-by: Nicolas Dichtel
    Acked-by: Paul Bolle
    Signed-off-by: Masahiro Yamada

    Nicolas Dichtel
     
  • After the last three patches, all exported headers are under uapi/, thus
    input-files2 are not needed anymore.
    The side effect is that input-files1-name is exactly header-y.

    Note also that input-files3-name is genhdr-y.

    Signed-off-by: Nicolas Dichtel
    Signed-off-by: Masahiro Yamada

    Nicolas Dichtel
     

26 Nov, 2014

1 commit

  • The shorthand "clean" is defined in both the top Makefile and
    scripts/Makefile.clean. Likewise, the "hdr-inst" is defined in
    both the top Makefile and scripts/Makefile.headersinst.

    To reduce code duplication, this commit collects them into
    scripts/Kbuild.include like the "build" and "modbuiltin" shorthands.
    It requires scripts/Makefile.clean to include scripts/Kbuild.include,
    but its impact on the performance of "make clean" should be
    negligible.

    Signed-off-by: Masahiro Yamada
    Signed-off-by: Michal Marek

    Masahiro Yamada
     

18 May, 2013

1 commit

  • If headers_install is executed from a deep/long directory structure, the
    shell's maximum argument length can be execeeded, which breaks the operation
    with:

    | make[2]: execvp: /bin/sh: Argument list too long
    | make[2]: ***

    Instead of passing each files name with the entire path, I give only the file
    name without the source path and give this path as a new argument to
    headers_install.pl.

    Because there is three possible paths, I have tree input-files list, one per
    path.

    Signed-off-by: Nicolas Dichtel
    Tested-by: Bruce Ashfield
    Signed-off-by: Michal Marek

    Nicolas Dichtel
     

09 Apr, 2013

1 commit

  • Remove perl from make headers_install by replacing a perl script (doing a
    simple regex search and replace) with a smaller, faster, simpler,
    POSIX-2008 shell script implementation. The new shell script is a single
    for loop calling sed and piping its output through unifdef to produce the
    target file.

    Same as last time except for minor tweak to deal with code review from
    here: http://lkml.indiana.edu/hypermail/linux/kernel/1302.3/00078.html

    (Note that this drops the "arch" argument, which isn't used. Kbuild
    already points to the right input files on the command line.)

    Signed-off-by: Rob Landley
    Cc: Thomas Gleixner
    Cc: Josh Boyer
    Cc: "Paul E. McKenney"
    Cc: David Howells
    Acked-by: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Michal Marek

    Rob Landley
     

05 Mar, 2013

1 commit

  • Commit 10b63956 ("UAPI: Plumb the UAPI Kbuilds into the user header
    installation and checking") introduced a dependency of make 3.81
    due to use of $(or ...)

    We do not want to lift the requirement to gmake 3.81 just yet...
    Included are a straightforward conversion to $(if ...)

    Bisected-and-tested-by: Tetsuo Handa
    Cc: David Howells
    Signed-off-by: Sam Ravnborg
    Cc: [v3.7+]
    Signed-off-by: Michal Marek

    Sam Ravnborg
     

22 Feb, 2013

1 commit

  • Commit 10b63956fce7f369cc37fd4d994f09bd5203efe4 which plumbed in UAPI
    broke the destination-y functionality of scripts/Makefile.headersinst.

    The variable destination-y is used in a := assignment and so is expanded at
    declaration time, and the include of the Kbuild fragments that set
    destination-y to something is after this time, so it now always expands empty.

    There are no in-tree users of destination-y, but it allows any
    Kbuild-fragment to redirect where headers are installed.

    Just move the assignment of the variable that uses it below the include
    of the Kbuild fragment.

    Signed-off-by: Jesper Nilsson
    Cc: Michal Marek
    Cc: David Howells
    Signed-off-by: Michal Marek

    Jesper Nilsson
     

03 Oct, 2012

2 commits

  • Plumb the UAPI Kbuilds into the user header installation and checking system.
    As the headers are split the entries will be transferred across from the old
    Kbuild files to the UAPI Kbuild files.

    The changes made in this commit are:

    (1) Exported generated files (of which there are currently four) are moved to
    uapi/ directories under the appropriate generated/ directory, thus we
    get:

    include/generated/uapi/linux/version.h
    arch/x86/include/generated/uapi/asm/unistd_32.h
    arch/x86/include/generated/uapi/asm/unistd_64.h
    arch/x86/include/generated/uapi/asm/unistd_x32.h

    These paths were added to the build as -I flags in a previous patch.

    (2) scripts/Makefile.headersinst is now given the UAPI path to install from
    rather than the old path.

    It then determines the old path from that and includes that Kbuild also
    if it exists, thus permitting the headers to exist in either directory
    during the changeover.

    I also renamed the "install" variable to "installdir" as it refers to a
    directory not the install program.

    (3) scripts/headers_install.pl is altered to take a list of source file paths
    instead of just their names so that the makefile can tell it exactly
    where to find each file.

    For the moment, files can be obtained from one of four places for each
    output directory:

    .../include/uapi/foo/
    .../include/generated/uapi/foo/
    .../include/foo/
    .../include/generated/foo/

    The non-UAPI paths will be dropped later.

    Signed-off-by: David Howells
    Acked-by: Arnd Bergmann
    Acked-by: Thomas Gleixner
    Acked-by: Paul E. McKenney
    Acked-by: Dave Jones

    David Howells
     
  • Remove the objhdr-y export list as it is no longer used. genhdr-y should be
    used instead.

    Signed-off-by: David Howells
    Acked-by: Arnd Bergmann
    Acked-by: Thomas Gleixner
    Acked-by: Paul E. McKenney
    Acked-by: Dave Jones

    David Howells
     

18 Nov, 2011

1 commit

  • Generated asm headers are supposed to live in
    arch/*/include/generated/asm, but objhdr-y expect them to live in the
    same directory they are generated in. Instead of trying to cut that
    particular Gordian knot, introduce genhdr-y that takes this into
    account; the sole user of objhdr-y, linux/version.h, should be
    migrated over at some later date.

    Suggested-by: David Woodhouse
    Acked-by: David Woodhouse
    Cc: Sam Ravnborg
    Cc: Michal Marek
    Signed-off-by: H. Peter Anvin

    H. Peter Anvin
     

29 Apr, 2011

1 commit

  • There is an increasing amount of header files
    shared between individual architectures in asm-generic.
    To avoid a lot of dummy wrapper files that just
    include the corresponding file in asm-generic provide
    some basic support in kbuild for this.

    With the following patch an architecture can maintain
    a list of files in the file arch/$(ARCH)/include/asm/Kbuild

    To use a generic file just add:

    generic-y +=

    For each file listed kbuild will generate the necessary
    wrapper in arch/$(ARCH)/include/generated/asm.

    When installing userspace headers a wrapper is likewise created.

    The original inspiration for this came from the unicore32
    patchset - although a different method is used.

    The patch includes several improvements from Arnd Bergmann.
    Michael Marek contributed Makefile.asm-generic.

    Remis Baima did an intial implementation along to achive
    the same - see https://patchwork.kernel.org/patch/13352/

    Signed-off-by: Sam Ravnborg
    Acked-by: Guan Xuetao
    Tested-by: Guan Xuetao
    Acked-by: Arnd Bergmann
    Cc: Remis Lima Baima
    Signed-off-by: Michal Marek

    Sam Ravnborg
     

15 Aug, 2010

1 commit


10 Jun, 2009

1 commit

  • I'm trying to install kernel headers to build a cross-toolchain, but got
    the following:

    make ARCH=arm
    INSTALL_HDR_PATH=/work/psl/eldk-builds/arm-2009-04-21/work/var/tmp/crosstool-0.43-3-root/usr/crosstool/gcc-4.2.2-glibc-20070515T2025-eldk/
    +arm-linux-gnueabi/arm-linux-gnueabi/
    headers_check
    ...
    CHECK include/linux/raid (2 files)
    CHECK include/linux/spi (1 files)
    CHECK include/linux/sunrpc (1 files)
    CHECK include/linux/tc_act (6 files)
    CHECK include/linux/tc_ematch (4 files)
    CHECK include/linux/usb (8 files)
    make[2]: execvp: /bin/sh: Argument list too long
    make[2]: ***
    [/work/psl/eldk-builds/arm-2009-04-21/work/var/tmp/crosstool-0.43-3-root/usr/crosstool/gcc-4.2.2-glibc-20070515T2025-eldk/arm-linux-gnueab
    +i/arm-linux-gnueabi//include/linux/.check]
    Error 127
    make[1]: *** [linux] Error 2
    make: *** [headers_check] Error 2
    ->

    Introduce use of xargs to fix this.

    Signed-off-by: Sergei Poselenov
    Cc: Wolfgang Denk
    Signed-off-by: Sam Ravnborg

    Sergei Poselenov
     

11 Apr, 2009

1 commit

  • xtensa and arm have asked for a possibility to export headers
    and locate them in a specific directory when exported.
    Introduce destiantion-y to support this.

    This patch in additiona adds some limited
    documentation for the variables used for exported headers.

    Signed-off-by: Sam Ravnborg
    Cc: Oskar Schirmer
    Cc: Mikael Starvik

    Sam Ravnborg
     

26 Jul, 2008

6 commits

  • We see some header files that are selected dependent on
    the actual architecture so force a reinstallation
    of all header files when the arch changes.
    This slows down "make headers_check_all" but then
    we better reflect reality.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Move the core functionality of headers_install
    and headers_check to two small perl scripts.
    The makefile is adapted to use the perl scrip and
    changed to operate on all files in a directory.
    So if one file is changed then all files in the
    directory is processed.

    perl were chosen for the helper scripts because this
    is pure text processing which perl is good at and
    especially the headers_check.pl script are expected to
    see changes / new checks implmented.

    The speed is ~300% faster on this box.
    And the output generated to the screen is now down to
    two lines per directory (one for install, one for check)
    so it is easier to scroll back after a kernel build.

    The perl scripts has been brought to sanity by patient
    feedback from: Vegard Nossum

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Move it to the top-level file to decide if we install/check
    the generic headers or the arch specific headers.

    This revealed a long standing bug where "make headers_check_all"
    relied on the files in asm/ for the current architecture.
    So make headers_check_all is now broken by this commit.

    In addition:

    o add a simpler way to detect if an arch support
    exporting header files.

    o add 'set -e;' so we error out early if
    make headers_check_all fails.

    o add sparc64 and cris to arch we do not process
    in make headers_*_all because:

    sparc64 - use sparc to export headers
    cris - is know seriously broken

    Includes suggestions from: David Woodhouse
    .

    Signed-off-by: Sam Ravnborg
    Cc: David Woodhouse

    Sam Ravnborg
     
  • No functional changes just improved readability

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • ALTARCH is no longer used by any arch(*) so drop
    support for this from Makefile.headerinst

    Dropping ALTARCH support simplifies Makefile.headerinst

    (*) sparc64 uses it but work is ongoing to drop it
    and no furter usage is planned.

    Signed-off-by: Sam Ravnborg
    Cc: David Woodhouse
    Cc: David Miller

    Sam Ravnborg
     
  • unifdef utility is fast enough to warrant that we always
    run the scripts through unifdef.

    This patch runs all headers listed with header-y and unifdef-y
    through unifdef.
    Next step is to drop unifdef-y in all Kbuild files and
    that can now be done in smaller steps.

    Signed-off-by: Sam Ravnborg
    Cc: David Woodhouse
    Cc: Adrian Bunk

    Sam Ravnborg
     

17 Jul, 2007

1 commit

  • The sed expression used at the moment in scripts/Makefile.headersinst
    relies on the (handy) GNU extension where you can escape ERE's in an
    otherwise BRE without using the GNU -r option. The following patch
    replaces this "\+" usage with a functionally equivalent POSIX BRE compliant
    "\{1,\}". Tested with `make headers_install` against blackfin/x86_64/i386
    targets.

    Stupid whiny OS X users and their crappy sed ;)

    Signed-off-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Mike Frysinger
     

07 Jul, 2007

1 commit

  • A bug in headers_install for ARCH=x86_64 yields an asm/ directory full of
    files all of which are using the same #ifdef guard, "__ASM_STUB_" with no
    postfix. So the second and later asm files #included in the same C file
    (often through standard headers like ioctl.h) yields no symbols.

    Strangeness with the Ubuntu 'tell me if I support something that's not
    explcitly mentioned in POSIX, and I'll strip it out' shell, I believe.

    We don't need the 'export' but we do need a semicolon at the end of the
    FNAME line:

    Signed-off-by: David Woodhouse
    Signed-off-by: Rob Landley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

22 May, 2007

1 commit

  • This should make it stop immediately after printing the _helpful_ error
    message, rather than continuing to spit out many pages more of 'CHECK
    include/linux/foo.h' before eventually coming to a halt with something
    less obvious.

    Now I get this...
    CHECK include/linux/smb_fs.h
    /shiny/git/linux-2.6/usr/include/linux/smb_fs.h requires linux/jiffies.h, which does not exist in exported headers
    make[2]: *** [/shiny/git/linux-2.6/usr/include/linux/.check.smb_fs.h] Error 1
    make[1]: *** [linux] Error 2
    make: *** [headers_check] Error 2

    Signed-off-by-if-Sam-says-so: David Woodhouse
    [ Sam had better say so! This made me waste way too much time. - Linus]
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

31 Jan, 2007

1 commit

  • The current filename->define translation does not scrub dashes so when
    creating stub defines for like asm-x86_64/ptrace-abi.h, we get: #define
    __ASM_STUB_PTRACE-ABI_H

    gcc just hates that sort of thing :)

    trivial attached patch adds - to the tr list to scrub it to _

    Signed-off-by: Mike Frysinger
    Cc: David Woodhouse
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     

17 Oct, 2006

1 commit

  • Fix this:

    make[3]: *** No rule to make target
    `/mnt/md0/devel/linux-git/include/linux/version.h', needed by
    `/mnt/md0/devel/linux-git-obj/usr/include/linux/version.h'. Stop.
    make[2]: *** [linux] Error 2
    make[1]: *** [headers_install] Error 2

    Signed-off-by: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

04 Oct, 2006

1 commit


25 Sep, 2006

3 commits

  • * git://git.infradead.org/~dwmw2/khdrs-2.6:
    New 'make headers_install_all' target.
    Use dependencies for 'make headers_install'.
    [S390] Unexport , export in its place.
    Remove dead netfilter_logging.h from include/linux/Kbuild
    Remove offsetof() from user-visible
    Clean up exported headers on CRIS
    Fix v850 exported headers
    Don't advertise (or allow) headers_{install,check} where inappropriate.
    Remove UML header export
    Remove ARM26 header export.
    Fix H8300 exported headers.
    Fix m68knommu exported headers
    Fix exported headers for SPARC, SPARC64
    Fix 'make headers_check' on m32r
    Fix 'make headers_check' on sh64
    Fix 'make headers_check' on sh
    [HEADERS] Fix ARM 'make headers_check'

    Initial pass of manual conflict resolution in top-level Makefile over
    conflicting build rule and headers_install changes.

    Linus Torvalds
     
  • Let headers_install use in-kernel unifdef

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Re-export header files only if either they or their controlling Kbuild
    file has actually changed. Also allow for similar dependencies with
    'headers_check', once we properly create the dependencies for those.

    Signed-off-by: David Woodhouse

    David Woodhouse
     

17 Sep, 2006

1 commit

  • We generate an which includes either or
    as appropriate. But we were doing this dependent on
    whether the file in question existed in the _unexported_ tree, not the
    exported tree. So if a file was exported to userspace in one asm- directory
    but not the other, the generated file in asm/ was incorrect.

    This only changed the failure mode if it _was_ included from a nice #error to
    a less explicable #include failure -- but it also gave false errors in 'make
    headers_check' output. Fix it by looking in the right place instead.

    Signed-off-by: David Woodhouse
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     

18 Jun, 2006

1 commit