Hello,
for years i've built my images with a build unix environment, cloning git repo and building with my packages and config file.
However, every time i build the image with new versions, i have to fight because my old config files need to be updated and there is always something wrong.
I've just seen (sorry, lol) that an imagebuilder exists where just to list packages to be installed, so i'm wondering if this is the preferred option? am i supposed to list ALL the packages my live systems has installed? how should i manage dated packages like -> libustream-mbedtls20201210 where imagebuilder is installing the "general" package -> libustream-mbedtls?
In general, i'm just wondering if i'm creating myself useless problems and if non-developers that want to build their images are supposed to do something different..
Thanks
When you have a config that you like, I recommend that you run ./scripts/diffconfig.sh > diffconfig which will minimize the options and give you a nice clean starting point. When you're ready to build again, update your git, then copy that file to .config and run make defconfig then you can build as usual without issues.
When I'm doing package development, I use the buildroot and compile everything from scratch, but when I just want images for a router without any code changes, imagebuilder is definitely the way to go.
To specify replacement packages, you say something like this, prefixing the packages you want to remove from the build by prefixing with dash:
packages="blah blah blah -dnsmasq dnsmasq-full"
make image PROFILE="tplink_archer-c7-v4" PACKAGES="$packages"
Indeed, that's what the ASU server uses to do its builds. The server runs podman, and downloads a container for the version/target of interest, then starts shooting make info and make image ... cmds to it.
On one of my linux boxes that has podman installed:
$ podman run --rm -it ghcr.io/openwrt/imagebuilder:x86-64-master
Of course without any mounts out to the host, you can't easily save any results, but if you're familiar with docker/podman, that should be a trivial addition on the command line.