ripe-atlas: restore libopenssl dependency and migrate state from atlas-sw-probe - #8
Merged
Merged
Conversation
This reverts commit bf43fb1. The Atlas busybox links OpenSSL itself, it does not merely inherit it from the ssh tools: $ readelf -d usr/lib/ripe-atlas/measurement/busybox | grep NEEDED 0x00000001 (NEEDED) Shared library: [libcrypto.so.3] 0x00000001 (NEEDED) Shared library: [libssl.so.3] 0x00000001 (NEEDED) Shared library: [libc.so] openssh-client and openssh-keygen do pull libopenssl in today, which is why CheckDependencies stays quiet: .provides is accumulated over the whole dependency closure, so a transitively reachable libcrypto.so.3 satisfies the check just as well as a direct one. That makes the build agree with the drop, but it does not make the package correct - it now links a library it does not depend on, and the day openssh stops needing libopenssl ripe-atlas-common breaks at runtime instead of at build time. Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
ripe-atlas-probe provides atlas-sw-probe and ripe-atlas-common provides atlas-probe, so a router running the packages this one replaces resolves onto ripe-atlas on the next update. Provides only settles the dependency though, it does not carry any state across, and the two packages share nothing: atlas-sw-probe ripe-atlas-common /etc/atlas/probe_key /etc/ripe-atlas/probe_key /etc/atlas/probe_key.pub /etc/ripe-atlas/probe_key.pub /etc/config/atlas /etc/config/ripe-atlas user atlas (444) user ripe-atlas (445) A probe is identified by its ssh key. generic-ATLAS.sh generates a fresh one whenever $ATLAS_SYSCONFDIR/probe_key is missing, so as it stands every upgraded probe silently re-registers as a new one and drops its probe ID, its measurement history and its credits. There is no way back from that: the old ID stays bound to a key the probe no longer presents. Copy the key over on first start, tightening the private key to 0600 on the way - atlas-sw-probe kept it at 0644. An existing key is never overwritten, so this cannot disturb a probe that already registered. The old init script is stopped and disabled if it is still around. OpenWrt has no Replaces:, and the paths do not overlap, so nothing forces atlas-sw-probe out on a plain opkg upgrade; leaving it enabled would have two probes presenting the same key to the registration servers. Carry the uci settings across as well. Only the spelling of rxtxrpt changed; username has no counterpart and is dropped. Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
commodo
approved these changes
Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two follow-ups on top of your
ripe-atlas-followupbranch, targeted at it rather than at master so they land together with openwrt#30067.1. Keep the direct
libopenssldependencyThis reverts
ripe-atlas: drop redundant libopenssl. The Atlas busybox links OpenSSL itself, it does not just inherit it from the ssh tools:openssh-clientandopenssh-keygendo pulllibopensslin today, which is whyCheckDependenciesstays quiet -.providesis accumulated over the whole dependency closure, so a transitively reachablelibcrypto.so.3satisfies it. That makes the build agree with the drop, but the package now links a library it does not depend on, and the day openssh stops needinglibopensslthis breaks at runtime instead of at build time.2. Migrate probe key and config from
atlas-sw-proberipe-atlas-probeprovidesatlas-sw-probeandripe-atlas-commonprovidesatlas-probe, so an existing installation resolves onto ripe-atlas on the next update. That settles the dependency, but carries no state across, and the two packages share nothing:/etc/atlas/probe_key/etc/ripe-atlas/probe_key/etc/atlas/probe_key.pub/etc/ripe-atlas/probe_key.pub/etc/config/atlas/etc/config/ripe-atlasatlas(444)ripe-atlas(445)A probe is identified by its ssh key, and
generic-ATLAS.shgenerates a fresh one whenever$ATLAS_SYSCONFDIR/probe_keyis missing. As it stands, every upgraded probe silently re-registers as a new one and loses its probe ID, measurement history and credits, with no way back - the old ID stays bound to a key the probe no longer presents.The uci-defaults script copies the key over, tightening the private key to 0600 (atlas-sw-probe kept it at 0644), and carries the uci settings across. An existing key is never overwritten.
It also stops and disables the old init script if it is still present. OpenWrt has no
Replaces:, and the paths do not overlap, so nothing forcesatlas-sw-probeout on a plainopkg upgrade; leaving it enabled would have two probes presenting the same key to the registration servers. Happy to drop that hunk if you would rather not touch another package's init from here.Run tested
Turris 1.x build tree (OpenWrt 24.10,
mpc85xx/p2020,powerpc_8548, gcc 13.3.0, musl). Builds clean, and the resulting control file is back to:The migration script was exercised against a staged
/etc/atlasfor all three paths: migration (key copied 0600,rxtxrptmapped torxtx_report, old init stopped and disabled), fresh install (no-op), and an already-registered probe (existing key left untouched).Unrelated note on the LDFLAGS commit
I could not reproduce openwrt#30083 on 24.10, with or without
MAKE_FLAGS += LD=.... Without it the build still succeeds, andprobe-busybox/applets/.built-in.o.cmdshows what actually linked:So
LDstayed busybox's own$(CC) -nostdlibfromprobe-busybox/Makefile; OpenWrt'sLD="$(TARGET_LD)"fromTARGET_CONFIGURE_OPTSnever reached the busybox sub-make here, even thoughCCdid.LDFLAGSdoes carry-fuse-ld=bfdand-specs=, so it would certainly have failed hadld.bfdbeen used.The change is harmless either way, but on this tree it is a no-op, so whatever the reporter hit on snapshot with gcc 16.1 may have another cause. Worth a second look before the
Fixes:line goes in - and the other half of that issue, the wrapped//config:comments ineperd/evtdig.c, is not covered by this PR at all.