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

RF{C,H}: dh-make-perl



During SnowCamp and during our recent Sprint, I hacked a bit on
dh-make-perl. All the changes are in the post-buster branch, and I'd
like to upload a new release not long after the Buster release (i.e.
during DebCamp).

Some of the changes might profit from a review (of the code and/or
the result), and others are not finished / need help and
improvements, hence I'm giving a quick overview here:


0) Missing years in debian/copyright:

When dh-make-perl doesn't find upstream copyright years, write
| Copyright: <INSERT COPYRIGHT YEAR(S) HERE>, $author
i.e. add a placeholder instead of just writing nothing.

Rationale: this is one of the typical shortcomings I regularly see
when uploading packages.
    

1) debhelper:

Use "debhelper-compat (= 12)" in debian/control and no debian/compat
file anymore.


2) debian/watch:

Use version=4 and version/extension placeholders
(We've used version 3 mainly because of PET and PET is unfortunately
dead since the move from Alioth to Salsa.)

The generated d/watch files look like:

| version=4
| https://metacpan.org/release/Strange   .*/Strange-v?@ANY_VERSION@@ARCHIVE_EXT@$


3) Treat libmodule-build-using-pkgconfig-perl like libmodule-build-perl
   and libmodule-build-using-pkgconfig-perl

i.e. put it into Build-Depends


4) Versioned Provides
(Now it gets more complicated :))

Before we had versioned provides, we would write dependencies on
dual-lifed modules as
| perl (>= 5.x.y) | libfoo-bar-perl (>= x.y)
or 
| libfoo-bar-perl (>= x.y) | perl (>= 5.x.y)

dh-make-perl was never very good at that (and typically wrote just
"perl (>= 5.x.y)") but since we have versioned Provides, we just want
"libfoo-bar-perl (>= x.y)" anyway.

This seems to work but has at least one side effect: It currently
also adds dependencies for modules which have been in perl core since
forever. [0] I seem to remember that we had this discussion already
somewhere (with Dom asking about it?) but I don't remember where. In
general I think is not a problem and can also be helpful for future
cases of modules removed from perl core. - But this topic warrants
further thoughts and probably also a code review of my commits.


5) <!nocheck> annotations for test dependencies

It might be nice (and we recently also got 2 bug reports) to annotate
build dependencies which are only used for tests with <!nocheck> (for
crossbuilding, bootstrapping, maybe also autopkgtest in the future).

This kinda works now (for well behaved META.{json,yml} files) but
- I'm not sure if my approach in the code is right/clean
- it doesn't work for "refresh", i.e. the <!nocheck> is not addedd to
  existing dependencies; I have an idea why ("satisfies" only checks
  name and version) but I stopped there before making even more
  disrupting changes to Debian::Dependency

So this clearly needs more eyeballs and probably changes …


6) Use Config::Model::Dpkg

Config::Model::Dpkg (if available) is used to reformat and fix
debian/control, both in make() and refresh().

(Thanks dod for helping me in getting this right.)


I hope that people have time to think about these changes, play with
the version in the post-buster branch, check/improve the code, and
maybe also spend some time in the future on one our most important
tools


Cheers,
gregor


[0] for a random package we now get unversioned (build) dependencies
on libscalar-list-utils-perl and libtest-simple-perl for example

-- 
 .''`.  https://info.comodo.priv.at -- Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe
   `-   NP: Arlo Guthrie: Gypsy Davy

Attachment: signature.asc
Description: Digital Signature


Reply to: