Skip to content

Conversation

@gemenerik
Copy link
Member

When the nRF51 bootloader reports a dirty build (bit 0x80 set in the version data), cflib constructed a version string ending in bare "+", e.g. "2024.1.0+". This is invalid PEP 440 and causes packaging.version.Version() to raise an error during flashing.

This likely started failing when the packaging library tightened its PEP 440 validation in a newer release.

Reproducible with any Crazyflie running custom-built nRF51 firmware (which sets the dirty bit). Fix changes the suffix from "+" to "+dirty" which is valid PEP 440.

Tested by flashing a Crazyflie with dirty nRF51 bootloader firmware.

When the nRF51 bootloader reports a dirty build (bit 0x80 set in the
version data), cflib constructed a version string ending in bare "+",
e.g. "2024.1.0+". This is invalid PEP 440 and causes
packaging.version.Version() to raise an error during flashing.

This likely started failing when the packaging library tightened its
PEP 440 validation in a newer release.

Reproducible with any Crazyflie running custom-built nRF51 firmware
(which sets the dirty bit). Fix changes the suffix from "+" to "+dirty"
which is valid PEP 440.

Tested by flashing a Crazyflie with dirty nRF51 bootloader firmware.
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes an invalid PEP 440 version string emitted when the nRF51 bootloader reports a “dirty” build, preventing packaging.version.Version() from raising during flashing.

Changes:

  • Change the nRF51 “dirty” suffix from a bare + to +dirty to produce a PEP 440-valid local version segment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

The bootloader's VERSION_DIRTY flag doesn't only mean uncommitted
changes; it's set for any non-release build, including commits ahead
of the latest tag or release candidate tags. "+dev" better reflects
that.
@gemenerik
Copy link
Member Author

Second commit renames the suffix from +dirty to +dev. The bootloader's VERSION_DIRTY flag gets set for any non-release build (commits past the latest tag, RC tags, or uncommitted changes), not just dirty working trees, so +dev is more accurate.

Copy link
Member

@ArisMorgens ArisMorgens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants