openjdk fails to configure due to shell builtin test

Severin Gehwolf sgehwolf at redhat.com
Mon Apr 27 08:47:14 UTC 2020


Hi Michael,

On Sat, 2020-04-25 at 09:39 +0930, Michael Zucchi wrote:
> Morning all,
> 
> A patch from last year [1] discussed on this list adds an autoconf 
> fallback test for a shell builtin command using the bash command 'help 
> <command>' and invokes it for ulimit.  It's probably not very portable 
> to start with but bash can be compiled specifically without the help 
> command by passing --disable-help-builtin to configure.  guix uses this 
> option for it's build environment shell [4], hence openjdk fails to 
> configure there without a patch such as the one below.
> 
> For openjdk 14[3], is it possible to use a more portable sequence in the 
> BASIC_REQUIRE_BUILTIN_PROGS macro?   The internet [2] suggests using 
> "command -v <command>" or "type  <command>" for this purpose.
> 
> Although I have not tried, the same appears to apply to openjdk-15 
> although the macro has been moved to UTIL_REQUIRE_BUILTIN_PROGS in 
> make/autoconf/util.m4

Thanks for the report. I've filed this bug to track it:
https://bugs.openjdk.java.net/browse/JDK-8243656

I can sponsor the patch for you. Do you have the OCA signed?

Thanks,
Severin

> Thanks,
>   Z
> 
> [1] 
> https://mail.openjdk.java.net/pipermail/build-dev/2019-November/026307.html
> [2] 
> https://stackoverflow.com/questions/592620/how-can-i-check-if-a-program-exists-from-a-bash-script
> [3] http://hg.openjdk.java.net/jdk/jdk14/rev/bc54620a3848
> [4] 
> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/bash.scm#n202
> 
> $ help command
> command: command [-pVv] command [arg ...]
>      Execute a simple command or display information about commands.
> 
>      Runs COMMAND with ARGS suppressing  shell function lookup, or display
>      information about the specified COMMANDs.  Can be used to invoke 
> commands
>      on disk when a function with the same name exists.
> 
>      Options:
>        -p    use a default value for PATH that is guaranteed to find all of
>              the standard utilities
>        -v    print a description of COMMAND similar to the `type' builtin
>        -V    print a more verbose description of each COMMAND
> 
>      Exit Status:
>      Returns exit status of COMMAND, or failure if COMMAND is not found.
> 
> 
> --- jdk14-bc54620a3848/make/autoconf/basics.m4  2020-02-07 
> 04:40:54.000000000 +1030
> +++ jdk14-bc54620a3848-new/make/autoconf/basics.m4      2020-04-24 
> 10:59:33.056098506 +0930
> @@ -583,7 +583,7 @@
>     BASIC_SETUP_TOOL($1, [AC_PATH_PROGS($1, $2, , $3)])
>     if test "x[$]$1" = x; then
>       AC_MSG_NOTICE([Required tool $2 not found in PATH, checking built-in])
> -    if help $2 > /dev/null 2>&1; then
> +    if command -v $2 > /dev/null 2>&1; then
>         AC_MSG_NOTICE([Found $2 as shell built-in. Using it])
>         $1="$2"
>       else
> 




More information about the build-dev mailing list