Version 19.7.7 [IB error libubus20191227]

Hello everyone! I just got out of a deep rabbit-hole of trying to figure out why my image builder stopped working all of the sudden.
On the 1st of August, buildbot deployed new changes to the arm_cortex-a7_neon-vfpv4 package set for 19.07, I assume for the coming launch of 19.07.8.
In this upgrade, libubus20191227 was removed from the global 19.07 branch of packages and libubus20210603 was added in it's place. However, the core packages at targets/ipq40xx/generic/packages where not re-built for the 19.07.7 branch of packages so they were still expecting libubus20191227 which does not exist anymore. This has now broken image builder for me for that version set for me, and as I see for others as well.

Is this expected behavior, where for four days the advertised image builder will not work?

You need to use the 19.07.8 imagebuilder.

The 19.07.7 imagebuilder will not work.

It is expected (but nasty) behaviour, which will happen also later when some ABI versioned packages are updated.

1 Like

I can't imagine this is acceptable though? The downloads page has been, for several days now, pointing people towards a now-broken release that downloads.openwrt.org shows as being the only "stable" release. Maybe at the very least there should be a warning of some kind, and a link to the newer release. I know there's a troubleshooting guide on the wiki that says "wait a few hours or a day" but that isn't really the same as "use the new version that hasn't been released yet".

I'm not trying to be overly mean, OpenWRT is an amazing project, and the Image Builder is a blessing. Anytime one sees a successful FOSS project, they got to be impressed. I would just hate to see the many people who are getting confused by this and think they're doing something wrong, as even a couple months ago, I certainly would have been confused myself.

1 Like

fwiw... i added that note a few days ago... mostly to catch sluggish phase2 buildbots on critical dependency change (or just whacky upload states)... (with master or XYZ-SNAPSHOT in mind)

the phenomenon of stable dependancy breakages is relatively new... (and way beyond the scope of a normal imagebuilder guide)

and as best I can tell... only really understood by a handfull of people...

Ah okay, the wording of some of the earlier comments on this thread made me feel like this is more of a common occurrence that the community has lived with for quite a while.

For my curiosity, have the only dependency breakages been made by ABI-breaking updates between the minor versions?

1 Like

Yes. There may be others, which get automatically fixed/rebuilt quickly, but the problem arises from ABI versioning and two-step building.

See:

1 Like

probably should have said 'in an ideal world'... but I tend to agree with you... the sooner we know that those ib's are perma-toast or not... we should throw a notice on the wiki regarding this ( or just remove them )

One additional generic philosophical note:

The "normal" way to build is to build from the source code, which has worked all the time. You download/update the main and feed sources, and build everything, and that succeeds as all dependencies are current. Works also in the release branches.

The imagebuilder is a shortcut, cooking up a firmware from prebuilt binaries, so it is more fragile to package upgrades.

Two observations:

  • Somewhat more core package fixes are backported to the release branches than earlier.
  • Imagebuilder has got new popularity in the last few months (after 10+ years of minor usage)

The combination of those two items causes problems arising from the two-step build system (fixed target-specific packages, continuously rebuilt user-space vanilla packages) are surfacing more than earlier.

The move to the two-step build system was done with the LEDE split in 2016, and it tackled the inefficiency of building a full release (with all packages) once and then not upgrading anything for that release. That was the default upto Chaos Calmer 15.05.1 in March 2016. Upto that release, all packages downloads were fixed without any later upgrades.

The current system works mainly well, enables upgrading packages during the life of a release, but faces imagebuilder/opkg difficulties when certain ABI versioned packages are upgraded in a release branch after a release. It enables the majority of packages to get upgraded after a release, but is not perfect.

1 Like

indeed... and proper / more use of 'abi-versioning' has shifted symptomatology from an installed and perhaps partly functional binary to a hard-fault at the opkg download stage...

1 Like

Yeah, I forgot that third point: ABI versioning was made more prominent in early 2021, causing more hard errors.

1 Like

It's better to fail at generating a firmware image, than to produce images that would crash. That's the whole point behind ABI versioning

3 Likes

WORKAROUNDS

fwiw... ipq8065 builds perfectly ok with default package list...

  • avoid selecting including 'iwinfo' or anything that may pull it in and you may have better luck
  • while i've not recommended this in the past... I suggest you make a local clone of all 19.07.8 repositories relating to your device (preferably from a mirror) when it is released, as an interim measure that will allow you to avoid such issues in the future...

