Practical Problems with distribution D projects

Assaf Gordon agordon at wi.mit.edu
Tue Feb 25 06:52:29 PST 2014


On 02/25/2014 12:09 AM, Artem Tarasov wrote:
> On Tue, Feb 25, 2014 at 7:16 AM, Shammah Chancellor
> <anonymous at coward.com <mailto:anonymous at coward.com>> wrote:
>> Have you looked at having dub be your autotool?
> The complaint is about difficulties with installation of a compiler
> and rdmd, and you suggest to bring in yet another dependency?
>
> My experience is the same as described, I keep a VM on Amazon EC2
> with CentOS 5, which contains installed LDC2, just so that the
> compiled binaries run on any Linux x86_64 machine no matter how old
> glibc version is.
>

Thanks!
I was beginning to think I'm alone in this problem :)

I'm getting the impression that D is either windows-focused (which is a mostly homogenous system everywhere and easy to work with), or unix-experts/developers-focused (where people feel naturally comfortable with downloading and compiling and fidgeting with programs).

-----

To address some of the other responses:

On 02/24/2014 09:09 PM, Adam D. Ruppe wrote:> On Tuesday, 25 February 2014 at 01:21:03 UTC, Assaf Gordon wrote:
>
> dmd does not require root. The install instructions about copying
> stuff into /etc and such are ridiculously overcomplicated - dmd
> actually just works* if you run it straight out of the zip as any
> regular user in any location.
>

 From a non-expert unix POV -
Either you download and install the package (deb/rpm) which is easy but requires root,
or you download and compile the sources from the source zip - which is complicated.
We can argue about what "complicated" means, obviously the members of this forums are mostly experts, so they don't think that compiling from source is tricky.
But if you download the zip, and try to look at it from a novice's POV:
The README.txt is not helpful.
There's no "configure" or "CMakefile" or "Makefile" - which are the most common ways to "just make it work" for open source projects.
Going into "src", there's no Makefile, and the "readme.txt" is again not helpful (talks about the license, not about the installation).
If you're have some experience, you can guess that "posix.mak" is the relevant file, and indeed "make -f posix.mak" builds dmd correctly.
Then you have to repeat the same for "./src/dmd", "./src/druntime" and "./src/phobos" - and then what?
update $PATH, $LD_LIBRARY_PATH ? would that be enough ?
All these might be easy for you - but not for a casual Linux user (which is my intended target audience).

-----

On 02/25/2014 12:48 AM, Jesse Phillips wrote:
>
> If you want to distribute to desktop users, binary packages is the
> way to go. The issues with static linking are related to C
> libraries. If you develop in Linux you generally don't statically
> link.

You "generally don't statically link" because you can:
1. Readily and easily compile from source code on the local machine, or
2. Have binary distribution that perfectly matches your system (in the case of debs/rpms from an official repository).

With D - I have none of these.
And when distribution just an executable to run on an unknown linux machine, the best way is a statically linked binary.

> All your D code is statically linked, work has been done to support
> dynamic linking with Phobos, but for now that isn't default.

But I'm not asking for dynamic linking... I'm asking for static linking that works...

----

On 02/25/2014 08:13 AM, Dicebot wrote:
> For building dub and/or rdmd are de-facto standard for any D
> developers. You should just start from source tarball and proceed
> from there to finding maintainers in specific distributives, possibly
> being the one for distro or two. Then conform packaging rules there.
>

My target audience is not D developers - it is unix casual users (not even developers).
I want to make it the easiest for them to use my program.
If it's requires more than the standard "configure && make && make install" (or the cmake equivalent), then many of them will not do it.

> Single Linux-wide binary distribution is mostly a myth and dmd shows
> it by its own.

Not sure what the "myth" is - but a statically-linked binaries work well (if your program is self-contained and properly compiled), and there are many examples of it.

----

On the upside: I now see that "dub" provides a good Debian repository, and a HomeBrew formula (and by proxy, a LinuxBrew formula) - so perhaps that is the way to go.

Still, if I may suggest:
There have been recent threads in the mailing list about "the future of D" and creating "Killer Apps" and making D more popular - From my (biased) POV, one big step would be to make D easily useable on more platforms - so the casual (non-windows) users could also experiment with it, and developers would have easier time to distribute software written in D.

Also, as long as DMD is not free, providing easy way to install LDC/GDC is highly desired.

Thanks for reading so far,
   -gordon


More information about the Digitalmars-d mailing list