Warning: Permanently added '3.91.55.103' (ED25519) to the list of known hosts. You can reproduce this build on your computer by running: sudo dnf install copr-rpmbuild /usr/bin/copr-rpmbuild --verbose --drop-resultdir --srpm --task-url https://copr.fedorainfracloud.org/backend/get-srpm-build-task/11203654 Version: 1.10 PID: 11983 Logging PID: 11985 Task: {'appstream': False, 'background': False, 'build_id': 11203654, 'chroot': None, 'distributions_in_build': [], 'distributions_in_project': ['alma-kitten+epel-10', 'epel-10', 'epel-9', 'fedora-43', 'fedora-44', 'fedora-45'], 'package_name': None, 'project_dirname': 'daily', 'project_name': 'daily', 'project_owner': '@meshtastic', 'repos': [], 'sandbox': '@meshtastic/daily--vidplace7', 'source_json': {'clone_url': 'https://github.com/meshtastic/firmware.git', 'committish': '95ff510f476e238f60c96d0debb355b2fba69449', 'spec': '', 'srpm_build_method': 'rpkg', 'subdirectory': '', 'type': 'git'}, 'source_type': 8, 'submitter': 'vidplace7', 'task_id': '11203654'} Running: git clone https://github.com/meshtastic/firmware.git /var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware --depth 500 --no-single-branch --recursive cmd: ['git', 'clone', 'https://github.com/meshtastic/firmware.git', '/var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: Submodule path 'meshtestic': checked out 'dcac7e5673005f4d8a2b1f0f6e06877b689d7519' Submodule path 'protobufs': checked out '8d0ed0c135f91ad1d6f9c60bc341277d64946bce' stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware'... Submodule 'meshtestic' (https://github.com/meshtastic/meshTestic) registered for path 'meshtestic' Submodule 'protobufs' (https://github.com/meshtastic/protobufs.git) registered for path 'protobufs' Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware/meshtestic'... Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware/protobufs'... Running: git checkout 95ff510f476e238f60c96d0debb355b2fba69449 -- cmd: ['git', 'checkout', '95ff510f476e238f60c96d0debb355b2fba69449', '--'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware rc: 0 stdout: stderr: Note: switching to '95ff510f476e238f60c96d0debb355b2fba69449'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 95ff510f4 feat(beacon): per-target and offered frequency slots (#12126) Generated rpkg config: [rpkg] preprocess_spec = True [git] anon_clone_url = https://github.com/%(repo_path)s [lookaside] download_url = https://${git_props:remote_netloc}/repo/pkgs/%(repo_path)s/%(filename)s/%(hashtype)s/%(hash)s/%(filename)s Writing config into /var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/.config/rpkg.conf Running: rpkg srpm --outdir /var/lib/copr-rpmbuild/results --spec /var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware cmd: ['rpkg', 'srpm', '--outdir', '/var/lib/copr-rpmbuild/results', '--spec', '/var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware rc: 0 stdout: Wrote: /var/lib/copr-rpmbuild/results/meshtasticd.spec setting SOURCE_DATE_EPOCH=1792886400 Wrote: /var/lib/copr-rpmbuild/results/meshtasticd-2.8.2-14901.daily.git95ff510f4.src.rpm RPM build warnings: stderr: git_dir_pack: archiving /var/lib/copr-rpmbuild/workspace/workdir-rxxc6y3c/firmware: commit 95ff510f476e238f60c96d0debb355b2fba69449 (HEAD, origin/develop, origin/HEAD, develop) Author: Thomas Göttgens Date: Sat Oct 24 18:41:20 2026 +0000 feat(beacon): per-target and offered frequency slots (#12126) * feat(beacon): per-target and offered frequency slots Implements the slot fields from meshtastic/protobufs#1059 on top of the broadcast_targets scheme from #11646: - BroadcastTarget.frequency_slot pins a target's slot. Unset derives it the way a node on that channel would: the target region's override slot, else the hash of the target channel's name on the target preset. A target on the home radio keeps the home slot. A pin the target region does not hold skips the target. The deprecated ChannelSettings.channel_num is no longer read, and the home node's channel_num no longer leaks into other presets. - broadcast_offer_frequency_slot is advertised as MeshBeacon.offer_frequency_slot only when a receiver could not derive it. An offer pinned to a slot its region lacks is withheld; the text still goes out. - The listener keeps a received offer's slot. - Admin clears slot 0, and a slot past an explicit region and preset. - userPrefs: USERPREFS_MESH_BEACON_OFFER_FREQUENCY_SLOT and USERPREFS_MESH_BEACON_TARGET__FREQUENCY_SLOT. Also from #11662: - A beacon is addressed at its target's channel index, so perhapsEncode() keys it like any other packet; the primary channel is never overwritten. The TX hook writes the target preset's channel hash for a blank-named channel on another preset. - A beacon whose send() did not queue releases its target entry on every failure, not only ERRNO_SHOULD_RELEASE. - A beacon still queued a broadcast interval after it was armed, or whose entry was evicted from a full table, is dropped at TX instead of going out on the home radio. Supersedes #11662. Co-authored-by: Tom <116762865+NomDeTom@users.noreply.github.com> * fix(beacon): address review of frequency slots - TX gate checks the target preset against its region or EU sibling, not the home slot - Targets and offers run an EU sibling's preset in that sibling, as the switch does - Switch clears override_frequency and restores tx_power; restore keeps fields edited mid-switch - An unusable channel_index skips the target instead of falling back to the primary - Beacon config validation moved to MeshBeaconModule::sanitizeConfig(), also run on load; message cap no longer ends mid-character - Evicted-id ring sized to the TX queue * fix(radio): frequencySlotCount() reports no slots for UNSET UNSET's table span is a placeholder; an unknown region code resolves to it too. * fix(beacon): slot count and restore for custom bandwidth - frequencySlotCount() counts a custom bandwidth wider than the region at the region default, as the clamp runs it - resolveFrequencySlot() falls back to the hash when the region override slot exceeds the count - The beacon switch restores a custom bandwidth applyModemConfig() clamped for the target region * fix(beacon): run a target's named preset on a node with custom modem params The switch sets use_preset for a target that names a preset and restores it after TX. A target naming no preset keeps the custom params. * fix(beacon): keep an out-of-range target channel_index sanitizeConfig() cleared has_channel_index for an index past the channel table. That turns the entry into an unset-index target, and sendBeacon() sends those on the primary channel - under a name and key the operator never named. sanitizeConfig() now also runs from loadFromDisk(), so a stored or userPrefs index did that at every boot, not only on the write that set it. Keep the index and only warn. sendBeacon() already bounds-checks it against channels.getNumChannels(), which is tighter than MAX_NUM_CHANNELS, before getByIndex(), and skips the target - so nothing can index out of bounds, which is what the clear was there for. test_adminValidation_targetChannelIndexOutOfRange_isCleared becomes _isKeptAndSkipped: the index survives the write, and the stored config emits no beacon rather than one on the primary. Reported by NomDeTom on #12126. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01SwNPp17REf1c9je42aWyJa --------- Co-authored-by: Tom <116762865+NomDeTom@users.noreply.github.com> Co-authored-by: Jonathan Bennett Co-authored-by: Claude Opus 5 git_dir_pack: Wrote: /var/lib/copr-rpmbuild/results/firmware-95ff510f.tar.gz warning: Downloading https://github.com/meshtastic/web/releases/download/v2.6.7/build.tar to /var/lib/copr-rpmbuild/results/build.tar Downloading https://github.com/meshtastic/web/releases/download/v2.6.7/build.tar to /var/lib/copr-rpmbuild/results/build.tar Output: ['firmware-95ff510f.tar.gz', 'build.tar', 'meshtasticd.spec', 'meshtasticd-2.8.2-14901.daily.git95ff510f4.src.rpm'] Running SRPMResults tool Using distributions_in_project for this build. Extracting arch-specific tags for alma-kitten+epel-10 Extracting arch-specific tags for epel-10 Extracting arch-specific tags for epel-9 Extracting arch-specific tags for fedora-43 Extracting arch-specific tags for fedora-44 Extracting arch-specific tags for fedora-45 Package info: { "architecture_specific_tags": { "alma-kitten+epel-10": {}, "epel-10": {}, "epel-9": {}, "fedora-43": {}, "fedora-44": {}, "fedora-45": {} }, "name": "meshtasticd", "epoch": null, "version": "2.8.2", "release": "14901.daily.git95ff510f4" } SRPMResults finished