For what it is worth, I'm getting the same build error for 19.07.8 image builder. After installing, the image builder fails on configuring.

Should I be reducing the included packages that are ABI versioned?

Configuring dnsmasq-full.
Collected errors:
 * opkg_install_cmd: Cannot install package libubus20191227.
make[2]: *** [Makefile:158: package_install] Error 255
make[1]: *** [Makefile:118: _call_image] Error 2
make: *** [Makefile:208: image] Error 2

I have a lot of packages from the base image:

6in4 acme acme-dnsapi adblock attendedsysupgrade-common auc banip base-files bash bind-dig bind-libs block-mount busybox ca-bundle ca-certificates cgi-io collectd collectd-mod-conntrack collectd-mod-cpu collectd-mod-dns collectd-mod-ethstat collectd-mod-interface collectd-mod-iptables collectd-mod-iwinfo collectd-mod-load collectd-mod-memory collectd-mod-netlink collectd-mod-network collectd-mod-ping collectd-mod-processes collectd-mod-protocols collectd-mod-rrdtool collectd-mod-sensors collectd-mod-tcpconns collectd-mod-thermal collectd-mod-uptime collectd-mod-wireless conntrack coreutils coreutils-sort curl dbus ddns-scripts ddns-scripts_cloudflare.com-v4 diffutils dnsmasq-full dropbear e2fsprogs etherwake findutils-locate firewall fstools fwtool getdns getrandom git git-http hostapd-common htop iftop ip-full ip6tables iperf3 ipset iptables iptables-mod-conntrack-extra iptables-mod-ipopt iw iwinfo jansson jq jshn jsonfilter kernel kmod-bluetooth kmod-btmrvl kmod-cfg80211 kmod-crypto-aead kmod-crypto-cmac kmod-crypto-crc32c kmod-crypto-ecb kmod-crypto-ecdh kmod-crypto-hash kmod-crypto-kpp kmod-crypto-manager kmod-crypto-null kmod-crypto-pcompress kmod-fs-ext4 kmod-gpio-button-hotplug kmod-hid kmod-ifb kmod-input-core kmod-input-evdev kmod-ip6tables kmod-ipt-conntrack kmod-ipt-conntrack-extra kmod-ipt-core kmod-ipt-extra kmod-ipt-ipopt kmod-ipt-ipset kmod-ipt-nat kmod-ipt-nat6 kmod-ipt-offload kmod-ipt-raw kmod-ipt-raw6 kmod-iptunnel kmod-iptunnel4 kmod-l2tp kmod-l2tp-eth kmod-l2tp-ip kmod-lib-crc-ccitt kmod-lib-crc16 kmod-mac80211 kmod-macvlan kmod-mmc kmod-mwifiex-sdio kmod-mwlwifi kmod-nf-conntrack kmod-nf-conntrack-netlink kmod-nf-conntrack6 kmod-nf-flow kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-nf-nat6 kmod-nf-reject kmod-nf-reject6 kmod-nfnetlink kmod-nls-base kmod-ppp kmod-pppoe kmod-pppol2tp kmod-pppox kmod-regmap-core kmod-sched-cake kmod-sched-core kmod-scsi-core kmod-sit kmod-slhc kmod-tun kmod-udptunnel4 kmod-udptunnel6 kmod-usb-core kmod-usb-ehci kmod-usb-ohci kmod-usb-storage kmod-usb-uhci kmod-usb2 kmod-usb3 kmod-wireguard libatomic1 libavahi-dbus-support libblkid1 libblobmsg-json libbz2-1.0 libc libcap libcomerr0 libcurl4 libdaemon libdb47 libdbus libelf1 libevent2-7 libexpat libext2fs2 libffi libgcc1 libgdbm libgmp10 libgnutls libip4tc2 libip6tc2 libipset13 libiptc0 libiwinfo-lua libiwinfo20181126 libjson-c2 libjson-script libltdl7 liblua5.1.5 liblucihttp-lua liblucihttp0 liblzma liblzo2 libmbedtls12 libmnl0 libncurses6 libnetfilter-conntrack3 libnetfilter-cthelper0 libnetfilter-cttimeout1 libnetfilter-queue1 libnettle7 libnfnetlink0 libnl-tiny libopenssl-conf libopenssl1.1 liboping libpcap1 libpcre libpopt0 libpthread libqrencode libreadline8 librrd1 librt libsensors5 libsqlite3-0 libss2 libstdcpp6 libsysfs2 libubox20191228 libubus-lua libubus20191227 libubus20210603 libuci-lua libuci20130104 libuclient20160123 libustream-openssl20150806 libuuid1 libuv1 libxml2 libxtables12 libyaml lm-sensors logd lua luci luci-app-acme luci-app-adblock luci-app-advanced-reboot luci-app-attendedsysupgrade luci-app-banip luci-app-ddns luci-app-firewall luci-app-mwan3 luci-app-ntpc luci-app-openvpn luci-app-opkg luci-app-privoxy luci-app-statistics luci-app-wireguard luci-app-wol luci-base luci-compat luci-lib-ip luci-lib-ipkg luci-lib-iptparser luci-lib-jsonc luci-lib-nixio luci-mod-admin-full luci-mod-network luci-mod-status luci-mod-system luci-nginx luci-proto-ipv6 luci-proto-ppp luci-proto-wireguard luci-theme-bootstrap msmtp mtd mwan3 mwifiex-sdio-firmware mwlwifi-firmware-88w8964 nano netifd netperf nginx-mod-luci nginx-ssl nmap ntpclient odhcp6c odhcpd-ipv6only open-plc-utils open-plc-utils-ampstat openssl-util openvpn-openssl openwrt-keyring opkg ppp ppp-mod-pppoe ppp-mod-pppol2tp privoxy procd qrencode resolveip rpcd rpcd-mod-file rpcd-mod-iwinfo rpcd-mod-luci rpcd-mod-rpcsys rpcd-mod-rrdns rrdtool1 rsync screen socat speedtest-netperf sshpass stubby swconfig sysfsutils tc tcpdump terminfo tor ubi-utils uboot-envtools ubox ubus ubusd ucert-full uci uclient-fetch uhttpd uhttpd-mod-ubus urandom-seed urngd usign uwsgi uwsgi-cgi-plugin uwsgi-luci-support uwsgi-syslog-plugin wget whereis wireguard wireguard-tools wireless-regdb wpad-basic xl2tpd zlib
1 Like
libubox20191228 ... libubus20191227 libubus20210603 ... libuci20130104 libuclient20160123

