public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: Daniel Borkmann <daniel@iogearbox.net>
To: "Ben Hutchings" <ben@decadent.org.uk>,
	"Linus Lüssing" <linus.luessing@c0d3.blue>
Cc: b.a.t.m.a.n@lists.open-mesh.org,
	Manoj Srivastava <srivasta@debian.org>,
	debian-kernel@lists.debian.org
Subject: Re: [B.A.T.M.A.N.] Duplicate #include guards with make-kpkg / out-of-tree compile errors
Date: Mon, 16 Jan 2017 10:25:38 +0100	[thread overview]
Message-ID: <587C9192.6010905@iogearbox.net> (raw)
In-Reply-To: <1484441452.2998.11.camel@decadent.org.uk>

On 01/15/2017 01:50 AM, Ben Hutchings wrote:
> kernel-package is maintained by Manoj Srivastava (cc'd), not the kernel
> team.
>
> Ben.
>
> On Sat, 2017-01-14 at 22:28 +0100, Linus Lüssing wrote:
>> Hi Ben and others,
>>
>> Recently we stumbled upon some compile errors when trying to build
>> a backport version of the batman-adv kernel module for a 4.5 kernel
>> [0]:
>>
>>      "implicit declaration of function ‘G_TC_AT’"
>>
>> It seems VirtualBox has stumbled over this issue, too [1].
>>
>> When trying to find the cause of these errors we noticed that the
>> headers directory created via "$ make-kpkg kernel_headers" for 4.5
>> kernel resulted in two differing header files with the same guard,
>> namely __LINUX_PKT_CLS_H:
>>
>> https://metameute.de/~tux/batman-adv/net-sched-issues/linux-headers-4
>> .5.0%2b/include/uapi/linux/pkt_cls.h
>> https://metameute.de/~tux/batman-adv/net-sched-issues/linux-headers-4
>> .5.0%2b/include/linux/pkt_cls.h
>>
>> The latter, the non-uapi version, has the "#ifdef __KERNEL__"
>> section stripped, causing the compile issue if it is included
>> before the uapi variant.
>>
>> Removing this non-uapi version from the unpacked
>> linux-headers .deb package manually afterwards lets
>> a batman-adv compilation succeed again.
>>
>> Daniel (CC) has helped a lot with debugging so far and he
>> expressed the suspicion that maybe make-kpkg might install
>> "$ make headers_install" into the wrong directory?

Just to elaborate why I think it's strange, from above link the
include/linux/ directory contains the normal kernel headers we
have in the source tree, and the include/uapi/linux/ the expected
uapi headers. However, the post-processed uapi header files can
also be found in include/linux/. For example, if there's a name
collision (bpf.h as one example), then the post-processed uapi
header was not installed into include/linux/ and the normal kernel
header can still be seen there. If there was no naming collision
like in pkt_cls.h case, then it gets installed into include/linux/
as well. That seems at least rather strange to me, unless there's
a good reason for doing that which I'm not aware of.

>> Regards, Linus
>>
>> [0]: https://www.open-mesh.org/issues/322
>> [1]: https://www.virtualbox.org/ticket/15327
>>
>> PS: make-kpkg was invoked on a Debian Jessie (kernel-package
>> 13.014+nmu1).


  reply	other threads:[~2017-01-16  9:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-14 21:28 [B.A.T.M.A.N.] Duplicate #include guards with make-kpkg / out-of-tree compile errors Linus Lüssing
2017-01-15  0:50 ` Ben Hutchings
2017-01-16  9:25   ` Daniel Borkmann [this message]
2017-04-24 19:27   ` Linus Lüssing

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=587C9192.6010905@iogearbox.net \
    --to=daniel@iogearbox.net \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    --cc=ben@decadent.org.uk \
    --cc=debian-kernel@lists.debian.org \
    --cc=linus.luessing@c0d3.blue \
    --cc=srivasta@debian.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox