[Piuparts-devel] Pending mass bug filing for broken symlinks detected by piuparts
Andreas Beckmann
anbe at debian.org
Sun Jun 2 22:08:30 UTC 2013
On 2013-06-02 20:26, Dave Steele wrote:
> On Sun, Jun 2, 2013 at 9:54 AM, Andreas Beckmann <anbe at debian.org> wrote:
>> So let's dig into the lists (only the .csv you sent is usable),
>
> So you retried the spreadsheet after I changed permissions, with no
> success? It sure would be great if you could resolve some of these
> issues directly with less discussion needed.
the google docs spreadsheet still wants a login
>> Tag: broken-symlink-libdevel-so
>> Severity: serious
>> Broken link: /usr/lib/libFOOBAR.so -> libFOOBAR.so.42
>> Problem: libFOOBAR-dev package with libFOOBAR.so link misses
>> Depends:libFOOBAR42
>> Reason: forgotten dependency
>> Reason: multiple libraries built from src:FOO, maybe split into
>> separate packages after some time, but the (single) -dev
>> package was not adjusted to depend on all packages
>
> So what you've really described here is the case of
> broken-symlink-libdevel-so-forgotten-dependency, to be joined by
> broken-symlink-libdevel-so-expects-recommends and many other brethren,
> right?
>
> If I can change this 'Reason' in the category definition to say
> something like "forgotten dependency, missing Recommends, or link to
> reverse dependency", pointing to a category broad enough to cover all,
> we may be fine.
I don't think Recommends are a useful relation for -dev packages, for
the 2 packages I looked at this is clearly a missing Depends.
> Otherwise, we may have a flat out disagreement here. The bug filing
> has a responsibility to verify that the problem exists, that it is
> assigned to the proper package, and that the severity is correct. For
> these shared library issues, that can be satisfied by verifying that
> the package created the symlink (I believe this is done), that it
> sources from global shared library directory (need to verify link vs.
> target here), and that the symlink is broken (piuparts does a fine job
> at that). The bug filing does not need to have a requirement to go
> into further analysis of the mechanism of the breakage, or to point to
> the particular related package involved with the problem (if there is
> one), especially if that requires manual research on EACH OF 86
> PACKAGES. If it can be automated without too much trouble, that is
> another question, that I'll look into a bit.
since you know the broken symlink, you know the expected target file and
can look this up in the Contents file
grep "$(python -c 'import os,sys; print
os.path.normpath(os.path.join(os.path.dirname(sys.argv[1]),
sys.argv[2]))[1:]' $link $target) " /tmp/Contents-sid-main-amd64
that's a one-liner, you can even filter it through
| awk '{ print $2 }' | cut -d/ -f2
to get the binary package name (that last part does not work cleanly if
the file is provided by more than one package, but that should be rare)
Using perl+sed for parsing the .csv and using a sh loop over all broken
links is left as an excercise to the reader.
>> And for filing a serious bug, a manual inspection of the package should
>> be made, and as a result we should be able to mention the missing
>> dependency in this case.
>
> Disagree. I think we can trust that piuparts identified the right
> package, for cases in sid-fail-broken-symlinks where the broken
> symlink appears only once, and also that it is not a requirement to
> identify the missing dependency/reverse dependency/recommends in the
> bug filing.
>
> I have gone beyond this, by inspection at the spreadsheet level that
> the symlink ownership by the package 'makes sense'. You've pointed out
> below that a toolchain could be responsible. Spreadsheet-level
> inspection is a reasonable filter for catching these.
>
> Yes, it is possible for there to be cases in THE 86 PACKAGES that the
> expertise of the maintainer will be involved in targeting the
> ultimately right package. I do not believe that is inappropriate.
>
> Perhaps we need a mechanism for arbitrating this? Or a plan that
> recognizes that I am not up for doing this for 86 PACKAGES. Otherwise
> we could be looking at another brick wall.
>
> As a separate issue, this raises additional questions on how you wish
> to list the maintainers section. That remains open.
>
>> That seems to cover most of the broken links in /usr/lib, and I fully
>> agree to file them as serious.
>> I would be a bit more careful with broken links in "package specific"
>> directories like /usr/lib/PACKAGE/, but if a missing dependency is
>> obvious, that should be serious as well.
>>
>
> Ok. I'll look harder at that.
>
>>
>> Looking at xmanpages-ja from your list, that is also serious:
>>
>> /usr/share/man/ja/man3/XLockDisplay.3.gz -> XInitThreads.3x
>>
>> the link target is missing the .gz extension (and policy says somewhere
>> that links to compressed files must have the same extension)
>>
>
> Ok, will research. That would be the second category, in my book.
>
>> rebuilding in sid fixes this issue
>
> Guaranteed? Only if dh_installman is doing the work, right? Is this
> because dh_installman changed behavior recently? Otherwise, more
> explanation please.
I tried it. rebuild-in-sid is a handy local script (all it does is
apt-get source && pbuilder build with appropriate options).
>> there are lots of broken links to jquery.js and friends - please
>> investigate, this may be a toolchain bug, too (or a "missed" transition)
>> (this should be analyzed in stable, too)
>
> I did look at this, for at least a sampling of cases. jquery was a
> recommended package.
maybe we should verify the documentation related ones with
--install-recommends
>> * a bug should be filed for xmanpages-ja, no d-d discussion needed,
>> intent-to-NMU
>
> Will prepare bug(s). I don't intend to NMU (can't actually - you want
> this?). xmanpages-ja will still come up again at the 'normal'
> conversation.
I'll NMU if needed, not sure if the maintainer is still active.
>> * we should have a specific d-d discussion about filing broken .so
>> symlinks in -dev packages as serious - how many would that be?
>
> Glad you asked :-). 82 BINARY PACKAGES, 66 source at last count.
>
> Sorry, you said -dev packages. I can't right now. Try grepping the csv
> on serious and -dev.
there should not be a big difference
>> Rationale: a -dev pkg that cannot be used to link against its library is
>> useless
>
> or more simply a violation of "Packages containing shared libraries
> must be constructed with a little care to make sure that the shared
> library is always available". A violation is a violation. Serious is
> serious. More nuance is not required.
-dev packages (Section: libdevel) don't contain shared libraries. The
provide only the .so link needed at link time to find the real shared
library ...
>> For the bug template:
>> Subject: $PKG: Broken .so symlink due to missing Depends: $DEP1,$DEP2,..
>>
>
> Per previous objection, I see this as
>
> Subject: $PKG: Broken .so symlink
getting the package providing the wanted file is easy :-)
Andreas
More information about the Piuparts-devel
mailing list