[RFA/gdb-9-branch] Abort configure immediately if building GDB in tree

Message ID 87eevfl2ze.fsf@redhat.com
State New, archived
Headers

Commit Message

Sergio Durigan Junior Jan. 31, 2020, 9:39 p.m. UTC
  On Friday, January 31 2020, I wrote:

> On Friday, January 31 2020, Eli Zaretskii wrote:
>
>>> From: Sergio Durigan Junior <sergiodj@redhat.com>
>>> Cc: Simon Marchi <simark@simark.ca>,  gdb-patches@sourceware.org,  Tom Tromey <tom@tromey.com>
>>> Date: Thu, 30 Jan 2020 16:06:18 -0500
>>> 
>>>   $ ./src-release.sh -x gdb
>>>   ==> Cleaning sources.
>>>   ==> Making gdb-9.0.90.20200130/
>>>   ==> configure --target=i386-pc-linux-gnu --disable-binutils
>>> --disable-gas --disable-gold --disable-gprof --disable-ld
>>> --enable-gdb --enable-libctf --enable-libdecnumber --enable-readline
>>> --enable-sim
>>>   configure: error: GDB must be configured and built in a directory separate from its sources.
>>>   ...
>>> 
>>> I'm wondering what to do here.  I think I found a hacky and ugly
>>> solution here, but I'm trying to see if there's a better approach.
>>
>> A special command-line switch to 'configure', to be used by
>> src-release.sh?
>
> A quick attempt here didn't really work.  The script is able to finish
> the build and create a tarball, but for some reason the gdb directory is
> not configured/built.

OK, I think I have something that works.  When 'configure' is invoked
with '--enable-src-release-build', a tarball is generated and, as far as
I have checked, contains the correct snapshot.

WDYT?
  

Comments

Eli Zaretskii Feb. 1, 2020, 7:23 a.m. UTC | #1
> From: Sergio Durigan Junior <sergiodj@redhat.com>
> Cc: brobecker@adacore.com,  simark@simark.ca,  gdb-patches@sourceware.org,  tom@tromey.com
> Date: Fri, 31 Jan 2020 16:39:49 -0500
> 
> OK, I think I have something that works.  When 'configure' is invoked
> with '--enable-src-release-build', a tarball is generated and, as far as
> I have checked, contains the correct snapshot.
> 
> WDYT?

It certainly looks like something I had in mind, but since I know very
little about sourceware configury, I hope others will chime in.

Thanks.
  
Joel Brobecker Feb. 1, 2020, 10:19 a.m. UTC | #2
> >>> I'm wondering what to do here.  I think I found a hacky and ugly
> >>> solution here, but I'm trying to see if there's a better approach.
> >>
> >> A special command-line switch to 'configure', to be used by
> >> src-release.sh?
> >
> > A quick attempt here didn't really work.  The script is able to finish
> > the build and create a tarball, but for some reason the gdb directory is
> > not configured/built.
> 
> OK, I think I have something that works.  When 'configure' is invoked
> with '--enable-src-release-build', a tarball is generated and, as far as
> I have checked, contains the correct snapshot.
> 
> WDYT?

Thanks! I didn't realize that this would impact source packaging
like that.

Let's go with your patch. I'm about to start working on the release,
so I'll apply it for you.

Thanks again,

> diff --git a/ChangeLog b/ChangeLog
> index 0bfe989885..de13206e2e 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,11 @@
> +2020-01-31  Sergio Durigan Junior  <sergiodj@redhat.com>
> +
> +	* configure.ac: Don't abort the build if trying to build GDB in tree
> +	_and_ invoking with '--enable-src-release-build'.
> +	* configure: Regenerate.
> +	* src-release.sh (do_proto_toplev): Invoke 'configure' using
> +	'--enable-src-release-build'.
> +
>  2020-01-17  Joel Brobecker  <brobecker@adacore.com>
>  
>  	* configure.ac: Abort the build with an error if trying to build
> diff --git a/configure b/configure
> index 7168a4e90e..276f33fee3 100755
> --- a/configure
> +++ b/configure
> @@ -2279,7 +2279,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
>  
>  
>  
> -if test x"${enable_gdb}" != x"no"; then
> +if test x"${enable_gdb}" != x"no" -a x"${enable_src_release_build}" != x"yes"; then
>    # For this branch, we do not support building GDB in-tree.
>    # Try to detect whether we are in this situation or not by
>    # searching for a couple of known files in the source directory.
> diff --git a/configure.ac b/configure.ac
> index e5ca1eaa57..cd0867dd76 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -33,7 +33,7 @@ m4_include([config/isl.m4])
>  AC_INIT(move-if-change)
>  AC_DISABLE_OPTION_CHECKING
>  
> -if test x"${enable_gdb}" != x"no"; then
> +if test x"${enable_gdb}" != x"no" -a x"${enable_src_release_build}" != x"yes"; then
>    # For this branch, we do not support building GDB in-tree.
>    # Try to detect whether we are in this situation or not by
>    # searching for a couple of known files in the source directory.
> diff --git a/src-release.sh b/src-release.sh
> index 275f0f24b5..68e824c749 100755
> --- a/src-release.sh
> +++ b/src-release.sh
> @@ -99,8 +99,8 @@ do_proto_toplev()
>  	    *) disables="$disables --disable-$dir" ;;
>  	esac
>      done
> -    echo "==> configure --target=i386-pc-linux-gnu $disables $enables"
> -    ./configure --target=i386-pc-linux-gnu $disables $enables
> +    echo "==> configure --target=i386-pc-linux-gnu --enable-src-release-build=yes $disables $enables"
> +    ./configure --target=i386-pc-linux-gnu --enable-src-release-build=yes $disables $enables
>      $MAKE configure-host configure-target \
>  	ALL_GCC="" ALL_GCC_C="" ALL_GCC_CXX="" \
>  	CC_FOR_TARGET="$CC" CXX_FOR_TARGET="$CXX"
  
