From dbdf45fb5bd036d9121855a542c5b3b0bfd7eb1d Mon Sep 17 00:00:00 2001 From: meow464 Date: Fri, 24 Sep 2021 18:41:03 -0300 Subject: [PATCH] Adds `--add-custom-recipe` to the `update` command Custom recipes were built but not added to the XCode project. See: https://github.com/kivy/kivy-ios/issues/642 --- kivy_ios/toolchain.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/kivy_ios/toolchain.py b/kivy_ios/toolchain.py index f1130153..a0ee8bf1 100755 --- a/kivy_ios/toolchain.py +++ b/kivy_ios/toolchain.py @@ -9,7 +9,7 @@ import argparse import sys from sys import stdout -from os.path import join, dirname, realpath, exists, isdir, basename +from os.path import join, dirname, realpath, exists, isdir, basename, split from os import listdir, unlink, makedirs, environ, chdir, getcwd, walk import sh import zipfile @@ -1188,7 +1188,7 @@ def _hostpython_pip(args): shprint(pip_cmd, *args) -def update_pbxproj(filename, pbx_frameworks=None): +def update_pbxproj(filename, pbx_frameworks=None, custom_recipes=None, custom_recipes_paths=None): # list all the compiled recipes ctx = Context() pbx_libraries = [] @@ -1197,7 +1197,17 @@ def update_pbxproj(filename, pbx_frameworks=None): frameworks = [] libraries = [] sources = [] + + if custom_recipes and custom_recipes_paths: + recipes = custom_recipes + ctx.custom_recipes_paths = custom_recipes_paths + else: + recipes = [] + for recipe in Recipe.list_recipes(): + recipes.append(recipe) + + for recipe in recipes: key = "{}.build_all".format(recipe) if key not in ctx.state: continue @@ -1458,6 +1468,9 @@ def update(self): description="Update an existing xcode project") parser.add_argument("filename", help="Path to your project or xcodeproj") parser.add_argument("--add-framework", action="append", help="Additional Frameworks to include with this project") + parser.add_argument("--add-custom-recipe", action="append", default=[], + help="Path to custom recipe (the recipe must already have been built with the 'build' command)") + args = parser.parse_args(sys.argv[2:]) filename = self.find_xcodeproj(args.filename) @@ -1466,7 +1479,13 @@ def update(self): logger.error("{} not found".format(filename)) sys.exit(1) - update_pbxproj(filename, pbx_frameworks=args.add_framework) + recipes = [] + for p in args.add_custom_recipe: + _, name = split(p) + recipes.append(name) + + update_pbxproj(filename, pbx_frameworks=args.add_framework, + custom_recipes=recipes, custom_recipes_paths=args.add_custom_recipe) print("--") print("Project {} updated".format(filename))