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