[PATCH] Extend checks on build prerequisites for building OpenWRT core

Bas Mevissen abuse at basmevissen.nl
Tue May 4 09:29:08 BST 2021


Friendly ping.

Bas.

On 2021-04-29 22:39, Bas Mevissen wrote:
> On 4/29/21 11:40 AM, Paul Spooren wrote:
>> 
>> On 4/20/21 1:08 AM, Bas Mevissen wrote:
>>> OpenWRT requires a number of Perl modules to be installed. It wasn't 
>>> checking on all of them.
>>> This patch adds checks for Perl FindBin, File::Copy, File::Compare 
>>> and Thread::Queue modules.
>>> 
>>> Failing to install these, will have the build break at some point. By 
>>> adding these to the
>>> prereq-build.mk script, they are checked on forehand.
>>> 
>>> Tested on a Fedora 33 and 34 (beta) that was freshly installed. 
>>> Fedora appears to
>>> break up Perl modules into small packages that need to be installed 
>>> for the build to succeed.
>>> 
>>> Signed-off-by: Bas Mevissen <abuse at basmevissen.nl>
>>> ---
>>>   include/prereq-build.mk | 13 ++++++++++++-
>>>   1 file changed, 12 insertions(+), 1 deletion(-)
>>> 
>>> diff --git a/include/prereq-build.mk b/include/prereq-build.mk
>>> index 86c22f7c95..cb3dcc51e3 100644
>>> --- a/include/prereq-build.mk
>>> +++ b/include/prereq-build.mk
>>> @@ -65,11 +65,22 @@ $(eval $(call TestHostCommand,perl-data-dumper, \
>>>       Please install the Perl Data::Dumper module, \
>>>       perl -MData::Dumper -e 1))
>>>   +$(eval $(call TestHostCommand,perl-findbin, \
>>> +    Please install the Perl FindBin module, \
>>> +    perl -MFindBin -e 1))
>>> +
>>> +$(eval $(call TestHostCommand,perl-file-copy, \
>>> +    Please install the Perl File::Copy module, \
>>> +    perl -MFile::Copy -e 1))
>>> +
>>> +$(eval $(call TestHostCommand,perl-file-compare, \
>>> +    Please install the Perl File::Compare module, \
>>> +    perl -MFile::Compare -e 1))
>> Could you please point me to where this module is required? I naively 
>> grepped through openwrt.git and couldn't find it. The other added 
>> requirements seem fine.
> 
> It is in the host autoconf build. On Fedora 34, against current
> master, without the patch to test the need for File::Compare:
> 
> $ sudo rpm -e perl-File-Compare
> 
> (...)
> 
> $ make -j1 V=s
> 
> (...)
> 
> make[3]: Entering directory 
> '/home/bas/Workspace/openwrt-master/tools/autoconf'
> export SHELL="bash"; make -C
> /home/bas/Workspace/openwrt-master/build_dir/host/autoconf-2.69
> make[4]: Entering directory
> '/home/bas/Workspace/openwrt-master/build_dir/host/autoconf-2.69'
> make  all-recursive
> make[5]: Entering directory
> '/home/bas/Workspace/openwrt-master/build_dir/host/autoconf-2.69'
> Making all in bin
> make[6]: Entering directory
> '/home/bas/Workspace/openwrt-master/build_dir/host/autoconf-2.69/bin'
> autom4te_perllibdir='..'/lib
> AUTOM4TE_CFG='../lib/autom4te.cfg'         ../bin/autom4te -B '..'/lib
> -B '..'/lib         --language M4sh --cache '' --melt ./autoconf.as -o
> autoconf.in
> Can't locate File/Compare.pm in @INC (you may need to install the
> File::Compare module) (@INC contains: ../lib
> /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32
> /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl
> /usr/lib64/perl5 /usr/share/perl5) at ../lib/Autom4te/FileUtils.pm
> line 166.
> BEGIN failed--compilation aborted at ../lib/Autom4te/FileUtils.pm line 
> 166.
> Compilation failed in require at ../bin/autom4te line 43.
> BEGIN failed--compilation aborted at ../bin/autom4te line 43.
> make[6]: *** [Makefile:641: autoconf.in] Error 2
> 
> (...)
> 
> $ sudo dnf install -y perl-File-Compare
> 
> (...)
> 
> $ make -j4
> 
> (build finishes)
> 
> 
>>> +
>>>   $(eval $(call TestHostCommand,perl-thread-queue, \
>>>       Please install the Perl Thread::Queue module, \
>>>       perl -MThread::Queue -e 1))
>>>   -
>>>   $(eval $(call SetupHostCommand,tar,Please install GNU 'tar', \
>>>       gtar --version 2>&1 | grep GNU, \
>>>       gnutar --version 2>&1 | grep GNU, \



More information about the openwrt-devel mailing list