[Nix-dev] sbcl image executables corrupted
Eike
eike at eknet.org
Mon May 11 21:47:26 CEST 2015
I just tried putting the executable file inside a different directory
than 'bin' and this is working. It is not stripped/whatever -- only when
installed in the bin/ directory. Sorry about the confusion with
patchelf, I shouldn't put a wild guess in the title. It probably hasn't
anything to do with this problem. But I find these to lines in the
output of nix-build suspicious:
patching ELF executables and libraries in /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1
stripping (with flags -S) in /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1/bin
and one of it starts with "patching ELF...". I don't know what's going
on here. Any hints are much appreciated.
Thanks and regards
Eike
Eike <eike at eknet.org> writes:
> Hi there,
>
> I'm making a program in common lisp using sbcl. I then create a
> executable image which results in quite a big file since the whole lisp
> is packaged up. When I use nix to build this app, the file that ends up
> in nix-store is tiny and not working. It seems to me that the patch-elf
> process is stripping things off, but that's just a guess.
>
> Here is a mini example. Install sbcl and do this
>
> $ echo '(defun main () (format t "Hello World!~%"))' > hello.lisp
> $ sbcl --load hello.lisp --eval '(sb-ext:save-lisp-and-die "hello" :toplevel (lambda() (main) 0) :executable t)'
>
> then there is a 'hello' executable with about 50mb. Running it prints
> the message to stdout.
>
> The same process in a 'hello/default.nix' like this:
>
> { pkgs ? import <nixpkgs> {} }:
> pkgs.stdenv.mkDerivation {
> name = "hello-0.0.1";
> src = ./.;
> buildPhase = ''
> echo '(defun main () (format t "Hello World!~%"))' > hello.lisp
> ${pkgs.sbcl}/bin/sbcl --load hello.lisp --eval '(sb-ext:save-lisp-and-die "hello" :toplevel (lambda() (main) 0) :executable t)'
> ls -lha *
> '';
> installPhase = ''
> mkdir -p $out/bin
> cp hello $out/bin
> '';
> }
>
> Building it with 'nix-build hello' produces this:
>
> these derivations will be built:
> /nix/store/7f6dp34myppgf3r0nfkdcxkinwp81g16-hello-0.0.1.drv
> building path(s) ‘/nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1’
> building /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1
> unpacking sources
> unpacking source archive /nix/store/dxk9zf3zd78j63g8ysbfsnmwwsf1gb02-hello
> source root is hello
> patching sources
> configuring
> no configure script, doing nothing
> building
> This is SBCL 1.2.5.nixos, an implementation of ANSI Common Lisp.
> More information about SBCL is available at <http://www.sbcl.org/>.
>
> SBCL is free software, provided as is, with absolutely no warranty.
> It is mostly in the public domain; some portions are provided under
> BSD-style licenses. See the CREDITS and COPYING files in the
> distribution for more information.
> [undoing binding stack and other enclosing state... done]
> [saving current Lisp image into hello:
> writing 5680 bytes from the read-only space at 0x20000000
> writing 3120 bytes from the static space at 0x20100000
> writing 50462720 bytes from the dynamic space at 0x1000000000
> done]
> -rw-r--r-- 1 nixbld1 nixbld 410 May 11 08:11 default.nix
> -rwxr-xr-x 1 nixbld1 nixbld 49M May 11 08:11 hello
> -rw-r--r-- 1 nixbld1 nixbld 44 May 11 08:11 hello.lisp
> installing
> post-installation fixup
> patching ELF executables and libraries in /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1
> /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1/bin/hello
> gzipping man pages in /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1
> stripping (with flags -S) in /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1/bin
> patching script interpreter paths in /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1
> /nix/store/2rhdmlbiklrrsh660ix0db415xyi46wn-hello-0.0.1
>
> The hello executable was 49M after building it. But the one in nix-store
> is this:
>
> l -lha result/bin ~
> insgesamt 272K
> dr-xr-xr-x 2 root nixbld 4,0K 1. Jan 1970 .
> dr-xr-xr-x 3 root nixbld 4,0K 1. Jan 1970 ..
> -r-xr-xr-x 6 root root 262K 1. Jan 1970 hello
>
> What' wrong here?
>
> Thanks in advance!
> Eike
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
--
gpg: AD7AC35E
finger print: 137F BB0B 1639 D25F DC5D E59C B412 C5F5 AD7A C35E
More information about the nix-dev
mailing list