Skip to content

./Configure hangs during g++ configuration on OpenBSD #21958

Open
@jkeenan

Description

@jkeenan

In the course of testing the branch developed in #21949 to address the g++/clang++ build-time failures reported in #21948, I had occasion to try to configure and build perl on OpenBSD-6.9 using first g++, then clang++ as the C-compiler. Running ./Configure with these arguments:

$ sh ./Configure -des -Dusedevel -Dcc=g++

... configuration halted here:

...
Do you wish to use dynamic loading? [y]  
Source file to use for dynamic loading 

... and had to be killed with Ctrl-C. This freeze occurred in both the terminal and in ./smokecurrent.sh being run in a screen session.

Configuration and build with clang++, however, proceeded to completion (albeit with a ton of warnings).

The default shell on OpenBSD is ksh.

$ echo $KSH_VERSION 
@(#)PD KSH v5.2.14 99/07/13.2

I do not believe the problem is with ksh, because I invoked bash, then configured with g++ as above, and configuration stopped at exactly the same point. Configuration with ksh on FreeBSD proceeded successfully. Hence, this problem seems to be some interaction between the OS, g++ and Configure.

I concede that this is an older version of OpenBSD; I am unable to install VMs of the more recent versions on the host to which I have access.

$ uname -mrs
OpenBSD 6.9 amd64

I further concede that I rarely attempt to build perl on OpenBSD with g++ so I don't know whether this is a recently developed problem or not.

Here is the relevant section of Configure:

 8348 : determine which dynamic loading, if any, to compile in
 8349 echo " "
 8350 dldir="ext/DynaLoader"
 8351 case "$usedl" in
 8352     $define|y|true)
 8353     dflt='y'
 8354     usedl="$define"
 8355     ;;
 8356     $undef|n|false)
 8357     dflt='n'
 8358     usedl="$undef"
 8359     ;;
 8360     *)
 8361     dflt='n'
 8362     case "$d_dlopen" in
 8363         $define) dflt='y' ;;
 8364     esac
 8365     : Does a dl_xxx.xs file exist for this operating system
 8366     $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
 8367     ;;
 8368 esac
 8369 rp="Do you wish to use dynamic loading?"
 8370 . ./myread
 8371 usedl="$ans"
 8372 bin_ELF="$undef"
 8373 case "$ans" in
 8374     y*) usedl="$define"
 8375     case "$dlsrc" in
 8376         '') if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
 8377             dflt="$dldir/dl_${osname}.xs"
 8378         elif $test "$d_dlopen" = "$define" ; then
 8379             dflt="$dldir/dl_dlopen.xs"
 8380         else
 8381             dflt=''
 8382         fi
 8383         ;;
 8384         *)  dflt="$dldir/$dlsrc"
 8385         ;;
 8386     esac
 8387     echo "The following dynamic loading files are available:"
 8388     : Can not go over to $dldir because getfile has path hard-coded in.
 8389     tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
 8390     rp="Source file to use for dynamic loading"
 8391     fn="fne"
 8392     gfpth="$src"
 8393     . ./getfile
 8394     usedl="$define"
 8395     : emulate basename
 8396     dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`

Calling all ./Configure and/or OpenBSD specialists!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions