[Buildroot] [PATCH 1/1] package/ntp: remove host shell check
Yann E. MORIN
yann.morin.1998 at free.fr
Sat Nov 23 10:30:11 UTC 2019
James, All,
On 2019-11-20 15:55 +0000, James Byrne spake thusly:
> This adds a patch which removes the autoconf check for which shell is
> installed on the host and fixes the shell as '/bin/sh'. Since we are
> cross-compiling, we cannot assume that the target uses the same shell.
> Also, it can prevent builds being reproducible because a different host
> environment will result in a different target binary.
>
> Signed-off-by: James Byrne <james.byrne at origamienergy.com>
> ---
> package/ntp/0003-force-sh.patch | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
> create mode 100644 package/ntp/0003-force-sh.patch
>
> diff --git a/package/ntp/0003-force-sh.patch b/package/ntp/0003-force-sh.patch
> new file mode 100644
> index 0000000000..4c2628e04a
> --- /dev/null
> +++ b/package/ntp/0003-force-sh.patch
> @@ -0,0 +1,30 @@
> +We're cross compiling, don't use the presence of shells on the host to decide
> +anything about the target...
> +
> +diff --git a/sntp/libopts/m4/libopts.m4 b/sntp/libopts/m4/libopts.m4
> +--- a/sntp/libopts/m4/libopts.m4
> ++++ b/sntp/libopts/m4/libopts.m4
> +@@ -112,22 +112,7 @@
> + AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr \
> + strrchr strsignal fchmod fstat chmod])
> + AC_PROG_SED
> +- [while :
> +- do
> +- POSIX_SHELL=`which bash`
> +- test -x "$POSIX_SHELL" && break
> +- POSIX_SHELL=`which dash`
> +- test -x "$POSIX_SHELL" && break
> +- POSIX_SHELL=/usr/xpg4/bin/sh
> +- test -x "$POSIX_SHELL" && break
> +- POSIX_SHELL=`/bin/sh -c '
> +- exec 2>/dev/null
> +- if ! true ; then exit 1 ; fi
> +- echo /bin/sh'`
> +- test -x "$POSIX_SHELL" && break
> +- ]AC_MSG_ERROR([cannot locate a working POSIX shell])[
> +- done]
> +- AC_DEFINE_UNQUOTED([POSIX_SHELL], ["${POSIX_SHELL}"],
> ++ AC_DEFINE_UNQUOTED([POSIX_SHELL], ["/bin/sh"],
This is not nice, as this patch can't be upstreamed, and we'll have tio
live with it for the eons to come.
What about using AC_CACHE_CHECK [0] to do the check, which can be
overriden on the command line. For example:
[
AC_CACHE_CHECK([for a posix-compliant shell], [ntp_ac_cv_posix_shell],
[while :
do
blablabla
done
])
AC_DEFINE_UNQUOTED([POSIX_SHELL], ["${ntp_ac_cv_posix_shell}"],
[define to a working POSIX compliant shell])
]
And then in ntp.mk we could do (in addition to the existing one, of
course):
NTP_CONF_ENV = ntp_ac_cv_posix_shell=/bin/sh
And such a patch will probably be more acceptable for upstream.
[0] https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/autoconf.html#Caching-Results
Regards,
Yann E. MORIN.
> + [define to a working POSIX compliant shell])
> + AC_SUBST([POSIX_SHELL])
> + ])
> --
> 2.24.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| 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