Description
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!