(List (= scope= flags=0 words=[] bindings=[('PACKAGE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('VERSION', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('PACKAGE_DIR', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('CHROMIUM_FILES', {[DQ [LIT_CHARS "README.chromium OWNERS get_jinja2.sh"]]})]) (= scope= flags=0 words=[] bindings=[('EXTRA_FILES', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('REMOVE_FILES', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('SRC_URL', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('SRC_URL+', {[DQ [VarSub PACKAGE transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}]][LIT_CHARS /][VarSub PACKAGE][LIT_CHARS /][VarSub PACKAGE][LIT_CHARS -][VarSub VERSION][LIT_CHARS .tar.gz]]})]) (= scope= flags=0 words=[] bindings=[('FILENAME', {[DQ [ComSub (Com {[LIT_CHARS basename]} {[VarSub SRC_URL]})]]})]) (= scope= flags=0 words=[] bindings=[('MD5_FILENAME', {[DQ [VarSub FILENAME][LIT_CHARS .md5]]})]) (= scope= flags=0 words=[] bindings=[('SHA512_FILENAME', {[DQ [VarSub FILENAME][LIT_CHARS .sha512]]})]) (= scope= flags=0 words=[] bindings=[('CHROMIUM_FILES+', {[DQ [LIT_CHARS " "][VarSub MD5_FILENAME][LIT_CHARS " "][VarSub SHA512_FILENAME]]})]) (= scope= flags=0 words=[] bindings=[('BUILD_DIR', {[DQ [VarSub PACKAGE][LIT_CHARS -][VarSub VERSION]]})]) (= scope= flags=0 words=[] bindings=[('THIRD_PARTY', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS realpath]} {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]})]})]]})]) (= scope= flags=0 words=[] bindings=[('INSTALL_DIR', {[DQ [VarSub THIRD_PARTY][LIT_CHARS /][VarSub PACKAGE_DIR]]})]) (= scope= flags=0 words=[] bindings=[('OUT_DIR', {[DQ [VarSub INSTALL_DIR][LIT_CHARS /][VarSub BUILD_DIR][LIT_CHARS /][VarSub PACKAGE_DIR]]})]) (= scope= flags=0 words=[] bindings=[('OLD_DIR', {[DQ [VarSub THIRD_PARTY][LIT_CHARS /][VarSub PACKAGE_DIR][LIT_CHARS .old]]})]) (FunctionDef check_hashes [] (List (If (Pipeline! (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [VarSub MD5_FILENAME]]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "MD5 hash file "][VarSub MD5_FILENAME][LIT_CHARS " not found, could not verify archive"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('MD5_HASHFILE_REGEX', {[DQ [LIT_CHARS "^[0-9a-f]{32} "][VarSub FILENAME]]})]) (If (Pipeline! (Com {[LIT_CHARS grep]} {[LIT_CHARS --extended-regex]} {[LIT_CHARS --line-regex]} {[LIT_CHARS --silent]} {[DQ [VarSub MD5_HASHFILE_REGEX]]} {[DQ [VarSub MD5_FILENAME]]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "MD5 hash file "][VarSub MD5_FILENAME][LIT_CHARS " does not contain hash for "][VarSub FILENAME][LIT_CHARS ","]]} {[SQ ]}) (Com {[LIT_CHARS echo]} {[SQ ]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub MD5_FILENAME]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Pipeline! (Com {[LIT_CHARS md5sum]} {[LIT_CHARS --check]} {[DQ [VarSub MD5_FILENAME]]}) ) (List (Com {[LIT_CHARS echo]} {[SQ ]} {[DQ [LIT_CHARS "archive file "][VarSub FILENAME][LIT_CHARS " corrupt or compromised!"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Pipeline! (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [VarSub SHA512_FILENAME]]} {[LIT_OTHER "]"]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "SHA-512 hash file "][VarSub SHA512_FILENAME][LIT_CHARS " not found,"]]} {[SQ ]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('SHA512_HASHFILE_REGEX', {[DQ [LIT_CHARS "^[0-9a-f]{128} "][VarSub FILENAME]]})]) (If (Pipeline! (Com {[LIT_CHARS grep]} {[LIT_CHARS --extended-regex]} {[LIT_CHARS --line-regex]} {[LIT_CHARS --silent]} {[DQ [VarSub SHA512_HASHFILE_REGEX]]} {[DQ [VarSub SHA512_FILENAME]]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "SHA-512 hash file "][VarSub SHA512_FILENAME][LIT_CHARS " does not contain hash for"]]} {[DQ [VarSub FILENAME][LIT_CHARS ", could not verify archive"]]}) (Com {[LIT_CHARS echo]} {[SQ ]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub SHA512_FILENAME]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Pipeline! (Com {[LIT_CHARS sha512sum]} {[LIT_CHARS --check]} {[DQ [VarSub SHA512_FILENAME]]}) ) (List (Com {[LIT_CHARS echo]} {[SQ ]} {[DQ [LIT_CHARS "archive file "][VarSub FILENAME][LIT_CHARS " corrupt or compromised!"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (Com {[LIT_CHARS cd]} {[DQ [VarSub INSTALL_DIR]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Downloading "][VarSub SRC_URL]]}) (Com {[LIT_CHARS curl]} {[LIT_CHARS --remote-name]} {[DQ [VarSub SRC_URL]]}) (Com {[LIT_CHARS check_hashes]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS xvzf]} {[DQ [VarSub FILENAME]]}) (For FILE [{[VarSub CHROMIUM_FILES]}]) (Com {[LIT_CHARS cp]} {[DQ [VarSub FILE]]} {[DQ [VarSub OUT_DIR]]}) ) (Com {[LIT_CHARS cd]} {[DQ [VarSub BUILD_DIR]]}) (For FILE [{[VarSub EXTRA_FILES]}]) (Com {[LIT_CHARS cp]} {[DQ [VarSub FILE]]} {[DQ [VarSub OUT_DIR]]}) ) (Com {[LIT_CHARS cd]} {[DQ [VarSub OUT_DIR]]}) (For FILE [{[VarSub REMOVE_FILES]}]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub FILE]]}) ) (Com {[LIT_CHARS cd]} {[LIT_CHARS ..]}) (Com {[LIT_CHARS mv]} {[DQ [VarSub INSTALL_DIR]]} {[DQ [VarSub OLD_DIR]]}) (Com {[LIT_CHARS mv]} {[DQ [VarSub PACKAGE_DIR]]} {[DQ [VarSub INSTALL_DIR]]}) (Com {[LIT_CHARS cd]} {[DQ [VarSub INSTALL_DIR]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub OLD_DIR]]}) )