Hello! 2017-02-26 15:19 GMT+01:00 James Cowgill <jcowg...@debian.org>: > Hi, > > On 26/02/17 07:03, Andreas Tille wrote: >> On Sat, Feb 25, 2017 at 10:01:17PM +0000, James Cowgill wrote: >>> On 25/02/17 21:31, Andreas Tille wrote: >>>> I intend to package BioD[1] but I have no idea how to build the D code >>>> (and run the unit tests). Considering BioD is a library I might need >>>> something like a dynamic lib and a development package, but may be this >>>> is different for D than in C. >>> >>> It looks like it uses "dub" as it's build system. Dub is packaged but >>> has no users in the archive so you probably want to talk to the D >>> language maintainers about it first to see what the correct way to >>> handle this is. >> >> I just added "dub run" to debian/rules. > > I think you want "dub build" instead.
Yes, `dub build` is the right thing to do, but in general I would strongly recommend to not use dub at all for Debian packaging. It has a lot of issues which make it a pain to work with in the context of Debian packaging, some of the issues are summarized at https://gist.github.com/ximion/fe6264481319dd94c8308b1ea4e8207a I did packaging with dub once, a d/rules file would look similar to this: https://anonscm.debian.org/git/pkg-packagekit/appstream-generator.git/tree/debian/rules?id=60dcc4c6e716f8ddbcf549f40bad0f5b800cb398 No package in Debian uses dub however, because it creates long-term maintenance pain. The much better option is to submit a patch upstream to build with either Automake, cmake or Meson. I strongly recommend Meson here, because Meson configuration is very easy to write and it's D support is already there (while it needs to be added to cmake with a lot of macros, and Automake is just annoying to use in general). Here is an example for a simple Meson build configuration for a very small static D library: https://github.com/repeatedly/mustache-d/commit/4e694202b02014871a767782606bacaf1422a3e2 At time, D stuff in Debian (with the exception of LDC itself) uses either Meson or Automake. >>> I notice it depends on undead which will need packaging first. >> >> There are two kinds of messages: >> >> bio/bam/bai/indexing.d(33,8): Deprecation: module std.stream is deprecated - >> It will be removed from Phobos in October 2016. If you still need it, go to >> https://github.com/DigitalMars/undeaD >> >> This is what James seems to refer to - I'm not sure whether this is >> critical for the build here. I'd be willing to package undead if needed >> but I'd prefer if some more skilled people would do so. > > Ah, I was looking at upstream git master which contains this dependency > in dub.json: > "dependencies": { > "undead": "~>1.0.6" > }, > >> bio/bam/bai/indexing.d(38,8): Error: module string is in file >> 'core/std/c/string.d' which cannot be read >> >> This seems to be critical. Do you have any hint? > > Maybe this PR would help? > https://github.com/biod/BioD/pull/23 Which D compiler do you use for building? LDC or GDC? I would recommend LDC here, since it supports the latest D runtime and standard library versions, while GDC is lagging behind a lot. The ideal solution here would be to port BioD away from using deprecated stuff, but I am not sure how feasible this is - would be nice to at least ask upstream on whether they accept patches for it. Otherwise, undeaD needs to be in Debian first. Cheers, Matthias -- I welcome VSRE emails. See http://vsre.info/