From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Petazzoni Date: Wed, 15 Aug 2018 14:18:38 +0200 Subject: [Buildroot] [PATCH 2/3 v3] linux: kconfig needs host-{flex, bison} to build the configurators In-Reply-To: References: <20180814162130.00f55418@windsurf> <20180814152743.GJ7915@scaer> Message-ID: <20180815141838.0a83993c@windsurf> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Hello, On Wed, 15 Aug 2018 00:50:42 +0200, Arnout Vandecappelle wrote: > My position is that we do indeed need our host flex and bison for everything > installed in target/ (which implies everything installed in staging/), but not > for things installed in host/. We definitely need it for BR2_REPRODUCIBLE. > > It would also be nice if dependencies.sh could do a version check and accept > the system flex/bison if it is the right version, like we do for cmake and tar. > > But both of these wishes make things more complicated, so I'm OK with just > keeping all current host-flex/bison dependencies. In fact, I think adding flex and bison as mandatory dependencies of the system is going to cause too much disruption. All the autobuilders would start complaining, all the Travis/Gitlab CI setups would have to be adjusted, and everyone building in containers/minimal environments will be affected. So instead, I'd like to detect if flex/bison are available on the system. If they are available, then we use them for the Linux kernel configuration process. If they are not available, we build them. Instead of: LINUX_KCONFIG_DEPENDENCIES = host-bison host-flex I'd prefer to see: LINUX_KCONFIG_DEPENDENCIES = $(BR2_FLEX_HOST_DEPENDENCY) $(BR2_BISON_HOST_DEPENDENCY) And the usual logic in support/dependencies/ to check for bison/flex. This will avoid disrupting all existing setups, and still provide the speed-up that we don't need to build flex/bison when doing "make linux-menuconfig". > > For the linux kernel and other kconfig-based packages, we don't care > > which flex/bison are used, because the resulting binaries are not > > installed, unless those packages also generate code eventually installed > > in host/, staging/ or target/ > > Note that this means you'll still need host-flex/bison for the kernel, because > the kernel may build dtc and that gets installed in host... Are you sure flex/bison are used when building the DTC copy in the Linux kernel ? Indeed we only added host-bison/host-flex as dependencies of linux in commit 1b9faedf32be26d9c983c573ccd98f57fc6f6569, when kconfig stopped shipping its pre-generated files. How could DTC be built before 1b9faedf32be26d9c983c573ccd98f57fc6f6569 if it required bison/flex ? Best regards, Thomas -- Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com