All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] package/bison: make installation relocatable
Date: Tue, 19 May 2020 21:26:51 +0200	[thread overview]
Message-ID: <20200519192651.GI27030@scaer> (raw)
In-Reply-To: <20200518062648.1744905-1-thomas.petazzoni@bootlin.com>

Thomas, All,

On 2020-05-18 08:26 +0200, Thomas Petazzoni spake thusly:
> Our current host-bison installation is not relocatable, so if you
> generate the SDK, and install it in a different location, bison will
> no longer work with failures such as:
> 
> bison: /home/user/buildroot/output/host/share/bison/m4sugar/m4sugar.m4: cannot open: No such file or directory
> 
> This particular issue is already resolved upstream by the addition of
> "relocatable" support, which we enable using --enable-relocatable.
> 
> Once this issue is fixed, a second one pops up: the path to the m4
> program itself is also hardcoded. So we add a patch to fix that as
> well. The patch has been submitted upstream.
> 
> Fixes:
> 
>   https://bugs.busybox.net/show_bug.cgi?id=12656
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Applied to master, after:
  - I added a reference to the upstream mailing list
  - expanded the commit log that upstream requested some changes

Regards,
Yann E. MORIN.

> ---
>  ...0001-src-make-path-to-m4-relocatable.patch | 69 +++++++++++++++++++
>  package/bison/bison.mk                        |  1 +
>  2 files changed, 70 insertions(+)
>  create mode 100644 package/bison/0001-src-make-path-to-m4-relocatable.patch
> 
> diff --git a/package/bison/0001-src-make-path-to-m4-relocatable.patch b/package/bison/0001-src-make-path-to-m4-relocatable.patch
> new file mode 100644
> index 0000000000..730fbbfe89
> --- /dev/null
> +++ b/package/bison/0001-src-make-path-to-m4-relocatable.patch
> @@ -0,0 +1,69 @@
> +From 50c8a3af1661c3950b9743d673fd46872860aa08 Mon Sep 17 00:00:00 2001
> +From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> +Date: Mon, 18 May 2020 07:53:20 +0200
> +Subject: [PATCH] src: make path to m4 relocatable
> +
> +Commit a4ede8f85b0c9a254fcb01e5888cee1983095669 ("package: make bison
> +a relocatable package") made Bison relocatable, but in fact it still
> +contains one absolute reference: the M4 variable, which points to the
> +M4 program. Let's fix that by using relocate().
> +
> +We don't use relocate2() to store the temporary buffer and re-use it,
> +because m4path() is only called once.
> +
> +Upstream: submitted to the bison-patches at gnu.org mailing list
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> +---
> + src/files.c  | 7 +++++++
> + src/files.h  | 3 +++
> + src/output.c | 2 +-
> + 3 files changed, 11 insertions(+), 1 deletion(-)
> +
> +diff --git a/src/files.c b/src/files.c
> +index 71c10e34..b8b43230 100644
> +--- a/src/files.c
> ++++ b/src/files.c
> +@@ -421,6 +421,13 @@ pkgdatadir (void)
> +     }
> + }
> + 
> ++char const *
> ++m4path (void)
> ++{
> ++  char const *m4 = getenv("M4");
> ++  return m4 ? m4 : relocate(M4);
> ++}
> ++
> + void
> + output_file_names_free (void)
> + {
> +diff --git a/src/files.h b/src/files.h
> +index 00814ad0..64b6f8b5 100644
> +--- a/src/files.h
> ++++ b/src/files.h
> +@@ -64,6 +64,9 @@ extern char *all_but_ext;
> + /* Where our data files are installed.  */
> + char const *pkgdatadir (void);
> + 
> ++/* Where the m4 program is installed.  */
> ++char const *m4path (void);
> ++
> + void compute_output_file_names (void);
> + void output_file_names_free (void);
> + 
> +diff --git a/src/output.c b/src/output.c
> +index 1871fd75..ebe75095 100644
> +--- a/src/output.c
> ++++ b/src/output.c
> +@@ -682,7 +682,7 @@ static void
> + output_skeleton (void)
> + {
> +   /* Compute the names of the package data dir and skeleton files.  */
> +-  char const *m4 = (m4 = getenv ("M4")) ? m4 : M4;
> ++  char const *m4 = m4path ();
> +   char const *datadir = pkgdatadir ();
> +   char *skeldir = xpath_join (datadir, "skeletons");
> +   char *m4sugar = xpath_join (datadir, "m4sugar/m4sugar.m4");
> +-- 
> +2.26.2
> +
> diff --git a/package/bison/bison.mk b/package/bison/bison.mk
> index 2174a9061c..4cc635c445 100644
> --- a/package/bison/bison.mk
> +++ b/package/bison/bison.mk
> @@ -12,5 +12,6 @@ BISON_LICENSE_FILES = COPYING
>  # parallel build issue in examples/c/reccalc/
>  BISON_MAKE = $(MAKE1)
>  HOST_BISON_DEPENDENCIES = host-m4
> +HOST_BISON_CONF_OPTS = --enable-relocatable
>  
>  $(eval $(host-autotools-package))
> -- 
> 2.26.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2020-05-19 19:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-18  6:26 [Buildroot] [PATCH] package/bison: make installation relocatable Thomas Petazzoni
2020-05-19 19:26 ` Yann E. MORIN [this message]
2020-05-29 21:29 ` Peter Korsgaard

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=20200519192651.GI27030@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.