On Thu, Dec 08, 2022 at 12:45:29AM +0100, gregor herrmann wrote:
> Package: duck
> Version: 0.14.0
> Severity: grave
> Justification: renders package unusable
> X-Debbugs-Cc: p...@packages.debian.org

> As of today, duck (called in any source package directory) fails with
> 
> Can't close(GLOB(0x558bebc05958)) filehandle: 'Is a directory' at 
> /usr/share/duck/lib/checks/patch_files.pm line 101'
> 
>     92                # iterate over all patchdirs, process all files found
>     93                foreach my $patchdir (@patchdirs) {
>     94                    my $dirhandle = dir($patchdir)->open;
>     95        
>     96                    while (my $patchfile = $dirhandle->read) {
>     97                        open my $pf, "<", $patchdir . "/" . $patchfile;
>     98        
>     99                        my @pf_raw = <$pf>;
>    100        
>    101                        close($pf);
> 
> This may or may not be caused by a recent change in src:perl [0], hence
> cc'in the perl maintainers

Thanks. It's definitely that change, but I think the bug is in duck.
The above code is treating directories as plain files under autodie,
so bailing out seems warranted. Earlier it just failed silently.

A straightforward fix would be inserting something like

    next if -d $patchdir . "/" . $patchfile;

on line 97 or so (but using File::Spec->catfile() would feel cleaner
to me.)

Baptiste: please let us know if/when duck is fixed so we can add a
suitable Breaks entry on the perl side. (And obviously let us also know
if you disagree about the bug :)

BTW it seems like duck could use an autopkgtest test suite so things
like this would be detected automatically.
-- 
Niko Tyni   nt...@debian.org

Reply via email to