[v2] Use separate sed expressions to escape auto-load directories.

Message ID 20181201001057.43261-1-jhb@FreeBSD.org
State New, archived
Headers

Commit Message

John Baldwin Dec. 1, 2018, 12:10 a.m. UTC
  Not all sed implementations support alternation via \| in the default
regular expressions.  Instead, resort to separate sed expressions via
-e for $debugdir and $datadir.  This fixes the default setting of the
auto-load directories on FreeBSD.  Previously on FreeBSD the sed
invocation was a no-op causing the debugdir and datadir values to be
expanded yielding an autoload path of ':${prefix}/share/gdb'.

gdb/ChangeLog:

	* configure: Re-generate.
	* configure.ac: Use separate sed expressions to escape variables
	in auto-load directories.
---
 gdb/ChangeLog    | 6 ++++++
 gdb/configure    | 4 ++--
 gdb/configure.ac | 4 ++--
 3 files changed, 10 insertions(+), 4 deletions(-)
  

Comments

Kevin Buettner Dec. 2, 2018, 12:25 a.m. UTC | #1
On Fri, 30 Nov 2018 16:10:57 -0800
John Baldwin <jhb@FreeBSD.org> wrote:

> Not all sed implementations support alternation via \| in the default
> regular expressions.  Instead, resort to separate sed expressions via
> -e for $debugdir and $datadir.  This fixes the default setting of the
> auto-load directories on FreeBSD.  Previously on FreeBSD the sed
> invocation was a no-op causing the debugdir and datadir values to be
> expanded yielding an autoload path of ':${prefix}/share/gdb'.
> 
> gdb/ChangeLog:
> 
> 	* configure: Re-generate.
> 	* configure.ac: Use separate sed expressions to escape variables
> 	in auto-load directories.

I was more than a little surprised to find out that some (modern?)
versions of sed do not support alternation.  But after logging into my
FreeNAS box (running FreeBSD 11), I see that this is so.

Your patch looks reasonable to me.

Kevin
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 348eb65ec7..2ad436c796 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@ 
+2018-11-30  John Baldwin  <jhb@FreeBSD.org>
+
+	* configure: Re-generate.
+	* configure.ac: Use separate sed expressions to escape variables
+	in auto-load directories.
+
 2018-11-30  John Baldwin  <jhb@FreeBSD.org>
 
 	* fbsd-nat.c [__FreeBSD_version >= 700009] (USE_SIGINFO): Macro
diff --git a/gdb/configure b/gdb/configure
index 7665ba6531..3777230898 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -6579,7 +6579,7 @@  else
   with_auto_load_dir='$debugdir:$datadir/auto-load'
 fi
 
-escape_dir=`echo $with_auto_load_dir | sed 's/[$]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
+escape_dir=`echo $with_auto_load_dir | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
 
   test "x$prefix" = xNONE && prefix="$ac_default_prefix"
   test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
@@ -6606,7 +6606,7 @@  else
   with_auto_load_safe_path="$with_auto_load_dir"
 fi
 
-escape_dir=`echo $with_auto_load_safe_path | sed 's/[$]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
+escape_dir=`echo $with_auto_load_safe_path | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
 
   test "x$prefix" = xNONE && prefix="$ac_default_prefix"
   test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
diff --git a/gdb/configure.ac b/gdb/configure.ac
index e1ea60660b..eca7ea6d41 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -146,7 +146,7 @@  AC_ARG_WITH(auto-load-dir,
 AS_HELP_STRING([--with-auto-load-dir=PATH],
   [directories from which to load auto-loaded scripts @<:@$debugdir:$datadir/auto-load@:>@]),,
   [with_auto_load_dir='$debugdir:$datadir/auto-load'])
-escape_dir=`echo $with_auto_load_dir | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
+escape_dir=`echo $with_auto_load_dir | sed -e 's/[[$]]datadir\>/\\\\\\\\\\\\&/g' -e 's/[[$]]debugdir\>/\\\\\\\\\\\\&/g'`
 AC_DEFINE_DIR(AUTO_LOAD_DIR, escape_dir,
 	      [Directories from which to load auto-loaded scripts.])
 AC_MSG_RESULT([$with_auto_load_dir])
@@ -161,7 +161,7 @@  AS_HELP_STRING([--without-auto-load-safe-path],
      with_auto_load_safe_path="/"
      fi],
 [with_auto_load_safe_path="$with_auto_load_dir"])
-escape_dir=`echo $with_auto_load_safe_path | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
+escape_dir=`echo $with_auto_load_safe_path | sed -e 's/[[$]]datadir\>/\\\\\\\\\\\\&/g' -e 's/[[$]]debugdir\>/\\\\\\\\\\\\&/g'`
 AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
 	      [Directories safe to hold auto-loaded files.])
 AC_MSG_RESULT([$with_auto_load_safe_path])