Good catch @l0rinc, I didn't test this in my review, and you're right, it doesn't work (AttributeError: 'Namespace' object has no attribute 'out_sdkt_path') on master nor in the current HEAD. I also agree with removing nargs=1:
<details>
<summary>git diff on 266a2bf40e</summary>
diff --git a/contrib/macdeploy/gen-sdk.py b/contrib/macdeploy/gen-sdk.py
index e9221cf60d..bfac1542a2 100755
--- a/contrib/macdeploy/gen-sdk.py
+++ b/contrib/macdeploy/gen-sdk.py
@@ -21,7 +21,7 @@ def run():
description=__doc__, formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('xcode_app', metavar='XCODEAPP', nargs=1)
- parser.add_argument("-o", metavar='OUTSDKTAR', nargs=1, dest='out_sdkt', required=False)
+ parser.add_argument("-o", metavar='OUTSDKTAR', dest='out_sdkt', required=False)
args = parser.parse_args()
@@ -46,7 +46,7 @@ def run():
out_name = "Xcode-{xcode_version}-{xcode_build_id}-extracted-SDK-with-libcxx-headers".format(xcode_version=xcode_version, xcode_build_id=xcode_build_id)
if args.out_sdkt:
- out_sdkt_path = pathlib.Path(args.out_sdkt_path)
+ out_sdkt_path = pathlib.Path(args.out_sdkt)
else:
# Construct our own out_sdkt if not specified on the command line
out_sdkt_path = pathlib.Path("./{}.tar".format(out_name))
</details>
Or, preferably, the relevant logic can be simplified even more:
<details>
<summary>git diff on 266a2bf40e</summary>
diff --git a/contrib/macdeploy/gen-sdk.py b/contrib/macdeploy/gen-sdk.py
index e9221cf60d..cf37929287 100755
--- a/contrib/macdeploy/gen-sdk.py
+++ b/contrib/macdeploy/gen-sdk.py
@@ -20,12 +20,12 @@ def run():
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawTextHelpFormatter)
- parser.add_argument('xcode_app', metavar='XCODEAPP', nargs=1)
- parser.add_argument("-o", metavar='OUTSDKTAR', nargs=1, dest='out_sdkt', required=False)
+ parser.add_argument('xcode_app', metavar='XCODEAPP', type=pathlib.Path)
+ parser.add_argument("-o", metavar='OUTSDKTAR', dest='out_sdkt', type=pathlib.Path, required=False)
args = parser.parse_args()
- xcode_app = pathlib.Path(args.xcode_app[0]).resolve()
+ xcode_app = args.xcode_app.resolve()
assert xcode_app.is_dir(), "The supplied Xcode.app path '{}' either does not exist or is not a directory".format(xcode_app)
xcode_app_plist = xcode_app.joinpath("Contents/version.plist")
@@ -45,11 +45,7 @@ def run():
out_name = "Xcode-{xcode_version}-{xcode_build_id}-extracted-SDK-with-libcxx-headers".format(xcode_version=xcode_version, xcode_build_id=xcode_build_id)
- if args.out_sdkt:
- out_sdkt_path = pathlib.Path(args.out_sdkt_path)
- else:
- # Construct our own out_sdkt if not specified on the command line
- out_sdkt_path = pathlib.Path("./{}.tar".format(out_name))
+ out_sdkt_path = args.out_sdkt or pathlib.Path("./{}.tar".format(out_name))
def tarfp_add_with_base_change(tarfp, dir_to_add, alt_base_dir):
"""Add all files in dir_to_add to tarfp, but prepend alt_base_dir to the files'
</details>