#!/usr/bin/python3 # SPDX-License-Identifier: GPL-2.0-or-later # # Copyright (C) 2021-2021 Patryk Obara # pylint: disable=invalid-name """ Verify if there are no problematic runtime dependencies for this macOS binary. """ import sys import subprocess if __name__ == '__main__': result = subprocess.run(['otool', '-L', sys.argv[1]], stdout=subprocess.PIPE, check=True) output = result.stdout.decode('utf-8').split('\n') allowed_list = [ '/System/Library/Frameworks/AppKit.framework/', '/System/Library/Frameworks/AudioToolbox.framework/', '/System/Library/Frameworks/AudioUnit.framework/', '/System/Library/Frameworks/Carbon.framework/', '/System/Library/Frameworks/CoreAudio.framework/', '/System/Library/Frameworks/CoreFoundation.framework/', '/System/Library/Frameworks/CoreGraphics.framework/', '/System/Library/Frameworks/CoreHaptics.framework/', '/System/Library/Frameworks/CoreMIDI.framework/', '/System/Library/Frameworks/CoreServices.framework/', '/System/Library/Frameworks/CoreVideo.framework/', '/System/Library/Frameworks/ForceFeedback.framework/', '/System/Library/Frameworks/Foundation.framework/', '/System/Library/Frameworks/GameController.framework/', '/System/Library/Frameworks/IOKit.framework/', '/System/Library/Frameworks/Metal.framework/', '/System/Library/Frameworks/OpenGL.framework/', '/usr/lib/', ] # skip first line (program name) for desc in (line.strip() for line in output[1:]): if not desc: # skip over empty string continue if any(desc.startswith(pfx) for pfx in allowed_list): continue print(f"Problematic runtime dependency: '{desc}'") print("Is it installed by default on macOS system?") sys.exit(1) sys.exit(0)