How can I update a buildroot setup to a later version?
Asked Answered
L

1

8

A project I've inherited uses a very old version of buildroot, but I'd like to change it to use a feature that was added only in a later buildroot release.

Is there a straightforward way of updating a buildroot setup to use a later release?

e.g. if I save out a defconfig file and import that in a later buildroot release, would that just work, or are there practical reasons why not? Are there additional configuration files I'd need to carry across (e.g. kernel, busybox, etc)? Thanks!

Lacour answered 4/7, 2013 at 12:22 Comment(2)
There probably is no "straightforward way of updating a buildroot setup to use a later release". You also have to consider if you're going to be also updating tools, packages and the kernel. Those will all default to different (and possibly deprecated) versions in the new version of Buildroot. You will need patch files for all of your source code changes before you try to update. I've used sdiff to compare the old versus new config files for this kind of updating.Dale
You would also need the kernel.config the busybox.config and the uclibc.config if you have modified them.Steiger
U
8

No.

In fact, it's worse that that.

You can start by using a newer Buildroot version with your old default configuration file, but you will need to check the resulting configuration carefully for deprecated packages and packages whose versions are not compatible with whatever application software you might be adding to the Buildroot filesystem. The names of some packages (e.g. opencv) change over time, so you need to eyeball the resulting .config file to make sure that all of the packages that you need are there.

If you build a toolchain or Linux kernel in Buildroot (commonly done but not generally good practice), then you need to make sure that the new configuration is set to build the old version of the kernel and compiler. These might be too old to build some of the packages in the newer version of Buildroot.

If you upgrade your kernel at the same time that you upgrade Buildroot, then you need to port your old kernel config file to the new kernel version. Since the kernel configuration options change frequently, you will probably need to start from defconfig for your board and then use make menuconfig to manually add the configs that you need.

Busybox is a bit less volatile, so there is a chance that your old config will work.

If your old Buildroot configuration uses postbuild or postimage scripts, you will need to review them, but my guess is that they will not need any changes.

You should allocate at least a week for this work, maybe more, depending on the complexity of the configuration. Remember that if you are forced to use an older vendor kernel due to patches for a specific SoC, for example, the Freescale 2.6.33.9 kernel for the BSC9131, then the upgrade that you want to do might not be possible without doing six to twelve months of work to port the vendor's kernel patches to a newer kernel version.

Cheers.

Upbuild answered 22/8, 2015 at 22:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.