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 <thomas.petazzoni@free-electrons.com> [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" <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> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
4db3e5e94b
commit
131995ff5a
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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/
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user