Dub build failure

jerome jegaultier at gmail.com
Sun Oct 4 18:45:34 UTC 2020

I am trying to compile a simple lib, and a simple demo using this 

So I have 2 directories at the same level in the same DEV 
    demo1          Dterrent

In the Dterrent directory, the dub.json is pretty common, 
compiling as a lib:
	"name": "dterrent",
	"targetPath": "libs",

Inside Dterrent, I also have a regular "source" directory, which 
contains a package.d file:
|-> source
   |-> package.d

The first line of package.d is :
module dterrent;

If I am in the Dterrent directory, a `dub build` command compiles 
the library dterrent properly, exactly as expected.


I go back up to DEV, then go down into demo1. There I have again 
a dub.json file, with :
	"dependencies": {
		 "dterrent" : { "path": "../Dterrent" },

In the demo1 directory, I also have a regular source/app.d file, 
whose first line is:
import dterrent;

Then I try a `dub build`:
jerome at laptop:/DATA/DEV/demo1$ dub build
Performing "debug" build using 
/home/jerome/dlang/dmd-2.093.1/linux/bin64/dmd for x86_64.
dterrent ~master: target for configuration "library" is up to 
demo1 ~master: building configuration "application"...
source/app.d(9,8): Error: module dterrent is in file 'dterrent.d' 
which cannot be read
import path[0] = source/
import path[4] = ../Dterrent/source/
import path[5] = 
import path[6] = 
/home/jerome/dlang/dmd-2.093.1/linux/bin64/dmd failed with exit 
code 1.

Well, the module dterrent is obviously not in dterrent.d
dterrent.d does not exist as it, since it is a package.d file 
with the "module dterrent;" line.

If I change package.d for dterrent.d, I get some other errors. 
But at this point, I think we agree I should not have to change 
the name of package.d, right?

What am I doing wrong? What would be the right way? Or is there a 


More information about the Digitalmars-d-learn mailing list