1*4882a593Smuzhiyun#!/usr/bin/env python3 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# Wrapper around 'ar' that defaults to deterministic archives 4*4882a593Smuzhiyun 5*4882a593Smuzhiyunimport os 6*4882a593Smuzhiyunimport shutil 7*4882a593Smuzhiyunimport sys 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun# calculate path to the real 'ar' 10*4882a593Smuzhiyunpath = os.environ['PATH'] 11*4882a593Smuzhiyunpath = path.replace(os.path.dirname(sys.argv[0]), '') 12*4882a593Smuzhiyunreal_ar = shutil.which('ar', path=path) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyunif len(sys.argv) == 1: 15*4882a593Smuzhiyun os.execl(real_ar, 'ar') 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun# modify args to mimic 'ar' configured with --default-deterministic-archives 18*4882a593Smuzhiyunargv = sys.argv 19*4882a593Smuzhiyunif argv[1].startswith('--'): 20*4882a593Smuzhiyun # No modifier given 21*4882a593Smuzhiyun None 22*4882a593Smuzhiyunelse: 23*4882a593Smuzhiyun # remove the optional '-' 24*4882a593Smuzhiyun if argv[1][0] == '-': 25*4882a593Smuzhiyun argv[1] = argv[1][1:] 26*4882a593Smuzhiyun if 'U' in argv[1]: 27*4882a593Smuzhiyun sys.stderr.write("ar: non-deterministic mode requested\n") 28*4882a593Smuzhiyun else: 29*4882a593Smuzhiyun argv[1] = argv[1].replace('u', '') 30*4882a593Smuzhiyun argv[1] = 'D' + argv[1] 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunos.execv(real_ar, argv) 33