Thread overview
Bootstrap D template
Jan 29, 2018
Seb
Jan 29, 2018
Dukc
Jan 30, 2018
Mengu
Jan 30, 2018
Seb
Feb 01, 2018
Tony
Feb 01, 2018
Mike Wey
Feb 01, 2018
Tony
Feb 02, 2018
Seb
Feb 02, 2018
Tony
dub project/library scaffolding/blueprint/template [was: Re: Bootstrap D template]
Mar 08, 2018
Martin Nowak
January 29, 2018
Have you ever wanted to use D in a project where not everyone had D installed or maybe you wanted to fix the compiler to a specific version?

I typically use a simple Makefile in such cases and download my preferred DMD and LDC version. As others who I have shown this have found this useful, I thought it might be helpful to other people (even so it's pretty straight-forward).

The cool part about this is that you don't have to worry about anything. People can just type `make` and everything works magically.

It's essentially a poor man's version of virtualenv for use cases where people are too lazy to use the install script or auto-env/dir-env can't be used either.

I added a few other common "boilerplate" things (CI integration, CodeCov, Documentation build, linting, ...) to this template:

https://github.com/wilzbach/d-bootstrap

Happy bootstrapping!

Why not Docker?
---------------

Docker is typically used to allow a consistent work environment, but in my use cases Docker isn't available.
If you want to use Docker, check out the [D docker images](https://hub.docker.com/r/dlanguage/dmd/).

Additional bonus
----------------

Want to use D in a Web IDE?
Use [Cloud9](https://aws.amazon.com/cloud9), clone this repo and run `make` - it will work out of the box.
January 29, 2018
On Monday, 29 January 2018 at 11:04:19 UTC, Seb wrote:
> As others who I have shown this have found this useful, I thought it might be helpful to other people (even so it's pretty straight-forward).

You're truly becoming the bearer of good news...
January 30, 2018
On Monday, 29 January 2018 at 11:04:19 UTC, Seb wrote:
> Have you ever wanted to use D in a project where not everyone had D installed or maybe you wanted to fix the compiler to a specific version?
>
> [...]

clojure's lein support starter templates. it'd be great if dub did such a thing too.

thanks for the effort.
January 30, 2018
On Tuesday, 30 January 2018 at 17:14:15 UTC, Mengu wrote:
> On Monday, 29 January 2018 at 11:04:19 UTC, Seb wrote:
>> Have you ever wanted to use D in a project where not everyone had D installed or maybe you wanted to fix the compiler to a specific version?
>>
>> [...]
>
> clojure's lein support starter templates. it'd be great if dub did such a thing too.
>
> thanks for the effort.

Yep it would be nice and it's planned to support `-t` for dub init:

See https://github.com/dlang/dub/pull/1326#issuecomment-357233196

As always it happens faster if someone makes a PR for it ;-)
February 01, 2018
On Monday, 29 January 2018 at 11:04:19 UTC, Seb wrote:

>
> https://github.com/wilzbach/d-bootstrap
>
> Happy bootstrapping!

What does "|" do in a makefile?
February 01, 2018
On 01-02-18 22:53, Tony wrote:
> On Monday, 29 January 2018 at 11:04:19 UTC, Seb wrote:
> 
>>
>> https://github.com/wilzbach/d-bootstrap
>>
>> Happy bootstrapping!
> 
> What does "|" do in a makefile?

The target depends on `bin` but don't rebuild the target if `bin` is newer than the target.

https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html#Prerequisite-Types

-- 
Mike Wey
February 01, 2018
On Thursday, 1 February 2018 at 22:01:52 UTC, Mike Wey wrote:

> https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html#Prerequisite-Types

Thanks! Couldn't seem to get a search to work.

I was hoping the "|"  would explain the behavior that I don't understand, but I don't think it does.

The instructions say to just type "make". My understanding is that without a specified target, the topmost target in the Makefile is used. In this case it is "bin", which has no dependencies, and one action - mkdir. I would think that the Makefile would stop after making that directory as no other actions are given and no dependencies were specified. But it doesn't.

February 02, 2018
On Thursday, 1 February 2018 at 23:35:43 UTC, Tony wrote:
> On Thursday, 1 February 2018 at 22:01:52 UTC, Mike Wey wrote:
>
>> https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html#Prerequisite-Types
>
> Thanks! Couldn't seem to get a search to work.
>
> I was hoping the "|"  would explain the behavior that I don't understand, but I don't think it does.
>
> The instructions say to just type "make". My understanding is that without a specified target, the topmost target in the Makefile is used. In this case it is "bin", which has no dependencies, and one action - mkdir. I would think that the Makefile would stop after making that directory as no other actions are given and no dependencies were specified. But it doesn't.

`DEFAULT_GOAL` allows to set an explicit target and keep a everything nicely ordered.

Is something not working when you just type `make`?
Or are you just trying to understand how things work?
In the latter case: you don't need to use make, to build your files, I just use it for small projects because it's super easy.
Anyhow there are other ways you could use this without needing to dive into make:
- as a wrapper - call your actions from a new Makefile target and simply depend on the compiler (that's how I use dub in such projects)
- execute `make` as part of your build script. It will fetch the compiler if non-existent and be a no-op otherwise.

What are you planning to do?
February 02, 2018
On Friday, 2 February 2018 at 01:16:50 UTC, Seb wrote:

>
> `DEFAULT_GOAL` allows to set an explicit target and keep a everything nicely ordered.

Thanks! (didn't even notice that line)

> Is something not working when you just type `make`?
No

> Or are you just trying to understand how things work?
Yes, sorry for the confusion.

> What are you planning to do?

I was only trying to understand the Makefile.

March 08, 2018
On Monday, 29 January 2018 at 11:04:19 UTC, Seb wrote:

Just giving this a different title as I'm having troubles finding this topic.
https://github.com/wilzbach/d-bootstrap