this doesn't look right... any reason you aren't allowing these to be pulled in automatically?

My usual image builder workflow is run echo $(opkg list_installed | awk '{ print $1 }') to get all packages in the current image before upgrading with a custom sysupgrade image. I pass this to the imagebuilder PACKAGES option with make to install all packages. The package list posted in my reply is what opkg list_installed returned, should I remove libubox packages from the imagebuilder list and let them be installed via dependencies?

given some of the said dependant lib(s) are subject to change, i think this may be wise...

Thanks, so any lib packages named with ABI versioning i.e. 20191227 I should drop from the image builder PACKAGES variable when running make?

that would be a good starting point...

tho' i've seen IB skip over an incorrect lib-version when a newer one was pre-pulled in to be installed... depending on the package handling order...

false-claim-clarification

edit: the above assertion seems likely incorrect checking my logs properly... the message I was recalling is actually;

Not downgrading package uclient-fetch on root from 2021-05-14-6a6011df-1 to 1.21.1-1.

which is probably uclient-lib related(specific to my mods/hacks/pkg selections)

Thanks, that worked after removing any ABI package from image builder packages list.

I must have been lucky, it is the first time I've hit this as I've used every image builder through 19.07, because I have a lot of customisations and additional packages and it's just nice to be able to run your own custom sysupgrade with all the packages in the image so there's no need to opkg install anything after. I'll note to avoid lib ABI versioned packages in future usage going forward though.

1 Like

I've added a small note to the Wiki around image builder and ABI packages, it seems like it is a good idea to not directly include these (even if provided by opkg list_installed) and instead let image builder install them via package dependencies. Just flashed the 19.07.8 I built without them in and can see from looking at the image, they were automatically installed with the required ABI versions at image builder make.

Wiki note added here: https://openwrt.org/docs/guide-user/additional-software/imagebuilder#selecting_packages

1 Like