Thread overview
What's the proper way to add a local file dependence to dub?
Mar 04, 2018
Marc
Mar 04, 2018
bauss
Mar 06, 2018
Jacob Carlborg
Mar 09, 2018
crimaniak
Mar 12, 2018
Seb
March 04, 2018
then copy it to sources folder?

let's say I have a small library folder at C:\mylibrary\D where I want to use dir.d from it. How do I add that file dependence to dub? But I do not want to that file be passed directly to dmd, I want to that file be copied to application's source folder (so it's easy to distribuite, with the dependences together as possible) then compiled. So, what I want to some extension is dub work with loca files.
Is this possible to do solely with dub? I know I can easily write a script to run before dub which copies the dependence files from C:\mylibrary to application's source but I'm looking for a more elegant
 approach as possible; I'm afraid of rewriting a makefile-like soon (I find cmake/make/makefiles just ugly).

March 04, 2018
On Sunday, 4 March 2018 at 16:46:56 UTC, Marc wrote:
> then copy it to sources folder?
>
> let's say I have a small library folder at C:\mylibrary\D where I want to use dir.d from it. How do I add that file dependence to dub? But I do not want to that file be passed directly to dmd, I want to that file be copied to application's source folder (so it's easy to distribuite, with the dependences together as possible) then compiled. So, what I want to some extension is dub work with loca files.
> Is this possible to do solely with dub? I know I can easily write a script to run before dub which copies the dependence files from C:\mylibrary to application's source but I'm looking for a more elegant
>  approach as possible; I'm afraid of rewriting a makefile-like soon (I find cmake/make/makefiles just ugly).

Make it a sub package.
March 06, 2018
On 2018-03-04 17:46, Marc wrote:
> then copy it to sources folder?
>
> let's say I have a small library folder at C:\mylibrary\D where I want
> to use dir.d from it. How do I add that file dependence to dub? But I do
> not want to that file be passed directly to dmd, I want to that file be
> copied to application's source folder (so it's easy to distribuite, with
> the dependences together as possible) then compiled. So, what I want to
> some extension is dub work with loca files.
> Is this possible to do solely with dub? I know I can easily write a
> script to run before dub which copies the dependence files from
> C:\mylibrary to application's source but I'm looking for a more elegant
>   approach as possible; I'm afraid of rewriting a makefile-like soon (I
> find cmake/make/makefiles just ugly).

You can use "preGenerateCommands" or "preBuildCommands" to run arbitrary commands before Dub builds the project [1]. Alternativly you can use the "import" expression [2], together with the "stringImportPaths" Dub build setting. The "import" expression will embed the file into the executable as a string literal.

[1] https://code.dlang.org/package-format?lang=sdl#build-settings
[2] https://dlang.org/spec/expression.html#import_expressions

-- 
/Jacob Carlborg
March 09, 2018
On Sunday, 4 March 2018 at 16:46:56 UTC, Marc wrote:
> then copy it to sources folder?
...
Also, symlinks are power tool for organizing your files without copying.
March 12, 2018
On Sunday, 4 March 2018 at 16:46:56 UTC, Marc wrote:
> then copy it to sources folder?
>
> let's say I have a small library folder at C:\mylibrary\D where I want to use dir.d from it. How do I add that file dependence to dub? But I do not want to that file be passed directly to dmd, I want to that file be copied to application's source folder (so it's easy to distribuite, with the dependences together as possible) then compiled. So, what I want to some extension is dub work with loca files.
> Is this possible to do solely with dub? I know I can easily write a script to run before dub which copies the dependence files from C:\mylibrary to application's source but I'm looking for a more elegant
>  approach as possible; I'm afraid of rewriting a makefile-like soon (I find cmake/make/makefiles just ugly).

I did it this sway:
the part of dub.json:
"dependencies": {

                "diet-ng": "~>1.4",
                "vibe-d:tls": "~>0.8.0",
                "vibe-d:http": "~>0.8",
                "mysql-d": "~>0.3",
                "mylib":{
                        "versions": "~master",
                        "path": "/home/mt/d/mylib"
                }
},

In spite of using a version directly after the used lib,
you give two parameters

  "versions" : "~master"

and

  "path": "/path_to_your_lib/"

Works well.


March 12, 2018
On Monday, 12 March 2018 at 09:38:41 UTC, Martin Tschierschke wrote:
> On Sunday, 4 March 2018 at 16:46:56 UTC, Marc wrote:
>> [...]
>
> I did it this sway:
> the part of dub.json:
> "dependencies": {
>
[...]
>                 "mylib":{
>                         "versions": "~master",
>                         "path": "/home/mt/d/mylib"
>                 }
> },
>
> In spite of using a version directly after the used lib,
> you give two parameters
>
>   "versions" : "~master"
>
> and
>
>   "path": "/path_to_your_lib/"
>
> Works well.
And in ...mylib/dub.json
you just add:

"targetType": "library",

on the top-level, and place your dir.d in ...mylib/source/

March 12, 2018
On Sunday, 4 March 2018 at 16:46:56 UTC, Marc wrote:
> then copy it to sources folder?
>
> let's say I have a small library folder at C:\mylibrary\D where I want to use dir.d from it. How do I add that file dependence to dub? But I do not want to that file be passed directly to dmd, I want to that file be copied to application's source folder (so it's easy to distribuite, with the dependences together as possible) then compiled. So, what I want to some extension is dub work with loca files.
> Is this possible to do solely with dub? I know I can easily write a script to run before dub which copies the dependence files from C:\mylibrary to application's source but I'm looking for a more elegant
>  approach as possible; I'm afraid of rewriting a makefile-like soon (I find cmake/make/makefiles just ugly).

You can also add a simple dub.sdl to your local files and then use `dub add-local` to add the package to your dub environment.
Dub will only rebuild the dependency on your local files if they changed (or you use a different compiler / build settings).
January 06
On Monday, 12 March 2018 at 10:20:20 UTC, Seb wrote:
> On Sunday, 4 March 2018 at 16:46:56 UTC, Marc wrote:
>> then copy it to sources folder?
>>
>> let's say I have a small library folder at C:\mylibrary\D where I want to use dir.d from it. How do I add that file dependence to dub? But I do not want to that file be passed directly to dmd, I want to that file be copied to application's source folder (so it's easy to distribuite, with the dependences together as possible) then compiled. So, what I want to some extension is dub work with loca files.
>> Is this possible to do solely with dub? I know I can easily write a script to run before dub which copies the dependence files from C:\mylibrary to application's source but I'm looking for a more elegant
>>  approach as possible; I'm afraid of rewriting a makefile-like soon (I find cmake/make/makefiles just ugly).
>
> You can also add a simple dub.sdl to your local files and then use `dub add-local` to add the package to your dub environment.
> Dub will only rebuild the dependency on your local files if they changed (or you use a different compiler / build settings).

Why is there no documentation for this? The dub documentation should have a filesystem layout page, with examples of how to structure local libraries, how to register them, how to add them to projects. AFAICT no such documentation exists. I've tried to follow the structure of libraries I've loaded into dub's packages directory, but it seems to treat local packages differently. And dub add-package is useless ... for one thing, it *overwrites* local-packages.json rather than adding to it.