[Buildroot] [PATCHv3] toolchain/external: allow custom toolchains to use newer headers
Yann E. MORIN
yann.morin.1998 at free.fr
Mon Jan 13 17:20:33 UTC 2020
Thomas, All,
On 2020-01-13 17:09 +0100, Thomas Petazzoni spake thusly:
> Thanks for this patch. I just needed it for an internal toolchain that
> I'm building with Buildroot 2019.02 (which supported headers 5.0
> maximum), but using Linux 5.4. So, the commit title that starts with
> "toolchain/external" is a bit incorrect as your implementation, as the
> commit log states, also addresses the case of internal toolchain.
Right, I'll update the commit title.
> Some more comments below.
>
> On Tue, 7 Jan 2020 21:54:29 +0100
> "Yann E. MORIN" <yann.morin.1998 at free.fr> wrote:
>
> > + If your kernel headers are more recent than the latest version
> > + in the choice, then select the latest version.
> > +
> > config BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4
> > bool "5.4.x"
>
> We should probably change the prompt here to:
>
> bool "5.4.x or later"
>
> and make it an habit of moving this "or later" statement to the most
> recent kernel headers option. This is IMO clearer than just the
> additional statement in the help text.
I was a bit worried about the additional burden of updating the headers
versions here and there...
With the patch as proposed, the 'latest' semantic is located in a single
place, and there is a single 'select' to move around, in
toolchain/Config.in:560.
But I can change. The existing prompts will be visible in the diff
context, so should be easy to spot. Hopefully.
> > BUILDDIR="${1}"
> > SYSROOT="${2}"
> > # Make sure we have enough version components
> > HDR_VER="${3}.0.0"
> > +CHECK="${4}" # 'strict' or 'loose'
> >
> > HDR_M="${HDR_VER%%.*}"
> > HDR_V="${HDR_VER#*.}"
> > @@ -32,16 +48,19 @@ ${HOSTCC} -imacros "${SYSROOT}/usr/include/linux/version.h" \
> > int main(int argc __attribute__((unused)),
> > char** argv __attribute__((unused)))
> > {
> > - if((LINUX_VERSION_CODE & ~0xFF)
> > - != KERNEL_VERSION(${HDR_M},${HDR_m},0))
> > + int ret = 0;
> > + int l = LINUX_VERSION_CODE & ~0xFF;
> > + int h = KERNEL_VERSION(${HDR_M},${HDR_m},0);
> > +
> > + if(l != h)
> > {
> > printf("Incorrect selection of kernel headers: ");
> > printf("expected %d.%d.x, got %d.%d.x\n", ${HDR_M}, ${HDR_m},
> > ((LINUX_VERSION_CODE>>16) & 0xFF),
> > ((LINUX_VERSION_CODE>>8) & 0xFF));
> > - return 1;
> > + ret = ((l >= h ) && ("${CHECK}"[0] == 'l')) ? 0 : 1;
>
> No space before the parenthesis after "h".
Yeah. typo.
> Also, checking just the
> first letter of ${CHECK} seems like a hack. Why not:
> ret = ((l >= h) && !strcmp("${CHECK}", "loose")) ? 0 : 1;
Can do. Done.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list