Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 57 lines (50 sloc) 1.677 kb
#!/usr/bin/env python
"""Apply lipo recursively to trees.
"""
import sys
import os
import shutil
import subprocess
# Parse arguments
import argparse
parser = argparse.ArgumentParser(description=sys.modules[__name__].__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("output", help="Output tree")
parser.add_argument("input", help="Input trees", nargs="+")
options = parser.parse_args()
output = options.output
inputs = options.input
def ismacho(path):
"""Check if a file is Mach-O"""
fnull = open(os.devnull, "w")
try:
subprocess.check_call(["lipo", "-info", path], stdout=fnull, stderr=fnull)
except subprocess.CalledProcessError:
return False
return True
# Copy
for root, dirs, files in os.walk(inputs[0]):
# Create root directory in output
oroot = root[len(inputs[0]):].lstrip("/")
oroot = os.path.join(output, oroot)
if not os.path.isdir(oroot):
os.makedirs(oroot)
shutil.copystat(root, oroot)
# Copy files
for f in files:
of = os.path.join(oroot, f)
f = os.path.join(root, f)
if os.path.islink(f):
# Symlink
linkto = os.readlink(f)
os.symlink(linkto, of)
elif ismacho(f):
sff = [ os.path.join(r, f[len(inputs[0]):].lstrip("/"))
for r in inputs ]
args = [ "lipo", "-create", "-output", of ]
args.extend(sff)
subprocess.check_call(args)
else:
# Regular file, just copy from the first input directory
shutil.copyfile(f, of)
shutil.copystat(f, of)
Jump to Line
Something went wrong with that request. Please try again.