[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Packages with /outdated/ packaging style



On 28/12/15 at 14:24 +0100, Bastien ROUCARIES wrote:
> *On Sat, Dec 26, 2015 at 12:20 PM, Lucas Nussbaum <lucas@debian.org> wrote:
> > Hi,
> >
> > Following my blog post yesterday with updated graphs about Debian
> > packaging evolution[1], I prepared lists of packages for each kind of
> > "outdatedness". Of course not all practices highlighted below are
> > deprecated, and there are good reasons to continue to do some of them.
> > But still, given that they all represent a clear minority of packages, I
> > thought that it would be useful to list the related packages.  (I
> > honestly didn't know if some of my packages would show up in the lists!)
> >
> > [1] http://www.lucas-nussbaum.net/blog/?p=891
> >
> > The lists are available at https://people.debian.org/~lucas/qa-20151226/
> >
> > I also pushed them to alioth, so you can either do:
> >   ssh people.debian.org 'grep -A 10 YOURNAME ~lucas/public_html/qa-20151226/*ddlist'
> > or:
> >   ssh alioth.debian.org 'grep -A 10 YOURNAME ~lucas/qa-20151226/*ddst'
> >
> > the meaning of the lists is:
> 
> Could you open a bug under lintian, with the code you use (snippet). I
> will add pedantic warning

Actually, adding checks to lintian for that kind of things was discussed
a long time ago, and was declined. That's why I did it outside lintian.
But I'm very happy that you are willing to add checks for this stuff to
lintian! :-)

My (quick and dirty) code is at
http://anonscm.debian.org/cgit/collab-qa/dhistory.git/tree/parse.rb#n146

> > qa-helper_classic_debhelper.txt (3647 packages)
> >
> >    The package is still using "classic" debhelper (no dh, no CDBS).
> 
> How do you check ?

The relevant code is:
    # helper
    res['pkghelper'] = []
    if dsc =~ /debhelper/ or File::exists?("#{sdir}/debian/compat")
      res['pkghelper'] << 'debhelper'
      if rules =~ /\sdh\s/
        res['pkghelper'] << 'dh'
      end
      if dsc =~ /cdbs/ or rules =~ /cdbs/
        res['pkghelper'] << 'cdbs'
      end
    else
      res['pkghelper'] << 'no-debhelper'
    end

> > qa-helper_not_debhelper.txt (144 packages)
> >
> >    The package is not using debhelper (nor dh, nor CDBS).
> 
> How do you check ?

see above

> > qa-patch_dpatch.txt (170 packages)
> >
> >    The package is using dpatch.
> 
> How do you check ?

Relevant code:
    # patch system
    res['patch'] = []
    if res['format'] == '3.0 (quilt)'
      res['patch'] << '3.0 (quilt)'
    elsif res['format'] == '1.0'
      if File::exists?("#{sdir}/debian/patches/series") and rules =~ /quilt/
        res['patch'] << 'quilt'
      end
      if File::exists?("#{sdir}/debian/patches/00list") and rules =~ /dpatch/
        res['patch'] << 'dpatch'
      end
      if rules =~ /simple-patchsys.mk/
        res['patch'] << 'simple-patchsys'
      end
      if res['patch'] == [] and File::exists?("#{sdir}/debian/patches/")
        res['patch'] << 'other'
      end
      if diffgz and `zcat #{diffgz} | lsdiff --strip 1 | grep -v ^debian`.chomp != ""
        res['patch'] << 'modified-files-outside-debian'
      end
    end

> > qa-patch_modified-files-outside-debian.txt (1156 packages)
> >
> >    The package has modified files outside the debian/ directory (not tracked
> >    using patches).
> 
> How do you check ?

See above

> > qa-patch_more_than_one.txt (201 packages)
> >
> >    The package uses more than one "patch system". In most cases, it means that
> >    the package uses a patch system, but also has files modified directly outside
> >    of debian/.
> >
> > qa-patch_other.txt (51 packages)
> 
> How do you check ?

For "more_than_one", the trick is that the above code can match several patch
systems.

> >    The package has patches, but uses an unidentified/unknown patch system.
> >
> > qa-patch_quilt.txt (445 packages)
> >
> >    The package uses quilt (with 1.0 format, not 3.0 format).
> 
> How do you check ? Depend on quilt ?

No:
  if File::exists?("#{sdir}/debian/patches/series") and rules =~ /quilt/

but "debian/patches/series exists + depends on quilt" would be a more accurate
check.

> > qa-patch_simple-patchsys.txt (129 packages)
> >
> >    The package uses simple-patchsys.
> 
> How do you check ?

      if rules =~ /simple-patchsys.mk/

> > qa-vcs_but_not_git_or_svn.txt (290 packages)
> >
> >    The package is maintained using a VCS, which is not either Git or SVN.
> 
> This one is really bellow pedantic...
> 
> > qa-vcs_more_than_one_declared_vcs.txt (1 package)
> >
> >    The package declares more than one VCS.
> >
> How do you check ?

Relevant code:
    res['vcs'] = control.lines.grep(/^(XS-)?Vcs-/i).map { |l| l.chomp.gsub(/^(XS-)?Vcs-([^:]+):.*$/i, '\2').downcase }.uniq - ['browser', 'browse']

(I will open a lintian bug pointing to that discussion)

Lucas


Reply to: