[Buildroot] [PATCH 1/1] package/nginx: override endianness

Nevo Hed nhed+buildroot at starry.com
Tue Aug 31 16:19:29 UTC 2021


Yes Arnout, That link is my report to nginx.

I will add that comment to my patch, but quick question -
will that go on my inner or outer patch?
I don't see the word 'upstream' in any of the current nginx patches and
most of them deal with unsupported cross-compilation


On Tue, Aug 31, 2021 at 9:45 AM Arnout Vandecappelle <arnout at mind.be> wrote:

>
>
> On 30/08/2021 22:53, Nevo Hed wrote:
> > Though several patches exist in buildroot's nginx package dir they do
> > not seem to address endianness.
> >
> > The test program generated my the script compiles but fails to run (as
> > it is built for another architecture) but the script does not
> > distinguish between the failure to run the program and an indication
> > of certain endianness.  As such the fallback of big-endian is used.
> > This setting then causes http2 headers (anything not in the satic
> > dictionary) to come out as undecipherble trash.
> >
> > This commit includes a patch to the configure script to allow a
> > `--force-endianness=big|little` flag as as setting that flag in
> > buildroot's package makefile.
> >
> > Signed-off-by: Nevo Hed <nhed+buildroot at starry.com>
> > ---
> >  ...-of-endianness-for-cross-compilation.patch | 115 ++++++++++++++++++
> >  package/nginx/nginx.mk                        |   1 +
> >  2 files changed, 116 insertions(+)
> >  create mode 100644
> package/nginx/0010-Allow-forcing-of-endianness-for-cross-compilation.patch
> >
> > diff --git
> a/package/nginx/0010-Allow-forcing-of-endianness-for-cross-compilation.patch
> b/package/nginx/0010-Allow-forcing-of-endianness-for-cross-compilation.patch
> > new file mode 100644
> > index 0000000000..137ff6ea5d
> > --- /dev/null
> > +++
> b/package/nginx/0010-Allow-forcing-of-endianness-for-cross-compilation.patch
> > @@ -0,0 +1,115 @@
> > +From b1a6b13d8ac2cade71bae508c7d20fbee6807e4e Mon Sep 17 00:00:00 2001
> > +From: Nevo Hed <nhed+buildroot at starry.com>
> > +Date: Mon, 30 Aug 2021 13:28:13 -0400
> > +Subject: [PATCH] Allow forcing of endianness for cross-compilation
> > +
> > +Signed-off-by: Nevo Hed <nhed+buildroot at starry.com>
>
>  Ideally, you should have sent the patch upstream and you should add a
> reference
> to the upstream contribution. In this case, it can be as simple as:
>
> Upstream-status: Invalid (upstream doesn't support cross-compilation)
> See https://trac.nginx.org/nginx/ticket/2240
>
>
>  Regards,
>  Arnout
>
> > +---
> > + auto/endianness | 61 ++++++++++++++++++++++++++++++++-----------------
> > + auto/options    |  6 +++++
> > + 2 files changed, 46 insertions(+), 21 deletions(-)
> > +
> > +diff --git a/auto/endianness b/auto/endianness
> > +index 1b552b6b..4b2a3cd7 100644
> > +--- a/auto/endianness
> > ++++ b/auto/endianness
> > +@@ -26,25 +26,44 @@ int main(void) {
> > +
> > + END
> > +
> > +-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
> > +-          -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT
> $ngx_feature_libs"
> > +-
> > +-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
> > +-
> > +-if [ -x $NGX_AUTOTEST ]; then
> > +-    if $NGX_AUTOTEST >/dev/null 2>&1; then
> > +-        echo " little endian"
> > ++case "${NGX_FORCE_ENDIANNESS}" in
> > ++    little)
> > ++        echo " little endian (forced)"
> > +         have=NGX_HAVE_LITTLE_ENDIAN . auto/have
> > +-    else
> > +-        echo " big endian"
> > +-    fi
> > +-
> > +-    rm -rf $NGX_AUTOTEST*
> > +-
> > +-else
> > +-    rm -rf $NGX_AUTOTEST*
> > +-
> > +-    echo
> > +-    echo "$0: error: cannot detect system byte ordering"
> > +-    exit 1
> > +-fi
> > ++    ;;
> > ++
> > ++    big)
> > ++        echo " big endian (forced)"
> > ++    ;;
> > ++
> > ++    "")
> > ++        ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
> > ++                  -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT
> $ngx_feature_libs"
> > ++
> > ++        eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
> > ++
> > ++        if [ -x $NGX_AUTOTEST ]; then
> > ++            if $NGX_AUTOTEST >/dev/null 2>&1; then
> > ++                echo " little endian"
> > ++                have=NGX_HAVE_LITTLE_ENDIAN . auto/have
> > ++            else
> > ++                echo " big endian"
> > ++            fi
> > ++
> > ++            rm -rf $NGX_AUTOTEST*
> > ++
> > ++        else
> > ++            rm -rf $NGX_AUTOTEST*
> > ++
> > ++            echo
> > ++            echo "$0: error: cannot detect system byte ordering"
> > ++            exit 1
> > ++        fi
> > ++    ;;
> > ++
> > ++    *)
> > ++        echo
> > ++        echo "$0: error: invalid
> \"--force-endianness=${NGX_FORCE_ENDIANNESS}\""
> > ++        exit 1
> > ++    ;;
> > ++esac
> > +diff --git a/auto/options b/auto/options
> > +index 80be906e..85a06456 100644
> > +--- a/auto/options
> > ++++ b/auto/options
> > +@@ -17,6 +17,8 @@ NGX_USER=
> > + NGX_GROUP=
> > + NGX_BUILD=
> > +
> > ++NGX_FORCE_ENDIANNESS=
> > ++
> > + CC=${CC:-cc}
> > + CPP=
> > + NGX_OBJS=objs
> > +@@ -196,6 +198,8 @@ do
> > +         --user=*)                        NGX_USER="$value"          ;;
> > +         --group=*)                       NGX_GROUP="$value"         ;;
> > +
> > ++        --force-endianness=*)            NGX_FORCE_ENDIANNESS="$value"
> ;;
> > ++
> > +         --crossbuild=*)                  NGX_PLATFORM="$value"      ;;
> > +
> > +         --build=*)                       NGX_BUILD="$value"         ;;
> > +@@ -432,6 +436,8 @@ cat << END
> > +   --build=NAME                       set build name
> > +   --builddir=DIR                     set build directory
> > +
> > ++  --force-endianness=<big>|<little>  force endianness
> > ++
> > +   --with-select_module               enable select module
> > +   --without-select_module            disable select module
> > +   --with-poll_module                 enable poll module
> > +--
> > +2.31.1
> > +
> > diff --git a/package/nginx/nginx.mk b/package/nginx/nginx.mk
> > index 1f996cc613..31b6e276b7 100644
> > --- a/package/nginx/nginx.mk
> > +++ b/package/nginx/nginx.mk
> > @@ -49,6 +49,7 @@ NGINX_CONF_ENV += \
> >
> >  # prefix: nginx root configuration location
> >  NGINX_CONF_OPTS += \
> > +     --force-endianness=$(call qstrip,$(call LOWERCASE,$(BR2_ENDIAN))) \
> >       --prefix=/usr \
> >       --conf-path=/etc/nginx/nginx.conf \
> >       --sbin-path=/usr/sbin/nginx \
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildroot.org/pipermail/buildroot/attachments/20210831/bb5d703b/attachment-0001.html>


More information about the buildroot mailing list