(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]}) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]}) (= scope= flags=2 words=[] bindings=[('PNACL_DEBUG', {[VarSub PNACL_DEBUG test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS false]}]})]) (= scope= flags=2 words=[] bindings=[('PNACL_BUILDBOT', {[VarSub PNACL_BUILDBOT test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS false]}]})]) (= scope= flags=2 words=[] bindings=[('PNACL_VERBOSE', {[VarSub PNACL_VERBOSE test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS false]}]})]) (= scope= flags=2 words=[] bindings=[('TIME_AT_STARTUP', {[ComSub (Com {[LIT_CHARS date]} {[SQ ]})]})]) (FunctionDef SetScriptPath [] (= scope= flags=0 words=[] bindings=[('SCRIPT_PATH', {[DQ [VarSub 1]]})]) ) (FunctionDef SetLogDirectory [] (List (= scope= flags=0 words=[] bindings=[('TC_LOG', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('TC_LOG_ALL', {[DQ [VarSub TC_LOG][LIT_CHARS /ALL]]})]) ) ) (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM', {[ComSub (Pipeline (Com {[LIT_CHARS uname]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM_LINUX', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM_MAC', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM_WIN', {[LIT_CHARS false]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_PLATFORM]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS linux]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM_LINUX', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('SCONS_BUILD_PLATFORM', {[LIT_CHARS linux]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH', {[VarSub BUILD_ARCH test_op=VS_TEST_COLON_HYPHEN {[ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -m]})]}]})]) (= scope= flags=0 words=[] bindings=[('EXEC_EXT', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('SO_EXT', {[LIT_CHARS .so]})]) (= scope= flags=0 words=[] bindings=[('SO_DIR', {[LIT_CHARS lib]})]) ) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub BUILD_PLATFORM]]} {[LIT_CHARS cygwin_nt]}}) (List (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM', {[LIT_CHARS win]})]) (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM_WIN', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('SCONS_BUILD_PLATFORM', {[LIT_CHARS win]})]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH', {[VarSub HOST_ARCH test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS x86_32]}]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH', {[VarSub BUILD_ARCH test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS x86_32]}]})]) (= scope= flags=0 words=[] bindings=[('EXEC_EXT', {[LIT_CHARS .exe]})]) (= scope= flags=0 words=[] bindings=[('SO_EXT', {[LIT_CHARS .dll]})]) (= scope= flags=0 words=[] bindings=[('SO_DIR', {[LIT_CHARS bin]})]) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_PLATFORM]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS darwin]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM', {[LIT_CHARS mac]})]) (= scope= flags=0 words=[] bindings=[('BUILD_PLATFORM_MAC', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('SCONS_BUILD_PLATFORM', {[LIT_CHARS mac]})]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH', {[VarSub HOST_ARCH test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS x86_64]}]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH', {[VarSub BUILD_ARCH test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS x86_64]}]})]) (= scope= flags=0 words=[] bindings=[('EXEC_EXT', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('SO_EXT', {[LIT_CHARS .dylib]})]) (= scope= flags=0 words=[] bindings=[('SO_DIR', {[LIT_CHARS lib]})]) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Unknown system '"][VarSub BUILD_PLATFORM][LIT_CHARS "'"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (= scope= flags=2 words=[{[LIT_CHARS BUILD_PLATFORM]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_PLATFORM_LINUX]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_PLATFORM_MAC]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_PLATFORM_WIN]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS SCONS_BUILD_PLATFORM]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS SO_EXT]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS SO_DIR]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_SHORT', {[VarSub BUILD_ARCH]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_X8632', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_X8664', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_ARM', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_MIPS', {[LIT_CHARS false]})]) (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS x86_32]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS i386]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS i686]]} {[LIT_OTHER "]"]}) ) ) (List (= scope= flags=0 words=[] bindings=[('BUILD_ARCH', {[LIT_CHARS x86_32]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_X8632', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_SHORT', {[LIT_CHARS x86]})]) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS x86_64]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_X8664', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_SHORT', {[LIT_CHARS x86]})]) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS armv7l]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_ARM', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_SHORT', {[LIT_CHARS arm]})]) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS mips32]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS mips]]} {[LIT_OTHER "]"]}) ) (List (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_MIPS', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('BUILD_ARCH_SHORT', {[LIT_CHARS mips]})]) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Unknown build arch '"][VarSub BUILD_ARCH][LIT_CHARS "'"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (= scope= flags=2 words=[{[LIT_CHARS BUILD_ARCH]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_ARCH_SHORT]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_ARCH_X8632]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_ARCH_X8664]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_ARCH_ARM]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS BUILD_ARCH_MIPS]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH', {[VarSub HOST_ARCH test_op=VS_TEST_COLON_HYPHEN {[VarSub BUILD_ARCH]}]})]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_X8632', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_X8664', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_ARM', {[LIT_CHARS false]})]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_MIPS', {[LIT_CHARS false]})]) (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS x86_32]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS i386]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS i686]]} {[LIT_OTHER "]"]}) ) ) (List (= scope= flags=0 words=[] bindings=[('HOST_ARCH', {[LIT_CHARS x86_32]})]) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_X8632', {[LIT_CHARS true]})]) ) (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS x86_64]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_X8664', {[LIT_CHARS true]})]) (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS armv7l]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_ARM', {[LIT_CHARS true]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS mips32]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS mips]]} {[LIT_OTHER "]"]}) ) (= scope= flags=0 words=[] bindings=[('HOST_ARCH_MIPS', {[LIT_CHARS true]})]) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Unknown host arch '"][VarSub HOST_ARCH][LIT_CHARS "'"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (= scope= flags=2 words=[{[LIT_CHARS HOST_ARCH]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS HOST_ARCH_X8632]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS HOST_ARCH_X8664]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS HOST_ARCH_ARM]}] bindings=[]) (= scope= flags=2 words=[{[LIT_CHARS HOST_ARCH_MIPS]}] bindings=[]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub BUILD_ARCH]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub HOST_ARCH]]} {[LIT_OTHER "]"]}) (If (Pipeline! (AndOr OP_AND_IF (Com {[VarSub BUILD_ARCH_X8664]}) (Com {[VarSub HOST_ARCH_X8632]}) ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Cross builds other than build=x86_64 with host=x86_32 not supported"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) (If (Com {[VarSub BUILD_PLATFORM_WIN]}) (List (= scope= flags=2 words=[] bindings=[('GCLIENT', {[DQ [LIT_CHARS gclient.bat]]})]) (= scope= flags=2 words=[] bindings=[('GIT', {[DQ [LIT_CHARS git.bat]]})]) (= scope= flags=2 words=[] bindings=[('HG', {[DQ [LIT_CHARS hg.bat]]})]) (= scope= flags=2 words=[] bindings=[('SVN', {[DQ [LIT_CHARS svn.bat]]})]) ) (ElseTrue) (List (= scope= flags=2 words=[] bindings=[('GCLIENT', {[DQ [LIT_CHARS gclient]]})]) (= scope= flags=2 words=[] bindings=[('GIT', {[DQ [LIT_CHARS git]]})]) (= scope= flags=2 words=[] bindings=[('HG', {[DQ [LIT_CHARS hg]]})]) (= scope= flags=2 words=[] bindings=[('SVN', {[DQ [LIT_CHARS svn]]})]) ) ) (FunctionDef PosixToSysPath [] (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [VarSub 1]]})]) (If (Com {[VarSub BUILD_PLATFORM_WIN]}) (Com {[LIT_CHARS cygpath]} {[LIT_CHARS -w]} {[DQ [ComSub (Com {[LIT_CHARS GetAbsolutePath]} {[DQ [VarSub path]]})]]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [VarSub path]]}) ) ) ) (FunctionDef git-has-changes [] (List (= scope= flags=0 words=[] bindings=[('dir', {[VarSub 1]})]) (Com {[LIT_CHARS spushd]} {[DQ [VarSub dir]]}) (= scope= flags=0 words=[] bindings=[('status', {[ComSub (Com {[VarSub GIT]} {[LIT_CHARS status]} {[LIT_CHARS --porcelain]} {[LIT_CHARS --untracked-files] [LIT_OTHER "="] [LIT_CHARS no]})]})]) (Com {[LIT_CHARS spopd]}) (DBracket {B2 BINARY_STRING_GREAT {[VarSub status transform_ops=[(#len)]]} {[LIT_CHARS 0]}}) (Com {[LIT_CHARS return]} {[VarSub ?]}) ) ) (FunctionDef git-assert-no-changes [] (List (= scope= flags=0 words=[] bindings=[('dir', {[VarSub 1]})]) (If (Com {[LIT_CHARS git-has-changes]} {[DQ [VarSub dir]]}) (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "ERROR: Repository "][VarSub dir][LIT_CHARS " has local changes"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (FunctionDef svn-at-revision [] (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('rev', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('repo_rev', {[ComSub (Com {[LIT_CHARS svn-get-revision]} {[DQ [VarSub dir]]})]})]) (Com {[LIT_OTHER "["]} {[DQ [VarSub repo_rev]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [VarSub rev]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[VarSub ?]}) ) ) (FunctionDef svn-get-revision [] (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS spushd]} {[DQ [VarSub dir]]}) (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Pipeline (Com {[VarSub SVN]} {[LIT_CHARS info]}) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -b]} {[LIT_CHARS 11-]}) )]})]) (If (Pipeline! (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub rev]]} {[LIT_OTHER "^"] [LIT_OTHER "["] [LIT_CHARS 0-9] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"]}}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Invalid revision number '"][VarSub rev][LIT_CHARS "' or invalid repository '"][VarSub dir][LIT_CHARS "'"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (Com {[LIT_CHARS spopd]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub rev]]}) ) ) (FunctionDef svn-checkout [] (List (= scope= flags=0 words=[] bindings=[('url', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('rev', {[DQ [VarSub 3]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[DQ [VarSub dir]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS StepBanner]} {[DQ [LIT_CHARS SVN-CHECKOUT]]} {[DQ [LIT_CHARS "Checking out "][VarSub url]]}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS svn-checkout]]} {[VarSub SVN]} {[LIT_CHARS co]} {[DQ [VarSub url]]} {[DQ [VarSub dir]]} {[LIT_CHARS -r]} {[DQ [VarSub rev]]}) ) (ElseTrue) (Com {[LIT_CHARS SkipBanner]} {[DQ [LIT_CHARS SVN-CHECKOUT]]} {[DQ [LIT_CHARS "Using existing SVN repository for "][VarSub url]]}) ) ) ) (FunctionDef svn-update [] (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('rev', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS assert-dir]} {[DQ [VarSub dir]]} {[DQ [LIT_CHARS "SVN repository "][ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub dir]]})][LIT_CHARS " doesn't exist."]]}) (Com {[LIT_CHARS spushd]} {[DQ [VarSub dir]]}) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub rev]]} {[DQ [LIT_CHARS tip]]}}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS svn-update]]} {[VarSub SVN]} {[LIT_CHARS update]}) (ElseTrue) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS svn-update]]} {[VarSub SVN]} {[LIT_CHARS update]} {[LIT_CHARS -r]} {[VarSub rev]}) ) (Com {[LIT_CHARS spopd]}) ) ) (FunctionDef svn-has-changes [] (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS spushd]} {[DQ [VarSub dir]]}) (= scope= flags=0 words=[] bindings=[('STATUS', {[ComSub (Com {[VarSub SVN]} {[LIT_CHARS status]})]})]) (Com {[LIT_CHARS spopd]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub STATUS]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[VarSub ?]}) ) ) (FunctionDef svn-assert-no-changes [] (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub 1]]})]) (If (Com {[LIT_CHARS svn-has-changes]} {[DQ [VarSub dir]]}) (List (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub dir]]})]})]) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "ERROR: Repository "][VarSub name][LIT_CHARS " has local changes"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (FunctionDef get-field [] (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]} {[LIT_CHARS -f]} {[VarSub 1]}) ) (FunctionDef git-one-line-rev-info [] (List (= scope= flags=0 words=[] bindings=[('commit', {[ComSub (Pipeline (Com {[VarSub GIT]} {[LIT_CHARS log]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -1]}) (Com {[LIT_CHARS get-field]} {[LIT_CHARS 2]}) )]})]) (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Pipeline (Com {[LIT_CHARS egrep]} {[DQ [LIT_CHARS "^[^a-z]+url = "]]} {[LIT_CHARS .git/config]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -1]}) (Com {[LIT_CHARS get-field]} {[LIT_CHARS 3]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "[GIT] "][VarSub url][LIT_CHARS ": "][VarSub commit]]}) ) ) (FunctionDef svn-one-line-rev-info [] (List (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Pipeline (Com {[VarSub SVN]} {[LIT_CHARS info]}) (Com {[LIT_CHARS egrep]} {[SQ ]}) (Com {[LIT_CHARS get-field]} {[LIT_CHARS 2]}) )]})]) (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Pipeline (Com {[VarSub SVN]} {[LIT_CHARS info]}) (Com {[LIT_CHARS egrep]} {[SQ ]}) (Com {[LIT_CHARS get-field]} {[LIT_CHARS 2]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "[SVN] "][VarSub url][LIT_CHARS ": "][VarSub rev]]}) ) ) (FunctionDef one-line-rev-info [] (List (Com {[LIT_CHARS spushd]} {[VarSub 1]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[LIT_CHARS .svn]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS svn-one-line-rev-info]}) (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[LIT_CHARS .git]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS git-one-line-rev-info]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "["][VarSub 1][LIT_CHARS "] Unknown version control system"]]}) ) (Com {[LIT_CHARS spopd]}) ) ) (FunctionDef progress [] (List (Com {[LIT_CHARS StepBanner]} {[DQ [LIT_CHARS "PROGRESS WINDOW"]]}) (While (Com {[LIT_CHARS true]}) (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [VarSub TC_LOG_ALL]]} {[LIT_OTHER "]"]}) (If (Com {[LIT_CHARS tail]} {[LIT_CHARS --version]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS tail]} {[LIT_CHARS -s]} {[LIT_CHARS 0.05]} {[LIT_CHARS --max-unchanged-stats] [LIT_OTHER "="] [LIT_CHARS 20]} {[LIT_CHARS --follow] [LIT_OTHER "="] [LIT_CHARS name]} {[DQ [VarSub TC_LOG_ALL]]}) (ElseTrue) (Com {[LIT_CHARS tail]} {[LIT_CHARS -F]} {[DQ [VarSub TC_LOG_ALL]]}) ) ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef clean-logs [] (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub TC_LOG]]}) ) (FunctionDef spushd [] (List (Com {[LIT_CHARS LogEcho]} {[DQ [LIT_CHARS -------------------------------------------------------------------]]}) (Com {[LIT_CHARS LogEcho]} {[DQ [LIT_CHARS "ENTERING: "][VarSub 1]]}) (Com {[LIT_CHARS pushd]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (FunctionDef spopd [] (List (Com {[LIT_CHARS LogEcho]} {[DQ [LIT_CHARS "LEAVING: "][ComSub (Com {[LIT_CHARS pwd]})]]}) (Com {[LIT_CHARS popd]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS LogEcho]} {[DQ [LIT_CHARS -------------------------------------------------------------------]]}) (Com {[LIT_CHARS LogEcho]} {[DQ [LIT_CHARS "ENTERING: "][ComSub (Com {[LIT_CHARS pwd]})]]}) ) ) (FunctionDef LogEcho [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub TC_LOG]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub *]]} < (FilenameRedirectNode filename={[DQ [VarSub TC_LOG_ALL]]} >"> 1), > ) ) ) (FunctionDef RunWithLog [] (List (= scope= flags=0 words=[] bindings=[('log', {[DQ [VarSub TC_LOG][LIT_CHARS /][VarSub 1]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub TC_LOG]]}) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('ret', {[LIT_CHARS 1]})]) (If (Com {[VarSub PNACL_VERBOSE]}) (List (Pipeline (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "RUNNING: "]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS tee]} {[DQ [VarSub log]]}) (Com {[LIT_CHARS tee]} {[LIT_CHARS -a]} {[DQ [VarSub TC_LOG_ALL]]}) ) (Pipeline (Com {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS tee]} {[DQ [VarSub log]]}) (Com {[LIT_CHARS tee]} {[LIT_CHARS -a]} {[DQ [VarSub TC_LOG_ALL]]}) ) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub PIPESTATUS bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]})]) ) (ElseTrue) (List (Fork (Pipeline (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "RUNNING: "]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS tee]} {[LIT_CHARS -a]} {[DQ [VarSub TC_LOG_ALL]]}) ) ) (Com < (FilenameRedirectNode filename={[DQ [VarSub log]]} "> 1), > ) (Fork (Pipeline (Com {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS tee]} {[LIT_CHARS -a]} {[DQ [VarSub TC_LOG_ALL]]}) ) ) (Com < (FilenameRedirectNode filename={[DQ [VarSub log]]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub PIPESTATUS bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]})]) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub ret]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS ERROR]]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "COMMAND:"]]}) (Com {[LIT_CHARS PrettyPrint]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "LOGFILE: "][VarSub log]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "PWD: "][ComSub (Com {[LIT_CHARS pwd]})]]}) (Com {[LIT_CHARS echo]}) (If (Com {[VarSub PNACL_BUILDBOT]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "BEGIN LOGFILE Contents."]]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub log]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "END LOGFILE Contents."]]}) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (FunctionDef PrettyPrint [] (List (For I [{[DQ [VarSub @]]}]) (List (= scope= flags=0 words=[] bindings=[('has_space', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub I]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS " "]]}) )]})]) (If (Com {[LIT_OTHER "["]} {[VarSub has_space transform_ops=[(#len)]]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[SQ ]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub I]]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[SQ ]}) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS " "][VarSub I]]}) ) ) ) (Com {[LIT_CHARS echo]}) ) ) (FunctionDef assert-dir [] (List (= scope= flags=0 words=[] bindings=[('dir', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub 2]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[DQ [VarSub dir]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "ERROR: "][VarSub msg]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (FunctionDef assert-file [] (List (= scope= flags=0 words=[] bindings=[('fn', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub 2]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub fn]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "ERROR: "][VarSub fn][LIT_CHARS " does not exist. "][VarSub msg]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (FunctionDef Usage [] (Pipeline (Com {[LIT_CHARS egrep]} {[DQ [LIT_CHARS "^#@"]]} {[DQ [VarSub SCRIPT_PATH]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -b]} {[LIT_CHARS 3-]}) ) ) (FunctionDef Usage2 [] (Pipeline (Com {[LIT_CHARS egrep]} {[DQ [LIT_CHARS "^#(@|"][\ LIT_ESCAPED_CHAR "\\+"][LIT_CHARS ")"]]} {[DQ [VarSub SCRIPT_PATH]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -b]} {[LIT_CHARS 3-]}) ) ) (FunctionDef Banner [] (List (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " *********************************************************************"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " | "]]}) (For arg [{[DQ [VarSub @]]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " | "][VarSub arg]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " | "]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " *********************************************************************"]]}) ) ) (FunctionDef StepBanner [] (List (= scope= flags=0 words=[] bindings=[('module', {[DQ [VarSub 1]]})]) (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS -------------------------------------------------------------------]]}) (= scope= flags=0 words=[] bindings=[('padding', {[ComSub (Com {[LIT_CHARS RepeatStr]} {[SQ ]} {[LIT_CHARS 28]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub padding][VarSub module]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS -------------------------------------------------------------------]]}) ) (ElseTrue) (List (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('padding', {[ComSub (Com {[LIT_CHARS RepeatStr]} {[SQ ]} {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 20]}} {A Atom NODE_ARITH_WORD {[VarSub module transform_ops=[(#len)]]}}}]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "["][ComSub (Com {[LIT_CHARS TimeStamp]})][LIT_CHARS "] "][VarSub module][VarSub padding]]} {[DQ [VarSub @]]}) ) ) ) ) (FunctionDef TimeStamp [] (If (List (Fork (Com {[LIT_CHARS date]} {[LIT_CHARS --version]}) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (Com {[LIT_CHARS date]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS "now - "][VarSub TIME_AT_STARTUP][LIT_CHARS sec]]} {[SQ ]}) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('time_now', {[ComSub (Com {[LIT_CHARS date]} {[SQ ]})]})]) (= scope= flags=0 words=[] bindings=[('time_delta', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub time_now]}} {A Atom NODE_ARITH_WORD {[VarSub TIME_AT_STARTUP]}}}]})]) (Com {[LIT_CHARS date]} {[LIT_CHARS -j]} {[LIT_CHARS -f]} {[DQ [LIT_CHARS "%s"]]} {[DQ [VarSub time_delta]]} {[DQ [LIT_CHARS "+%M:%S"]]}) ) ) ) (FunctionDef SubBanner [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ----------------------------------------------------------------------]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub @]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ----------------------------------------------------------------------]]}) ) ) (FunctionDef SkipBanner [] (Com {[LIT_CHARS StepBanner]} {[DQ [VarSub 1]]} {[DQ [LIT_CHARS "Skipping "][VarSub 2][LIT_CHARS ", already up to date."]]}) ) (FunctionDef RepeatStr [] (List (= scope= flags=0 words=[] bindings=[('str', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('count', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('ret', {[DQ ]})]) (While (Com {[LIT_OTHER "["]} {[VarSub count]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('ret', {[DQ [VarSub ret][VarSub str]]})]) (= scope= flags=0 words=[] bindings=[('count', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub count]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub ret]]}) ) ) (FunctionDef Fatal [] (List (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (FunctionDef is-ELF [] (List (= scope= flags=0 words=[] bindings=[('F', {[ComSub (Com {[LIT_CHARS file]} {[LIT_CHARS -b]} {[DQ [VarSub 1]]})]})]) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub F]]} {[DQ [LIT_CHARS ELF]]}}) ) ) (FunctionDef is-Mach [] (List (= scope= flags=0 words=[] bindings=[('F', {[ComSub (Com {[LIT_CHARS file]} {[LIT_CHARS -b]} {[DQ [VarSub 1]]})]})]) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub F]]} {[DQ [LIT_CHARS Mach-O]]}}) ) ) (FunctionDef is-shell-script [] (List (= scope= flags=0 words=[] bindings=[('F', {[ComSub (Com {[LIT_CHARS file]} {[LIT_CHARS -b]} {[DQ [VarSub 1]]})]})]) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub F]]} {[DQ [LIT_CHARS shell]]}}) ) ) (FunctionDef get_dir_size_in_mb [] (Pipeline (Com {[LIT_CHARS du]} {[LIT_CHARS -msc]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -1]}) (Com {[LIT_CHARS egrep]} {[LIT_CHARS -o]} {[DQ [LIT_CHARS "[0-9]+"]]}) ) ) (FunctionDef confirm-yes [] (List (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub 1]]})]) (While (Com {[LIT_CHARS true]}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub msg][LIT_CHARS " [Y/N]? "]]}) (= scope= flags=0 words=[{[LIT_CHARS YESNO]}] bindings=[]) (Com {[LIT_CHARS read]} {[LIT_CHARS YESNO]}) (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub YESNO]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS N]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub YESNO]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS n]]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub YESNO]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS Y]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[DQ [VarSub YESNO]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS y]]} {[LIT_OTHER "]"]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) ) ) ) (FunctionDef GetAbsolutePath [] (List (= scope= flags=0 words=[] bindings=[('relpath', {[VarSub 1]})]) (= scope= flags=0 words=[{[LIT_CHARS reldir]}] bindings=[]) (= scope= flags=0 words=[{[LIT_CHARS relname]}] bindings=[]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub relpath]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('reldir', {[DQ [VarSub relpath]]})]) (= scope= flags=0 words=[] bindings=[('relname', {[DQ ]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('reldir', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub relpath]]})]]})]) (= scope= flags=0 words=[] bindings=[('relname', {[DQ [LIT_CHARS /][ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub relpath]]})]]})]) ) ) (= scope= flags=0 words=[] bindings=[('absdir', {[DQ [ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub reldir]]}) (Com {[LIT_CHARS pwd]}) )]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub absdir][VarSub relname]]}) ) ) (= scope= flags=0 words=[] bindings=[('CT_WAIT_QUEUE', {[DQ ]})]) (FunctionDef QueueLastProcess [] (List (= scope= flags=0 words=[] bindings=[('pid', {[VarSub !]})]) (= scope= flags=0 words=[] bindings=[('CT_WAIT_QUEUE+', {[DQ [LIT_CHARS " "][VarSub pid]]})]) (If (Pipeline! (Com {[LIT_CHARS QueueConcurrent]}) ) (Com {[LIT_CHARS QueueWait]}) ) ) ) (FunctionDef QueueConcurrent [] (Com {[LIT_OTHER "["]} {[VarSub PNACL_CONCURRENCY]} {[LIT_CHARS -gt]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) ) (FunctionDef QueueWait [] (List (For pid [{[VarSub CT_WAIT_QUEUE]}]) (Com {[LIT_CHARS wait]} {[VarSub pid]}) ) (= scope= flags=0 words=[] bindings=[('CT_WAIT_QUEUE', {[DQ ]})]) ) ) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS SIGINT]} {[LIT_CHARS SIGTERM]} {[LIT_CHARS SIGHUP]}) (FunctionDef QueueKill [] (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Killing queued processes: "][VarSub CT_WAIT_QUEUE]]}) (For pid [{[VarSub CT_WAIT_QUEUE]}]) (List (Fork (Com {[LIT_CHARS kill]} {[VarSub pid]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS true]}) ) ) ) (Com {[LIT_CHARS echo]}) (= scope= flags=0 words=[] bindings=[('CT_WAIT_QUEUE', {[DQ ]})]) ) ) (FunctionDef QueueEmpty [] (Com {[LIT_OTHER "["]} {[DQ [VarSub CT_WAIT_QUEUE]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) ) )