(List (Com {[LIT_CHARS set]} {[LIT_CHARS -e]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS x] [DQ [ComSub (Com {[LIT_CHARS whoami]})]]} {[LIT_OTHER "="]} {[LIT_CHARS x] [DQ [LIT_CHARS root]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Script must not be run as root."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS sudo]} {[LIT_CHARS -v]}) (= scope= flags=0 words=[] bindings=[('OUTPUTDIR', {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[VarSub PWD] [LIT_SLASH /] [LIT_CHARS output-] [ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [LIT_OTHER "%"] [LIT_CHARS Y] [LIT_OTHER "%"] [LIT_CHARS m] [LIT_OTHER "%"] [LIT_CHARS d-] [LIT_OTHER "%"] [LIT_CHARS H] [LIT_OTHER "%"] [LIT_CHARS M] [LIT_OTHER "%"] [LIT_CHARS S]})]}]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[DQ [VarSub OUTPUTDIR]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub OUTPUTDIR]]}) ) (= scope= flags=0 words=[] bindings=[('VERSION', {[LIT_CHARS 2.24]})]) (Com {[LIT_CHARS wget]} {[LIT_CHARS -c]} {[LIT_CHARS http] [LIT_OTHER ":"] [LIT_CHARS //ftp.gnu.org/gnu/binutils/binutils-] [VarSub VERSION] [LIT_CHARS .tar.bz2]}) (Com {[LIT_CHARS wget]} {[LIT_CHARS -c]} {[LIT_CHARS -q]} {[LIT_CHARS http] [LIT_OTHER ":"] [LIT_CHARS //ftp.gnu.org/gnu/binutils/binutils-] [VarSub VERSION] [LIT_CHARS .tar.bz2.sig]}) (If (Pipeline! (Com {[LIT_CHARS gpg]} {[LIT_CHARS --verify]} {[LIT_CHARS binutils-] [VarSub VERSION] [LIT_CHARS .tar.bz2.sig]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "GPG Signature failed to verify."]]}) (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "You may need to import the vendor GPG key with:"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "# gpg --keyserver pgp.mit.edu --recv-key 4AE55E93"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[LIT_CHARS binutils-] [VarSub VERSION]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS tar]} {[LIT_CHARS jxf]} {[LIT_CHARS binutils-] [VarSub VERSION] [LIT_CHARS .tar.bz2]}) (Subshell (List (Com {[LIT_CHARS cd]} {[LIT_CHARS binutils-] [VarSub VERSION]}) (Com {[LIT_CHARS patch]} {[LIT_CHARS -p1]} < (FilenameRedirectNode filename={[LIT_CHARS ../ehframe-race.patch]} 0), > ) ) ) ) ) (For ARCH [{[LIT_CHARS i386]}, {[LIT_CHARS amd64]}]) (List (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[LIT_CHARS lucid-chroot-] [VarSub ARCH]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS sudo]} {[LIT_CHARS -v]}) (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Building chroot for "][VarSub ARCH]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "============================="]]}) (Com {[LIT_CHARS sudo]} {[LIT_CHARS debootstrap]} {[LIT_CHARS --arch] [LIT_OTHER "="] [VarSub ARCH]} {[LIT_CHARS --include] [LIT_OTHER "="] [LIT_CHARS build-essential] [LIT_COMMA ","] [LIT_CHARS flex] [LIT_COMMA ","] [LIT_CHARS bison]} {[LIT_CHARS lucid]} {[LIT_CHARS lucid-chroot-] [VarSub ARCH]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "============================="]]}) ) ) (= scope= flags=0 words=[] bindings=[('BUILDDIR', {[LIT_CHARS lucid-chroot-] [VarSub ARCH] [LIT_CHARS /build]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub BUILDDIR]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS sudo]} {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub BUILDDIR]]}) ) (Com {[LIT_CHARS sudo]} {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub BUILDDIR]]}) (Com {[LIT_CHARS sudo]} {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[LIT_CHARS binutils-] [VarSub VERSION]} {[DQ [VarSub BUILDDIR]]}) (Com {[LIT_CHARS sudo]} {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[LIT_CHARS build-one.sh]} {[DQ [VarSub BUILDDIR]]}) (= scope= flags=0 words=[] bindings=[('PREFIX', {[SQ ]})]) (Case to_match={[VarSub ARCH]}, pat_word_list=[[{[LIT_CHARS i386]}], [{[LIT_CHARS amd64]}]] (List (= scope= flags=0 words=[] bindings=[('PREFIX', {[DQ [LIT_CHARS "setarch linux32"]]})]) (= scope= flags=0 words=[] bindings=[('ARCHNAME', {[LIT_CHARS i686-pc-linux-gnu]})]) ) (List (= scope= flags=0 words=[] bindings=[('PREFIX', {[DQ [LIT_CHARS "setarch linux64"]]})]) (= scope= flags=0 words=[] bindings=[('ARCHNAME', {[LIT_CHARS x86_64-unknown-linux-gnu]})]) ) ) (Com {[LIT_CHARS echo]} {[DQ ]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Building binutils for "][VarSub ARCH]]}) (= scope= flags=0 words=[] bindings=[('LOGFILE', {[DQ [VarSub OUTPUTDIR][LIT_CHARS /build-][VarSub ARCH][LIT_CHARS .log]]})]) (If (Pipeline! (Com {[LIT_CHARS sudo]} {[VarSub PREFIX]} {[LIT_CHARS chroot]} {[LIT_CHARS lucid-chroot-] [VarSub ARCH]} {[LIT_CHARS /build/build-one.sh]} {[LIT_CHARS /build/binutils-] [VarSub VERSION]} < (FilenameRedirectNode filename={[VarSub LOGFILE]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Build failed! See "][VarSub LOGFILE][LIT_CHARS " for details."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS sudo]} {[LIT_CHARS chown]} {[LIT_CHARS -R]} {[ComSub (Com {[LIT_CHARS whoami]})]} {[DQ [VarSub BUILDDIR][LIT_CHARS /output/]]}) (For i [{[DQ [VarSub BUILDDIR][LIT_CHARS /output/][VarSub ARCHNAME][LIT_CHARS "/bin/*"]]}]) (Com {[LIT_CHARS strip]} {[VarSub i]}) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -a]} {[DQ [VarSub BUILDDIR][LIT_CHARS /output/][VarSub ARCHNAME]]} {[DQ [VarSub OUTPUTDIR]]}) (Com {[LIT_CHARS sudo]} {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub BUILDDIR]]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Check you are happy with the binaries in"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub OUTPUTDIR]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS Then]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " * upload to Google Storage using the upload.sh script"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " * roll dependencies"]]}) )