Host dependencies and checking them

Alberto Bursi bobafetthotmail at gmail.com
Sun Feb 21 11:07:12 EST 2021



On 20/02/21 23:52, Bas Mevissen wrote:
> 
> Hi all,
> 
> 
> When starting a clean build (21.02 branch) on a clean Fedora 33 machine, 
> I ran into the small issue of tools/autoconf failing to build. This was 
> due to perl-File-Compare missing. I apparently missed that prerequisite. 
> After installing said package, everything built fine.
> 
> Looking at the instructions at 
> https://openwrt.org/docs/guide-developer/build-system/install-buildsystem#prerequisites, 
> listing all prerequisites, I at first did not find perl-File-Compare. It 
> was only at the distribution specific instructions for CentOS/Fedora 
> that it was mentioned.
> 
> The main list does specifically mention perl-ExtUtils-MakeMaker and 
> perl-Thread-Queue, so I wonder whether perl-File-Compare should be added 
> there as well?

It's better to add it, yes. Depending on distro you may or may not need 
to install a specific package for it, but if you can't build the core 
repo and its packages without it, then it should be added to the list.

> 
> Another question regarding prerequisites: is python2 still a requirement 
> for master and openwrt-21.02?
> 

afaik no, the migration to python 3 was completed years ago, only 
references for python2 are to make sure that the build system is NOT 
using it even if it's installed or left in the build folders from 
previous builds.

> Anyway, it made me wonder whether the prerequisites list and test for at 
> least the core should be revised. I took a look at the current list and 
> compared them to include/prereq-build.mk from current (2021-02-20) 
> openwrt-21.02 branch:
> 
> PREREQ        prereq-build.mk        needed            result
> ======================================================================
> asciidoc    no            no?            Q
> bash        yes            yes            OK
> binutils    no            yes            ADD
> bzip2        yes            yes            OK
> flex        no            hostbuild -> no        REMOVE
> git        yes            yes            OK
> g++        yes (no IB)        yes            OK
> gcc        yes (no IB)        yes            OK
> time        no            no?            Q
> getopt        yes            yes            OK
> gawk        yes            yes            OK
> help2man    no            no?            Q
> intltool-update    no            no?            Q
> libelf-dev    no            yes            ADD
> libz-dev    no            yes            ADD
> make        yes            yes            OK
> ncurses        yes            yes            OK
> openssl        no            util&lib?        Q
> patch        yes            yes            OK
> perl ExtUtils-
>    MakeMaker    no            ?            Q
> perl Thread-
>    Queue        yes            ?            Q
> python2-dev    no            no >19.07?        Q
> unzip        yes            yes            OK
> wget        yes            yes            OK
> xgettext    no            yes            ADD
> xsltproc    no            no            REMOVE
> zlib        no            yes            ADD
> 
> 
> The file prereq-build.mk does check for a number of other utilities that 
> are not in the list or only in the distribution specific requirements:
> 
> Perl Data::Dumper
> tar
> find
> xargs
> seq
> grep
> stat
> perl (5.x)
> python (>=3.5)
> file
> rsync

these should be probably added to the list, as the build won't start if 
these are missing.

It wouldn't be a bad thing to update the prereq-build.mk file as well 
with the other missing things but I'm not a core developer and I'd 
rather not touch these things.

> 
> Looking at the distro specific instructions, I noticed a variation in 
> the advised mandatoty and optional packages to install per distro.
> For example, some install asciidoc, other ccache and so on.
> 

the variation is probably due to the fact that other packages that 
aren't part of core repo might need that and the user had enabled them, 
or that some options not enabled by default (like ccache) might need them.

Also there might be just legacy information from older versions (or just 
wrong info) that nobody ever updated and got carried over by cargo 
culting. The distro-specific information is added and updated by users 
after all.

> I would like to help cleaning this up, both the code and the 
> documentation. What I need is input on what are mandatory and what are 
> optional prerequisites


Mandatory prerequisites are things that are necessary for building core 
repository without package feeds, and most of that stuff should be 
listed in the prereq-build.mk.

Optional is what is needed to build core repo with non-default options 
and to build other packages in the feeds.
This is not strictly defined, in most cases it's the package's own 
source and build system that does the prerequisite check before building 
and throws errors if it does not find things so you can't just check in 
OpenWrt repositories.
It might not be practical to map all prerequisites of all packages 
available, so you might just document how to deal with build failures 
for optional packages/options (i.e. how to read the build log and see 
why it failed so you can install missing dependencies)

> (and a login to the wiki).
> 

If you send me a mail with your nickname and email for registration and 
password reset purposes (if different from the mail you use to send 
messages on this mailing list) I can add your user manually.

> Regards,
> 
> Bas.
> 
> 
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list