(List (FunctionDef die [] (List (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef xmkdir [] (While (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (List (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Unable to mkdir "][VarSub 1]]}) ) ) (Com {[LIT_CHARS shift]}) ) ) ) (= scope= flags=0 words=[] bindings=[('R', {[DQ [VarSub 1]]})]) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[DQ [ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -u]})]]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "This script should not be run as root, what if it does rm -rf /?"]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub R]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "usage: prepare-chroot.sh "]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[LIT_CHARS git]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "This script needs to be executed at git source code's top directory"]]}) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[LIT_CHARS /bin/busybox]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('BB', {[LIT_CHARS /bin/busybox]})]) (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[LIT_CHARS /usr/bin/busybox]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('BB', {[LIT_CHARS /usr/bin/busybox]})]) (ElseTrue) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "You need busybox"]]}) ) (Com {[LIT_CHARS xmkdir]} {[DQ [VarSub R]]} {[DQ [VarSub R][LIT_CHARS /bin]]} {[DQ [VarSub R][LIT_CHARS /etc]]} {[DQ [VarSub R][LIT_CHARS /lib]]} {[DQ [VarSub R][LIT_CHARS /dev]]}) (Com {[LIT_CHARS touch]} {[DQ [VarSub R][LIT_CHARS /dev/null]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "root:x:0:0:root:/:/bin/sh"]]} < (FilenameRedirectNode filename={[DQ [VarSub R][LIT_CHARS /etc/passwd]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -nu]})][LIT_CHARS ":x:"][ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -u]})][LIT_CHARS ":"][ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -g]})][LIT_CHARS "::"][ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS "/t:/bin/sh"]]} < (FilenameRedirectNode filename={[DQ [VarSub R][LIT_CHARS /etc/passwd]]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "root::0:root"]]} < (FilenameRedirectNode filename={[DQ [VarSub R][LIT_CHARS /etc/group]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -ng]})][LIT_CHARS "::"][ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -g]})][LIT_CHARS ":"][ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -nu]})]]} < (FilenameRedirectNode filename={[DQ [VarSub R][LIT_CHARS /etc/group]]} >"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -x]} {[DQ [VarSub R][VarSub BB]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cp]} {[VarSub BB]} {[DQ [VarSub R][LIT_CHARS /bin/busybox]]}) ) (For cmd [{[LIT_CHARS sh]}, {[LIT_CHARS su]}, {[LIT_CHARS ls]}, {[LIT_CHARS expr]}, {[LIT_CHARS tr]}, {[LIT_CHARS basename]}, {[LIT_CHARS rm]}, {[LIT_CHARS mkdir]}, {[LIT_CHARS mv]}, {[LIT_CHARS id]}, {[LIT_CHARS uname]}, {[LIT_CHARS dirname]}, {[LIT_CHARS cat]}, {[LIT_CHARS true]}, {[LIT_CHARS sed]}, {[LIT_CHARS diff]}]) (Com {[LIT_CHARS ln]} {[LIT_CHARS -f]} {[LIT_CHARS -s]} {[LIT_CHARS /bin/busybox]} {[DQ [VarSub R][LIT_CHARS /bin/][VarSub cmd]]}) ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub R][ComSub (Com {[LIT_CHARS pwd]})]]}) (Com {[LIT_CHARS rsync]} {[LIT_CHARS --exclude-from]} {[LIT_CHARS t/t1509/excludes]} {[LIT_CHARS -Ha]} {[LIT_CHARS .]} {[DQ [VarSub R][ComSub (Com {[LIT_CHARS pwd]})]]}) (Com {[LIT_CHARS sed]} {[SQ ]} {[LIT_CHARS GIT-BUILD-OPTIONS]} < (FilenameRedirectNode filename={[DQ [VarSub R][ComSub (Com {[LIT_CHARS pwd]})][LIT_CHARS /GIT-BUILD-OPTIONS]]} "> 1), > ) (For cmd [{[LIT_CHARS git]}, {[VarSub BB]}]) (Pipeline (Com {[LIT_CHARS ldd]} {[VarSub cmd]}) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS i]}) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub R][ComSub (Com {[LIT_CHARS dirname]} {[VarSub i]})]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub i]]} {[DQ [VarSub R][LIT_CHARS /][VarSub i]]}) ) ) ) ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "All is set up in "][VarSub R][LIT_CHARS ", execute t1509 with the following commands:\n"][LIT_CHARS "\n"][LIT_CHARS "sudo chroot "][VarSub R][LIT_CHARS " /bin/su - "][ComSub (Com {[LIT_CHARS id]} {[LIT_CHARS -nu]})][LIT_CHARS "\n"][LIT_CHARS "IKNOWWHATIAMDOING=YES ./t1509-root-worktree.sh -v -i\n"][LIT_CHARS "\n"][LIT_CHARS "When you are done, simply delete "][VarSub R][LIT_CHARS " to clean up\n"]]} 0), > ) )