From: Sam James <sam@gentoo.org>
To: vladimir.mezentsev@oracle.com
Cc: binutils@sourceware.org
Subject: Re: [PATCH] gprofng: 30894 bison should be no hard dependency
Date: Thu, 05 Oct 2023 09:57:11 +0100 [thread overview]
Message-ID: <87jzs1o39c.fsf@gentoo.org> (raw)
In-Reply-To: <20231005014214.1457876-1-vladimir.mezentsev@oracle.com>
Vladimir Mezentsev via Binutils <binutils@sourceware.org> writes:
> From: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
>
> When running from a distribution tarball, bison should not be necessary.
> The generated files (QLParser.tab.cc, QLParser.tab.hh) should be distributed.
> configure.ac should not abort if bison is missing.
> configure.ac should remove temporary files (dummy.c, Simple.class).
> bison must be run once to create QLParser.tab.cc and QLParser.tab.hh.
>
> gprofng/ChangeLog
> 2023-10-03 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
>
> PR gprofng/30894
> * configure.ac: Don't abort if bison is missing. Remove temporary files.
> * src/Makefile.am: Distribute QLParser.tab.cc and QLParser.tab.hh.
> * Run bison once to create QLParser.tab.cc and QLParser.tab.hh.
> * configure: Rebuild.
> * src/Makefile.in: Rebuild.
> ---
> gprofng/configure | 15 ++++++---------
> gprofng/configure.ac | 11 ++++-------
> gprofng/src/Makefile.am | 19 ++++++++++++++++---
> gprofng/src/Makefile.in | 22 +++++++++++++++++-----
> 4 files changed, 43 insertions(+), 24 deletions(-)
>
> diff --git a/gprofng/configure b/gprofng/configure
> index 005f9cbaf7d..90f869829f6 100755
> --- a/gprofng/configure
> +++ b/gprofng/configure
> @@ -6113,9 +6113,6 @@ $as_echo "$ac_prog_version" >&6; }
> fi
>
>
> -if test x$BISON = "x:"; then
> - as_fn_error $? "Building gprofng requires bison 3.0.4 or later." "$LINENO" 5
> -fi
>
> # Check whether --enable-shared was given.
> if test "${enable_shared+set}" = set; then :
> @@ -12252,7 +12249,7 @@ else
> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> lt_status=$lt_dlunknown
> cat > conftest.$ac_ext <<_LT_EOF
> -#line 12255 "configure"
> +#line 12252 "configure"
> #include "confdefs.h"
>
> #if HAVE_DLFCN_H
> @@ -12358,7 +12355,7 @@ else
> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> lt_status=$lt_dlunknown
> cat > conftest.$ac_ext <<_LT_EOF
> -#line 12361 "configure"
> +#line 12358 "configure"
> #include "confdefs.h"
>
> #if HAVE_DLFCN_H
> @@ -16609,14 +16606,14 @@ else
> $as_echo "#define GPROFNG_JAVA_PROFILING 1" >>confdefs.h
>
> if test "x$JAVAC" != x; then
> - cat > configtest.java << EOF
> + cat > Simple.java << EOF
> class Simple{
> public static void main(String args){
> System.out.println("Hello Java");
> }
> }
> EOF
> - if { ac_try='$JAVAC configtest.java >&5 2>&5'
> + if { ac_try='$JAVAC Simple.java >&5 2>&5'
> { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
> (eval $ac_try) 2>&5
> ac_status=$?
> @@ -16626,7 +16623,7 @@ EOF
> else
> GPROFNG_BROKEN_JAVAC=yes
> fi
> - rm -f configtest.*
> + rm -f Simple.*
> fi
> fi
>
> @@ -16677,7 +16674,7 @@ if test "$LIBC" = musl; then
> $as_echo "#define __MUSL_LIBC 1" >>confdefs.h
>
> fi
> -
> +rm -f dummy.c
>
> # Check if linker supports --as-needed and --no-as-needed options.
> { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5
> diff --git a/gprofng/configure.ac b/gprofng/configure.ac
> index cfca82e3651..7938d7b2cb0 100644
> --- a/gprofng/configure.ac
> +++ b/gprofng/configure.ac
> @@ -30,9 +30,6 @@ AC_PROG_INSTALL
> AC_PROG_RANLIB
> AM_PROG_AR
> gl_PROG_BISON([BISON],[3.0.4])
> -if test x$BISON = "x:"; then
> - AC_MSG_ERROR([Building gprofng requires bison 3.0.4 or later.])
> -fi
>
> AC_DISABLE_SHARED
> LT_INIT
> @@ -130,19 +127,19 @@ if test "x$enable_gprofng_jp" = x; then
> else
> AC_DEFINE(GPROFNG_JAVA_PROFILING, 1, [Enable java profiling])
> if test "x$JAVAC" != x; then
> - cat > configtest.java << EOF
> + cat > Simple.java << EOF
> class Simple{
> public static void main(String args[]){
> System.out.println("Hello Java");
> }
> }
> EOF
> - if AC_TRY_COMMAND($JAVAC configtest.java >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD); then
> + if AC_TRY_COMMAND($JAVAC Simple.java >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD); then
> GPROFNG_BROKEN_JAVAC=no
> else
> GPROFNG_BROKEN_JAVAC=yes
> fi
> - rm -f configtest.*
> + rm -f Simple.*
> fi
> fi
> AC_SUBST(GPROFNG_BROKEN_JAVAC)
> @@ -177,7 +174,7 @@ eval "$cc_set_libc"
> if test "$LIBC" = musl; then
> AC_DEFINE(__MUSL_LIBC, 1, [Build with musl-libc.])
> fi
> -
> +rm -f dummy.c
>
> # Check if linker supports --as-needed and --no-as-needed options.
> AC_CACHE_CHECK(linker --as-needed support, bfd_cv_ld_as_needed,
> diff --git a/gprofng/src/Makefile.am b/gprofng/src/Makefile.am
> index 219367fb9ce..adc3c581df3 100644
> --- a/gprofng/src/Makefile.am
> +++ b/gprofng/src/Makefile.am
> @@ -117,12 +117,25 @@ AM_CFLAGS = $(GPROFNG_CFLAGS) $(PTHREAD_CFLAGS) \
> $(GPROFNG_NO_SWITCH_CFLAGS)
> AM_CXXFLAGS = $(AM_CFLAGS)
>
> -QLParser.tab.cc QLParser.tab.hh: QLParser.yy
> +# bison generates two files QLParser.tab.cc, QLParser.tab.hh.
> +# we don't know which file will be newer.
> +# Make QLParser.tab.cc always newer than QLParser.tab.hh.
> +QLParser.tab.hh: QLParser.yy
> + if test "$(BISON)" == ":"; then \
> + echo "fatal: Building gprofng requires bison 3.0.4 or later."; \
> + exit 1; \
> + fi; \
> $(BISON) $^
>
> -BUILT_SOURCES = QLParser.tab.hh
> -EXTRA_DIST = QLParser.yy
> +QLParser.tab.cc: QLParser.tab.hh
> + touch $@
>
> +BUILT_SOURCES = QLParser.tab.cc QLParser.tab.hh
> +EXTRA_DIST = QLParser.tab.cc QLParser.tab.hh QLParser.yy
> +
> +# info and diststuff are needed for src-release.sh:
> +info: $(BUILT_SOURCES)
> +diststuff: info
>
> lib_LTLIBRARIES = $(LIBGPROFNG)
> libgprofng_la_SOURCES = $(CCSOURCES) $(CSOURCES)
> diff --git a/gprofng/src/Makefile.in b/gprofng/src/Makefile.in
> index b881268b0d9..76a0c950079 100644
> --- a/gprofng/src/Makefile.in
> +++ b/gprofng/src/Makefile.in
> @@ -543,8 +543,8 @@ AM_CFLAGS = $(GPROFNG_CFLAGS) $(PTHREAD_CFLAGS) \
> $(GPROFNG_NO_SWITCH_CFLAGS)
>
> AM_CXXFLAGS = $(AM_CFLAGS)
> -BUILT_SOURCES = QLParser.tab.hh
> -EXTRA_DIST = QLParser.yy
> +BUILT_SOURCES = QLParser.tab.cc QLParser.tab.hh
> +EXTRA_DIST = QLParser.tab.cc QLParser.tab.hh QLParser.yy
> lib_LTLIBRARIES = $(LIBGPROFNG)
> libgprofng_la_SOURCES = $(CCSOURCES) $(CSOURCES)
> libgprofng_la_LDFLAGS = -version-info 0:0:0
> @@ -1021,8 +1021,6 @@ html: html-am
>
> html-am:
>
> -info: info-am
> -
> info-am:
>
> install-data-am: install-dbeDATA
> @@ -1096,9 +1094,23 @@ uninstall-am: uninstall-binPROGRAMS uninstall-dbeDATA \
> .PRECIOUS: Makefile
>
>
> -QLParser.tab.cc QLParser.tab.hh: QLParser.yy
> +# bison generates two files QLParser.tab.cc, QLParser.tab.hh.
> +# we don't know which file will be newer.
> +# Make QLParser.tab.cc always newer than QLParser.tab.hh.
> +QLParser.tab.hh: QLParser.yy
> + if test "$(BISON)" == ":"; then \
Please use =, not ==, as == is a Bashism and configure scripts (etc)
must work with POSIX shell.
> + echo "fatal: Building gprofng requires bison 3.0.4 or later."; \
> + exit 1; \
> + fi; \
> $(BISON) $^
>
> +QLParser.tab.cc: QLParser.tab.hh
> + touch $@
> +
> +# info and diststuff are needed for src-release.sh:
> +info: $(BUILT_SOURCES)
> +diststuff: info
> +
> # Distribution involves building the binaries to generate the manpage,
> # so ensure that the necessary libraries are built at dist time.
> dist-hook: $(LIBGPROFNG)
next prev parent reply other threads:[~2023-10-05 8:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-05 1:42 vladimir.mezentsev
2023-10-05 8:57 ` Sam James [this message]
2023-10-05 14:57 ` Vladimir Mezentsev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jzs1o39c.fsf@gentoo.org \
--to=sam@gentoo.org \
--cc=binutils@sourceware.org \
--cc=vladimir.mezentsev@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).