diff --git a/apple/internal/rule_support.bzl b/apple/internal/rule_support.bzl index 6daf7b0c25..8b354abd76 100644 --- a/apple/internal/rule_support.bzl +++ b/apple/internal/rule_support.bzl @@ -288,6 +288,16 @@ _RULE_TYPE_DESCRIPTORS = { requires_provisioning_profile = False, skip_signing = True, ), + apple_product_type.bundle: _describe_rule_type( + allowed_device_families = ["iphone", "ipad"], + bundle_extension = ".bundle", + has_infoplist = True, + product_type = apple_product_type.bundle, + requires_bundle_id = True, + requires_provisioning_profile = False, + requires_signing_for_device = False, + skip_signing = True, + ), # ios_ui_test apple_product_type.ui_test_bundle: _describe_rule_type( allowed_device_families = ["iphone", "ipad"], diff --git a/tools/codesigningtool/codesigningtool.py b/tools/codesigningtool/codesigningtool.py index 4c289e9d05..59f3841905 100644 --- a/tools/codesigningtool/codesigningtool.py +++ b/tools/codesigningtool/codesigningtool.py @@ -118,7 +118,8 @@ def _find_codesign_identities(identity=None): output = output.strip() pattern = "(?P[A-F0-9]{40})" if identity: - pattern += r'\s+"(?P.*?{}.*?)"'.format(re.escape(identity)) + name_requirement = re.escape(identity) + pattern += r'\s+".*?{}.*?"'.format(name_requirement) regex = re.compile(pattern) for line in output.splitlines(): # CSSMERR_TP_CERT_REVOKED comes from Security.framework/cssmerr.h @@ -127,7 +128,7 @@ def _find_codesign_identities(identity=None): m = regex.search(line) if m: groups = m.groupdict() - id = (groups["hash"], groups.get("full_name")) + id = groups["hash"] ids.append(id) return ids @@ -135,10 +136,10 @@ def _find_codesign_identities(identity=None): def _find_codesign_identity(mobileprovision): """Finds a valid identity on the system given a mobileprovision file.""" mpf = _parse_mobileprovision_file(mobileprovision) - ids_codesign = dict(_find_codesign_identities()) + ids_codesign = set(_find_codesign_identities()) for id_mpf in _get_identities_from_provisioning_profile(mpf): if id_mpf in ids_codesign: - return (id_mpf, ids_codesign[id_mpf]) + return id_mpf def _filter_codesign_output(codesign_output): @@ -149,21 +150,6 @@ def _filter_codesign_output(codesign_output): filtered_lines.append(line) return "\n".join(filtered_lines) -def _sign_flags(identity): - """Produce codesign --sign flags for an identity""" - if isinstance(identity, tuple): - hash_id, name_id = identity - # Include both name and hash of the signing identity. The name is for - # debuggability, and the hash avoids a codesign error when given an - # ambiguous name. The name goes first, the hash overrides the name. - flags = [] - if name_id: - flags.extend(["--sign", name_id]) - flags.extend(["--sign", hash_id]) - return flags - else: - return ["--sign", identity] - def main(argv): parser = argparse.ArgumentParser(description="codesign wrapper") parser.add_argument( @@ -190,9 +176,8 @@ def main(argv): print("ERROR: Unable to find an identity on the system matching the "\ "ones in %s" % args.mobileprovision, file=sys.stderr) return 1 - sign_args = _sign_flags(identity) - stdout, stderr = _check_output([args.codesign, "-v"] + sign_args - + codesign_args) + stdout, stderr = _check_output([args.codesign, "-v", "--sign", identity] + + codesign_args,) if stdout: filtered_stdout = _filter_codesign_output(stdout) if filtered_stdout: