Files
PolyORB/bldtools/install.py
Thomas Quinot 20ad60867e Convert install.py to Python3
T124-007
2020-03-18 17:06:45 +01:00

90 lines
2.1 KiB
Python

#! /usr/bin/env python
import getopt
import os
import shutil
import string
import sys
def usage():
print ("Usage: install.py [-m MODE] [-R] SRCFILE... DSTDIR")
sys.exit(2)
def ensure_dir(d):
if not os.path.isdir(d):
os.makedirs(d)
def _rstrip(line):
return line.strip()
def main():
dir = False
mode = 0o444
strip = False
verbose = False
preserve_relative_path = False
try:
opts, args = getopt.getopt(sys.argv[1:], "dm:svR")
except getopt.GetoptError as err:
# print help information and exit:
print (str(err)) # will print something like "option -a not recognized"
usage()
for o, a in opts:
if o == "-d":
dir = True
elif o == "-m":
mode = int(a, 8)
elif o == "-s":
strip = True
elif o == "-v":
verbose = True
elif o == "-R":
preserve_relative_path = True
else:
assert False, "unhandled option"
if len(args) == 0:
usage()
if not dir:
dst = args.pop()
for file in args:
if file == '-':
args.extend(map(_rstrip, sys.stdin.readlines()))
elif dir:
ensure_dir(file)
else:
if os.path.isdir(dst):
if preserve_relative_path:
dstfile = file
else:
dstfile = os.path.basename(file)
dstfile = os.path.join(dst, dstfile)
if preserve_relative_path:
ensure_dir(os.path.dirname(dstfile))
else:
dstfile = dst
if verbose:
print ("%s -> %s" % (file, dstfile))
if os.path.exists(dstfile):
# Before doing the unlink, ensure that we have write access to
# the file (required on Windows).
os.chmod(dstfile, 0o600)
os.unlink(dstfile)
shutil.copy2(file, dstfile)
os.chmod(dstfile, mode)
if strip:
os.spawn(os.P_WAIT, "strip", dstfile)
if __name__ == "__main__":
main()