Install multiple executables with DUB
Jon Degenhardt
jond at noreply.com
Fri Sep 4 08:50:41 UTC 2020
On Friday, 4 September 2020 at 07:27:33 UTC, glis-glis wrote:
> On Thursday, 3 September 2020 at 14:34:48 UTC, Jacob Carlborg
> wrote:
>> Oh, multiple binaries, I missed that. You can try to add
>> multiple configurations [1]. Or if you have executables
>> depending on only one source file, you can use single-file
>> packages [2].
>
> Thanks, but this still means I would have to write an
> install-script running
>
> `dub build --single`
>
> on each script, right?
> I looked at tsv-utils [1] which seems to be a similar use-case
> as mine, and they declare each tool as a subpackage. The main
> package runs a d-file called `dub_build.d` which compiles all
> subpackages. Fells like an overkill to me, I'll probably just
> stick to a makefile.
>
>
> [1]
> https://github.com/eBay/tsv-utils/blob/master/docs/AboutTheCode.md#building-and-makefile
The `dub_build.d` is so that people can use `$ dub fetch` to
download and build the tools with `$ dub run`, from
code.dlang.org. dub fetch/run is the typical dub sequence. But
it's awkward. And it geared toward users that have a D compiler
plus dub already installed. For building your own binaries you
might as well use `make`. However, if you decide to add your
tools to the public dub package registry you might consider the
technique.
My understanding is that the dub developers recognize that
multiple binaries are inconvenient at present and have ideas on
improvements. Having a few more concrete use cases might help
nail down the requirements.
The tsv-utils directory layout may be worth a look. It's been
pretty successful for multiple binaries in a single repo with
some shared code. (Different folks made suggestions leading to
this structure.) It works for both make and dub, and works well
with other tools, like dlpdocs (Adam Ruppe's doc generator). The
tsv-utils `make` setup is quite messy at this point, you can
probably do quite a bit better.
--Jon
More information about the Digitalmars-d-learn
mailing list