potiuk opened a new issue, #65772:
URL: https://github.com/apache/airflow/issues/65772

   ## Background
   
   PR #65771 adds `check_flit_worktree_compatibility` to 
`dev/breeze/src/airflow_breeze/prepare_providers/provider_distributions.py`. 
The check refuses to build provider sdists when the source tree is a git 
worktree, because two related things go wrong otherwise and no warning is 
emitted:
   
   1. **flit worktree detection bug.** `flit.vcs.identify_vcs` only checks 
`.git.is_dir()`, missing the `.git`-as-file pointer that git uses for worktrees 
and submodules. flit silently falls back to a non-VCS sdist that omits tracked 
files (`docs/`, `tests/`, `provider.yaml`, anything declared in 
`[tool.flit.sdist] include`), and the resulting packages fail reproducibility 
checks against the released sdists on dist.apache.org.
   2. **Breeze Docker-mount case.** Even once flit is fixed, when Breeze runs 
the build inside Docker only the worktree directory is bind-mounted — the 
absolute `gitdir:` path baked into the worktree's `.git` file references the 
main repo's `.git/worktrees/<name>` directory on the host, which is not 
reachable from the container. `git ls-files` then fails or misbehaves.
   
   Upstream flit tracking:
   
   - Issue: https://github.com/pypa/flit/issues/798
   - PR: https://github.com/pypa/flit/pull/799
   
   ## What to do when this issue is actioned
   
   Once **both** of the following hold:
   
   - [ ] The flit fix (pypa/flit#799) is merged and released.
   - [ ] Airflow's constraints pin to a flit release that contains the fix, 
**and** the Breeze Docker image is rebuilt to include that version.
   
   …and the Docker-mount case has been addressed (either by mounting the main 
repo's `.git/worktrees/<name>` directory alongside the worktree, or by 
rewriting the `gitdir:` pointer when sources are staged into the container, or 
by deciding the Docker-mount path is not supported from worktrees), remove:
   
   - `check_flit_worktree_compatibility` in 
`dev/breeze/src/airflow_breeze/prepare_providers/provider_distributions.py`
   - Its call site in 
`dev/breeze/src/airflow_breeze/commands/release_management_commands.py`
   - Its tests in `dev/breeze/tests/test_provider_distributions.py`
   
   If only the flit fix lands but the Docker-mount case is still broken, the 
check must stay (or be narrowed to the Docker case only) — the 
silent-incomplete-sdist failure is severe enough that we should not let a 
release train run into it unguarded.
   
   ## Acceptance criteria
   
   - [ ] Provider sdists built from a `git worktree add ...` directory via 
`breeze release-management prepare-provider-distributions --distribution-format 
sdist` match byte-for-byte with sdists built from a plain `git checkout` of the 
same commit.
   - [ ] The same command run inside Breeze's Docker container from a worktree 
either succeeds with matching sdists or produces a clear, explicit error (not a 
silent incomplete tarball).
   - [ ] `check_flit_worktree_compatibility` removed and PR #65771's test 
coverage deleted along with it.
   
   ## Related
   
   - PR #65771 — where the workaround lives.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to