Joel Brobecker Feb. 1, 2020, 10:26 a.m. UTC | #3
> > >>> I'm wondering what to do here.  I think I found a hacky and ugly
> > >>> solution here, but I'm trying to see if there's a better approach.
> > >>
> > >> A special command-line switch to 'configure', to be used by
> > >> src-release.sh?
> > >
> > > A quick attempt here didn't really work.  The script is able to finish
> > > the build and create a tarball, but for some reason the gdb directory is
> > > not configured/built.
> > 
> > OK, I think I have something that works.  When 'configure' is invoked
> > with '--enable-src-release-build', a tarball is generated and, as far as
> > I have checked, contains the correct snapshot.
> > 
> > WDYT?
> 
> Thanks! I didn't realize that this would impact source packaging
> like that.
> 
> Let's go with your patch. I'm about to start working on the release,
> so I'll apply it for you.

Or not. Jonah just reported another blocking issue :-(, so I won't
be creating this release this weekend.

So the "good" news is that you can push the patch yourself!
  

Patch

diff --git a/ChangeLog b/ChangeLog
index 0bfe989885..de13206e2e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@ 
+2020-01-31  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* configure.ac: Don't abort the build if trying to build GDB in tree
+	_and_ invoking with '--enable-src-release-build'.
+	* configure: Regenerate.
+	* src-release.sh (do_proto_toplev): Invoke 'configure' using
+	'--enable-src-release-build'.
+
 2020-01-17  Joel Brobecker  <brobecker@adacore.com>
 
 	* configure.ac: Abort the build with an error if trying to build
diff --git a/configure b/configure
index 7168a4e90e..276f33fee3 100755
--- a/configure
+++ b/configure
@@ -2279,7 +2279,7 @@  ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-if test x"${enable_gdb}" != x"no"; then
+if test x"${enable_gdb}" != x"no" -a x"${enable_src_release_build}" != x"yes"; then
   # For this branch, we do not support building GDB in-tree.
   # Try to detect whether we are in this situation or not by
   # searching for a couple of known files in the source directory.
diff --git a/configure.ac b/configure.ac
index e5ca1eaa57..cd0867dd76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -33,7 +33,7 @@  m4_include([config/isl.m4])
 AC_INIT(move-if-change)
 AC_DISABLE_OPTION_CHECKING
 
-if test x"${enable_gdb}" != x"no"; then
+if test x"${enable_gdb}" != x"no" -a x"${enable_src_release_build}" != x"yes"; then
   # For this branch, we do not support building GDB in-tree.
   # Try to detect whether we are in this situation or not by
   # searching for a couple of known files in the source directory.
diff --git a/src-release.sh b/src-release.sh
index 275f0f24b5..68e824c749 100755
--- a/src-release.sh
+++ b/src-release.sh
@@ -99,8 +99,8 @@  do_proto_toplev()
 	    *) disables="$disables --disable-$dir" ;;
 	esac
     done
-    echo "==> configure --target=i386-pc-linux-gnu $disables $enables"
-    ./configure --target=i386-pc-linux-gnu $disables $enables
+    echo "==> configure --target=i386-pc-linux-gnu --enable-src-release-build=yes $disables $enables"
+    ./configure --target=i386-pc-linux-gnu --enable-src-release-build=yes $disables $enables
     $MAKE configure-host configure-target \
 	ALL_GCC="" ALL_GCC_C="" ALL_GCC_CXX="" \
 	CC_FOR_TARGET="$CC" CXX_FOR_TARGET="$CXX"