On Wed, Jan 10, 2024 at 10:32:56AM +0100, Rainer Orth wrote: > > When flock program doesn't exist, libgomp configure attempts to > > offer a fallback version using a perl script, but we weren't using > > absolute filename to that, so it apparently failed to work correctly. > > > > The following patch arranges for it to get the absolute filename. > > > > Tested by John David in the PR. > > This patch completely broke parallel libgomp testing on Solaris: > > ERROR: couldn't execute "\$(abs_top_srcdir)/testsuite/flock": no such file or > directory
Sorry for that. > FLOCK is also substituted into testsuite/libgomp-site-extra.exp.in, > which gets included into site.exp. That one has > > ## Begin content included from file libgomp-site-extra.exp. Do not modify. ## > set FLOCK {$(abs_top_srcdir)/testsuite/flock} > > So expect tries to literally execute '$(abs_top_srcdir)/testsuite/flock' > which cannot work. Does the following work then? Using autoconf's internal _AC_SRCDIRS macro doesn't seem to be a good idea to me, so I've copied what e.g. libobjc configure does instead. 2024-01-10 Jakub Jelinek <ja...@redhat.com> PR libgomp/113192 * configure.ac (FLOCK): Use $libgomp_abs_srcdir/testsuite/flock instead of \$(abs_top_srcdir)/testsuite/flock. * configure: Regenerated. --- libgomp/configure.ac.jj 2024-01-09 09:54:03.398011788 +0100 +++ libgomp/configure.ac 2024-01-10 12:09:05.558162522 +0100 @@ -343,7 +343,16 @@ AC_MSG_NOTICE([checking for flock implem AC_CHECK_PROGS(FLOCK, flock) # Fallback if 'perl' is available. if test -z "$FLOCK"; then - AC_CHECK_PROG(FLOCK, perl, \$(abs_top_srcdir)/testsuite/flock) + # These need to be absolute paths, yet at the same time need to + # canonicalize only relative paths, because then amd will not unmount + # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd. + case $srcdir in +changequote(,)dnl + [\\/$]* | ?:[\\/]*) libgomp_abs_srcdir=${srcdir} ;; +changequote([,])dnl + *) libgomp_abs_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; + esac + AC_CHECK_PROG(FLOCK, perl, $libgomp_abs_srcdir/testsuite/flock) fi AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET) --- libgomp/configure.jj 2024-01-09 09:54:03.486010551 +0100 +++ libgomp/configure 2024-01-10 12:09:15.960016006 +0100 @@ -16638,6 +16638,13 @@ done # Fallback if 'perl' is available. if test -z "$FLOCK"; then + # These need to be absolute paths, yet at the same time need to + # canonicalize only relative paths, because then amd will not unmount + # drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd. + case $srcdir in + [\\/$]* | ?:[\\/]*) libgomp_abs_srcdir=${srcdir} ;; + *) libgomp_abs_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;; + esac # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -16655,7 +16662,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_FLOCK="\$(abs_top_srcdir)/testsuite/flock" + ac_cv_prog_FLOCK="$libgomp_abs_srcdir/testsuite/flock" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi Jakub