Including GDC in nixpkgs
nospam at example.com
Fri Sep 20 17:18:20 UTC 2019
Am Fri, 20 Sep 2019 10:29:10 +0000 schrieb Stefan Frijters:
> As a fan of both D and the nixpkgs package manager I wanted to try and
> help include GDC in nixpkgs, but I have been running into some problems.
Thank you a lot for looking at this and helping the D ecosystem!
> If anyone could help by taking a look at my pull request at
> https://github.com/NixOS/nixpkgs/pull/69144 that would be greatly
> Current issues include:
> * When compiling without forcing --disable-shared, there are linker
> errors about needing to compile with -fPIC. It seems that some files are
> built using that flag, but not all, and I'm not sure how to go about
> forcing it for the rest.
This should not happen, -fPIC should be added automatically where
required. Maybe it's caused by --enable-default-pie or any of the other
flags which are not really needed?
> * When invoking nix-build without specifying --cores 1 there are
> problems when building libphobos; it looks like object files are moved
> before they are generated. This problem goes away when I build on a
> single core, but of course everything takes a very long time to try out.
Is this a problem during the make step or during make install? I don't
think make install is multi-thread safe, but make should actually be fine.
> * I have disabled bootstrapping for now to speed up the debugging
> process, hopefully it can be enabled again later on.
> I have taken the compiler flags to be used from
> https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=gdc-git, which
> was linked in another thread on this forum, but maybe this is too
> specific for Arch?
Yes, these are actually arch and not gdc specific. You do not need any
special flags for gdc, just add d to --enable-languages= and you should
be fine. --with-target-system-zlib=yes is the only D specific flag in
your github pull request, and it forces libphobos to link against the
system zlib instead of including a copy. You'll have to decide whether
this is the behavior you want.
More information about the D.gnu