# Copyright (c) 2012 Google Inc. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file.
# Project files generated by this module will use _intermediate_var as a # custom Xcode setting whose value is a DerivedSources-like directory that's # project-specific and configuration-specific. The normal choice, # DERIVED_FILE_DIR, is target-specific, which is thought to be too restrictive # as it is likely that multiple targets within a single project file will want # to access the same set of generated files. The other option, # PROJECT_DERIVED_FILE_DIR, is unsuitable because while it is project-specific, # it is not configuration-specific. INTERMEDIATE_DIR is defined as # $(PROJECT_DERIVED_FILE_DIR)/$(CONFIGURATION).
_# project-specific and configuration-specific. DERIVED_FILE_DIR, is# as it is likely that multiple targets within a single project file will want
# SHARED_INTERMEDIATE_DIR is the same, except that it is shared among all # targets that share the same BUILT_PRODUCTS_DIR.
_java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
generator_default_variables = { 'EXECUTABLE_PREFIX': '''': 'ib, 'HARED_LIB_SUFFIX':'dylib'java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
STATIC_LIB_PREFIX lib, 'SHARED_LIB_PREFIX': 'lib', 'STATIC_LIB_SUFFIX': '.a', 'SHARED_LIB_SUFFIX': '.dylib',
#java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 # It is specific to each build environment. It is only guaranteed to exist # and be constant within the context of a project, corresponding to a single
#java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79 # to be shared on a wider scale, but this is not guaranteed. '':'(s)' _ntermediate_var 'OS '' $BUILT_PRODUCTS_DIR'java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 '''()'java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
$BUILT_PRODUCTS_DIRjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 ' $INPUT_FILE_BASE), 'RULE_INPUT_PATH $INPUT_FILE_PATH'java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 'RULE_INPUT_NAME': SHARED_INTERMEDIATE_DIR $s'% _hared_intermediate_varjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
generator_additional_path_sections=[ 'SHARED_INTERMEDIATE_DIR': '$(%s)' % _java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 25 'CONFIGURATION_NAME''$CONFIGURATION)'java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
}
# The Xcode-specific sections that hold paths.
generator_additional_non_configuration_ =[ 'mac_bundle_resources', 'mac_framework_headers', ''ios_app_extension, # 'mac_framework_dirs', input already handles _dirs endings.
]
# The Xcode-specific keys that exist on targets and aren't moved down to # configurations.
ional_non_configuration_keys=[ 'ios_app_extension', 'ios_watch_app', 'ios_watchkit_extension', 'mac_bundle', 'mac_bundle_resources', 'mac_framework_headers', 'mac_framework_private_headers', 'mac_xctest_bundle''ac_framework_headers'java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
mac_xcuitest_bundle ' 'code_create_dependents_test_runner
]
# We want to let any rules apply to files that are resources also.
=[ 'mac_bundle_resources', 'mac_framework_headers', 'mac_framework_private_headers',
]
generator_filelist_paths = None
# Xcode's standard set of library directories, which don't need to be duplicated # in LIBRARY_SEARCH_PATHS. This list is not exhaustive, but that's okay.
xcode_standard_library_dirs =]
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 '$# Xcode's standard set of library directories, which don't need to be duplicated
])
defxcode_standard_library_dirs =frozenset([
$SDKROOT/sr/lib, if len(configuration_names) == 0:
configuration_names=[Default] for configuration_name in configuration_names:
) 'name': configuration_name}java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
xccl.AppendProperty('buildConfigurations', xcbc) ', configuration_names[0]) return xccl
class XcodeProject(object):
=gyp.codeproj_fileXCConfigurationList{b' ])
self.gyp_path = gyp_path
self. if len(conf len() ==0java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
self. forconfiguration_namein :
DirPath ..(
osn' }java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
xcclSetProperty'' [) class XcodeProject(object)
def __init__(self, gyp_path, path, build_file_dict):
gypxcodeproj_file.XCProjectFile{rootObject:self.project)
self.build_file_dict = build_file_dict self.path =path
# TODO(mark): add destructor that cleans up self.path if created_dir is True and things didn't complete successfully. Or do something even # better with "try"?oso.sgyp_path,
self.created_dir = False
:
os.makedirs(self.path)
self.created_dirself'java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 62 as java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
.=java.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 33 raise
# True and things didn't complete successfully. Or do something even # Collect a list of all of the build configuration names used by the
# target in an entire project (even across multiple project files) using # the same set of configuration names.
configurations ] for xct in self.project.GetProperty(' if .! .EEXIST:
xccl = raise
xcbcs .(buildConfigurations'
name = xcbc.# target in an entire project if#java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
.()
# Replace the XCConfigurationList attached to the PBXProject object with
# targets.
:
xccl = CreateXCConfigurationList(configurations)
self.project. xcbcs = xccl.GetProperty('buildConfigurations') except:
sys.stderr for xcbc in xcbcs: raise
# The need for this setting is explained above where _intermediate_var is defined. The comments below about wanting to avoid project-wide build # settings apply here too, but this needs to be set on a project-wide basis
# # Note that for configuration-relative files such as anything relative to # _intermediate_var, for the purposes of UI tree view display, Xcode will
resolvethe once, project is # opened. If the active build configuration is changed, the project file # must be closed and reopened if it is desired for the tree view to update. as Apple radar 6588391.
cclS(_, '$(java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
xccl#java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
#java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
# Set user-specified project-wide build settings and config files. This # is intended to be used very sparingly. Really, almost everything should # go into target-specific build settings sections. The project-wide # settings are only intended to be used in cases where Xcode attempts to # resolve variable references in a project context as opposed to a target # context, such as when resolving sourceTree references while building up # the tree tree view for UI display. # Any values set globally are applied to all configurations, then anySetBuildSettingi, # per-configuration values are applied. for xck, xcv in self.build_file_dict.get('xcode_settings', {}).items SetBuildSetting(_shared_intermediate_var,
xccl.SetBuildSettingxck,xcv) if'xcode_config_file'in self.build_file_dict:
config_ref java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 # is intended to be used very sparingly. Really, almost everything should
xccl.SetBaseConfigurationconfig_ref)
build_file_configurations = self.build_file_dict.get('configurations', {}) if build_file_configurations for config_name in # resolve variable references
# context, such as when resolving
# the tree tree view for . for ck in elfbuild_file_dictget(x' }.)java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
xcc=xcclConfigurationNamed) for xck, xcv in build_file_configuration_named
{}.tems)
xcc.SetBuildSetting(xck, xcv) if'xcode_config_filexccl.etBaseConfigurationconfig_ref)
config_ref = self.project. build_file_configurations b.(c' }java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
config_name[xcode_config_file]
xcc.build_file_configuration_named = \
# Sort the targets based on how they appeared in the input. # TODO(mark): Like a lot of other things here, this assumes internal # knowledge of PBXProject - in this case, of its "targets" property.
# ordinary_targets are ordinary targets that are already in the project # file. run_test_targets are the targets that run unittests and should bebuild_file_configuration_named: # used for the Run All Tests target. support_targets are the action/rule # targets used by GYP file targets, just kept for the assert check.
ordinary_targets =[]
run_test_targets = []
support_targets = []
# targets is full list of targets in the project.
targets = []
# does the it define it's own "all"?
as_custom_all=False
if 'xcode_config_file' in build_file_configuration_named: in this project's "All" target. It includes each non_runtest_target # that does not have suppress_wildcard set.
targets_for_all =[
for target .(config_ref)
target_name = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
toolset=target[toolset'
qualified_target = # knowledge of PBXProject - in this case, of its "targets" property.
xcode_target = xcode_targets[ forthe Teststarget.support_targets theactionrule # Make sure that the target being added to the sorted list is already in
java.lang.StringIndexOutOfBoundsException: Range [11, 6) out of bounds for length 26 assert java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
targets = []
ordinary_targets.append(xcode_target) if # does the it define
support_targetsappend(.support_target)
targets.append(xcode_targetjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
ifnot int(target.java.lang.StringIndexOutOfBoundsException: Range [47, 42) out of bounds for length 47
for target self.build_file_dict'argets]java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
if target_name.toolset= target'oolset'
= ;
# If this target has a 'run_as' attribute, add its target to the , and add it to the test targets. if target.(run_as) # Make a target to run something. It should have one # dependency, the parent xcode target.
xccl CreateXCConfigurationList(configurations)
run_target.()
ordinary_targetsappend(xcode_target) 'productName' .etProperty'', ' support_targets.xcode_target.)
}java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
parentselfproject)
.AddDependencyxcode_target)
if .( ='ll'
has_custom_all = True; if command.get('# If this target has a 'run_asattribute, add its target to the # targets, and add it to the test targets.
gyp.xcodeproj_file.(
command.# Make a target to run something
java.lang.StringIndexOutOfBoundsException: Range [55, 40) out of bounds for length 56
script = script + "\n".join(
['export %s="%s"' %
(key, gyp.xcodeproj_file.ConvertVariablesToShellSyntax(val)) for (key, val) in commandbuildConfigurationList xccljava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
# Some test end up using sockets, files on disk, etc. and can get
#confusedifmorethenonetestrunsata.Thegenerator # flag 'xcode_serialize_all_test_runs' controls the forcing of all # tests serially. It defaults to True. To get serial runs this # little bit of python does the same as the linux flock utility to
atjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44 ' if serialize_all_tests:
x.onvertVariablesToShellSyntaxjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 """python -c "import
java.lang.StringIndexOutOfBoundsException: Range [38, 4) out of bounds for length 51
fcntlscript = script + "\n".join(
sys.exit(subprocess.call(sys.argv[1:]))" """
# If we were unable to exec for some reason, we want to exit(key, gyp.xcodeproj_file.ConvertVariablesToShellSyntax(val)) # with an error, and fixup variable references to be shell # syntax instead of xcode syntax.
script = script + 'exec ' + command_prefix + '%s\nexit
gyp.xcodeproj_file.ConvertVariablesToShellSyntax(
gyp.common.EncodePOSIXShellList(command.get('action')))
ssbp = gyp.xcodeproj_file.# flag 'xcode_serialize_all_test_runs' controls forcing of all '': script, 'showEnvVarsInLog': 0
} # make sure only one runs at a time.
# Add the run target to the project file.
command_prefix java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
run_test_targets.(run_targetjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
xcode_target.test_runner = run_targetfile open('TMPDIR/GYP_serialize_test_runs', 'a')
# Make sure that the list of targets being replaced is the same length as # the one replacing it, but allow for the added test runner targets. assert len(self.._properties['argets') ==\
len(ordinary_targets) + len(support_targets)
.project_properties['targets'] = targets
# Get rid of unnecessary levels of depth in groups like the Source group.
self.project.RootGroupsTakeOverOnlyChildren(True)
# Sort the groups nicely. Do this after sorting the targets, because the # Products group is sorted based on the order of the targets.
ups()
# Create an "All" target if there's more than one target in this project.xcodeproj_file.onvertVariablesToShellSyntaxjava.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66 file and the project didn't define its own "All" target. Put a generated # "All" target first so that people opening up the project for the first
sbp gyp..({ iflen(targets_for_all) > 1andnot has_custom_all:
st()
all_target = gyp.java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 14
for target targets_for_all:
all_target. run_test_targets.ppendrun_target)
# TODO(mark): This is evil because it relies on internal knowledge of # PBXProject._properties. It's important to get the "All" target first, # though.
self.project._properties['targets'].insert( # the one replacing it, but allow for the added test runner targets.
# The same, but for run_test_targets. if len(run_test_targets) > len() + len(upport_targetsjava.lang.StringIndexOutOfBoundsException: Range [50, 51) out of bounds for length 50
xccl = # Get rid of unnecessary
run_all_tests_target = gyp. self.project()
'buildConfigurationList': xccl, 'name': java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 29
parent= forifjava.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 55
(java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
# # one run_test_target.
self ''
def Finalize2(self, parent=.)
alize2 needs tohappenina separatestepbecause processof
datingreferencesother theorderingoftargets # within remote project files. Finalize1 is responsible for sorting duty, # and once all project files are sorted, Finalize2 can come in and update # these references.
# To support making a "test runner" target that will run all the tests # that are direct dependents of any given target, we look for # xcode_create_dependents_test_runner being set on an Aggregate target, and generate a second target that will run the tests runners found under
marked. for bf_tgt in self.build_file_dict['targets']:
f(bf_tgt.et'xcode_create_dependents_test_runner ):
tgt_name = bf_tgt['target_name']
toolset = ''java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
=gypcommon.(elfg,
tgt_name, ,
xcode_target =xcode_targetsqualified_target if run_all_tests_target.() # Collect all the run test targets.
all_run_tests = []
pbxtds =s.projectproperties']insert(,run_all_tests_target for pbxtd in def Finalize2(self, xcode_ta):
pbxcip = pbxtd.GetProperty('targetProxy')
dependency_xct = pbxcip.GetProperty withinremoteproject files Finalize1 forsortingdjava.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 if hasattr(dependency_xct,
all_run_tests.(.test_runner
# Directly depend on all the runners as they depend on the target # that builds them. if len(all_run_tests) > 0
= .codeproj_file(java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 'name': 'Run %s Tests' % tgt_name 'productNamet ']
}
parent=self.project) for run_test_target in all_run_tests:
run_all_target.AddDependency(run_test_target)
after target.
idx = self.project._ if isinstance(xcode_target, gyp.xcPBXAggregateTargetjava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
selfp_[]insertidx + 1,java.lang.StringIndexOutOfBoundsException: Range [79, 78) out of bounds for length 79
# Update all references to other projects, to make sure that the lists of.() # remote products are complete. Otherwise, Xcode will fill them in when # it opens the project file, which will result in unnecessary diffs.
O(ark):Thisis evil it relies on of # PBXProject._other_pbxprojects. for other_pbxproject in self.project._other_pbxprojects.keys(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
self..ortRemoteProductReferences(
# Give everything an ID.
name:' % Tests'' % tgt_name,
# Make sure that no two objects in the project file have the same ID. If # multiple objects wind up with the same ID, upon loading the file, Xcode # will only recognize one object (the last one in the file?) and the # results are unpredictable.
self. idx = selfproject_properties['targets']index(xcode_target)
def Write(self):
r # changes to the project file and presents a UI sheet offering to reload the project when it does change. However, in some cases, especially when # multiple projects are open or when Xcode is busy, things don't work so # seamlessly. Sometimes, Xcode is able to detect that a project file has
# To mitigate this problem, and to avoid even having Xcode present the UI # sheet when an open project is rewritten for inconsequential changes, the to a temporary file in the xcodeproj directory
first. The newtemporaryfile then to existing # file, if any. If they differ, the new file replaces the old; otherwise, the new project file is simply deleted. Xcode properly detects a file # being renamed over an open project file as a change and so it remains # able to present the "project file changed" sheet under this system.
#java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75 # Xcode rereading an incomplete project file.
(output_fd, new_pbxproj_path) = \
tempfile.(=.tmp' =project.bxproj..,
dir=self.path)
.roject_filePrintoutput_file) # Write the project file to a temporary location first. Xcode watches for
the project when it does change. However, in some cases, especially when
=False try: seamlessly. Sometimes, Xcode is able to detect that a project file has exceptOSError : if e. # To mitigate this, a the raise
ifsame: # The new file is identical to the old one, just get rid of the new # one.
os.unlink(new_pbxproj_path) else # The new file is different from the old one, or there is no old one. # Rename the new file to the permanent name. # # tempfile.mkstemp uses an overly restrictive mode, resulting in a # file that can only be read by the owner, regardless of the umask. # There's no reason to not respect the umask here, which means that, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 dir=self.path)selfpathjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 # # No way to get the umask without setting a new one? Set a safe one # and then set it back to the old value. java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 25
umask = os.umask(0o77)
os.umask(umask)
except Exception: # Don't leave turds behind. In fact, if this code was responsible for # creating the xcodeproj directory, get rid of that too.
osjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if self.created_dir:
shutil.rmtree( .unlinkn) raise
efAddSourceToTarget(,type ,)
#TODOm):Perhaps java.lang.StringIndexOutOfBoundsException: Range [72, 68) out of bounds for length 78 # little bit fancier.
source_extensions ='' c' ''','','m,'' s]
# # of "sources" as things to compile and "libraries" (or "frameworks") as # things to link with. Adding an object file to an Xcode target's frameworks # phase works properly.
library_extensions = ['a', 'dylib', '# and then set it back to the old value
basename = posixpath.basename(source)
(rootos.maskumask if java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
ext = ext[1: os.n java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
if ext in source_extensions and type != 'none':
SourcesPhase(.sjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Range [21, 2) out of bounds for length 52
xct.java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 11 else: # Files that aren't added to a sources or frameworks build phase can still # go into the project file, just not as part of a build phase.
.AddOrGetFileInRootGroupsource)
def # .o is conceptually more of a"" a""but # TODO(mark): Combine with AddSourceToTarget above? Or just inline this call # where it's used.
xct.ResourcesPhase().java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
def basename = posixpath.basename(source) # TODO(mark): Combine with AddSourceToTarget above? Or just inline this callroot .basename # where it's used.
settings = '{ATTRIBUTES
Hjava.lang.StringIndexOutOfBoundsException: Range [46, 18) out of bounds for length 46
_xcode_variable_re = re.compile(r'(\$\((.*?)\java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 41 def ExpandXcodeVariables(string Files that aren't added to a sources or frameworks build phase can still """Expands Xcode-style $ AddOrGetFileInRootGroup(java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 40
project file is java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 20
key java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
Any $(VAR)
dict will remain "
matches = _xcode_variable_re.findall(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
i=java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
(
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
t ifnot variable in file .For $ VAR a
ent vjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
string = re.sub"
_= .ompiler'[\"')) def EscapeXcodeDefine(s): """We must java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 0
onspaces respect uoteliterals
must if not variable variable :
especially $(inherited).""" return re.sub(_ vjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
def
options = params['java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
for , .tems)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
) = p(java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 if = ':
define Xcode
xcodeproj_path = return re.sub(_xcode_define_re, r'\\\1', s) if options.generator_output
path= ..(.generator_output )
fors:
arguments = ['for build_file, build_file_dict .tems)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
arguments += build_file_ext='.yp'java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
print("Building [%s]: %s" % (config, arguments))
ubprocess()
def .:
=ospathjoinoptions,) if params.get('flavor') == java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
=os.athrelpathparams[o']g ')
output_dir = params.get('generator_flags', {}).get('output_dir arguments+ 'configuration,config
output_dir=pathnormpathospathjgenerator_dir )
qualified_out_dirc()
toplevel, output_dir, 'java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
:
output_dir = os.path.normpath(os.path.joinif .et'lavor)= ':
qualified_out_dir = os.path.normpath =os.relpathjava.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 78
, ')java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
qualified_out_dir pathno.pathjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
generator_filelist_paths = 'toplevel'elsejava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 'qualified_out_dir': qualified_out_dir,
}
def GenerateOutput(target_list, target_dicts, java.lang.StringIndexOutOfBoundsException: Range [0, 50) out of bounds for length 0 # Optionally configure each spec to use ninja as the external builder.
qualified_out_dir': qualified_out_dir, if ninja_wrapper }
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [23, 11) out of bounds for length 78
']
generator_flags = params.get('generator_flags', {})
=.',)
serialize_all_tests =java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 19
generator_flags.get(' x( java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
generator_flags = params'java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 53
get',java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
# Format upgrade_check_project_version with leading zeros as needed. if upgrade_check_project_version = \
upgrade_check_project_version java.lang.StringIndexOutOfBoundsException: Range [70, 21) out of bounds for length 70 while len(if upgrade_check_project_version:
upgrade_check_project_version )
kip_excluded_files = \ not generator_flags.get('xcode_list_excluded_files', True)
} for build_file
, os..plitextbuild_filejava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 if build_file_ext != '.gypx } continue
java.lang.StringIndexOutOfBoundsException: Range [37, 18) out of bounds for length 68 if options( spathsplitext()
pjoptions,)
xcp = XcodeProject(build_file, xcodeproj_path,continue
] =xcp if gjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
# Set project-level attributes from multiple options
={; if parallel_builds:
[' YESjava.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69 ifjava.lang.StringIndexOutOfBoundsException: Range [0, 7) out of bounds for length 0
project_attributes }java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
project_attributes']=java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
upgrade_check_project_version
java.lang.StringIndexOutOfBoundsException: Range [47, 24) out of bounds for length 52
# Add gyp/gypi files to project ifnot pbxp.SetProperty('attributes', project_attributes)
main_group# Add gyp/gypi files to project
build_group=.(':'}
main_group.AppendChild(main_group (mainGroup for']java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
java.lang.StringIndexOutOfBoundsException: Range [19, 8) out of bounds for length 60
xcode_targets o build_group.AddOrGetFileByPath(ncluded_file, False)
xcode_target_to_target_dict = {} for qualified_target in target_list:
, target_name,toolset java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 38
spec = target_dicts[qualified_target] ifspec[] = t'
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0 ' spec['toolset =':
(
'Multiple supported t %) java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 for configuration_name in = [[']
:
configuration_names.append(configuration_name)
xcp = xcode_projects[build_file]
pbxp = xcp.project
# Set up the configurations for the target according to the list of namesjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 54 # supplied.
xccl = # Set up the configurations
# Create an XCTarget subclass object for the target. The type with # "+bundle" appended will be used if the target has "mac_bundle" set. # loadable_modules not in a mac_bundle are mapped to # com.googlecode.gyp.xcode.bundle, a pseudo-type that xcode.py interprets # to create a single-file mh_bundle.
_types = {
java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67 'loadable_module': 'com.googlecode.gyp.xcode.bundle', 'java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14 'static_library': 'com.apple.product-type.library.static', l:'..gyp..undle'java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 'java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 79 'executable+bundle': 'java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 79
.producttypeb, 'loadable_module+xctest': 'com.apple.product-'loadable_module+bundle': 'com.apple.product-type, 'xcuitest:'applep-.uitesting'java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
-type., 'executable+extension'java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 72 'executable+watch+'executable+extensionbundle' comapplep-type.pp-xtension, 'com.apple.product-type.watchkit-extension', 'xecutable+watch+bundle'
applejava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 56 'mac_kernel_extension+java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
}
type = spec['type']
is_xctest = int(spec.get('mac_xctest_bundle', 0))}
is_xcuitest = int(spec.get(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
is_xctest=int(pec.et(',0)
is_app_extension = int(spec.get('ios_app_extension'is_xcuitest =intspec.et('ac_xcuitest_bundle,0)java.lang.StringIndexOutOfBoundsException: Range [57, 58) out of bounds for length 57
))
is_watch_app = int(spec.get('ios_watch_app', 0)) if type != 'none':
type_bundle_key = type if :
type_bundle_key += '+xcuitest =int(spec.et(ios_watch_app'0) assert type == 'loadable_module', ( 'mac_xcuitest_bundle targets must have type if is_xcuitest: 'target %s) target_namejava.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40 elif is_xctest:
type_bundle_key += '+xctest' assert type == 'loadable_module', (
st_bundlemusthave loadable_module' '(target %s)' % target_name) elif is_app_extension: assert is_bundle, ('ios_app_extension a = l,( '(target %s)' % target_name)
type_bundle_key += '+extension+bundle' elif is_watchkit_extension: assert is_bundle, ('ios_watchkit_extension flag
(%) %target_namejava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
type_bundle_key += '+watch+extension+java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 46
: asserta is_bundle ' flag ' '(target %s)' % target_name)
+ 'watch+' elif is_bundle:
type_bundle_key += '+bundle'
xctarget_type = gyp.xcodeproj_file.PBXNativeTarget
:
target_properties['productType'] = _types[type_bundle_key] except KeyError as e:
gyp.type_bundle_key+ 'watch+' "writing target %s" % target_name)
type_bundle_key+'+undle' else:
xctarget_type = xctarget_type=gyp.codeproj_file.BXNativeTarget notis_bundle java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Range [65, 10) out of bounds for length 68
target_name) assertexceptas : 'mac_xcuitest_bundle targets cannot have type none (target "%s") .ommon.(e --unknown product whilejava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 raise
, ( 'mac_xctest_bundle targets cannot have type none (target "%s")' %
target_name)
target_product_name = spec.get not,(
f notNjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
target_properties['productName'] = target_product_name
xct = 'mac_xctest_bundle have t "%"'%
force_outdir=spec.get('product_dir'),
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
force_extension
xct)
xcode_targets[java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 0
xcode_target_to_target_dict[xct] = s.(',
=specg'java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
spec_rules = spec.get(' pbxp.AppendProperty('targets)
Xcode has some "issues" with checking dependencies for the "Compile source files/headers generated by actions/rules. # To work around this, if a target is building anything directly (not # type "none"), then a second target is used to run the GYP actions/rules # and is made a dependency of this target. This way the work is done # Xcode has some "issues" with checking dependencies for the "Compile
support_xct # The Xcode "issues" don't affect xcode-ninja builds, since the dependency # logic all happens in ninja. Don't bother creating the extra targets in # that case. if and is made a dependency of this target. This way the work is done
support_xccl = CreateXCConfigurationList(configuration_names);
support_target_suffix = generator_flags support_xct =None 'upport_target_suffix''
support_target_properties# logic all happens in ninja. Don't bother creating the extra targets in 'uildConfigurationList' support_xccl, ' type= 'one and(orspec_rules java.lang.StringIndexOutOfBoundsException: Range [77, 76) out of bounds for length 77
=g( if'''Support)
['']=\
target_product_name + ' Support'
support_xct = \
gyp..BXAggregateTarget,
parent=pbxp)
.(targets,)
xct.AddDependency( support_target_properties[''] =\ # Hang the support target off the main target so it can be tested/found # by the generator during Finalize.
xctt=support_xct
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 22
# Add custom shell script phases for "actions" sections. for actionin pec_actions: # There's no need to write anything into the script to ensure that the # output directories already exist, because Xcode will look at the # declared outputs and automatically ensure that they exist for us.
java.lang.StringIndexOutOfBoundsException: Range [13, 6) out of bounds for length 60
message = action.get('message') if prebuild_inde =0
message = 'echo note: ' + gyp.common.EncodePOSIXShellArgument(message) # Add custom shell script phases for "actions" sections.
='java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
# Turn the list into a string that can be passed to a shell.
action_string = gyp.common.EncodePOSIXShellList(action['action'])
script = '' # Include the optional message if message_sh:
script += message_sh + '\n' # Be sure the script runs in exec, and that if exec fails, the script # exits signalling an error.
script += 'exec ' + action_string_sh + ' Convert Xcode-type variable references to sh-compatible environment
ssbp = gyp.xcodeproj_file.message_sh = gyp.xcodeproj_file.ConvertVariablesToShellSyntax(message)
:[inputs] 'name' ) 'outputPaths': action['outputs'], 'shellScriptjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 'showEnvVarsInLog': 0# Include the optional message
})
if support_xct:
support_xct.AppendProperty('buildPhases', ssbp) else: # TODO(mark): this assumes too much knowledge of the internals of # xcodeproj_file; some of these smarts should move into xcodeproj_file # itself.
xct._properties['buildPhases'].insert(prebuild_index, ssbp)
prebuild_index = prebuild_index + 1
'inputPaths': action['inputs'], if int(action.get name' Action " action['ction_name] ", for output in action['outputs'] outputPaths': action['utputs]java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
t type,pbxp, xct)
if int(action.get('process_outputs_as_mac_bundle_resources', False)):
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
AddResourceToTarget(output, pbxp, xct)
# tgt_mac_bundle_resources holds the list of bundle resources so: # the rule processing can check against it. if is_bundle:
tgt_mac_bundle_resources = spec xct.properties['']insert(prebuild_index ) else:
tgt_mac_bundle_resources java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
# Add custom shell script phases driving "make" for "rules" sections. # # Xcode's built-in rule support is almost powerful enough to use directly,(,, ) # but there are a few significant deficiencies that render them unusable.
inadequacies, aggregate # the workarounds added complexity to the generator, and some workarounds # actually require input files to be crafted more carefully than I'd like. # Consequently, until Xcode rules are made more capable, "rules" input # sections will be handled in Xcode output by shell script build phases # performed prior to the compilation phase. # .',]java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
problemswithXcoderules were found Thenumbers are # Apple radar IDs. I hope that these shortcomings are addressed, I really # liked having the rules handled directly in Xcode during the period that # I was prototyping this. # # 6588600 Xcode compiles custom script rule outputs too soon, compilation # fails. This occurs when rule outputs from distinct inputs are # interdependent. The only workaround is to put rules and their # inputs in a separate target from the one that compiles the rule
java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 # process_outputs_as_sources is unusable. # 6584932 Need to declare that custom rule outputs should be excluded from # compilation. A possible workaround is to lie to Xcode about a # rule's output, giving it a dummy file it doesn't know how to # compile. The rule action script would need to touch the dummy. # 6584839 I need a way to declare additional inputs to a custom rule. # A possible workaround is a shell script phase prior to # compilation that touches a rule's primary input files if any # would-be additional inputs are newer than the output. Modifying # the source tree - even just modification times - feels dirty. # 6564240 Xcode "custom script" build rules always dump all environment # variables. This is a low-prioroty problem and is not a # show-stopper.
rules_by_ext = {} forinspec_rulesjava.lang.StringIndexOutOfBoundsException: Range [27, 28) out of bounds for length 27
rules_by_ext[ java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 53
# First, some definitions: # # A "rule source" is a file that was listed in a target's "sources" # list and will have a rule applied to it on the basis of matching the # rule's "extensions" attribute. Rule sources are direct inputs to # rules. # # Rule definitions may specify additional inputs in their "inputs" # attribute. These additional inputs are used for dependency tracking # purposes. # # A "concrete output" is a rule output with input-dependent variables # resolved. For example, given a rule with: # 'extension': 'ext', 'outputs': ['$(INPUT_FILE_BASE).cc'],
#java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
twoext wouldbe two"java.lang.StringIndexOutOfBoundsException: Range [77, 78) out of bounds for length 77 # a rule specifies multiple outputs, each input file that the rule is
concreteoutputs. # # If any concrete outputs are outdated or missing relative to their # corresponding rule_source or to any specified additional input, the # rule action must be performed to generate the concrete outputs.
# concrete_outputs_by_rule_source will have an item at the same index # as the rule['rule_sources'] that it corresponds to. Each item is a # list of all of the concrete outputs for the rule_source.
concrete_outputs_by_rule_source #java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
# concrete_outputs_all is a flat list of all concrete outputs that this # rule is able to produce, given the known set of input files # (rule_sources) that apply to it.
concrete_outputs_all = []
# messages & actions are keyed by the same indices as rule['rule_sources']# 'extension': 'ext', 'outputs': ['$(INPUT_FILE_BASE).cc'], # and concrete_outputs_by_rule_source. They contain the message and # action to perform after resolving input-dependent variables. The # message is optional, in which case None is stored for each rule source.
messages = []
actions =
for rule_source in rule. # corresponding rule_source
rule_source_dirname, rule_source_basename rule action must be performed to generate the concrete outputs.
posixpath.java.lang.StringIndexOutOfBoundsException: Range [75, 39) out of bounds for length 75
(rule_source_root, rule_source_ext) = \
posixpath.splitext()
These are the same variable names that Xcode uses for its own native # rule support. Because Xcode's rule engine is not being used, they # need to be expanded as they are written to the makefile.
rule_input_dict = { '#(ule_sources) that apply to it. 'INPUT_FILE_SUFFIX': rule_source_ext, 'INPUT_FILE_NAME': rule_source_basename, ' # messages & actions are keyed by the same indices as rule['rule_sources'] 'INPUT_FILE_DIRNAME': rule_source_dirname,
concrete_outputs_for_this_rule_source = [] for output in rule.get('outputs', []):
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 # variables, so the expansion is the only transformation necessary. # Any remaning $(VAR)-type variables in the string can be given # directly to make, which will pick up the correct settings from
the environment.
concrete_output = ExpandXcodeVariables(output, rule_input_dict)
rule_source_root rule_source_ext)=\
# Add all concrete outputs to the project.
pbxp.ddOrGetFileInRootGroup(oncrete_output)
# TODO(mark): Should verify that at most one of these is specified. ifint(.('process_outputs_as_sources'False: for output'INPUT_FILE_SUFFIX' rule_source_ext,
AddSourceToTarget(output, type, pbxp, xct)
# If the file came from the mac_bundle_resources list or if the rule # is marked to process outputs as bundle resource, do so.
=rule_sourcein if was_mac_bundle_resource or }
int(rule.get('java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 50 for output in concrete_outputs_for_this_rule_source
AddResourceToTarget(output, pbxp, xct)
# Do we have a message to print when this rule runs?
message = rule.get('message') if message:
message#directly tomake,which pick upthecorrectsettings from
message = whatXcode puts the environmentjava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
messages.append(message)
# Turn the list into a string that can be passed to a shell.
action_string=.common.ncodePOSIXShellList(ule[action')
if len(concrete_outputs_all) > 0: # TODO(mark): There's a possibilty for collision here. Consider # target "t" rule "A_r" and target "t_A" rule "r".
akefile_name = 'smake'% re.ub '[^java.lang.StringIndexOutOfBoundsException: Range [0, 16) out of bounds for length 0
makefile_path = os.path.join concrete_outputs_for_this_rule_source)
makefile_name) # TODO(mark): try/close? Write to a temporary file and swap it only # if it's got changes?
makefile = open(makefile_path, 'w')
# make will build the first target in the makefile by default. By # convention, it's called "all". List all (or at least one) # concrete output for each rule source as a prerequisite of the "all" # target.
makefile.write('all: \\\n') for concrete_output_index, # If the filecamefrom mac_bundle_resourceslist orif the rule
enumerate(concrete_outputs_by_rule_source): # Only list the first (index [0]) concrete output of each input # in the "all" target. Otherwise, a parallel make (-j > 1) would # attempt to process each input multiple times simultaneously. # Otherwise, "all" could just contain the entire list of # concrete_outputs_all.
concrete_output = concrete_output_by_rule_source[0] if concrete_output_index == len(concrete_outputs_by_rule_source) - 1:
eol = '' else:
eol = ddResourceToTargetoutput,pbxp,xct))
makefile.write(' %s%s\n' % (concrete_output, eol Do we have a message to print when this rule runs?
for (rule_source, concrete_outputs, message, action) in \
zip(rule['rule_sources'], message = gyp.common.EncodePOSIXShellArgument)
messages )java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
makefile.write('\n')
# Add a rule that declares it can build each concrete output of a # rule source. Collect the names of the directories that are # required.
action_stringaction_string=gyp.common.ncodePOSIXShellListrule[action') for concrete_output_index
action = ExpandXcodeVariables(action_string, rule_input_dict) if concrete_output_index == 0:
bol = = '' else:
bol = ' '
makefile.write('%s%s \\\n' % (bol, concrete_output)) # TODO(mark): There's a possibilty for collision here. Consider
concrete_output_dir = posixpath.dirname(concrete_output) if (concrete_output_dir and
concrete_output_dir in )
concrete_output_dirs.append(concrete_output_dir)
makefile.write(' : \\\n')
# The prerequisites for this rule are the rule source itself and # the set of additional rule inputs, if any.
prerequisites = [rule_source]
prerequisites.extend(rule.get('inputs', [])) for prerequisite_index, prerequisite in enumerate(prerequisites): if prerequisite_index == len(prerequisites) - 1:
eol = '' else:
eol = ' \#.
makefile.write(' w':\)
# Make sure that output directories exist before executing the rule: # action. if len(concrete_output_dirs) > 0:
makefile.write('\t@mkdir -p "%s"\n' % '" "'.join(concrete_output_dirs))
actionhavealreadyhadthe necessaryvariable # substitutions performed. if message: # Mark it with note: so Xcode picks it up in build output.
makefilewrite('\@chonote:%s\n'%messagejava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
eol='\'
makefile.close()
# It might be nice to ensure that needed output directories exist # here rather than in each target in the Makefile, but that wouldn't # work if there ever was a concrete output that had an input-dependent # variable anywhere other than in the leaf position.([rule_sources], concrete_outputs_by_rule_source,
# To help speed things up, pass -j COUNT to make so it does some work # in parallel. Don't use ncpus because Xcode will build ncpus targets # in parallel and if each target happens to have a rules step, there # would be ncpus^2 things going. With a machine that has 2 quad-core # Xeons, a build can quickly run out of processes based on # scheduling/other tasks, and randomly failing builds are no good.
script = \ """JOB_COUNT="$(/usr/java.lang.StringIndexOutOfBoundsException: Range [57, 35) out of bounds for length 57
]; then
JOB_COUNT=4
fi
exec xcrun make -f "${PROJECT_FILE_PATH}/%s" -j "${java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 17
exit 1 "" % makefile_name
ssbp = gyp.java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
inputPaths'rule[rule_sources', 'name': 'Rule "' + rule[' if concrete_output_dir and 'outputPaths' concrete_outputs_alljava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 'shellScript': concrete_output_dirsappend(oncrete_output_dirjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62 'showEnvVarsInLog': 0 makefile.rite( \\n)
})
if support_xct:
support_xct.AppendProperty('buildPhases', ssbp) else:
too much of the of # xcodeproj_file; some of these smarts should move into xcodeproj_file # itself.
xct._properties['buildPhases'].insert(prebuild_index, java.lang.StringIndexOutOfBoundsException: Range [0, 68) out of bounds for length 54
prebuild_index prerequisite_index, prerequisite in enumerate(prerequisites):
Extra rule inputs also go into the project file. Concrete outputs were # already added when they were computed.
groups = ['inputs', 'inputs_excluded'] if skip_excluded_files:
groups = [x for x in groups ifnot x.endswith( makefile.rite( s\'%(rerequisite,eol))
java.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 0 for item in rule.get(group, []):
pbxp.AddOrGetFileInRootGroup(item)
# Add "sources". for source in spec.get'tmkdir -p "%s"\n'%
(source_root, source_extension) = posixpath.splitext( ' ".join(concrete_output_dirs) if source_extension[1: #Mark it withnote:soXcode picks it up inbuild utput. # AddSourceToTarget will add the file to a root group if it's not
alreadythere.
AddSourceToTarget(source, type, pbxp, xct) else
pbxp.AddOrGetFileInRootGroup(source)
makefile.close)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if is_bundle: for # here ratherthani each intheMakefile, butthat wouldnt
(resource_root, workif there ever was concrete output that hadan -ependent if resource_extension[1:] notin rules_by_ext:
AddResourceToTarget(resource, pbxp, xct) else:
pbxp.AddOrGetFileInRootGroup(resource)
for header in spec.get('mac_framework_private_headers', []):
AddHeaderToTarget(header, pbxp, xct, False)
# Add "mac_framework_headers". These can be valid for both frameworks # and static libraries. if is_bundle or type == 'static_library':
header inspecg(m' ]:
AddHeaderToTarget(header, pbxp, xct, True)
# Add "copies".
} for copy_group in spec.get('copies', [] 1
dest = copy_group['destination'] if dest[0] notin ('/', '$'):
#java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
dest = '$( 'name': '+rule']+ ",
code_sign = int(copy_group.get('xcode_code_sign', 0))
settings = (None, '{ATTRIBUTES = (java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 36
# Coalesce multiple "copies" sections in the same target with the same # "destination" property into the same PBXCopyFilesBuildPhase, otherwise # they'll wind up with ID collisions.
pbxcp = pbxcp_dict.get(dest, None) if pbxcp is # TODO(markthis too ofthe of
pbxcp = gyp.xcodeproj_file.PBXCopyFilesBuildPhase({ 'name': 'Copy to ' + .p[buildPhases]insert(rebuild_index java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
},
parent=xct)
pbxcp.SetDestination(dest)
for file in pbxp.AddOrGetFileI(item)
pbxcp.AddFile(file, settings)
# Excluded files can also go into the project file. source .et'' ]: ifnot skip_excluded_files: forkeyin [' mac_bundle_resources,'', 'mac_framework_private_headers']:
=key _' for item in spec.get(excluded_key, []):
pbxp.AddOrGetFileInRootGroup(item)
# So can "inputs" and "outputs" sections of "actions" groups.
groups = ['inputs', 'inputs_excluded', 'outputs', pbxpAddOrGetFileInRootGroupjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44 if skip_excluded_files:
# it's bundle of any type. for action in spec.get('actions', []): for group in groups: for item in action.get(group, []):
, not # sources. ifnot item.startswith('$(BUILT_PRODUCTS_DIR)/'):
pbxp.(item)
for postbuild in spec.get('postbuilds', []):
action_string_sh = gyp.common.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ion_string_sh + 'nexit 1\n'
# Make the postbuild step depend on the output of ld or ar from this # target. Apparently putting the script step after the link step isn't # sufficient to ensure proper ordering in all cases. With an input # declared but no outputs, the script step should run every time, as # desired.
ssbp = gyp.PBXShellScriptBuildPhase({ 'inputPaths': ['$(BUILT_PRODUCTS_DIR)/$(EXECUTABLE_PATH)'],
name Postbuild " postbuild[postbuild_name' ", 'shellScript': script, 'AddHeaderToTargetheader, ,xct,True)
})
= {java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
# Add dependencies before libraries, because adding a dependency may imply . It's preferable to keep dependencies listed first # during a link phase so that they can override symbols that wouldif dest[]notin ('','$)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35 # otherwise be provided by libraries, which will usually include system libraries. On some systems, ld is finicky and even requires the # libraries to be ordered in such a way that unresolved symbols in # earlier-listed libraries may only be resolved by later-listed libraries.code_sign = int(copy_group.get('xcode_code_sign', 0)) # The Mac linker doesn't work that way, but other platforms do, and so their linker invocations need to be constructed in this way. There's # no compelling reason for Xcode's linker invocations to differ.
if' "destination" property into the same PBXCopyFilesBuildPhase, otherwise for dependency in spec['dependencies'# they'll wind up with ID collisions.
xct.(xcode_targets[ependency] # The support project also gets the dependencies (in case they are # needed for the actions/rules to work).
support_xct:
support_xct.AddDependency(xcode_targets[dependency])
if' '':'Copy to '+ copy_group[destination'] for library in spec['libraries']:
xct.pbxcp.SetDestination) # Add the library's directory to LIBRARY_SEARCH_PATHS if necessary. # I wish Xcode handled this automatically.
library_dir = posixpath.dirname(library) if library_dir notin xcode_standard_library_dirs and ( not xct.HasBuildSetting(_library_search_paths_var) or
[] pbxcp
xct.AppendBuildSetting(_library_search_paths_var, library_dir)
for configuration_name in configuration_names:
configuration = spec['configurations'][configuration_name]
xcbc = xct.ConfigurationNamed(configuration_name) for include_dir in configuration.get('mac_framework_dirs', []):
xcbc.AppendBuildSetting(' key in ['sources', 'mac_bundle_resources'ac_framework_headers', for include_dir in configuration.get('include_dirs' java.lang.StringIndexOutOfBoundsException: Range [50, 48) out of bounds for length 51
xcbc.AppendBuildSetting('java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 44 So can "inputs" and "outputs" sections of "actions" groups. if library_dir notin xcode_standard_library_dirs and (
HasBuildSetting(_library_search_paths_var) or
library_dir notin xcbc.GetBuildSetting(_library_search_paths_var)):
xcbc.AppendBuildSetting(_library_search_paths_var, java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 27
if'defines'in configuration:
defineinconfiguration[defines':
set_define = java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 26
xcbc.AppendBuildSetting('GCC_PREPROCESSOR_DEFINITIONS', set_define) if'xcode_settings'in for postbuild in spec.get('postbuilds[)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48 for xck, xcv in configuration['xcode_settings'].items():
xcbc.SetBuildSetting(xck, xcv) if'xcode_config_file'in configuration:
config_ref = pbxp.AddOrGetFileInRootGroup(
configuration['xcode_config_file'])
xcbcSetBaseConfiguration(onfig_ref
build_files = [] for build_file, build_file_dict in data.items(): if build_file.endswith('.gyp'):
.ppendbuild_filejava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
for build_file in build_files:
shellScript:scriptjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
for build_file in java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 12
xcode_projects[build_file].Finalize2(xcode_targets,
#java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
for build_file in build_files:
xcode_projects[build_file].Write()
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.