Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8243656

Shell built-in test in configure depends on help

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 15
    • 14, 15
    • infrastructure
    • None
    • b22

      From:
      http://mail.openjdk.java.net/pipermail/build-dev/2020-April/027207.html

      ----
      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,
        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

            sgehwolf Severin Gehwolf
            sgehwolf Severin Gehwolf
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: