I bet it's debug info.

How do you build your application (command line parameters)? Did you try 
stripping your binary?

-Steve

On Jan 5, 2015, at 2:16 PM, Rico Huijbers via dmd-internals 
<[email protected]> wrote:

> Hi,
> 
> I'm trying to build and package my D application using the Nix "purely 
> functional" package manager (https://nixos.org/nix/).
> 
> A LITTLE INTRODUCTION
> 
> This package manager determines a unique hash from everything that goes into 
> a build cycle (build scripts, sources, versions of dependencies, etc) and 
> builds every derivation into a directory identified by that hash. Conversely, 
> if a directory with that hash already exists, the package doesn't need to be 
> built because it's up-to-date, by definition.
> 
> Because those hashes are very unlikely to occur by chance, the package 
> manager crawls all files in the newly built directory for references to 
> hashes of the input dependencies, and records those as run-time dependencies.
> 
> It's then possible to zip up a single package and all of its transitive run 
> time dependencies, using the command nix-copy-closure (which for example 
> includes the exact glibc the application was built against), and deploy it in 
> a minimal busybox environment, for example.
> 
> MY ISSUE
> 
> This is all just a big preamble for my question: apparently, DMD leaves 
> references to the compiler directory in a compiled binary. This causes the 
> "dependency crawler" process to register DMD, and in turn all of _its_ 
> dependencies, as run-time dependencies of my application, which is adding 
> ~100MB to the size of my package bundle. Which, obviously, should not be 
> necessary.
> 
> I can tell using 'strings' that they're all references to include files:
> 
>     vagrant@vagrant-ubuntu-utopic-64:~$ strings webapp | grep dmd
>     
> /nix/store/3rj0sxwbp2lfddwya2smvkj4cl7y3lvs-dmd-2.066.1/include/d2/std/format.d-mixin-736
>     
> /nix/store/3rj0sxwbp2lfddwya2smvkj4cl7y3lvs-dmd-2.066.1/include/d2/std/format.d
>     
> /nix/store/3rj0sxwbp2lfddwya2smvkj4cl7y3lvs-dmd-2.066.1/include/d2/std/format.d
>     
> /nix/store/3rj0sxwbp2lfddwya2smvkj4cl7y3lvs-dmd-2.066.1/include/d2/std/uni.d
>     
> /nix/store/3rj0sxwbp2lfddwya2smvkj4cl7y3lvs-dmd-2.066.1/include/d2/std/variant.d
>     
> /nix/store/3rj0sxwbp2lfddwya2smvkj4cl7y3lvs-dmd-2.066.1/include/d2/core/demangle.d
>     
> /nix/store/3rj0sxwbp2lfddwya2smvkj4cl7y3lvs-dmd-2.066.1/include/d2/std/variant.d
> 
> But other than that, I'm at a loss as to what these strings are for, and more 
> importantly, how I can get rid of them to cut my run-time dependency set.
> 
> Any ideas?
> 
> Thanks.
> _______________________________________________
> dmd-internals mailing list
> [email protected]
> http://lists.puremagic.com/mailman/listinfo/dmd-internals

_______________________________________________
dmd-internals mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-internals

Reply via email to