On Mon, Mar 16, 2026, at 8:01 AM, Lucas Nussbaum wrote:
> On 16/03/26 at 00:23 +0100, kpcyrd wrote:
>> Cool project, I also noticed some common error cases (replying to this email
>> to keep the debian-devel@ discussion in one thread):
>> 
>> > 290 - uscan did not produce an orig tarball with matching name
>> 
>> This seems to be a problem with +dfsg style version suffixes
>> 
>> https://debaudit.debian.net/upstream2orig/result/319e02fb7513c475b0c1412bfb63074251403e254b5e1c5d29e0611af45614a3
>
> This can be avoided by using e.g.
> Dversion-Mangle: s/(\d{2})\.(\d{2})\+dfsg$/$1$2/
> Oversion-Mangle: s/(\d{2})(\d{2})$/$1.$2+dfsg/
> as in:
> https://debaudit.debian.net/upstream2orig/result/f8058dc07cdeb8b085b415704541db653ad9e11aafa75af72a3833d10c2892ad
>
> this was found by searching for 'dfsg" in 
> https://debaudit.debian.net/upstream2orig/
> and then filtering on successful results;

for packages created with recent debcargo, this should already be handled 
correctly:

Filenamemangle: s/.*\/(.*)\/download/taskchampion-$1\.tar\.gz/g
Uversionmangle: s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\.?\d*)$/$1~$2/
Dversionmangle: s/@DEB_EXT@//g
Compression: gzip
Repack: yes
Repacksuffix: +dfsg

creates tarballs via uscan with the expected name

>> > 720 - archive tarball fully included in generated tarball
>> 
>> This is "normal" when excluding files that can't be uploaded to Debian,
>> maybe this should be yellow instead of red?
>> 
>> https://debaudit.debian.net/upstream2orig/result/c588756e9a693dc423bacd81fa8f2cf6d6f13af442836747f391267f3d28f717
>
> It means that the exclusion of such files is not properly automated in
> debian/watch or debian/copyright, but instead done manually(?)

this is handled correctly by recent debcargo as well, with one caveat - d/watch
is almost never manually overridden, d/copyright always is - so if you forget
to update the latter with the matching `Files-Excluded` stanza, then uscan and
debcargo might still disagree which files should be excluded.

I'll see about improving debcargo or the team wrapper scripts to emit a warning
or error in this case, since it is easy to detect (there is a 1:1 mapping
between debcargo.toml `excludes` and d/watch `Files-Excluded` after all).

in general, the expected diff between uscan tarballs and debcargo tarballs is
none without repacking (obviously), and some null-bytes at the end with
repacking (uscan removes files with `tar --delete` via mk-origtargz, debcargo
uses Rust tar bindings to create a new archive).

I've just verified this is the case by updating one of the existing crate
packages with excludes. it will take a while until all the existing, not yet
correct packages are regenerated though, unless somebody in the team runs a
targeted campaign of mass uploads.

debaudit/upstream2orig was the required "kick in the ass" to fix these issues
on the debcargo side btw, and is much appreciated :)

>> > 330 - failed to guess tag
>> 
>> It seems it's searching for a git tag in
>> https://salsa.debian.org/rust-team/debcargo-conf.git, but this repo only
>> contains configuration for the debian-rust tooling.
>> 
>> https://debaudit.debian.net/git2dsc/result/4317d143808217889eeb13c6c0fa5ea0d6c97aab09bb9f308facc028639b27c8
>
> The Rust team uses Vcs-Git with sub-dirs. In the above case:
> Vcs-Git: https://salsa.debian.org/rust-team/debcargo-conf.git 
> [src/ratatui-widgets]
> debaudit correctly handles this, see for example
>
> However the team does not tag releases, so there's no way for debaudit
> to reliably find the relevant commit.
>
> A related case is the Haskell team, that also uses a single repository
> with subdirs, but tags releases, so debaudit works:
> https://debaudit.debian.net/git2dsc/result/455e8bec15cacd42f5f3e6a66a9c9e98d61f40c7bfd925cb7f2369adc75f3e3c

AFAIR, the haskell team also keeps the full source package in git. we don't,
we only track the input for debcargo (including overridden and additional
contents of the debian/ dir, if needed). we've discussed a few times whether it
would make sense to keep the full thing in git, also for easier diffing - but
it would require extra handling of generated vs. overridden parts, so we don't
for now.

unless/until we do, the only way this would work is if git2dsc would call our
./repackage.sh script with the crate name, which in turn calls debcargo to
create an unpacked source package. AFAICT, just adding tags on our end would
not be enough.

IIRC, in the haskell team, the tag signifies "this package has been uploaded
and ACCEPTed". in our flow, this is signified by a commit that *only* finalizes
the changelog entry, and is pushed when uploading, and merged when accepted.
adding a tag to this process (either when uploading, or when merging) would be
trivial, since those commits are already machine-generated anyway. we could
likely even synthesize them going backwards in history.

Fabian

Reply via email to