From: Thomas Petazzoni Date: Sun, 8 Oct 2017 21:44:23 +0000 (+0200) Subject: flex: rework patches to avoid host/target difference X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=131995ff5ab632c74f36a3b89a5571452cf75da7;p=buildroot.git flex: rework patches to avoid host/target difference 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, so pre-requisites of flex.1 will always be more recent than flex.1. So, we add a patch that adds a --disable-doc configure option. Fixes: http://autobuild.buildroot.org/results/f70/f70b39632535bb9692d0a032166b2f4104532967/ http://autobuild.buildroot.org/results/525/52567afdfe7992b3518de0e01227ba14aa300f21/ [...] Signed-off-by: Thomas Petazzoni [yann.morin.1998@free.fr: - rebase on-top of master, - add patch to not build the documentation, because simply touching flex.1 is no longer enough. - keep install in target/, for shared builds ] Signed-off-by: "Yann E. MORIN" Cc: Thomas Petazzoni Cc: Adrian Perez de Castro Cc: Arnout Vandecappelle Signed-off-by: Thomas Petazzoni --- diff --git a/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch b/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch new file mode 100644 index 0000000000..06747a36e1 --- /dev/null +++ b/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch @@ -0,0 +1,35 @@ +From ffa886a580929f26fd5e5a40c9c5334955c48553 Mon Sep 17 00:00:00 2001 +From: Explorer09 +Date: Mon, 4 Sep 2017 10:47:33 +0800 +Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac. + +This would, e.g. define _GNU_SOURCE in config.h, enabling the +reallocarray() prototype in glibc 2.26+ on Linux systems with that +version of glibc. + +Fixes #241. + +Backported from: 24fd0551333e7eded87b64dd36062da3df2f6380 +Signed-off-by: Adrian Perez de Castro +--- + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 55e774b..c879fe1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -25,8 +25,10 @@ + # autoconf requirements and initialization + + AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex]) ++AC_PREREQ([2.60]) + AC_CONFIG_SRCDIR([src/scan.l]) + AC_CONFIG_AUX_DIR([build-aux]) ++AC_USE_SYSTEM_EXTENSIONS + LT_INIT + AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects]) + AC_CONFIG_HEADER([src/config.h]) +-- +2.14.1 + 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 -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 -[Adrian: patch Makefile.am instead of Makefile.in] -Signed-off-by: Adrian Perez de Castro ---- - 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-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch b/package/flex/0002-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch deleted file mode 100644 index 06747a36e1..0000000000 --- a/package/flex/0002-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch +++ /dev/null @@ -1,35 +0,0 @@ -From ffa886a580929f26fd5e5a40c9c5334955c48553 Mon Sep 17 00:00:00 2001 -From: Explorer09 -Date: Mon, 4 Sep 2017 10:47:33 +0800 -Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac. - -This would, e.g. define _GNU_SOURCE in config.h, enabling the -reallocarray() prototype in glibc 2.26+ on Linux systems with that -version of glibc. - -Fixes #241. - -Backported from: 24fd0551333e7eded87b64dd36062da3df2f6380 -Signed-off-by: Adrian Perez de Castro ---- - configure.ac | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 55e774b..c879fe1 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -25,8 +25,10 @@ - # autoconf requirements and initialization - - AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex]) -+AC_PREREQ([2.60]) - AC_CONFIG_SRCDIR([src/scan.l]) - AC_CONFIG_AUX_DIR([build-aux]) -+AC_USE_SYSTEM_EXTENSIONS - LT_INIT - AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects]) - AC_CONFIG_HEADER([src/config.h]) --- -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 +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 +Signed-off-by: "Yann E. MORIN" + +--- +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" +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" +Cc: Thomas Petazzoni +--- + 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/Config.in b/package/flex/Config.in index 33d123d732..0690777afd 100644 --- a/package/flex/Config.in +++ b/package/flex/Config.in @@ -4,4 +4,6 @@ config BR2_PACKAGE_FLEX A fast lexical analyser generator. A tool for generating programs that perform pattern-matching on text. + Only the library is available. + https://github.com/westes/flex/ diff --git a/package/flex/flex.mk b/package/flex/flex.mk index aeac4ada87..6ce768c318 100644 --- a/package/flex/flex.mk +++ b/package/flex/flex.mk @@ -10,26 +10,22 @@ FLEX_INSTALL_STAGING = YES 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))