Re: stumped on a simple autoconf/m4/sh problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jacob,

Thanks for the quick response.

At 2024-12-01T23:48:09-0600, Jacob Bachmeyer wrote:
> On 12/1/24 21:03, G. Branden Robinson wrote:
> > [...]
> > 
> > So the "good tr" branch is being taken in the configure script, but not
> > in vivo at a shell prompt.  I can't explain this.
> 
> First question:  what shell is configure actually running under?
> 
> Autoconf makes an effort to find a plausible POSIX shell, and /bin/sh
> on Solaris 10 is not it.  The copy of bash-3.2 you used for
> interactive testing was probably not it either.  I seem to recall that
> grepping config.status for CONFIG_SHELL should tell you.

Here's what I get.

$ grep CONFIG_SHELL config.status
SHELL=${CONFIG_SHELL-/bin/bash}
  $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6
  CONFIG_SHELL='/bin/bash'
  export CONFIG_SHELL

$ /bin/bash --version
GNU bash, version 3.2.51(1)-release (sparc-sun-solaris2.10)
Copyright (C) 2007 Free Software Foundation, Inc.

> Off the top of my head, try `CONFIG_SHELL=/full/name/of/bash-3.2
> configure` and see if the test works.

Okay, I did.  The mystery would appear to deepen.

The same grep gets the same results.

I drive the build from a shell script because building on Solaris 10
_or_ 11 is a headache.  I'm attaching the script.

> > Would someone kindly point out my rookie mistake?
> I am not so certain that this is exactly a rookie mistake---it looks
> like you may have uncovered a shell bug, but in which shell?

I am baffled that bash 3.2 would behave one way interactively and
another when run via configure.  Presumably something else is going on?

Regards,
Branden
#!/bin/sh

export MAKE=make

if [ "$(uname -s)" = SunOS ]
then
  export PATH=/usr/xpg4/bin:$PATH
  export MAKE=$(which gmake)
  export AR=$(which gar)
  if [ "$(uname -r)" = 5.10 ]
  then
    #export M4=$(which gm4)
    export CONFIG_SHELL=/bin/bash
  fi
fi

gs=absent
urw=absent
urw_dir=/usr/share/fonts/type1/urw-base35

test -f /usr/bin/gs && gs=present
# fontconfig might litter this directory with a .uuid file >:-(
if [ -d $urw_dir ]
then
  count=$(find $urw_dir -type f | wc -l)
  test $count -gt 1 && urw=present
fi

echo SCENARIO: urw $urw, gs $gs

./configure --prefix=$HOME \
 && $MAKE

if [ $? = 0 ]
then
  # Expect test failures on Solaris 10.
  if [ "$(uname -s)" = SunOS ] && [ "$(uname -r)" = 5.10 ]
  then
    # Fix up the test scripts to use a POSIX shell.
    gsed -i -e '1s@#!/bin/sh@#!/usr/xpg4/bin/sh@' \
      `find . -name '*.sh' | grep /tests/`
    $MAKE check
    $MAKE install install-doc \
      && $MAKE uninstall \
      && $MAKE distclean
  else
    echo GBR: PATH=$PATH
    $MAKE check \
      && $MAKE install install-doc \
      && $MAKE uninstall \
      && $MAKE distclean
  fi
fi

list=$(find $HOME/bin $HOME/lib $HOME/share -type f)

if [ -n "$list" ]
then
  echo '*** installation directories are NOT clean (.../info/dir is OK)'
else
  echo '$HOME/{bin,lib,share}' directories are clean
fi

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux