Skip to content

Unable to patch executable produced by deno compile and use it in Nix. REPL starts instead of program. #19961

Description

@0x241F31

I'm trying to build application with deno compile to single executable with Nix and run it in nix container:

packages.api = pkgs.stdenv.mkDerivation rec {
  name = "api";
  src = ./api;
  __noChroot = true;
  nativeBuildInputs = with pkgs; [
    deno
    unzip
    autoPatchelfHook
  ];
  buildInputs = with pkgs; [
    stdenv.cc.cc
  ];
  buildPhase = ''
    runHook preBuild
    export DENO_DIR=./.deno
    mkdir $DENO_DIR
    deno cache --reload --lock ./deno.lock --lock-write main.ts
    mkdir -p $out/bin
    deno compile -A --check --lock=deno.lock ./main.ts --cached-only --output $out/bin/${name} --target=x86_64-unknown-linux-gnu
    runHook postBuild
  '';
};

Patched libraries:

foxpro:~/craft/sferadel/next$ /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/ld-linux-x86-64.so.2 --list /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api                  19:22 27.07
        linux-vdso.so.1 (0x00007fffa8f36000)
        libdl.so.2 => /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libdl.so.2 (0x00007ff7134a0000)
        libgcc_s.so.1 => /nix/store/m6kphh9rh424vbw5wq84jcg0r4is4sc5-gcc-12.3.0-libgcc/lib/libgcc_s.so.1 (0x00007ff71347f000)
        libpthread.so.0 => /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libpthread.so.0 (0x00007ff71347a000)
        libm.so.6 => /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libm.so.6 (0x00007ff71339a000)
        libc.so.6 => /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libc.so.6 (0x00007ff70d21a000)
        /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/ld-linux-x86-64.so.2 (0x00007ff7134a7000)

Starting produced binary:

foxpro:~/craft/sferadel/next$ with-env {LD_DEBUG: files} { /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api }                                                                            19:23 27.07
    505344:
    505344:     file=libdl.so.2 [0];  needed by /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api [0]
    505344:     file=libdl.so.2 [0];  generating link map
    505344:       dynamic: 0x00007f26e71e3da8  base: 0x00007f26e71e0000   size: 0x0000000000004010
    505344:         entry: 0x00007f26e71e0000  phdr: 0x00007f26e71e0040  phnum:                 11
    505344:
    505344:
    505344:     file=libgcc_s.so.1 [0];  needed by /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api [0]
    505344:     file=libgcc_s.so.1 [0];  generating link map
    505344:       dynamic: 0x00007f26e71dec00  base: 0x00007f26e71bf000   size: 0x0000000000020148
    505344:         entry: 0x00007f26e71bf000  phdr: 0x00007f26e71bf040  phnum:                 10
    505344:
    505344:
    505344:     file=libpthread.so.0 [0];  needed by /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api [0]
    505344:     file=libpthread.so.0 [0];  generating link map
    505344:       dynamic: 0x00007f26e71bdda8  base: 0x00007f26e71ba000   size: 0x0000000000004010
    505344:         entry: 0x00007f26e71ba000  phdr: 0x00007f26e71ba040  phnum:                 11
    505344:
    505344:
    505344:     file=libm.so.6 [0];  needed by /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api [0]
    505344:     file=libm.so.6 [0];  generating link map
    505344:       dynamic: 0x00007f26e71b8c58  base: 0x00007f26e70da000   size: 0x00000000000df018
    505344:         entry: 0x00007f26e70da000  phdr: 0x00007f26e70da040  phnum:                 11
    505344:
    505344:
    505344:     file=libc.so.6 [0];  needed by /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api [0]
    505344:     file=libc.so.6 [0];  generating link map
    505344:       dynamic: 0x00007f26e70ca980  base: 0x00007f26e6ef4000   size: 0x00000000001e5d70
    505344:         entry: 0x00007f26e6f17c90  phdr: 0x00007f26e6ef4040  phnum:                 14
    505344:
    505344:
    505344:     calling init: /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/ld-linux-x86-64.so.2
    505344:
    505344:
    505344:     calling init: /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libc.so.6
    505344:
    505344:
    505344:     calling init: /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libm.so.6
    505344:
    505344:
    505344:     calling init: /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libpthread.so.0
    505344:
    505344:
    505344:     calling init: /nix/store/m6kphh9rh424vbw5wq84jcg0r4is4sc5-gcc-12.3.0-libgcc/lib/libgcc_s.so.1
    505344:
    505344:
    505344:     calling init: /nix/store/1x4ijm9r1a88qk7zcmbbfza324gx1aac-glibc-2.37-8/lib/libdl.so.2
    505344:
    505344:
    505344:     initialize program: /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api
    505344:
    505344:
    505344:     transferring control: /nix/store/agib1vzv0i6br7cy7kdl1ymcm01w5wjx-api/bin/api
    505344:
Deno 1.35.2
exit using ctrl+d, ctrl+c, or close()
REPL is running with all permissions allowed.
To specify permissions, run `deno repl` with allow flags.
> 

Related: #12780

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions