def abi_check_task(self): """check if the ABI has changed""" abi_gen = self.ABI_GEN libpath = self.inputs[0].abspath(self.env) libname = os.path.basename(libpath) sigs = Utils.cmd_output([abi_gen, libpath]) parsed_sigs = parse_sigs(sigs, self.ABI_MATCH) sig_file = self.ABI_FILE old_sigs = samba_utils.load_file(sig_file) if old_sigs is None or Options.options.ABI_UPDATE: if not save_sigs(sig_file, parsed_sigs): raise Utils.WafError('Failed to save ABI file "%s"' % sig_file) Logs.warn("Generated ABI signatures %s" % sig_file) return parsed_old_sigs = parse_sigs(old_sigs, self.ABI_MATCH) # check all old sigs got_error = False for s in parsed_old_sigs: if not s in parsed_sigs: Logs.error( "%s: symbol %s has been removed - please update major version\n\tsignature: %s" % (libname, s, parsed_old_sigs[s]) ) got_error = True elif normalise_varargs(parsed_old_sigs[s]) != normalise_varargs(parsed_sigs[s]): Logs.error( "%s: symbol %s has changed - please update major version\n\told_signature: %s\n\tnew_signature: %s" % (libname, s, parsed_old_sigs[s], parsed_sigs[s]) ) got_error = True for s in parsed_sigs: if not s in parsed_old_sigs: Logs.error( "%s: symbol %s has been added - please mark it _PRIVATE_ or update minor version\n\tsignature: %s" % (libname, s, parsed_sigs[s]) ) got_error = True if got_error: raise Utils.WafError( "ABI for %s has changed - please fix library version then build with --abi-update\nSee http://wiki.samba.org/index.php/Waf#ABI_Checking for more information\nIf you have not changed any ABI, and your platform always gives this error, please configure with --abi-check-disable to skip this check" % libname )
def abi_check_task(self): '''check if the ABI has changed''' abi_gen = self.ABI_GEN libpath = self.inputs[0].abspath(self.env) libname = os.path.basename(libpath) sigs = Utils.cmd_output([abi_gen, libpath]) parsed_sigs = parse_sigs(sigs, self.ABI_MATCH) sig_file = self.ABI_FILE old_sigs = samba_utils.load_file(sig_file) if old_sigs is None or Options.options.ABI_UPDATE: if not save_sigs(sig_file, parsed_sigs): raise Utils.WafError('Failed to save ABI file "%s"' % sig_file) Logs.warn('Generated ABI signatures %s' % sig_file) return parsed_old_sigs = parse_sigs(old_sigs, self.ABI_MATCH) # check all old sigs got_error = False for s in parsed_old_sigs: if not s in parsed_sigs: Logs.error( '%s: symbol %s has been removed - please update major version\n\tsignature: %s' % (libname, s, parsed_old_sigs[s])) got_error = True elif normalise_varargs(parsed_old_sigs[s]) != normalise_varargs( parsed_sigs[s]): Logs.error( '%s: symbol %s has changed - please update major version\n\told_signature: %s\n\tnew_signature: %s' % (libname, s, parsed_old_sigs[s], parsed_sigs[s])) got_error = True for s in parsed_sigs: if not s in parsed_old_sigs: Logs.error( '%s: symbol %s has been added - please mark it _PRIVATE_ or update minor version\n\tsignature: %s' % (libname, s, parsed_sigs[s])) got_error = True if got_error: raise Utils.WafError( 'ABI for %s has changed - please fix library version then build with --abi-update\nSee http://wiki.samba.org/index.php/Waf#ABI_Checking for more information\nIf you have not changed any ABI, and your platform always gives this error, please configure with --abi-check-disable to skip this check' % libname)