Question about true number of prerequisites for building OW images

In reading through the prerequisites for the build-system, I am wondering if some of the packages listed are actually required. I have been building full images without a number of the dependencies present on my Arch host system including:

asciidoc
help2man
intltool
perl-extutils-makemaker
perl-thread-queue

I don't think the lists there are quite right. I'm in the process of getting OpenWRT to build on a less common host. I hacked my way through a first succesful build by adjusting the odd script, removing a package that wouldn't build but I thought I could do without for first boot, etc. I'm now (literally on another window of my screen right now) repeating that from my initial notes, and tidying them up as I go.

I made a few observations getting it to work for the first time:

  1. I started by installing the items listed on the link you mention. Some I couldn't find, but it didn't seem to matter as I got my build working without them. I'm not installing any of the list on my 2nd pass until I get an error that tells me I need them.
  2. Some things not listed there were needed. These may be host or target specific. For example I needed to install od.
  3. Various less common parameters to utilites are used, so the full GNU version is needed not the soft-linked BusyBox capability.

So I agree with you - those lists are not wholly correct.

Having said that I am getting whatever software the make prereq target needs working so that I don't have to adjust those core elements. That includes Thread::Queue, although I have no idea if it is then used later in the build.

1 Like

Granted, the list is quite old probably. That being said, people sometimes see some corner cases pop up that can be tracked down to having one of those dependencies not installed. So, I wouldn't focus too much on those few small packages.

Put it into perspective: a functional buildroot needs over 10 GiB in space. You're talking about a few MiB here.

2 Likes

My goal is to update an Arch Linux meta package with the contemporary list of dependencies. Just seeking info for now.

EDIT: Also, if there is false info on the OW wiki, I will edit it. I do want to hear back from some others more knowledgeable before I do though.

2 Likes

Note, that some of the prerequisites can be revision/branch-specific.
And package prerequisites can be target-specific.

If that is true I would propose modifying the table on the wiki page to call out those deps are core requirements and another table for those that are bound to specific targets/packages.

The table would be too intricate and hard to maintain if it iincluded what is needed to build OpenWRT packages. Covering the toolchain, kernel and core packages (like base-files) is about a far as it can reasonably go I think. It's also somewhat "packaged distro" focussed - buildng on knowledge of how each platform provides build tools on top of the base install, so things like GNU xargs aren't mentioned.

Even then if you think about who would make use of it then (for anthying other than getting an OpenWRT build working on a reasonably well known desktop Linix distro for an already suported device - or close sibling) they'll have to a decent understanding of Linux build tools to make any progress with getting OpenWRT to work on a new platform, etc. So it's a bit of a false promise if they think this table will let them achieve that.

Once I've refined it a bit I am going to share my list of what was needed to get the build working on the platform I'm using, and that might be useful as a partial list for you.

It's OK. I would say just edit the wiki directly. I edited the Arch section with my observatons.

1 Like

What users actually need:

  • Read error messages and understand their cause at least in general.
  • Search missing dependencies using their distro package manager.

E.g. when they get something like:

Error: tar not found

They should do:

dnf provides \*bin/tar
dnf install tar

The faster users learn it, the easier they can achieve their goal.