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
