Search code examples
pythontravis-ci

os.system not finding file that is really there


This happens in the python build:

#is it executable
print os.access("support/d8/d8", os.X_OK)
#is it there in the shell
os.system("test -f support/d8/d8 && echo \"found\" || echo \"not found\"")

and then:

#run it
os.system("support/d8/d8 --trace_exception with a bunch of files");

which outputs:

True
found
sh: 1: support/d8/d8: not found

I don't get it. It's there it's executable. Why is it not there when I start it.


Solution

  • You're running an x86_32 bit executable d8 (despite the comment, by the way). If the (Travis) system is x64, and/or does not have all of the x86_32 libraries

    • linux-gate.so.1
    • libpthread.so.0
    • libstdc++.so.6
    • libm.so.6
    • libgcc_s.so.1
    • libc.so.6

    then the executable won't run, since the loader cannot find all required libraries. Build statically and/or for x64.