Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCHv2] flex: rework patches to avoid host/target difference
Date: Sun, 8 Oct 2017 10:59:39 +0200	[thread overview]
Message-ID: <20171008085939.GA2803@scaer> (raw)
In-Reply-To: <20171008084814.3885-1-yann.morin.1998@free.fr>

All,

On 2017-10-08 10:48 +0200, Yann E. MORIN spake thusly:
> From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> 
> Currently, the target and host flex packages do not behave the same in
> terms of patching: the target variant has a patch hook that disables
> building the programs (because they are not needed, and do not build
> on no-MMU platforms). However, this hook is obviously not executed for
> host-flex, because we really want the host flex binary to be built.
> 
> In preparation for the introduction of out-of-tree package build, it
> is important that we don't do different things in the patch hooks for
> the target and host variant of a given package, because the source
> tree will be shared between the target and host builds.
> 
> To solve this, we introduce a --disable-program configure option,
> through a patch to the flex configure.ac and Makefile.am. This patch
> makes the current 0001-flex-disable-documentation.patch no longer
> needed.
> 
> Furthermore, building the documentation is a PITA: flex.1 depends on
> configure.ac and a few other files generated during the build. Touching
> flex.1 does not work, because automake will forcibly remove the files
> when its prerequisites are too old, but will not generate it.
> 
> So, we add a patch that adds a --disable-doc configure option.
> 
> Finally, since the target flex only installs a static library, we do not
> install the package to TARGET_DIR anymore, only the staging
> installation is done.

Arg, this is in fact no longer true. With BR2_SHARED_LIBS=y, then only a
shared library is built and installed nowadays.

I'll fix and respin. Sorry for the noise...

Regards,
Yann E. MORIN.

