#!/usr/bin/python import re import sys try: import subprocess except ImportError: # Older Python versions don't have the subprocess module. In this case, we # don't filter the warnings. import os os.execvp(sys.argv[1], sys.argv[1:]) undefined_warning = re.compile('WARNING: "(.*?)" \[.*?\] undefined!') duplicate_warning = re.compile("WARNING: [^ ]*: '(.*?)' exported twice. Previous.*") actually_defined = ['sin', 'cos', 'acos', 'atan2', 'rt_task_wait_period', 'rt_sem_wait', 'rt_sem_delete', 'rt_task_init_cpuid', 'rt_set_periodic_mode', 'count2nano', 'rt_task_resume', 'rt_release_irq', 'rtf_create', 'rt_sem_init', 'rt_request_irq', 'rt_free_timer', 'rt_sem_wait_if', 'rt_linux_use_fpu', 'rt_get_cpu_time_ns', 'rt_sem_signal', 'rtf_destroy', 'rt_shm_alloc', 'rt_shm_free', 'rt_startup_irq', 'stop_rt_timer', 'rtf_put', 'rt_whoami', 'rt_task_suspend', 'rt_task_delete', 'rt_printk', 'start_rt_timer', 'rtf_get', 'rt_task_make_periodic', 'rt_shutdown_irq', 'rt_get_time', 'nano2count'] permitted_duplicates = ['kinematicsType', 'kinematicsForward', 'kinematicsInverse'] kbuild = subprocess.Popen(sys.argv[1:], stderr=subprocess.PIPE) for line in kbuild.stderr: #print undefined_warning.match(line), duplicate_warning.match(line), repr(line)[:60] m = undefined_warning.match(line) if m and m.group(1) in actually_defined: continue m = duplicate_warning.match(line) if m and m.group(1) in permitted_duplicates: continue sys.stderr.write(line) raise SystemExit, kbuild.wait()