{c/ddlZddlZddlZddlZddlZddlZddlZddlZddlZejddddddddZ d Z Gd d Z d Z Gd dZedk(rej ej"eej&dkrXedej&dzedej&dzedej&dej*deej&ddZej/ej&dej0j3D]\ZZej8edeyy)NxdP<()mainuniversecontribznon-free-firmware restrictedznon-free multiversea CREATE TABLE IF NOT EXISTS "commands" ( [cmdID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [pkgID] INTEGER NOT NULL, [command] TEXT, FOREIGN KEY ([pkgID]) REFERENCES "pkgs" ([pkgID]) ); CREATE TABLE IF NOT EXISTS "packages" ( [pkgID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [name] TEXT, [version] TEXT, [component] TEXT, [priority] INTEGER ); CREATE INDEX IF NOT EXISTS idx_commands_command ON commands (command); CREATE INDEX IF NOT EXISTS idx_packages_name ON packages (name); ceZdZdZdZdZy)measurec ||_||_yN)whatstats)selfrrs s  c6tj|_yr)timenow)rs r __enter__zmeasure.__enter__As99;rc|j|jvrd|j|j<|j|jxxtj|jz z cc<y)Nr)rrrr)rargss r__exit__zmeasure.__exit__CsKyyDJJ&$%DJJtyy ! 499txx!77rN)__name__ __module__ __qualname__rrrrrrr=s8rrc tj|y#t$r(}|jtjk7rYd}~yd}~wwxYwr)osremoveOSErrorerrnoENOENT)pathes rrm_fr+Is: $  77ell "  #s A AA cTeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zy ) DbCreatorc||_tjd|_dt jd|_y)Nr)total total_time)filesapt_pkgget_architectures primary_archrr)rr1s rrzDbCreator.__init__Rs1 #557: tyy{; rc|dz}|j|stjd|y|dz}tj|5} |j t |j|dddt|tj||t!|d5}t#j$|j'|dddy#tj$rF}t|dk(r,tjd|tjdn|Yd}~d}~wwxYw#1swYxYw#1swYyxYw)Nz .metadataz0%s does not require an update (inputs unchanged)z.tmpzdatabase is lockedz*%s is locked by another process. Ignoring.rw)_db_update_neededlogginginfosqlite3connect executescript create_db_sql_fill_commandsOperationalErrorstrwarningsysexitr+r$renameopenjsondump_calc_input_metadata)rdbname metadata_filetmpdbconr*fps rcreatezDbCreator.createVs{* %%m4 LLBF L v  __U # s !!-0##C(  ] % - % 7 IId//12 6 7 7++ q611OODeMHHQKG    & 7 7s<D/ &C%%D;D,&zDbCreator._fill_commandss nA!!#>=b=i=ijk=lnn#  n n n$(99;L1I#I <  5 JJw L!99;; < n ns BD++D5 cJ|jd||fj}|S)Nz SELECT packages.pkgID, name, version FROM commands INNER JOIN packages on packages.pkgID = commands.pkgID WHERE commands.command=? AND packages.name=?; executefetchone)rrLcommandpkgname already_in_dbs r_in_dbzDbCreator._in_dbs3   7# % &.XZ rcP|jd|f|jd|fy)Nz"DELETE FROM packages WHERE pkgID=?z"DELETE FROM commands WHERE pkgID=?ro)rrLpkgids r _delete_pkgidzDbCreator._delete_pkgids$ 85(D 85(DrcT|jd|fj}|r|dSy)Nz'SELECT pkgID from packages WHERE name=?rrn)rrLrrhave_pkgs r _get_pkgidzDbCreator._get_pkgids2;; 5zCCK8:  A; rcF|jd||||f}|jS)Nzt INSERT INTO packages (name, version, component, priority) VALUES (?, ?, ?, ?); )ro lastrowid)rrLrrversion componentprioritycurs r_insert_packagezDbCreator._insert_packages/ KK7Ix8 :}}rc,|jd||fy)NzF INSERT INTO commands (command, pkgID) VALUES (?, ?); rv)rrLrqpkg_ids r_insert_commandzDbCreator._insert_commands  v  rc tj|}|jsy|jd}|j dry|jd}|jd}|dk7r||j k7ry|jr|j dxxdz cc<|jd}|jjd r|jd }|jjd d }t} |jjd d r4t|jjd d jd } |jdjd D]} | | vr td|j 5|j|| |} ddd rtj|| ddkDrMtjd| ztd|j 5|j|| ddddntjd| d|dtjd| d|d|d|d td|j 5|j!||} ddd srt"j|d} | t%|jjddz } td|j 5|j'||||| } dddtd|j 5|j)|| | ddd|jryy#1swYxYw#1swY'xYw#1swYxYw#1swYxxYw#1swYxYw) Nsuitez -backportsrarchallr/namezvisible-pkgnamer~zignore-commands,commandssql_already_dbrz+replacing exiting %s in DB (higher version)sql_delete_already_in_db skipping  from  (lower/same version)adding / () sql_have_pkgzpriority-bonus0sql_insert_pkgsql_insert_cmd)r2TagFilestepsectionendswithr4rgetsetsplitrrtversion_comparer8debugrxr{component_prioritiesintrr)rrLrMtagfrrrrrr~ignore_commandsrqrsrrs rrgz%DbCreator._parse_single_commands_filesr"yy{ ll7# >>, ' ,,{+ \\& ! 5=TT%6%66 iik JJw 1 $ LL(G|| 12,,'89LL$$Y3GEO|| 126 #DLL$4$45F$K$Q$QRU$V W<< 399#> ?o--tzz:E"&++c7G"DME ..w a8HIAM &SV]&]^$%?LF ..sM!4DEFF T[]b&cd  Wgu67^TZZ8;!__S':F;377 1EHDLL$4$45Es$K LLH !14::>b!%!5!5c7GYX`!ab-tzz:?((gv>??5 ?iikk EEFF;; bb??s<M7M+MM)M5M M M& )M2 5M? c "d}|D]#}|jd}|jds4|jds#|jds|jdsZ |jdd\}}tj j |}|jdD]} |jjdd\} }t| jdd k(r| jd\} } nd } d} td |j5|j|||} ddd r tj d|d|dtj d|d|d| d|d td|j5|j%||} ddd sJt&j)| d }td|j5|j+||| | |} dddtd|j5|j-||| ddd&y#t$rY4wxYw#t$r|j}d } YwxYw#1swY4xYw#1swYxYw#1swYxYw#1swYxYw)Nzutf-8zusr/sbinzusr/binbinsbinrrrunknownrr rrrrrrrrrrr)decode startswithr ValueErrorr$r)basenamestriprsplitlenrrrtr2rr8rrxr{rrrr)rrLrkrMrlrqpkgnamesrrrrr~rsrrs rrfz%DbCreator._parse_single_contents_filese0 ?A!ALL, Y0GLL'1<<+? $%GGD!$4!gg&&w/G#>>#.$ ?('.}}'='=c1'E$GWw}}S)*a/)0s);&Iw &I-tzz:E"&++c7G"DME   T[]b&cd  Wgu67^TZZ8;!__S':F;377 1EH !14::>b!%!5!5c7GYX`!ab-tzz:?((gv>??G$ ?0 ?  "(%mmoG'G(EE;;bb??sT H-*#H=I I,I8 J- H:9H:=III) ,I5 8J J N)rr r!rrNr7rHr>rtrxr{rrrgrfr"rrr-r-Qs@<78   <E   7?r4?rr-__main__)levelz%usage: %s z. e.g.: %s commands.db ./dists/*/*/*/Commands-*zP e.g.: %s /var/lib/command-not-found/commands.db /var/lib/apt/lists/*Commands-*rrz: )r'rFr8r$r:rcrBrr2initrr=rr+r-r basicConfigINFOrargvprintrCcolrNritemsr[amountrr"rrrsL       : 8 8O?O?d zGgll+ 388}q 5 CD >!LM `bebjbjklbmn CHHQRL !CJJsxx{ )1 f $/01r