> Fixes:
>     http://autobuild.buildroot.org/results/f70/f70b39632535bb9692d0a032166b2f4104532967/
>     http://autobuild.buildroot.org/results/525/52567afdfe7992b3518de0e01227ba14aa300f21/
>     [...]
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> [yann.morin.1998 at free.fr:
>   - rebase on-top of master,
>   - add patch to not build the documentation, because simply touching
>     flex.1 is no longer enough.
> ]
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Adrian Perez de Castro <aperez@igalia.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> 
> ---
> Chamges v1 -> v2:
>   - fix commit log  (Thomas)
>   - drop spurious indentation cleanup  (Thomas)
>   - properly reorder patches (backport first)  (Thomas)
>   - fix typoes  (Thomas)
> 
> ---
> Given how welcoming upstream was about the first patch, I haven't even
> considered sending the second one. Sigh...
> ---
>  ...AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch} |  0
>  package/flex/0001-flex-disable-documentation.patch | 35 ----------
>  ...it-possible-to-disable-the-build-of-the-f.patch | 76 ++++++++++++++++++++++
>  ...it-possible-to-disable-the-build-of-the-d.patch | 58 +++++++++++++++++
>  package/flex/flex.mk                               | 26 ++++----
>  5 files changed, 146 insertions(+), 49 deletions(-)
>  rename package/flex/{0002-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch => 0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch} (100%)
>  delete mode 100644 package/flex/0001-flex-disable-documentation.patch
>  create mode 100644 package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch
>  create mode 100644 package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch
> 
> diff --git a/package/flex/0002-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch b/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
> similarity index 100%
> rename from package/flex/0002-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
> rename to package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
> diff --git a/package/flex/0001-flex-disable-documentation.patch b/package/flex/0001-flex-disable-documentation.patch
> deleted file mode 100644
> index b017b41385..0000000000
> --- a/package/flex/0001-flex-disable-documentation.patch
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -From a98443c6a72d5821d4e0152311e5c3eb4cdff25c Mon Sep 17 00:00:00 2001
> -From: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> -Date: Wed, 13 Sep 2017 17:26:48 +0300
> -Subject: [PATCH] flex: disable documentation
> -
> -Since we prevent the flex binary to be built, we also need to prevent
> -the documentation to be built, otherwise it will fail like this:
> -
> -Making all in doc
> -make[2]: Entering directory '/br/output/build/flex-2.6.4/doc'
> -make[2]: *** No rule to make target '../src/flex', needed by 'flex.1'.
> -Stop.
> -
> -Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> -[Adrian: patch Makefile.am instead of Makefile.in]
> -Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
> ----
> - Makefile.am | 1 -
> - 1 file changed, 1 deletion(-)
> -
> -diff --git a/Makefile.am b/Makefile.am
> -index 638c549..9db3420 100644
> ---- a/Makefile.am
> -+++ b/Makefile.am
> -@@ -43,7 +43,6 @@ EXTRA_DIST = \
> - 
> - SUBDIRS = \
> - 	src \
> --	doc \
> - 	examples \
> - 	po \
> - 	tests \
> --- 
> -2.14.1
> -
> diff --git a/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch b/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch
> new file mode 100644
> index 0000000000..19f5a772c5
> --- /dev/null
> +++ b/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch
> @@ -0,0 +1,76 @@
> +From da21733178b34eea303964db5a05e8a3ee4095b4 Mon Sep 17 00:00:00 2001
> +From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> +Date: Sat, 26 Aug 2017 15:17:06 +0200
> +Subject: [PATCH] build: make it possible to disable the build of the flex
> + program
> +
> +The flex program uses fork(), which isn't available on noMMU
> +systems. However, the libfl library does not use fork(), and be used
> +by other programs/libraries.
> +
> +Therefore, it makes sense to provide an option to disable the build of
> +the flex program.
> +
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> +Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> +
> +---
> +Submitted-upstream: https://github.com/westes/flex/pull/256
> +Refused. We'll have to adapt when they do a new release...
> +---
> + Makefile.am     | 2 ++
> + configure.ac    | 6 ++++++
> + doc/Makefile.am | 4 ++++
> + src/Makefile.am | 3 +++
> + 4 files changed, 15 insertions(+)
> +
> +diff --git a/Makefile.am b/Makefile.am
> +index e790e9d..8b57bc9 100644
> +--- a/Makefile.am
> ++++ b/Makefile.am
> +@@ -62,8 +62,10 @@ ChangeLog: $(srcdir)/tools/git2cl
> + indent:
> + 	cd src && $(MAKE) $(AM_MAKEFLAGS) indent
> + 
> ++if ENABLE_PROGRAM
> + install-exec-hook:
> + 	cd $(DESTDIR)$(bindir) && \
> + 		$(LN_S) -f flex$(EXEEXT) flex++$(EXEEXT)
> ++endif
> + 
> + .PHONY: ChangeLog indent
> +diff --git a/configure.ac b/configure.ac
> +index 8882016..f49872b 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -75,6 +75,12 @@ AC_ARG_ENABLE([libfl],
> +   [], [enable_libfl=yes])
> + AM_CONDITIONAL([ENABLE_LIBFL], [test "x$enable_libfl" = xyes])
> + 
> ++AC_ARG_ENABLE([program],
> ++  [AS_HELP_STRING([--disable-program],
> ++                  [do not build the flex program, only the libfl library])],
> ++  [], [enable_program=yes])
> ++AM_CONDITIONAL([ENABLE_PROGRAM], [test "x$enable_program" = xyes])
> ++
> + # --disable-bootstrap is intended only to workaround problems with bootstrap
> + # (e.g. when cross-compiling flex or when bootstrapping has bugs).
> + # Ideally we should be able to bootstrap even when cross-compiling.
> +diff --git a/src/Makefile.am b/src/Makefile.am
> +index 0d13a5a..c73bc17 100644
> +--- a/src/Makefile.am
> ++++ b/src/Makefile.am
> +@@ -4,7 +4,10 @@ LIBS = @LIBS@
> + 
> + m4 = @M4@
> + 
> ++if ENABLE_PROGRAM
> + bin_PROGRAMS = flex
> ++endif
> ++
> + if ENABLE_BOOTSTRAP
> + noinst_PROGRAMS = stage1flex
> + endif
> +-- 
> +2.9.4
> +
> diff --git a/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch b/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch
> new file mode 100644
> index 0000000000..ffe30d367f
> --- /dev/null
> +++ b/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch
> @@ -0,0 +1,58 @@
> +From b89b8475a5b2f9444c32f7d254b35968da3c8a23 Mon Sep 17 00:00:00 2001
> +From: "Yann E. MORIN" <yann.morin.1998@free.fr>
> +Date: Fri, 29 Sep 2017 18:03:51 +0200
> +Subject: [PATCH] build: make it possible to disable the build of the
> + documentation
> +
> +When targetting embedded evices, the documentation is not needed.
> +
> +Building the documentation default to whether the program is built.
> +
> +Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> +Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> +---
> + Makefile.am  | 8 +++++++-
> + configure.ac | 6 ++++++
> + 2 files changed, 13 insertions(+), 1 deletion(-)
> +
> +diff --git a/Makefile.am b/Makefile.am
> +index fce30b2..ee75b64 100644
> +--- a/Makefile.am
> ++++ b/Makefile.am
> +@@ -41,9 +41,15 @@ EXTRA_DIST = \
> + 	.indent.pro \
> + 	autogen.sh
> + 
> ++MAYBE_SUBDIRS =
> ++
> ++if ENABLE_DOC
> ++MAYBE_SUBDIRS += doc
> ++endif
> ++
> + SUBDIRS = \
> + 	src \
> +-	doc \
> ++	$(MAYBE_SUBDIRS) \
> + 	examples \
> + 	po \
> + 	tests \
> +diff --git a/configure.ac b/configure.ac
> +index c54e98f..b3ae450 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -80,6 +80,12 @@ AC_ARG_ENABLE([program],
> +   [], [enable_program=yes])
> + AM_CONDITIONAL([ENABLE_PROGRAM], [test "x$enable_program" = xyes])
> + 
> ++AC_ARG_ENABLE([doc],
> ++  [AS_HELP_STRING([--disable-doc],
> ++                  [do not build the documentation])],
> ++  [], [enable_doc=${enable_program}])
> ++AM_CONDITIONAL([ENABLE_DOC], [test "x$enable_doc" = xyes -a "x$enable_program" = xyes])
> ++
> + # --disable-bootstrap is intended only to workaround problems with bootstrap
> + # (e.g. when cross-compiling flex or when bootstrapping has bugs).
> + # Ideally we should be able to bootstrap even when cross-compiling.
> +-- 
> +2.11.0
> +
> diff --git a/package/flex/flex.mk b/package/flex/flex.mk
> index aeac4ada87..5410d1564e 100644
> --- a/package/flex/flex.mk
> +++ b/package/flex/flex.mk
> @@ -7,29 +7,27 @@
>  FLEX_VERSION = 2.6.4
>  FLEX_SITE = https://github.com/westes/flex/files/981163
>  FLEX_INSTALL_STAGING = YES
> +# flex only installs a static library
> +FLEX_INSTALL_TARGET = NO
>  FLEX_LICENSE = FLEX
>  FLEX_LICENSE_FILES = COPYING
>  FLEX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-m4
> +HOST_FLEX_DEPENDENCIES = host-m4
>  
> -# 0001-flex-disable-documentation.patch
> -# 0002-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
> +# 0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
> +# 0002-build-make-it-possible-to-disable-the-build-of-the-f.patch
> +# 0003-build-make-it-possible-to-disable-the-build-of-the-d.patch
>  FLEX_AUTORECONF = YES
>  FLEX_GETTEXTIZE = YES
>  FLEX_CONF_ENV = ac_cv_path_M4=/usr/bin/m4 \
>  	ac_cv_func_reallocarray=no
>  
> -HOST_FLEX_DEPENDENCIES = host-m4
> -
> -define FLEX_DISABLE_PROGRAM
> -	$(SED) 's/^bin_PROGRAMS.*//' $(@D)/src/Makefile.in
> -endef
> -FLEX_POST_PATCH_HOOKS += FLEX_DISABLE_PROGRAM
> -
> -# flex++ symlink is broken when flex binary is not installed
> -define FLEX_REMOVE_BROKEN_SYMLINK
> -	rm -f $(TARGET_DIR)/usr/bin/flex++
> -endef
> -FLEX_POST_INSTALL_TARGET_HOOKS += FLEX_REMOVE_BROKEN_SYMLINK
> +# Don't enable programs, they are not needed on the target, and
> +# require MMU support.
> +# Don't enable the doc, it's not needed on the target and requires
> +# special tools (help2man) to build.
> +FLEX_CONF_OPTS = --disable-program --disable-doc
> +HOST_FLEX_CONF_OPTS = --disable-doc
>  
>  $(eval $(autotools-package))
>  $(eval $(host-autotools-package))
> -- 
> 2.11.0
> 

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

      reply	other threads:[~2017-10-08  8:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-08  8:48 [Buildroot] [PATCHv2] flex: rework patches to avoid host/target difference Yann E. MORIN
2017-10-08  8:59 ` Yann E. MORIN [this message]

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=20171008085939.GA2803@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox