Skip to content

ci: pin Nuitka to 4.1.3 - #601

Open
FelipeDefensor wants to merge 1 commit into
devfrom
ci/pin-nuitka-4.1.3
Open

ci: pin Nuitka to 4.1.3#601
FelipeDefensor wants to merge 1 commit into
devfrom
ci/pin-nuitka-4.1.3

Conversation

@FelipeDefensor

@FelipeDefensor FelipeDefensor commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Carries the pin from the v0.6.5 release branch over to dev, so the next release build does not walk into the same wall.

What happened

The first v0.6.5 build compiled cleanly on every platform and then failed the smoke test on Linux and both macOS runners — the executable dies at startup:

File ".../music21/bar.py", line 211, in <module music21.bar>
AttributeError: module 'music21.repeat' has no attribute 'RepeatMark'

music21.bar reads repeat.RepeatMark at module level while music21.repeat is still initialising. CPython's import ordering resolves that; Nuitka 4.2.1's does not.

Why it is Nuitka and not us

The build dependency group had no upper bound, so CI moved from 4.1.3 to 4.2.1 on its own. Comparing the last green build with the failing one:

v0.6.4 (2026-07-28, green) v0.6.5 (2026-09-05, red)
music21 10.5.0 10.5.0
PySide6 6.9.3 6.9.3
Nuitka 4.1.3 4.2.1

And the crashing import chain (qtuiparsers.csv.harmonymusic21) is untouched between the two tags: v0.6.5 changes five files under tilia/, none of them in tilia/parsers/.

Scope

[build-system] requires is deliberately left alone — that Nuitka only ever exists in the isolated PEP 517 environment for pip install -e ., while scripts/deploy.py compiles with the one from the build group.

The rebuild on the release branch, with 4.1.3 pinned, is what confirms this;
at the time of writing it is still running. If it comes back red this PR
should wait, since the pin would then not be the whole story.

The v0.6.5 build compiled cleanly on every platform and then failed the
smoke test on Linux and both macOS runners: the executable dies at
startup with

    File ".../music21/bar.py", line 211, in <module music21.bar>
    AttributeError: module 'music21.repeat' has no attribute 'RepeatMark'

music21.bar reads repeat.RepeatMark at module level while music21.repeat
is still initialising. CPython's import ordering resolves that; Nuitka
4.2.1's does not.

The dependency group had no upper bound, so CI moved from 4.1.3 to 4.2.1
on its own. Nothing else changed: v0.6.4 built green on 2026-07-28 with
the same music21 10.5.0 and the same PySide6 6.9.3, and the import chain
that crashes (qtui -> parsers.csv.harmony -> music21) is untouched
between the two tags -- v0.6.5 changes five files in tilia/, none of them
under tilia/parsers/.

Pin the version that is known to produce a working executable. Left
[build-system] requires alone: that Nuitka only ever exists in the
isolated PEP 517 environment for `pip install -e .`, while deploy.py
compiles with the one from this group.
@azfoo

azfoo commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

This is fixed in the velopack branch

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