June 21, 2017
On Tuesday, 20 June 2017 at 19:38:14 UTC, jmh530 wrote:
> On Tuesday, 20 June 2017 at 19:06:05 UTC, Nick Sabalausky (Abscissa) wrote:
>> On 06/19/2017 04:06 AM, Russel Winder via Digitalmars-d wrote:
>>> 
>>> Reggae is D's pitch in the CMake and Meson class of meta-build tools.
>>> Why aren't all the D compiler and tool developments using it?
>>
>> I'm convinced a big part of that is because DUB is ubiquitous and incredibly helpful in the D world for package management, but plays very poorly with any build system that isn't DUB's internal one.
>>
>
> While the dub documentation is not always the best, it seems to me to be in a better state than reggae's. I've heard about reggae a bit on the forum, but I never really made any attempt to try to use it. dub seems a lot simpler for small projects.
>
> Maybe Atila could do a blog post with some simple examples and compare/contrast with dub?

I'm not the best at documentation. Funnily enough, I made an effort with reggae, which might just show how bad I am at this.

There's not much to compare/constrast - dub is a package manager that also builds your code, as long as your requirements are simple, it doesn't have a DAG. reggae is a build system. You wouldn't be able to replace the Makefiles with dub. You _would_ be able to build phobos, but that's not all the Makefiles do.

Atila
June 21, 2017
On Wednesday, 21 June 2017 at 14:11:58 UTC, Atila Neves wrote:
>
> I'm not the best at documentation. Funnily enough, I made an effort with reggae, which might just show how bad I am at this.
>

Ha, well maybe ask one of the users then?

> There's not much to compare/constrast - dub is a package manager that also builds your code, as long as your requirements are simple, it doesn't have a DAG. reggae is a build system. You wouldn't be able to replace the Makefiles with dub. You _would_ be able to build phobos, but that's not all the Makefiles do.
>
> Atila

This is what I was thinking: start with a simple project, show how you can build it with dub or with reggae, then show a slightly more complicated project that dub cannot handle well and show how you can use reggae (and integrate it with dub).
June 22, 2017
On Tue, 2017-06-20 at 15:06 -0400, Nick Sabalausky (Abscissa) via
Digitalmars-d wrote:
> […]
> 
> I'm convinced a big part of that is because DUB is ubiquitous and
> incredibly helpful in the D world for package management, but plays
> very
> poorly with any build system that isn't DUB's internal one.

Either Dub needs to be made as good as Cargo is for Rust, so no-one bothers to use any other build system, or Dub needs to be made a little more supportive of non-Dub build frameworks.

I could go with the former, but no-one appears to be doing anything about it.

For the moment I am trying to get SCons to play nicely with Dub as a package manager, and it sucks, at least using it as a subprocess to get and build packages.

I am tempted to see if something analogous can be done in Meson.

The status quo is not good, and as they say, something needs to be done.

> I've blown enormous amounts of time trying to get my projects (that
> need
> DUB for dependencies) to use alternate buildsystems without DUB
> getting
> in the way, and never really succeeded.

SCons + Dub is working fine for me for unit-threaded, but that is about as far as I have dared go so far.

[…]

In many ways I would love to simply give up making SCons work with Dub because Dub is as good for D/C/C++ systems as Cargo is for Rust, but it isn't. :-(


-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

June 22, 2017
On Wed, 2017-06-21 at 14:11 +0000, Atila Neves via Digitalmars-d wrote:
> […]
> 
> I'm not the best at documentation. Funnily enough, I made an effort with reggae, which might just show how bad I am at this.

Hopefully the era of programmers boasting how crap they are at documentation is over. Documentation is important to code and to the uses of code. Some programmers may not be good at writing documentation in the language required, so get a ghost writer, or at least a sub- editor.

> There's not much to compare/constrast - dub is a package manager that also builds your code, as long as your requirements are simple, it doesn't have a DAG. reggae is a build system. You wouldn't be able to replace the Makefiles with dub. You _would_ be able to build phobos, but that's not all the Makefiles do.

Reggae, like CMake and Meson, is a meta-build system, the actual build is done by Make, Ninja, Tup,… We are currently in the era of meta-build systems.

Having been directly involved in the Gant → Gradle period of build for the JVM (*) I can state categorically that any build system not using some form of DAG will be replaced, and fairly quickly. If Dub doesn't use a DAG, it has managed to last longer than perhaps it should.


(*) Gradle also does native build, because clients of Gradle Inc
demanded it.
-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

June 22, 2017
On Wed, 2017-06-21 at 14:48 +0000, jmh530 via Digitalmars-d wrote:
> 
[…]
> This is what I was thinking: start with a simple project, show how you can build it with dub or with reggae, then show a slightly more complicated project that dub cannot handle well and show how you can use reggae (and integrate it with dub).

Or keep the Dub repository, and ditch dub the tool.

The analogy from the JVM world.

Maven took over from Ant providing a new build tool and a repository of artefacts. Everyone stared using Maven and Ant effectively passed away (*). Then came Gradle. It used the Maven repository for artefacts but replaced Maven the build system which is slowly passing away (*). But Maven had problems, and so we get Artifactory and Bintray. Maven is still there people still add artefacts but generally via JCentre (a Bintray instance) using JCentre as the first search point.

Dub has moved D along a good path, but does it need evolving. Does it need replacing? I am not a fan of Dub the build system (**) but the idea of a repository if source packages is a good move. Even C++ now does this with Conan. But Conan is a package manager not a build system. Should Dub the package manager emerge from Dub the build system? Is this possible now?

Clearly the "Big Problem" is that the JVM world has profit-making entities involved seeking business opportunities. D has very little of this.

Given that D has very little commercial effort available, minimisation of goals for improvement are needed. I'd posit:

1. Make using Dub only as a package getter better known and used. Make it easier for SCons, Meson, CMake, etc. to use Dub the repository without using Dub the builder.

2. Add Git, Mercurial (, and Bazaar/Breezy ?) repository getting to Dub, if it is not there, or make it easier to do this if it is.

3. Add some form of review and curating to Dub packages. PyPI is a free for all and there is a lot of crap and ancient rubbish in it that needs removing. sadly this will never happen, but at least there is a strongly opinionated metric publicly known and displayed for each package that allows you to decide whether a package is just dross.

I am prepared to put time into Dub, if that helps, just as I am putting time into SCons, and possibly Meson.


(*) A bit like COBOL passed away, sadly there is still a lot of it
about.

(**) Unless it evolves and becomes as good as Cargo is for Rust.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

June 22, 2017
It is also worth noting for deployment purposes in package management systems, that it is important that all the build tools necessary have to be in the distribution in order for something to be accepted into the distribution.

So for example Make is acceptable, but Reggae (at least currently) would not be. Scons is not liked in some circles, for purely ancient unthinking prejudice reasons :-(, CMake and Meson are very liked.

DMD has not had this problem before because licences meant it would not be packaged by many distributions. With the new licensing regime maybe this can change?

On the other hand we have LDC already packaged because, CMake – why do people need DMD.

And they will soon have GDC properly, so no need for DMD <slight- trollish-wording-i-agree/>

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

1 2 3 4 5
Next ›   Last »