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

Bas Mevissen abuse at basmevissen.nl
Thu Apr 29 21:39:14 BST 2021


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