(List (Com {[LIT_CHARS set]} {[LIT_CHARS -e]}) (= scope= flags=0 words=[] bindings=[('url', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('toinstall', {[VarSub 2]})]) (For i [{[LIT_CHARS curl]}, {[LIT_CHARS xmllint]}, {[LIT_CHARS gunzip]}, {[LIT_CHARS sort]}, {[LIT_CHARS sha256sum]}, {[LIT_CHARS 7z]}]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS which]} {[VarSub i]})]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: this script requires having "][VarSub i][LIT_CHARS " installed"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef retry_curl [] (List (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 10]})]}]) (AndOr OP_AND_IF (Com {[LIT_CHARS curl]} {[LIT_CHARS -fLsS]} {[VarSub 1]}) (Com {[LIT_CHARS return]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: failed to download "][VarSub 1]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('xp', {[DQ [LIT_CHARS "xmllint --xpath"]]})]) (= scope= flags=0 words=[] bindings=[('loc', {[DQ [LIT_CHARS "local-name()="]]})]) (Com {[LIT_CHARS eval]} {[ComSub (Pipeline (Com {[LIT_CHARS retry_curl]} {[VarSub url] [LIT_CHARS /repodata/repomd.xml]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "/*["][VarSub loc][LIT_CHARS "'repomd'] "][LIT_CHARS " /*["][VarSub loc][LIT_CHARS "'data'][@type='primary']/*["][VarSub loc][LIT_CHARS "'location']/@href"]]} {[LIT_CHARS -]}) )]}) (Case to_match={[VarSub href]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS .gz]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('primary', {[ComSub (Pipeline (Com {[LIT_CHARS retry_curl]} {[VarSub url] [LIT_CHARS /] [VarSub href]}) (Com {[LIT_CHARS gunzip]}) )]})]) (= scope= flags=0 words=[] bindings=[('primary', {[ComSub (Com {[LIT_CHARS retry_curl]} {[VarSub url] [LIT_CHARS /] [VarSub href]})]})]) ) (FunctionDef rpm_select [] (List (= scope= flags=0 words=[] bindings=[('candidates', {[DQ [LIT_CHARS ""][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub primary]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub xp]} {[DQ [LIT_CHARS "//*["][VarSub loc][LIT_CHARS "'package'] "][LIT_CHARS " [./*["][VarSub loc][LIT_CHARS "'name' and .='"][VarSub 1][LIT_CHARS "']][./*["][VarSub loc][LIT_CHARS "'arch' and .='noarch']]"]]} {[LIT_CHARS -]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]}) )][LIT_CHARS ""]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub candidates]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS ""]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: no package candidates found for "][VarSub 1]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('epochs', {[DQ ]})]) (For i [{[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub candidates]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "/c/package/version/@epoch"]]} {[LIT_CHARS -]}) )]}]) (List (Com {[LIT_CHARS eval]} {[VarSub i]}) (= scope= flags=0 words=[] bindings=[('epochs', {[DQ [VarSub epochs][LIT_CHARS " "][VarSub epoch]]})]) ) ) (= scope= flags=0 words=[] bindings=[('maxepoch', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub epochs]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -V]} {[LIT_CHARS -u]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) )]})]) (= scope= flags=0 words=[] bindings=[('vers', {[DQ ]})]) (For i [{[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub candidates]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "/c/package/version "][LIT_CHARS " [@epoch='"][VarSub maxepoch][LIT_CHARS "']/@ver"]]} {[LIT_CHARS -]}) )]}]) (List (Com {[LIT_CHARS eval]} {[VarSub i]}) (= scope= flags=0 words=[] bindings=[('vers', {[DQ [VarSub vers][LIT_CHARS " "][VarSub ver]]})]) ) ) (= scope= flags=0 words=[] bindings=[('maxver', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub vers]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -V]} {[LIT_CHARS -u]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) )]})]) (= scope= flags=0 words=[] bindings=[('rels', {[DQ ]})]) (For i [{[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub candidates]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "/c/package/version "][LIT_CHARS " [@epoch='"][VarSub maxepoch][LIT_CHARS "'][@ver='"][VarSub maxver][LIT_CHARS "']/@rel"]]} {[LIT_CHARS -]}) )]}]) (List (Com {[LIT_CHARS eval]} {[VarSub i]}) (= scope= flags=0 words=[] bindings=[('rels', {[DQ [VarSub rels][LIT_CHARS " "][VarSub rel]]})]) ) ) (= scope= flags=0 words=[] bindings=[('maxrel', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub rels]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -V]} {[LIT_CHARS -u]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) )]})]) (= scope= flags=0 words=[] bindings=[('repeats', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub rels]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -V]}) (Com {[LIT_CHARS uniq]} {[LIT_CHARS -d]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_CHARS 1]}) )]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub repeats]]} {[LIT_OTHER "="]} {[DQ [VarSub maxrel]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warning: multiple candidates found for "][VarSub 1][LIT_CHARS " with same version:"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "epoch "][VarSub maxepoch][LIT_CHARS ", ver "][VarSub maxver][LIT_CHARS ", rel "][VarSub maxrel][LIT_CHARS ", picking at random"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (Pipeline (Com {[LIT_CHARS echo]} {[VarSub candidates]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "/c/package[version[@epoch='"][VarSub maxepoch][LIT_CHARS "'] "][LIT_CHARS " [@ver='"][VarSub maxver][LIT_CHARS "'][@rel='"][VarSub maxrel][LIT_CHARS "']][1]"]]} {[LIT_CHARS -]}) ) ) ) (For i [{[VarSub toinstall]}]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [ComSub (Com {[LIT_CHARS rpm_select]} {[VarSub i]})]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef rpm_requires [] (For i [{[ComSub (Pipeline (Com {[LIT_CHARS rpm_select]} {[VarSub 1]}) (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[VarSub xp]} {[DQ [LIT_CHARS "/package/format/requires/entry/@name"]]} {[LIT_CHARS -]}) )]}]) (List (Com {[LIT_CHARS eval]} {[VarSub i]}) (Com {[LIT_CHARS echo]} {[VarSub name]}) ) ) ) (FunctionDef rpm_provides [] (List (= scope= flags=0 words=[] bindings=[('providers', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub primary]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "//*["][VarSub loc][LIT_CHARS "'package'][./*["][VarSub loc][LIT_CHARS "'format'] "][LIT_CHARS " /*["][VarSub loc][LIT_CHARS "'provides']/*["][VarSub loc][LIT_CHARS "'entry'][@name='"][VarSub 1][LIT_CHARS "']]/*["][VarSub loc][LIT_CHARS "'name']"]]} {[LIT_CHARS -]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ||g">]} {[LIT_CHARS -e]} {[SQ |\\n|g">]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]}) )]})]) (If (Com {[LIT_OTHER "["]} {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub providers]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -w]}) )]} {[LIT_CHARS -gt]} {[LIT_CHARS 1]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warning: found multiple providers "][VarSub providers][LIT_CHARS " for "][VarSub 1][LIT_CHARS ", adding all"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS echo]} {[VarSub providers]}) ) ) (= scope= flags=0 words=[] bindings=[('newpkgs', {[VarSub toinstall]})]) (= scope= flags=0 words=[] bindings=[('allrequires', {[DQ ]})]) (While (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub newpkgs]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('newrequires', {[DQ ]})]) (For i [{[VarSub newpkgs]}]) (For j [{[ComSub (Com {[LIT_CHARS rpm_requires]} {[VarSub i]})]}]) (Case to_match={[DQ [LIT_CHARS " "][VarSub allrequires][LIT_CHARS " "][VarSub newrequires][LIT_CHARS " "]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub j][LIT_CHARS " "]] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (= scope= flags=0 words=[] bindings=[('newrequires', {[DQ [VarSub newrequires][LIT_CHARS " "][VarSub j]]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('allrequires', {[DQ [VarSub allrequires][LIT_CHARS " "][VarSub newrequires]]})]) (= scope= flags=0 words=[] bindings=[('newpkgs', {[DQ ]})]) (For i [{[VarSub newrequires]}]) (List (= scope= flags=0 words=[] bindings=[('provides', {[DQ [ComSub (Com {[LIT_CHARS rpm_provides]} {[VarSub i]})]]})]) (Case to_match={[DQ [LIT_CHARS " "][VarSub toinstall][LIT_CHARS " "][VarSub newpkgs][LIT_CHARS " "]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub provides][LIT_CHARS " "]] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (= scope= flags=0 words=[] bindings=[('newpkgs', {[DQ [VarSub newpkgs][LIT_CHARS " "][VarSub provides]]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('toinstall', {[DQ [VarSub toinstall][LIT_CHARS " "][VarSub newpkgs]]})]) ) ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS noarch]}) (For i [{[VarSub toinstall]}]) (List (= scope= flags=0 words=[] bindings=[('pkgi', {[ComSub (Com {[LIT_CHARS rpm_select]} {[VarSub i]})]})]) (= scope= flags=0 words=[] bindings=[('checksum', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub pkgi]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "/package/checksum/text()"]]} {[LIT_CHARS -]}) )]})]) (Com {[LIT_CHARS eval]} {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub pkgi]}) (Com {[VarSub xp]} {[DQ [LIT_CHARS "/package/location/@href"]]} {[LIT_CHARS -]}) )]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "downloading "][VarSub href]]}) (Com {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub 0]]})] [LIT_CHARS /../../deps/tools/jldownload]} {[VarSub href]} {[VarSub url] [LIT_CHARS /] [VarSub href]}) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub checksum][LIT_CHARS " *"][VarSub href]]}) (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS -c]}) ) (Com {[LIT_CHARS 7z]} {[LIT_CHARS x]} {[LIT_CHARS -y]} {[VarSub href]}) (= scope= flags=0 words=[] bindings=[('cpiofile', {[ComSub (Pipeline (Com {[LIT_CHARS basename]} {[VarSub href]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]})]) (Com {[LIT_CHARS rm]} {[VarSub href]}) (Com {[LIT_CHARS 7z]} {[LIT_CHARS x]} {[LIT_CHARS -y]} {[VarSub cpiofile]}) (Com {[LIT_CHARS rm]} {[VarSub cpiofile]}) ) ) (Com {[LIT_CHARS rmdir]} {[LIT_CHARS --ignore-fail-on-non-empty]} {[LIT_CHARS noarch]}) )