Skip to content

--inhibit-rpath "" passed to executable. #71

@baryluk

Description

@baryluk

Please include the following information if you're reporting an issue.

  • Which operating system you're using. Centos 8. amd64.
  • Which Python version. Python 3.6
  • Which exodus package version. exodus-bundler 2.0.4
  • The command that you're running (please include the --verbose flag so that the stack trace is included).
  • The full output of the command.
centos8$ exodus \
  --verbose \
  --add /lib64/libnss_files.so.2 \
  --add /lib64/libnss_dns.so.2 \
  --add /lib64/libnss_myhostname.so.2 \
  --add /lib64/libresolv.so.2 \
  foo.bar.aksjdkadj.2210311345 > foo.bar.aksjdkadj.2210311345.installer
WARNING: Installing either the musl or diet C libraries will result in more efficient launchers (currently using bash fallbacks instead).
centos8$ 

So the issue appears to be the startup wrapper script.

centos9$ cat ./.exodus/bin/foo.bar.aksjdkadj.2210311345
#! /bin/bash

current_directory="$(dirname "$(readlink -f "$0")")"
executable="${current_directory}/./foo.bar.aksjdkadj.2210311345-x"
library_path="../../lib64:../../usr/lib64:../../lib:../../usr/lib:../../lib32:../../usr/lib32"
library_path="${current_directory}/${library_path//:/:${current_directory}/}"
linker="${current_directory}/./linker-68e1553cd79d844f7efe46e38dadc34b8af4af011c78c701f4b377ccf8f6df9a"
if [ "true" == "true" ]; then
    exec "${linker}" --library-path "${library_path}" --inhibit-rpath "" "${executable}" "$@"
else
    exec "${linker}" --library-path "${library_path}" "${executable}" "$@"
fi
centos9$

The bundled linker looks to support this flag:

centos9$ ./.exodus/bundles/210dfd9330e9bed177209f5e9545314ce45943c20426fc5f859f2ddc4c059d4b/home/witek/linker-68e1553cd79d844f7efe46e38dadc34b8af4af011c78c701f4b377ccf8f6df9a --help | grep inhibit-rpath
  --inhibit-rpath LIST  ignore RUNPATH and RPATH information in object names
centos9$ ./.exodus/bundles/210dfd9330e9bed177209f5e9545314ce45943c20426fc5f859f2ddc4c059d4b/home/witek/linker-68e1553cd79d844f7efe46e38dadc34b8af4af011c78c701f4b377ccf8f6df9a --version
ld.so (GNU libc) stable release version 2.28.
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
centos9$

But when I try to run the wrapper script with extra commands to pass to the target executable, it does not work properly:

foo@centos9$ /home/foo/.exodus/bin/foo.bar.aksjdkadj.2210311345 ./cfg/foo1.json
20221031-18:30:25 [ERROR] WARNING: expected "--inhibit-rpath" to be config filename (file.cc:270)
20221031-18:30:25 [ERROR] Uncaught exception from thread 140441755105152: expected "--inhibit-rpath" to be config filename (log/log.cc:510)
(stack trace from my C++ app)
foo@centos9$ 

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