X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/28fc7c9cda853737817ac78f576d322d574c696c..6621ff349d531b5887d38da305c6d1fde095b36d:/blog/archive/2016/02/02.rss diff --git a/blog/archive/2016/02/02.rss b/blog/archive/2016/02/02.rss index 4d43b6df7c..be02699c9d 100644 --- a/blog/archive/2016/02/02.rss +++ b/blog/archive/2016/02/02.rss @@ -6,16 +6,117 @@ http://people.skolelinux.org/pere/blog/ + + Creating, updating and checking debian/copyright semi-automatically + http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html + http://people.skolelinux.org/pere/blog/Creating__updating_and_checking_debian_copyright_semi_automatically.html + Fri, 19 Feb 2016 15:00:00 +0100 + <p>Making packages for Debian requires quite a lot of attention to +details. And one of the details is the content of the +debian/copyright file, which should list all relevant licenses used by +the code in the package in question, preferably in +<a href="https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/">machine +readable DEP5 format</a>.</p> + +<p>For large packages with lots of contributors it is hard to write +and update this file manually, and if you get some detail wrong, the +package is normally rejected by the ftpmasters. So getting it right +the first time around get the package into Debian faster, and save +both you and the ftpmasters some work.. Today, while trying to figure +out what was wrong with +<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=686447">the +zfsonlinux copyright file</a>, I decided to spend some time on +figuring out the options for doing this job automatically, or at least +semi-automatically.</p> + +<p>Lucikly, there are at least two tools available for generating the +file based on the code in the source package, +<tt><a href="https://tracker.debian.org/pkg/debmake">debmake</a></tt> +and <tt><a href="https://tracker.debian.org/pkg/cme">cme</a></tt>. I'm +not sure which one of them came first, but both seem to be able to +create a sensible draft file. As far as I can tell, none of them can +be trusted to get the result just right, so the content need to be +polished a bit before the file is OK to upload. I found the debmake +option in +<a href="http://goofying-with-debian.blogspot.com/2014/07/debmake-checking-source-against-dep-5.html">a +blog posts from 2014</a>. + +<p>To generate using debmake, use the -cc option: + +<p><pre> +debmake -cc > debian/copyright +</pre></p> + +<p>Note there are some problems with python and non-ASCII names, so +this might not be the best option.</p> + +<p>The cme option is based on a config parsing library, and I found +this approach in +<a href="https://ddumont.wordpress.com/2015/04/05/improving-creation-of-debian-copyright-file/">a +blog post from 2015</a>. To generate using cme, use the 'update +dpkg-copyright' option: + +<p><pre> +cme update dpkg-copyright +</pre></p> + +<p>This will create or update debian/copyright. The cme tool seem to +handle UTF-8 names better than debmake.</p> + +<p>When the copyright file is created, I would also like some help to +check if the file is correct. For this I found two good options, +<tt>debmake -k</tt> and <tt>license-reconcile</tt>. The former seem +to focus on license types and file matching, and is able to detect +ineffective blocks in the copyright file. The latter reports missing +copyright holders and years, but was confused by inconsistent license +names (like CDDL vs. CDDL-1.0). I suspect it is good to use both and +fix all issues reported by them before uploading. But I do not know +if the tools and the ftpmasters agree on what is important to fix in a +copyright file, so the package might still be rejected.</p> + +<p>The devscripts tool <tt>licensecheck</tt> deserve mentioning. It +will read through the source and try to find all copyright statements. +It is not comparing the result to the content of debian/copyright, but +can be useful when verifying the content of the copyright file.</p> + +<p>Are you aware of better tools in Debian to create and update +debian/copyright file. Please let me know, or blog about it on +planet.debian.org.</p> + +<p>As usual, if you use Bitcoin and want to show your support of my +activities, please send Bitcoin donations to my address +<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p> + +<p><strong>Update 2016-02-20</strong>: I got a tip from Mike Gabriel +on how to use licensecheck and cdbs to create a draft copyright file + +<p><pre> +licensecheck --copyright -r `find * -type f` | \ + /usr/lib/cdbs/licensecheck2dep5 > debian/copyright.auto +</pre></p> + +<p>He mentioned that he normally check the generated file into the +version control system to make it easier to discover license and +copyright changes in the upstream source. I will try to do the same +with my packages in the future.</p> + +<p><strong>Update 2016-02-21</strong>: The cme author recommended +against using -quiet for new users, so I removed it from the proposed +command line.</p> + + + Using appstream in Debian to locate packages with firmware and mime type support http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html http://people.skolelinux.org/pere/blog/Using_appstream_in_Debian_to_locate_packages_with_firmware_and_mime_type_support.html Thu, 4 Feb 2016 16:40:00 +0100 - <p>The <a href="https://wiki.debian.org/DEP-11">appstream system</a> is -taking shape in Debian, and one feature set that is very convenient is -its ability to tell you want package to install to get a given -firmware file. This can be done using apt-file too, but that is for -someone else to blog about. :)</p> + <p>The <a href="https://wiki.debian.org/DEP-11">appstream system</a> +is taking shape in Debian, and one provided feature is a very +convenient way to tell you which package to install to make a given +firmware file available when the kernel is looking for it. This can +be done using apt-file too, but that is for someone else to blog +about. :)</p> <p>Here is a small recipe to find the package with a given firmware file, in this example I am looking for ctfw-3.2.3.0.bin, randomly