Build root include packages


I would like to include one package which doesn't exist in stable release 19.07.3 in build so I will have it on the final image.

I know if I want to include my own config files I have to place these files in buildroot/files/etc/config/.... which first I have to create as a path.

Is there any similar way to do the same with packages? More specific I would like to include luci-proto-modemmanager which I found in snapshots and it works as it tested before.

Thank you D

If you use the buildroot, and you tested the specific package on 19.07 somehow, it should be trivial to copy the package code (Makefile, ...) to the 19.07 branch, modify where needed and build the package along with your own image.

ok let me be more specific because I think I missed something.

When I downloaded the stable release 19.07.3 for my platform, the luci-proto-modemmanager was not available in the repositories to install it. However, I manage to find the package in snapshot packages and I installed it and check and found no issue at all.

However I decided to use the build root to build my own firmware, including the packages I need for my platform and also I found that if you create the path /file/etc/config/... then I can place there my own config so by default the image will have my default network settings for example.

Now I wonder if there a way to do the same with .ipkg files.

No, not that I know of. The buildroot does not work with packages, just with single files that will end up on your rootfs.

What you should do is copy package/feeds/luci/luci-proto-modemmanager from master to the 19.07 branch (in the exact same location!), then run make menuconfig and select the luci-proto-modemmanager package. Exit the configuration tool and compile like you would otherwise.

Well, here is an interesting thing I just noticed.

In the build root, when I update and install the feeds while I am in master, I checkout to the latest stable release v19.0.7.3 and the package symlink exist. Then make menuconfig and the package is there.

Not sure if I understand if this is the expected.

Do a git reset --hard HEAD and check if it's still there. If it is, then it's meant to be there :wink:

The feeds system is not part of the base openwrt git repository. So if you checkout a different openwrt branch like 19.07, it's not going to touch the feeds. They'll remain as they were until you update them.

The feeds that get installed are controlled from feeds.conf, or if this does not exist, from feeds.conf.default. If you look at feeds.conf.default in a master vs 19.07 branch, you'll see that feeds.conf.default for the 19.07 branch checks out a different branch from the feeds (openwrt-19.07).

So if you do a scripts/feeds update -a after you have now changed back to the 19.07 branch, it will delete the feeds from master and replace them with the feeds from 19.07. The reason you still have the feeds from master is that you didn't update your feeds after checking out the 19.07 branch.

Trying to compile with all feeds from master on a 19.07 repository may well lead to all sorts of odd runtime behaviour and very likely compile failure of multiple packages.

1 Like