#!/usr/bin/env python3

import re
import sys
import os
from subprocess import *

def main(args):
    if len(args) < 3:
        sys.stderr.write("Usage: %s binary dest\n" % args[0])
        return 1
    binary = args[1]
    dest = args[2]
    os.mkdir(dest)
    for line in Popen(["ldd", binary], stdout = PIPE).communicate()[0].decode().split("\n"):
        m = re.search(r'=>\s*(/\S*)', line)
        if m is None:
            m = re.search(r'(/lib\S+)\s\(', line)
        if m is not None:
            lib = m.group(1)
            os.spawnlp(os.P_WAIT, "cp", "cp", "-L", lib, dest)
    os.spawnlp(os.P_WAIT, "cp", "cp", "-L", binary, dest)
    os.spawnlp(os.P_WAIT, "patchelf", "patchelf", "--set-rpath", "$ORIGIN", os.path.join(dest, os.path.basename(binary)))

if __name__ == "__main__":
    sys.exit(main(sys.argv))
