[Buildroot] [PATCH 1/1] package/nginx: override endianness
Arnout Vandecappelle
arnout at mind.be
Tue Aug 31 16:39:36 UTC 2021
On 31/08/2021 18:19, Nevo Hed wrote:
> 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?
The inner patch.
> I don't see the word 'upstream' in any of the current nginx patches and most of
> them deal with unsupported cross-compilation
Most of the patches are very old and we didn't have that "rule" back then. The
rule is also not very strict - we often overlook it while applying.
Note: small changes like this (and the spelling fixes in the commit message) we
can make while applying, but of course it's much appreciated if you send a v2
with all the fixes.
Regards,
Arnout
>
>
> On Tue, Aug 31, 2021 at 9:45 AM Arnout Vandecappelle <arnout at mind.be
> <mailto: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
> <mailto:nhed%2Bbuildroot at starry.com>>
> > ---
> > ...-of-endianness-for-cross-compilation.patch | 115 ++++++++++++++++++
> > package/nginx/nginx.mk <http://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
> <mailto:nhed%2Bbuildroot 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
> <mailto:nhed%2Bbuildroot 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
> <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 <http://nginx.mk>
> b/package/nginx/nginx.mk <http://nginx.mk>
> > index 1f996cc613..31b6e276b7 100644
> > --- a/package/nginx/nginx.mk <http://nginx.mk>
> > +++ b/package/nginx/nginx.mk <http://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 \
> >
>
More information about the buildroot
mailing list