[Pkg-d-devel] Attempt to build BioD blocked by undeaD and missing module string (Was: How to build D source)

Matthias Klumpp mak at debian.org
Sun Feb 26 16:10:11 UTC 2017


Hello!

2017-02-26 15:19 GMT+01:00 James Cowgill <jcowgill at 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/



More information about the Pkg-d-devel mailing list