Thoughts about D package management on Gentoo
Dicebot
public at dicebot.lv
Sun Nov 10 08:34:49 PST 2013
On Saturday, 9 November 2013 at 13:23:33 UTC, Marco Leise wrote:
> Yeah, I was pointing at the lock-step upgrade nature of D
> development. You can't really update one without the other
> when it comes to every day package management.
True. This why I have them all in a single PKGBUILD (ebuild
analog I guess) despite those looking separate in package manager.
>> > - Tools tend to expect that "dmd" is available as a command.
>>
>> Actually I don't think this is true for newer ones. There are
>> plenty that tend to either use `rdmd` or detect compiler
>> present in the system.
>
> Good, the only thing that might go wrong then is alternate
> binary names or install locations.
Well the idea is simple - whatever install locations are,
packager provides default /etc/dmd.conf (ldc has similar conf
file and gdc needs to be patched during build) that allow plain
compiler invocations to "just work" without figuring out any
actual path. I also have common base path for all D modules
installed via `pacman` - "/usr/include/dlang/" which is in
default `-I` list so that any library installed that way can be
directly imported with no extra steps.
> Your experience is welcome! Does D1 have a place in that
> model?
AFAIK no one uses D1 but company I am working for :P
> And what does really happen when you work with e.g.
> dmd-2.065 and found a D application in the tree that hasn't
> been updated for a few weeks, so it still requires 2.064?
It is somewhat easier in Arch case as core repositories provide
pre-compiled binary packages. So it does not really matter what
compiler version is required for application if it is statically
linked and is not a library on its own. For source-based packaged
(AUR in Arch case) I'd send a pull request upstream :) Or mark it
out-of-date and wait :)
> It would more or less mean that the whole D package system
> would have to be updated in one go, when all packages are
> updated to the latest D version, which can take a while.
It is pretty much what happens right now anyway as it is defined
by nature of D versioning / releases and there is not much we can
do about it :)
>> > Next a symlink should be established to the current
>> > implementation of dmd, e.g.: /bin/dmd -> /bin/ldmd2.
>> > This symlink could be managed with an eselect plugin as it is
>> > already done for other languages like Python or the Java
>> > Runtime.
>>
>> And what if one wants to have all 3 simultaneously?
>
> You call them by their real names. :)
Well, "dmd" IS real name for dmd ;) In that sense that "dc"
proposal makes much more sense.
More information about the Digitalmars-d
mailing list