bird3: add new package - #30166
Conversation
openwrt-ai
left a comment
There was a problem hiding this comment.
Reviewed 1 new commit. I compared the whole package against bird3/ on openwrt/routing master (b40e628); the only differences are the two deltas named in the PR body (bird3cl title v2→v3, PKG_CPE_ID) plus PKG_LICENSE_FILES:=README and a re-indent of the description blocks. Nothing here blocks a merge — the commit message matches the diff, the Makefile follows the feed's indentation rules (two spaces for metadata, tabs for install recipes, none for conffiles), the init script is procd-based with the right shebang, and BuildPackage is called with literal package names. Three optional notes inline, the test-version.sh one being the most substantive.
Two things I could not verify from here and did not flag inline: whether the 3.3.2 tarball actually carries a top-level README for the new PKG_LICENSE_FILES (bird.nic.cz is unreachable from this environment), and the CI outcome — the build checks on 796b013 were still pending at review time.
Generated by Claude Code
| @@ -0,0 +1 @@ | |||
| bird --version 2>&1 | grep "$PKG_VERSION" | |||
There was a problem hiding this comment.
This file overrides the generic version probe for all three sub-packages (bird3, bird3c, bird3cl), but it has no shebang and no $PKG_NAME dispatch. All 71 test-version.sh files already in this feed start with #!/bin/sh and switch on the sub-package name — see net/unbound/test-version.sh — and 10 of them are mode 0644 like this one, so the shebang is what makes them runnable. Without the dispatch, an added sub-package later silently gets probed with bird --version instead of failing loudly.
There is also a trailing space at end of line.
Keeping the current probe (which works for all three, since bird3 is a dependency of both clients) but matching the feed's shape:
| bird --version 2>&1 | grep "$PKG_VERSION" | |
| #!/bin/sh | |
| # shellcheck shell=busybox | |
| case "$PKG_NAME" in | |
| bird3|bird3c|bird3cl) | |
| bird --version 2>&1 | grep -F "$PKG_VERSION" | |
| ;; | |
| *) | |
| echo "Untested package: $PKG_NAME" >&2 | |
| exit 1 | |
| ;; | |
| esac |
Generated by Claude Code
| /etc/bird.conf | ||
| /etc/bird4.conf | ||
| /etc/bird6.conf |
There was a problem hiding this comment.
nit (optional): /etc/bird4.conf and /etc/bird6.conf are never shipped by this package. Package/bird3/install installs only /etc/bird.conf from doc/bird.conf.example, and files/bird.init only ever passes -c /etc/bird.conf. The two extra entries are carried over from the bird1-era v4/v6 daemon split (still present in the routing feed's bird2/Makefile) and have no counterpart in BIRD 3.
If the intent is not to have sysupgrade preserve hand-written bird4/bird6 configs, they can be dropped:
| /etc/bird.conf | |
| /etc/bird4.conf | |
| /etc/bird6.conf | |
| /etc/bird.conf |
Generated by Claude Code
| define Package/bird3/Default/description | ||
| BIRD is an internet routing daemon which manages TCP/IP routing tables | ||
| with support of modern routing protocols, easy to use configuration | ||
| interface and powerful route filtering language. It is lightweight and | ||
| efficient and therefore appropriate for small embedded routers. |
There was a problem hiding this comment.
nit: the PR body says the content matches routing feed master apart from the bird3cl title fix and the PKG_CPE_ID addition, but this is a third delta: all four description blocks (lines 53-96) were re-indented from column 0 to two spaces relative to bird3/Makefile on routing master. PKG_LICENSE_FILES:=README on line 15 is likewise not in the feed's version.
The re-indent is harmless — BuildPackVariable in package-pack.mk normalises leading whitespace before emitting Description:, and two spaces is the dominant style for description blocks in this feed — but a line in the commit message would save the next reviewer from diffing against the feed to work out whether it was deliberate.
Generated by Claude Code
openwrt-ai
left a comment
There was a problem hiding this comment.
Reviewed the changes since 796b013 (my last review): the amended db00dc1 plus one new commit c5adeb0. Both deltas are exactly the points raised last round, and both are correct:
conffilesnow lists only/etc/bird.conf, matching whatPackage/bird3/installactually ships.test-version.shgained the#!/bin/shshebang, the# shellcheck shell=busyboxline and the$PKG_NAMEdispatch that the othertest-version.shfiles in this feed use, and it usesgrep -Frather thangrep -q, so the matched version line stays visible in the CI log. Routing thebird3c/bird3clarms throughbird --versionis fine —bird3is a hard dependency of both clients — and the inline comment documents why.
Commit checks: both commit messages match their diffs (c5adeb0 touches nothing beyond the two conffiles lines it describes), so no findings there. Nothing here blocks a merge; one series-hygiene nit inline.
CI on c5adeb0: all three FormalityCheck jobs pass, 9 of 10 arch builds are green and riscv64_generic was still running at review time — nothing failed, so no CI-grounded comments.
Still unverified from here, same as last round: whether the 3.3.2 tarball carries a top-level README for PKG_LICENSE_FILES:=README — bird.nic.cz is unreachable from this environment (proxy returns 403). The open thread on Makefile line 57 about noting the routing-feed deltas (PKG_LICENSE_FILES, description re-indent) in the commit message is unaddressed and still applies.
Generated by Claude Code
| TARGET_LDFLAGS += -latomic | ||
|
|
||
| define Package/bird3/conffiles | ||
| /etc/bird.conf |
There was a problem hiding this comment.
nit (optional): c5adeb0 only removes two lines that db00dc1 added earlier in the same series — /etc/bird4.conf and /etc/bird6.conf have never existed in this tree, since net/bird3/ is new in this PR. Squashing the two commits leaves a single self-contained "bird3: add new package" commit and avoids a bisect point where the package registers conffiles for files it never installs, which is how the test-version.sh fix from the last round was already handled.
The end state of the block is right: Package/bird3/install ships only /etc/bird.conf, and files/bird.init passes only -c /etc/bird.conf.
Generated by Claude Code
|
So what's the order here? Do we merge these into packages and then remove them in the routing feed afterwards? Also, if you're planning to merge openwrt/routing#1193 having |
|
|
||
| PKG_NAME:=bird3 | ||
| PKG_VERSION:=3.3.2 | ||
| PKG_RELEASE:=1 |
There was a problem hiding this comment.
This is lower than the package in the routing feed, we should bump it to the same version.
BIRD is an internet routing daemon with support of modern routing protocols (BGP, OSPF, RIP, Babel) for IPv4 and IPv6. This is the 3.x branch, a multithreaded rewrite. Moved from the openwrt/routing feed, as discussed in openwrt/routing#184. Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
/etc/bird4.conf and /etc/bird6.conf are left over from the bird1 packages, which shipped a separate configuration file per address family. bird3 is a single daemon handling both and installs /etc/bird.conf only, so the two entries refer to files this package never creates. Reported-by: openwrt-ai[bot] Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Formality Check: Suggestions AvailableWe checked this pull request against the contribution guidelines. Here is what needs your attention:
|
The package has been moved to the openwrt/packages feed, as discussed in openwrt#184. See openwrt/packages#30166. Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Adds bird3 from the openwrt/routing feed — the routing packages are being moved into openwrt/packages one by one, as discussed in openwrt/routing#184.
Includes the bird3cl title fix and PKG_CPE_ID addition pending in openwrt/routing#1193.
The content matches the current routing feed master. Once this is merged, the package will be removed from the routing feed (a coordinated removal PR is prepared there).
Maintainer: @tohojo, @PolynomialDivision