(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]}) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]}) (= scope= flags=0 words=[] bindings=[('SCRIPT_DIR', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})]}) (Com {[LIT_CHARS pwd]}) )]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub DIST test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: DIST not defined"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub APT_REPO test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: APT_REPO not defined"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub KEYRING_FILE test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: KEYRING_FILE not defined"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub DEBIAN_PACKAGES test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: DEBIAN_PACKAGES not defined"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=2 words=[] bindings=[('REPO_BASEDIR', {[DQ [VarSub APT_REPO][LIT_CHARS /dists/][VarSub DIST]]})]) (= scope= flags=2 words=[] bindings=[('INSTALL_ROOT_AMD64', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /] [VarSub DIST] [LIT_CHARS _amd64_staging]})]) (= scope= flags=2 words=[] bindings=[('INSTALL_ROOT_I386', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /] [VarSub DIST] [LIT_CHARS _i386_staging]})]) (= scope= flags=2 words=[] bindings=[('INSTALL_ROOT_ARM', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /] [VarSub DIST] [LIT_CHARS _arm_staging]})]) (= scope= flags=2 words=[] bindings=[('REQUIRED_TOOLS', {[DQ [LIT_CHARS wget]]})]) (= scope= flags=2 words=[] bindings=[('RELEASE_FILE', {[DQ [LIT_CHARS Release]]})]) (= scope= flags=2 words=[] bindings=[('RELEASE_FILE_GPG', {[DQ [LIT_CHARS Release.gpg]]})]) (= scope= flags=2 words=[] bindings=[('RELEASE_LIST', {[DQ [VarSub REPO_BASEDIR][LIT_CHARS /][VarSub RELEASE_FILE]]})]) (= scope= flags=2 words=[] bindings=[('RELEASE_LIST_GPG', {[DQ [VarSub REPO_BASEDIR][LIT_CHARS /][VarSub RELEASE_FILE_GPG]]})]) (= scope= flags=2 words=[] bindings=[('PACKAGE_FILE_AMD64', {[DQ [LIT_CHARS main/binary-amd64/Packages.bz2]]})]) (= scope= flags=2 words=[] bindings=[('PACKAGE_FILE_I386', {[DQ [LIT_CHARS main/binary-i386/Packages.bz2]]})]) (= scope= flags=2 words=[] bindings=[('PACKAGE_FILE_ARM', {[DQ [LIT_CHARS main/binary-armhf/Packages.bz2]]})]) (= scope= flags=2 words=[] bindings=[('PACKAGE_LIST_AMD64', {[DQ [VarSub REPO_BASEDIR][LIT_CHARS /][VarSub PACKAGE_FILE_AMD64]]})]) (= scope= flags=2 words=[] bindings=[('PACKAGE_LIST_I386', {[DQ [VarSub REPO_BASEDIR][LIT_CHARS /][VarSub PACKAGE_FILE_I386]]})]) (= scope= flags=2 words=[] bindings=[('PACKAGE_LIST_ARM', {[DQ [VarSub REPO_BASEDIR][LIT_CHARS /][VarSub PACKAGE_FILE_ARM]]})]) (= scope= flags=2 words=[] bindings=[('DEBIAN_DEP_LIST_AMD64', {[DQ [LIT_CHARS packagelist.][VarSub DIST][LIT_CHARS .amd64]]})]) (= scope= flags=2 words=[] bindings=[('DEBIAN_DEP_LIST_I386', {[DQ [LIT_CHARS packagelist.][VarSub DIST][LIT_CHARS .i386]]})]) (= scope= flags=2 words=[] bindings=[('DEBIAN_DEP_LIST_ARM', {[DQ [LIT_CHARS packagelist.][VarSub DIST][LIT_CHARS .arm]]})]) (FunctionDef Banner [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) (Com {[LIT_CHARS echo]} {[VarSub *]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) ) ) (FunctionDef SubBanner [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ----------------------------------------------------------------------]]}) (Com {[LIT_CHARS echo]} {[VarSub *]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ----------------------------------------------------------------------]]}) ) ) (FunctionDef Usage [] (Pipeline (Com {[LIT_CHARS egrep]} {[DQ [LIT_CHARS "^#@"]]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS --bytes] [LIT_OTHER "="] [LIT_CHARS 3-]}) ) ) (FunctionDef DownloadOrCopy [] (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [VarSub 2]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub 2][LIT_CHARS " already in place"]]}) (Com {[LIT_CHARS return]}) ) ) (= scope= flags=0 words=[] bindings=[('HTTP', {[LIT_CHARS 0]})]) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -qs]} {[LIT_OTHER "^"] [LIT_CHARS http] [LIT_OTHER ":"] [LIT_CHARS //]}) ) (= scope= flags=0 words=[] bindings=[('HTTP', {[LIT_CHARS 1]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub HTTP]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS 1]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "downloading from "][VarSub 1][LIT_CHARS " -> "][VarSub 2]]}) (Com {[LIT_CHARS wget]} {[DQ [VarSub 1]]} {[LIT_CHARS -O]} {[DQ [VarSub 2][LIT_CHARS .partial]]}) (Com {[LIT_CHARS mv]} {[DQ [VarSub 2][LIT_CHARS .partial]]} {[VarSub 2]}) ) (ElseTrue) (List (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "copying from "][VarSub 1]]}) (Com {[LIT_CHARS cp]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]}) ) ) ) ) (FunctionDef SetEnvironmentVariables [] (List (= scope= flags=0 words=[] bindings=[('ARCH', {[DQ ]})]) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS echo]} {[VarSub 1]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -qs]} {[LIT_CHARS Amd64] [LIT_OTHER "$"]}) ) (= scope= flags=0 words=[] bindings=[('ARCH', {[LIT_CHARS AMD64]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub ARCH]]} {[LIT_OTHER "]"]}) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS echo]} {[VarSub 1]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -qs]} {[LIT_CHARS I386] [LIT_OTHER "$"]}) ) (= scope= flags=0 words=[] bindings=[('ARCH', {[LIT_CHARS I386]})]) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub ARCH]]} {[LIT_OTHER "]"]}) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS echo]} {[VarSub 1]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -qs]} {[LIT_CHARS ARM] [LIT_OTHER "$"]}) ) (= scope= flags=0 words=[] bindings=[('ARCH', {[LIT_CHARS ARM]})]) ) ) (Case to_match={[DQ [VarSub ARCH]]}, pat_word_list=[[{[LIT_CHARS ARM]}], [{[LIT_CHARS AMD64]}], [{[LIT_CHARS I386]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('INSTALL_ROOT', {[DQ [VarSub INSTALL_ROOT_ARM]]})]) (= scope= flags=0 words=[] bindings=[('INSTALL_ROOT', {[DQ [VarSub INSTALL_ROOT_AMD64]]})]) (= scope= flags=0 words=[] bindings=[('INSTALL_ROOT', {[DQ [VarSub INSTALL_ROOT_I386]]})]) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: Unexpected bad architecture."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef SanityCheck [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Sanity Checks"]]}) (If (Pipeline! (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub INSTALL_ROOT]]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: "][VarSub INSTALL_ROOT][LIT_CHARS " can't be created."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('CHROME_DIR', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub SCRIPT_DIR][LIT_CHARS /../../..]]}) (Com {[LIT_CHARS pwd]}) )]})]) (= scope= flags=0 words=[] bindings=[('BUILD_DIR', {[VarSub CHROME_DIR] [LIT_CHARS /out/sysroot-build/] [VarSub DIST]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub BUILD_DIR]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Using build directory: "][VarSub BUILD_DIR]]}) (For tool [{[VarSub REQUIRED_TOOLS]}]) (If (Pipeline! (Com {[LIT_CHARS which]} {[VarSub tool]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Required binary "][VarSub tool][LIT_CHARS " not found."]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS Exiting.]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) ) (FunctionDef ChangeDirectory [] (Com {[LIT_CHARS cd]} {[VarSub SCRIPT_DIR]}) ) (FunctionDef ClearInstallDir [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Clearing dirs in "][VarSub INSTALL_ROOT]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub INSTALL_ROOT] [LIT_CHARS /] [LIT_OTHER "*"]}) ) ) (FunctionDef CreateTarBall [] (List (= scope= flags=0 words=[] bindings=[('tarball', {[VarSub 1]})]) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Creating tar ball "][VarSub tarball]]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS zcf]} {[VarSub tarball]} {[LIT_CHARS -C]} {[VarSub INSTALL_ROOT]} {[LIT_CHARS .]}) ) ) (FunctionDef CheckBuildSysrootArgs [] (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub #]]} {[LIT_CHARS -ne]} {[DQ [LIT_CHARS 1]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: BuildSysroot commands only take 1 argument"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: tarball name required"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef ExtractPackageBz2 [] (Pipeline (Com {[LIT_CHARS bzcat]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS egrep]} {[SQ ]} < (FilenameRedirectNode filename={[DQ [VarSub 2]]} "> 1), > ) ) ) (FunctionDef GeneratePackageListAmd64 [] (List (= scope= flags=0 words=[] bindings=[('output_file', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('package_list', {[DQ [VarSub BUILD_DIR][LIT_CHARS /Packages.][VarSub DIST][LIT_CHARS _amd64.bz2]]})]) (= scope= flags=0 words=[] bindings=[('tmp_package_list', {[DQ [VarSub BUILD_DIR][LIT_CHARS /Packages.][VarSub DIST][LIT_CHARS _amd64]]})]) (Com {[LIT_CHARS DownloadOrCopy]} {[DQ [VarSub PACKAGE_LIST_AMD64]]} {[DQ [VarSub package_list]]}) (Com {[LIT_CHARS VerifyPackageListing]} {[DQ [VarSub PACKAGE_FILE_AMD64]]} {[DQ [VarSub package_list]]}) (Com {[LIT_CHARS ExtractPackageBz2]} {[DQ [VarSub package_list]]} {[DQ [VarSub tmp_package_list]]}) (Com {[LIT_CHARS GeneratePackageList]} {[DQ [VarSub tmp_package_list]]} {[DQ [VarSub output_file]]} {[DQ [VarSub DEBIAN_PACKAGES][LIT_CHARS "\n"][LIT_CHARS " "][VarSub DEBIAN_PACKAGES_X86]]}) ) ) (FunctionDef GeneratePackageListI386 [] (List (= scope= flags=0 words=[] bindings=[('output_file', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('package_list', {[DQ [VarSub BUILD_DIR][LIT_CHARS /Packages.][VarSub DIST][LIT_CHARS _i386.bz2]]})]) (= scope= flags=0 words=[] bindings=[('tmp_package_list', {[DQ [VarSub BUILD_DIR][LIT_CHARS /Packages.][VarSub DIST][LIT_CHARS _amd64]]})]) (Com {[LIT_CHARS DownloadOrCopy]} {[DQ [VarSub PACKAGE_LIST_I386]]} {[DQ [VarSub package_list]]}) (Com {[LIT_CHARS VerifyPackageListing]} {[DQ [VarSub PACKAGE_FILE_I386]]} {[DQ [VarSub package_list]]}) (Com {[LIT_CHARS ExtractPackageBz2]} {[DQ [VarSub package_list]]} {[DQ [VarSub tmp_package_list]]}) (Com {[LIT_CHARS GeneratePackageList]} {[DQ [VarSub tmp_package_list]]} {[DQ [VarSub output_file]]} {[DQ [VarSub DEBIAN_PACKAGES][LIT_CHARS "\n"][LIT_CHARS " "][VarSub DEBIAN_PACKAGES_X86]]}) ) ) (FunctionDef GeneratePackageListARM [] (List (= scope= flags=0 words=[] bindings=[('output_file', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('package_list', {[DQ [VarSub BUILD_DIR][LIT_CHARS /Packages.][VarSub DIST][LIT_CHARS _arm.bz2]]})]) (= scope= flags=0 words=[] bindings=[('tmp_package_list', {[DQ [VarSub BUILD_DIR][LIT_CHARS /Packages.][VarSub DIST][LIT_CHARS _arm]]})]) (Com {[LIT_CHARS DownloadOrCopy]} {[DQ [VarSub PACKAGE_LIST_ARM]]} {[DQ [VarSub package_list]]}) (Com {[LIT_CHARS VerifyPackageListing]} {[DQ [VarSub PACKAGE_FILE_ARM]]} {[DQ [VarSub package_list]]}) (Com {[LIT_CHARS ExtractPackageBz2]} {[DQ [VarSub package_list]]} {[DQ [VarSub tmp_package_list]]}) (Com {[LIT_CHARS GeneratePackageList]} {[DQ [VarSub tmp_package_list]]} {[DQ [VarSub output_file]]} {[DQ [VarSub DEBIAN_PACKAGES]]}) ) ) (FunctionDef StripChecksumsFromPackageList [] (List (= scope= flags=0 words=[] bindings=[('package_file', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[SQ ]} {[DQ [VarSub package_file]]}) ) ) (FunctionDef VerifyPackageFilesMatch [] (List (= scope= flags=0 words=[] bindings=[('downloaded_package_file', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('stored_package_file', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS diff]} {[LIT_CHARS -u]} {[DQ [VarSub downloaded_package_file]]} {[DQ [VarSub stored_package_file]]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub ?]]} {[LIT_CHARS -ne]} {[DQ [LIT_CHARS 0]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: downloaded package files does not match "][VarSub 2][LIT_CHARS .]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "You may need to run UpdatePackageLists."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef HacksAndPatchesAmd64 [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Misc Hacks & Patches"]]}) (= scope= flags=0 words=[] bindings=[('lscripts', {[DQ [VarSub INSTALL_ROOT][LIT_CHARS "/usr/lib/x86_64-linux-gnu/libpthread.so "][LIT_CHARS " "][VarSub INSTALL_ROOT][LIT_CHARS /usr/lib/x86_64-linux-gnu/libc.so]]})]) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS -e]} {[SQ ]} {[VarSub lscripts]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS -e]} {[SQ ]} {[VarSub lscripts]}) (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "Package Configs Symlink"]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub INSTALL_ROOT] [LIT_CHARS /usr/share]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS ../lib/x86_64-linux-gnu/pkgconfig]} {[VarSub INSTALL_ROOT] [LIT_CHARS /usr/share/pkgconfig]}) (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "Adding an additional ld.conf include"]]}) (= scope= flags=0 words=[] bindings=[('LD_SO_HACK_CONF', {[DQ [VarSub INSTALL_ROOT][LIT_CHARS /etc/ld.so.conf.d/zz_hack.conf]]})]) (Com {[LIT_CHARS echo]} {[LIT_CHARS /usr/lib/gcc/x86_64-linux-gnu/4.6]} < (FilenameRedirectNode filename={[DQ [VarSub LD_SO_HACK_CONF]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS /usr/lib]} < (FilenameRedirectNode filename={[DQ [VarSub LD_SO_HACK_CONF]]} >"> 1), > ) ) ) (FunctionDef HacksAndPatchesI386 [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Misc Hacks & Patches"]]}) (= scope= flags=0 words=[] bindings=[('lscripts', {[DQ [VarSub INSTALL_ROOT][LIT_CHARS "/usr/lib/i386-linux-gnu/libpthread.so "][LIT_CHARS " "][VarSub INSTALL_ROOT][LIT_CHARS /usr/lib/i386-linux-gnu/libc.so]]})]) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS -e]} {[SQ ]} {[VarSub lscripts]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS -e]} {[SQ ]} {[VarSub lscripts]}) (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "Package Configs Symlink"]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub INSTALL_ROOT] [LIT_CHARS /usr/share]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS ../lib/i386-linux-gnu/pkgconfig]} {[VarSub INSTALL_ROOT] [LIT_CHARS /usr/share/pkgconfig]}) (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "Adding an additional ld.conf include"]]}) (= scope= flags=0 words=[] bindings=[('LD_SO_HACK_CONF', {[DQ [VarSub INSTALL_ROOT][LIT_CHARS /etc/ld.so.conf.d/zz_hack.conf]]})]) (Com {[LIT_CHARS echo]} {[LIT_CHARS /usr/lib/gcc/i486-linux-gnu/4.6]} < (FilenameRedirectNode filename={[DQ [VarSub LD_SO_HACK_CONF]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS /usr/lib]} < (FilenameRedirectNode filename={[DQ [VarSub LD_SO_HACK_CONF]]} >"> 1), > ) ) ) (FunctionDef HacksAndPatchesARM [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Misc Hacks & Patches"]]}) (= scope= flags=0 words=[] bindings=[('lscripts', {[DQ [VarSub INSTALL_ROOT][LIT_CHARS "/usr/lib/arm-linux-gnueabihf/libpthread.so "][LIT_CHARS " "][VarSub INSTALL_ROOT][LIT_CHARS /usr/lib/arm-linux-gnueabihf/libc.so]]})]) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS -e]} {[SQ ]} {[VarSub lscripts]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[LIT_CHARS -e]} {[SQ ]} {[VarSub lscripts]}) (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "Package Configs Symlink"]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub INSTALL_ROOT] [LIT_CHARS /usr/share]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS ../lib/arm-linux-gnueabihf/pkgconfig]} {[VarSub INSTALL_ROOT] [LIT_CHARS /usr/share/pkgconfig]}) ) ) (FunctionDef InstallIntoSysroot [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Install Libs And Headers Into Jail"]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub BUILD_DIR] [LIT_CHARS /debian-packages]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub INSTALL_ROOT]}) (While (DParen {A Atom NODE_ARITH_WORD {[DQ [VarSub #]]}}) (List (= scope= flags=0 words=[] bindings=[('file', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('package', {[DQ [VarSub BUILD_DIR][LIT_CHARS /debian-packages/][VarSub file transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('sha256sum', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub sha256sum transform_ops=[(#len)]]]} {[LIT_CHARS -ne]} {[DQ [LIT_CHARS 64]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Bad sha256sum from package list"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Installing "][VarSub file]]}) (Com {[LIT_CHARS DownloadOrCopy]} {[VarSub APT_REPO] [LIT_CHARS /pool/] [VarSub file]} {[VarSub package]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -s]} {[DQ [VarSub package]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: bad package "][VarSub package]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub sha256sum][LIT_CHARS " "][VarSub package]]}) (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS --quiet]} {[LIT_CHARS -c]}) ) (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "Extracting to "][VarSub INSTALL_ROOT]]}) (Pipeline (Com {[LIT_CHARS dpkg]} {[LIT_CHARS --fsys-tarfile]} {[VarSub package]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS -xf]} {[LIT_CHARS -]} {[LIT_CHARS --exclude] [LIT_OTHER "="] [LIT_CHARS ./usr/share]} {[LIT_CHARS -C]} {[VarSub INSTALL_ROOT]}) ) ) ) ) ) (FunctionDef CleanupJailSymlinks [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Jail symlink cleanup"]]}) (= scope= flags=0 words=[] bindings=[('SAVEDPWD', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (Com {[LIT_CHARS cd]} {[VarSub INSTALL_ROOT]}) (Pipeline (Com {[LIT_CHARS find]} {[LIT_CHARS lib]} {[LIT_CHARS lib64]} {[LIT_CHARS usr/lib]} {[LIT_CHARS -type]} {[LIT_CHARS l]} {[LIT_CHARS -printf]} {[SQ ]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS link]} {[LIT_CHARS target]}) (List (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub target]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -qs]} {[LIT_OTHER "^"] [LIT_CHARS /]}) ) (Com {[LIT_CHARS continue]}) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub link][LIT_CHARS ": "][VarSub target]]}) (Case to_match={[DQ [VarSub link]]}, pat_word_list=[[{[LIT_CHARS usr/lib/gcc/x86_64-linux-gnu/4.] [LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}, {[LIT_CHARS usr/lib/gcc/i486-linux-gnu/4.] [LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}, {[LIT_CHARS usr/lib/gcc/arm-linux-gnueabihf/4.] [LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_CHARS usr/lib/x86_64-linux-gnu/] [LIT_OTHER "*"]}, {[LIT_CHARS usr/lib/i386-linux-gnu/] [LIT_OTHER "*"]}, {[LIT_CHARS usr/lib/arm-linux-gnueabihf/] [LIT_OTHER "*"]}], [{[LIT_CHARS usr/lib/] [LIT_OTHER "*"]}], [{[LIT_CHARS lib64/] [LIT_OTHER "*"]}, {[LIT_CHARS lib/] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS ln]} {[LIT_CHARS -snfv]} {[DQ [LIT_CHARS ../../../../..][VarSub target]]} {[DQ [VarSub link]]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -snfv]} {[DQ [LIT_CHARS ../../..][VarSub target]]} {[DQ [VarSub link]]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -snfv]} {[DQ [LIT_CHARS ../..][VarSub target]]} {[DQ [VarSub link]]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -snfv]} {[DQ [LIT_CHARS ..][VarSub target]]} {[DQ [VarSub link]]}) ) ) ) ) (Pipeline (Com {[LIT_CHARS find]} {[LIT_CHARS lib]} {[LIT_CHARS lib64]} {[LIT_CHARS usr/lib]} {[LIT_CHARS -type]} {[LIT_CHARS l]} {[LIT_CHARS -printf]} {[SQ ]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS link]} {[LIT_CHARS target]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -r]} {[DQ [VarSub link]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: FOUND BAD LINK "][VarSub link]]}) (Com {[LIT_CHARS ls]} {[LIT_CHARS -l]} {[VarSub link]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (Com {[LIT_CHARS cd]} {[DQ [VarSub SAVEDPWD]]}) ) ) (FunctionDef BuildSysrootAmd64 [] (List (Com {[LIT_CHARS CheckBuildSysrootArgs]} {[VarSub @]}) (Com {[LIT_CHARS ClearInstallDir]}) (= scope= flags=0 words=[] bindings=[('package_file', {[DQ [VarSub BUILD_DIR][LIT_CHARS /package_with_sha256sum_amd64]]})]) (Com {[LIT_CHARS GeneratePackageListAmd64]} {[DQ [VarSub package_file]]}) (= scope= flags=0 words=[] bindings=[('files_and_sha256sums', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub package_file]})]]})]) (Com {[LIT_CHARS StripChecksumsFromPackageList]} {[DQ [VarSub package_file]]}) (Com {[LIT_CHARS VerifyPackageFilesMatch]} {[DQ [VarSub package_file]]} {[DQ [VarSub DEBIAN_DEP_LIST_AMD64]]}) (Com {[LIT_CHARS InstallIntoSysroot]} {[VarSub files_and_sha256sums]}) (Com {[LIT_CHARS CleanupJailSymlinks]}) (Com {[LIT_CHARS HacksAndPatchesAmd64]}) (Com {[LIT_CHARS CreateTarBall]} {[DQ [VarSub 1]]}) ) ) (FunctionDef BuildSysrootI386 [] (List (Com {[LIT_CHARS CheckBuildSysrootArgs]} {[VarSub @]}) (Com {[LIT_CHARS ClearInstallDir]}) (= scope= flags=0 words=[] bindings=[('package_file', {[DQ [VarSub BUILD_DIR][LIT_CHARS /package_with_sha256sum_i386]]})]) (Com {[LIT_CHARS GeneratePackageListI386]} {[DQ [VarSub package_file]]}) (= scope= flags=0 words=[] bindings=[('files_and_sha256sums', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub package_file]})]]})]) (Com {[LIT_CHARS StripChecksumsFromPackageList]} {[DQ [VarSub package_file]]}) (Com {[LIT_CHARS VerifyPackageFilesMatch]} {[DQ [VarSub package_file]]} {[DQ [VarSub DEBIAN_DEP_LIST_I386]]}) (Com {[LIT_CHARS InstallIntoSysroot]} {[VarSub files_and_sha256sums]}) (Com {[LIT_CHARS CleanupJailSymlinks]}) (Com {[LIT_CHARS HacksAndPatchesI386]}) (Com {[LIT_CHARS CreateTarBall]} {[DQ [VarSub 1]]}) ) ) (FunctionDef BuildSysrootARM [] (List (Com {[LIT_CHARS CheckBuildSysrootArgs]} {[VarSub @]}) (Com {[LIT_CHARS ClearInstallDir]}) (= scope= flags=0 words=[] bindings=[('package_file', {[DQ [VarSub BUILD_DIR][LIT_CHARS /package_with_sha256sum_arm]]})]) (Com {[LIT_CHARS GeneratePackageListARM]} {[DQ [VarSub package_file]]}) (= scope= flags=0 words=[] bindings=[('files_and_sha256sums', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub package_file]})]]})]) (Com {[LIT_CHARS StripChecksumsFromPackageList]} {[DQ [VarSub package_file]]}) (Com {[LIT_CHARS VerifyPackageFilesMatch]} {[DQ [VarSub package_file]]} {[DQ [VarSub DEBIAN_DEP_LIST_ARM]]}) (= scope= flags=0 words=[] bindings=[('APT_REPO', {[VarSub APR_REPO_ARM test_op=VS_TEST_COLON_EQUALS {[VarSub APT_REPO]}]})]) (Com {[LIT_CHARS InstallIntoSysroot]} {[VarSub files_and_sha256sums]}) (Com {[LIT_CHARS CleanupJailSymlinks]}) (Com {[LIT_CHARS HacksAndPatchesARM]}) (Com {[LIT_CHARS CreateTarBall]} {[DQ [VarSub 1]]}) ) ) (FunctionDef CheckForDebianGPGKeyring [] (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub KEYRING_FILE]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Debian GPG keys missing. Install the debian-archive-keyring package."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef VerifyPackageListing [] (List (= scope= flags=0 words=[] bindings=[('file_path', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('output_file', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('release_file', {[DQ [VarSub BUILD_DIR][LIT_CHARS /][VarSub RELEASE_FILE]]})]) (= scope= flags=0 words=[] bindings=[('release_file_gpg', {[DQ [VarSub BUILD_DIR][LIT_CHARS /][VarSub RELEASE_FILE_GPG]]})]) (Com {[LIT_CHARS CheckForDebianGPGKeyring]}) (Com {[LIT_CHARS DownloadOrCopy]} {[VarSub RELEASE_LIST]} {[VarSub release_file]}) (Com {[LIT_CHARS DownloadOrCopy]} {[VarSub RELEASE_LIST_GPG]} {[VarSub release_file_gpg]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Verifying: "][VarSub release_file][LIT_CHARS " with "][VarSub release_file_gpg]]}) (Com {[LIT_CHARS gpgv]} {[LIT_CHARS --keyring]} {[VarSub KEYRING_FILE]} {[VarSub release_file_gpg]} {[VarSub release_file]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Verifying: "][VarSub output_file]]}) (= scope= flags=0 words=[] bindings=[('checksums', {[ComSub (Pipeline (Com {[LIT_CHARS grep]} {[VarSub file_path]} {[VarSub release_file]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]} {[LIT_CHARS -f]} {[LIT_CHARS 2]}) )]})]) (= scope= flags=0 words=[] bindings=[('sha256sum', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub checksums]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]} {[LIT_CHARS -f]} {[LIT_CHARS 3]}) )]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub sha256sum transform_ops=[(#len)]]]} {[LIT_CHARS -ne]} {[DQ [LIT_CHARS 64]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Bad sha256sum from "][VarSub RELEASE_LIST]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub sha256sum][LIT_CHARS " "][VarSub output_file]]}) (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS --quiet]} {[LIT_CHARS -c]}) ) ) ) (FunctionDef GeneratePackageList [] (List (= scope= flags=0 words=[] bindings=[('input_file', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('output_file', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Updating: "][VarSub output_file][LIT_CHARS " from "][VarSub input_file]]}) (Com {[LIT_CHARS /bin/rm]} {[LIT_CHARS -f]} {[DQ [VarSub output_file]]}) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS shift]}) (For pkg [{[VarSub @]}]) (List (= scope= flags=0 words=[] bindings=[('pkg_full', {[ComSub (Pipeline (Com {[LIT_CHARS grep]} {[LIT_CHARS -A]} {[LIT_CHARS 1]} {[DQ [LIT_CHARS " "][VarSub pkg][\ LIT_ESCAPED_CHAR "\\$"]]} {[DQ [VarSub input_file]]}) (Com {[LIT_CHARS egrep]} {[LIT_CHARS -o]} {[DQ [LIT_CHARS "pool/.*"]]}) )]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub pkg_full]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: missing package: "][VarSub pkg]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('pkg_nopool', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub pkg_full]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s/^pool"][\ LIT_ESCAPED_CHAR "\\/"][LIT_CHARS //]]}) )]})]) (= scope= flags=0 words=[] bindings=[('sha256sum', {[ComSub (Pipeline (Com {[LIT_CHARS grep]} {[LIT_CHARS -A]} {[LIT_CHARS 4]} {[DQ [LIT_CHARS " "][VarSub pkg][\ LIT_ESCAPED_CHAR "\\$"]]} {[DQ [VarSub input_file]]}) (Com {[LIT_CHARS grep]} {[LIT_OTHER "^"] [LIT_CHARS SHA256] [LIT_OTHER ":"]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub sha256sum transform_ops=[(#len)]]]} {[LIT_CHARS -ne]} {[DQ [LIT_CHARS 64]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Bad sha256sum from Packages"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS echo]} {[VarSub pkg_nopool]} {[VarSub sha256sum]} < (FilenameRedirectNode filename={[DQ [VarSub output_file]]} >"> 1), > ) ) ) (Com {[LIT_CHARS sort]} {[DQ [VarSub output_file]]} {[LIT_CHARS -o]} {[DQ [VarSub output_file]]}) ) ) (FunctionDef UpdatePackageListsAmd64 [] (List (Com {[LIT_CHARS GeneratePackageListAmd64]} {[DQ [VarSub DEBIAN_DEP_LIST_AMD64]]}) (Com {[LIT_CHARS StripChecksumsFromPackageList]} {[DQ [VarSub DEBIAN_DEP_LIST_AMD64]]}) ) ) (FunctionDef UpdatePackageListsI386 [] (List (Com {[LIT_CHARS GeneratePackageListI386]} {[DQ [VarSub DEBIAN_DEP_LIST_I386]]}) (Com {[LIT_CHARS StripChecksumsFromPackageList]} {[DQ [VarSub DEBIAN_DEP_LIST_I386]]}) ) ) (FunctionDef UpdatePackageListsARM [] (List (Com {[LIT_CHARS GeneratePackageListARM]} {[DQ [VarSub DEBIAN_DEP_LIST_ARM]]}) (Com {[LIT_CHARS StripChecksumsFromPackageList]} {[DQ [VarSub DEBIAN_DEP_LIST_ARM]]}) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: you must specify a mode on the commandline"]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS Usage]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Com {[LIT_OTHER "["]} {[DQ [ComSub (Com {[LIT_CHARS type]} {[LIT_CHARS -t]} {[VarSub 1]})]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [LIT_CHARS function]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: unknown function '"][VarSub 1][LIT_CHARS "'."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "For help, try:"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub 0][LIT_CHARS " help"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (ElseTrue) (List (Com {[LIT_CHARS ChangeDirectory]}) (Com {[LIT_CHARS SetEnvironmentVariables]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS SanityCheck]}) (Com {[DQ [VarSub @]]}) ) ) )