
    Ai%C                     H   S SK r S SKrS SKrS SKrS SKJrJrJr  S SKJ	r	J
r
JrJrJrJrJrJrJr  S SKJr  Sr\ R(                  " \SS9  \ R*                  R-                  S5      rS	rS
rSrSr\\\\\4 H  r\ R(                  " \SS9  M     S rSS jrSS jrSS jr SS jr!g)    N)load_dbregister_packageis_installed)	download_extractversion_satisfiesPKG_DIR_ensure_symlinksave_local_manifest_snapshotread_manifest_pathsdelete_file_and_prune_dirspromote_local_to_versionedremove_versioned_manifest)tqdm/tmp/fempkgTexist_okz/var/lib/fempkg/repoz/var/lib/fempkg/manifestsz!/var/lib/fempkg/manifest-versionsz/var/lib/fempkg/local-manifestsz/var/lib/fempkg/binpkgc                     [         R                  R                  [        U  S35      n[         R                  R	                  U5      (       d  [        SU  S35      eU$ )N
.recipe.pyzRecipe for z/ not found in cache. Run `fempkg update` first.)ospathjoinRECIPE_CACHE_DIRexistsFileNotFoundError)pkgnamer   s     /usr/bin/build.pyfetch_reciper   *   sK    77<<(WIZ*@AD77>>$+gY6e fggK    c                    [         R                  R                  [        U  S35      n[         R                  R	                  U5      (       d  [        SU  S35      eU(       d  U$ [         R                  R                  [        U  S35      n[        U5       nUR                  5       nSSS5        WR                  SU5      n[        US5       nUR                  U5        SSS5        U$ ! , (       d  f       NH= f! , (       d  f       U$ = f)z
Returns a path to a manifest file. If pkgver is provided, creates a resolved
temporary manifest replacing {pkgver} placeholders and returns that path.
.txtzManifest for z& not found. Run `fempkg update` first.z-resolved.txtNz{pkgver}w)
r   r   r   MANIFEST_CACHE_DIRr   r   openreadreplacewrite)r   pkgverr   	temp_pathfcontents         r   fetch_manifestr+   0   s    
 77<<*wit,<=D77>>$-y8^ _``/G9M1JKI	dq&&( 
ooj&1G	i		 
 
 
	s   C)C:)
C7:
D	c                 `   [        U [        5      (       a  U /n U  H  n[        SU 35        S nU(       aZ  [        R                  R                  X S35      n[        R                  R                  U5      (       d  [        SU SU S35        S nU(       d  [        U5      n[        X1SS9  M     g )Nz [fempkg] Rebuilding dependency: r   Warning: recipe for  not found in .T)force_rebuild)	
isinstancestrprintr   r   r   r   r   build_package)packagesrepo_dirpkg
dep_recipes       r   rebuild_packager9   E   s    (C  :067
h%z0BCJ77>>*--,SEzKL!
%c*Jj$? r   c           	          [         R                  " SSSU /[         R                  [         R                  SSS9nUR                  R	                  5       n[        U5      n[        USS	U  3S
9 n[         R                  " SSSU SU/[         R                  [         R                  SS9nUR                   H+  nUR                  5       (       d  M  UR                  S5        M-     UR                  5         UR                  S:w  a+  [         R                  " UR                  UR                  5      e SSS5        g! [         R                   a  n[        SUR                   35        e SnAff = f! , (       d  f       g= f)zs
Extract a .tar.zst archive with a progress bar.
Uses 'tar' with zstd support and shows number of files extracted.
tarz--use-compress-program=zstdz-tfT)stdoutstderrtextcheckz)[fempkg] Failed to list tar.zst archive: NfilezExtracting )totalunitdescz-xvfz-C)r<   r=   r>      r   )
subprocessrunPIPEr<   
splitlineslenCalledProcessErrorr3   r=   r   Popenstripupdatewait
returncodeargs)	tar_pathdestresultfilestotal_filesepbarproclines	            r   extract_tar_zst_with_progressrZ   T   s<   15(C????
 ((*%j 
Kf[
3K	MQU168T4P????	
 KKDzz||A   			??a//KK   
N	M (( 9!((DE
 
N	Ms,   AD7 -AE,A E,7E)E$$E),
E:c                     [        SS5        [        SS5        [        5       n0 n[        U S5       n[        UR	                  5       U5        S S S 5        US   US   pvUR                  S5      nUR                  S	/ 5      n	UR                  S
/ 5      n
[        UR                  SS5      5      n[        R                  R                  SS5      R                  5       S;   n[        R                  R                  SS5      R                  5       S;   nU(       d"  [        XgUS9(       a  [        SU SU S35        g U	 GH  nS nU(       aZ  [        R                  R                  X S35      n[        R                  R                  U5      (       d  [        SU SU S35        S nU(       d  [        U5      n0 n[        US5       n[        UR	                  5       U5        S S S 5        US   nUS   R                  U5      nUb  [!        UU5      (       d"  [        SU SU SU S35        [#        X5        M  [        SU SU S 35        GM     U(       Gde  [        R                  R                  [$        S!5      nSn/ n[        R                  R                  U5      (       aL  [        US5       nU Vs/ s H*  nUR'                  5       (       d  M  UR'                  5       PM,     nnS S S 5        UU;   Ga*  [        S"U S#35         S$U SU S%3n[        R                  R                  [$        U SU S%35      n[(        R
                  " US&S'9 nUR+                  5         [-        UR.                  R                  S(S)5      5      nS*n[        US+5       n[1        US,S&S-U SU 3S.9 nUR3                  US/9 H7  nU(       d  M  UR5                  U5        UR7                  [9        U5      5        M9     S S S 5        S S S 5        S S S 5         [;        XgS09nU(       a5   [        R@                  " [B        S&S29  [E        XgU5      n[        S3U 35        O[        S5U S6U S35        US   R                  U5      n!U!(       Ga  U(       Gd  U(       d  [        R                  R                  [H        U SU! S135      n"[        R                  R                  U"5      (       a  [        S7U" 35        [K        U"5      n#U# H  n$U$(       d  M  [        R                  RM                  U$5      (       d  [        S8U$ 35        M@  [        R                  R                  U$5      (       a  [        S9U$ 35        [O        U$5        M  M     OL[        S:U" S;35        O<U!(       d  [        SU S<35        O%U(       a  [        S=5        OU(       a  [        S>5        US?-   n%[        R                  R                  U%5      (       dh  S$U SU S@3n&[(        R
                  " U&5       nUR+                  5         [        U%S+5       nUR5                  URP                  5        S S S 5        S S S 5        [        SAU SU SB35         [R        RT                  " SCSDU%U/S&SE9  [        SF5        [        SIU 35        [[        USJSK9  []        XgUS9  [        SLU SU SM35        U(       a2  [_        Xg5      n'U'(       a  [        SNU' 35        O[        SOU SU 35        U!(       a  [a        UU!5        [        SPU SU! SQ35        S&nU(       a  U
(       a  [        STU SB35        U
 Hx  n([c        U([d        5      (       a&  [        SUU( 35        [R        RT                  " U(S&S&SV9  M>  [c        U([f        5      (       a  SWU(;   a  [i        U(SW   U5        Mj  [        SXU( 35        Mz     g [        SYU SU SZ35        [;        XgS09n)[        U)5       n[k        S[ U 5       5      n*S S S 5        [        S\U S][9        W*5       S^35        [m        US_   U5        UR                  S`/ 5       H*  n+[        SUU+ 35        [R        RT                  " SaU+ 3S&S&SV9  M,     []        XgUS9   [;        XgS09nU(       a  [        R@                  " [H        S&S29  [        R                  R                  [H        U SU S135      n,[n        Rp                  " UU,5        [n        Rp                  " U,[        R                  R                  [>        U S135      5        US   R                  U5      n!U!(       a  U!U:w  a  [a        UU!5        Sc H  n-[        R                  Rs                  U-5      n.[        R                  R                  U.5      (       d  MH  [n        Rt                  " U.S&Sd9  [        R@                  " U.S&S29  [        R                  Rw                  US_   5      n/[        R                  R                  [x        U/5      n0[        R                  R                  U05      (       d  M  [        Rz                  " U05        M     U
(       a  [        STU SB35        U
 Hx  n([c        U([d        5      (       a&  [        SUU( 35        [R        RT                  " U(S&S&SV9  M>  [c        U([f        5      (       a  SWU(;   a  [i        U(SW   U5        Mj  [        SXU( 35        Mz     g g ! , (       d  f       G
N= f! , (       d  f       G	N= fs  snf ! , (       d  f       GN= f! , (       d  f       GN'= f! , (       d  f       GN1= f! , (       d  f       GN;= f! [<         aQ    [        R                  R                  [>        U S135      n[        R                  R                  U5      (       d  S n GNf = f! [F         a  n [        S4U  35         S n A GNbS n A ff = f! , (       d  f       GN= f! , (       d  f       GN= f! [R        RV                   a  n [Y        SGU SU SHU  35      eS n A ff = f! [F         a  n [        SRU SHU  SS35        Sn S n A GN"S n A ff = f! , (       d  f       GN\= f! [F         a  n [        SbU SHU  35         S n A GN8S n A ff = f)eNr   z/var/tmp/fempkg/tmp/fempkgbuildz/var/tmp/fempkgbuildrr   r'   source_typedepstriggersatomicFFEMPKG_SOURCE )1trueyesFEMPKG_NODELETE)dbz	[fempkg] -z- is already installed. Skipping installation.r   r-   r.   r/   	installedzInstalling/updating dependency z (installed: z
, latest: )zDependency z is up-to-date (z). Skipping.z	index.txtz+[fempkg] Found prebuilt binary package for z. Preparing to install...z-https://rocketleaguechatp.duckdns.org/binpkg/z.tar.zstT)streamzcontent-lengthr   i   wbBzDownloading )rA   rB   
unit_scalerC   )
chunk_size)r'   r    r   z([fempkg] Saved local manifest snapshot: z:[fempkg] Warning: failed to save local manifest snapshot: z/[fempkg] No manifest available to snapshot for  z+[fempkg] Removing files from old manifest: z5[fempkg] Skipping (not absolute) path from manifest: z[fempkg] Removing old file: z,[fempkg] No old versioned manifest found at z; nothing to remove.z, not currently installed; nothing to delete.zM[fempkg] Atomic upgrade requested in recipe - skipping deletion of old files.z>[fempkg] FEMPKG_NODELETE set - skipping deletion of old files.z.ascz.tar.zst.ascz%[fempkg] Verifying GPG signature for z...gpgz--verify)r?   z)[fempkg] Signature verified successfully.z%[fempkg] GPG verification failed for z: z*[fempkg] Extracting binary package to / : /)rR   z[fempkg] Installed z from binary package.z)[fempkg] Promoted manifest to versioned: z3[fempkg] Warning: promotion of manifest failed for z,[fempkg] Removed old versioned manifest for z (if present).z*[fempkg] Failed to use binary package for z$. Falling back to build from source.z#[fempkg] Running post triggers for z> )shellr?   r9   z[fempkg] Unknown trigger type: z[fempkg] Building z from source...c              3   n   #    U  H+  oR                  5       (       d  M  UR                  5       v   M-     g 7fN)rL   ).0rY   s     r   	<genexpr> build_package.<locals>.<genexpr>8  s      BZZ\|tzz||s   55zUsing manifest for z (z files)sourcebuildz*. /etc/profile && mkdir -p /tmp/fempkg && z8[fempkg] Warning: failed to save versioned manifest for )r   r\   )ignore_errors)>r	   r   r#   execr$   getboolr   environlowerr   r3   r   r   r   r   r   r4   BINPKG_CACHE_DIRrL   requestsraise_for_statusintheadersr   iter_contentr&   rM   rI   r+   r   r"   makedirsLOCAL_MANIFESTS_DIRr
   	ExceptionVERSIONED_MANIFEST_DIRr   isabsr   r*   rE   rF   rJ   RuntimeErrorrZ   r   r   r   r1   r2   dictr9   sortedr   shutilcopyrealpathrmtreebasenamer   remove)1recipe_filer6   r0   rh   reciper)   nameversionr^   r_   r`   atomic_upgradesource_onlynodelete_envdep_namer8   dep_infodep_latest_verinstalled_verbinpkg_indexbinpkg_successbinpkg_listrY   
binpkg_url
local_pathr]   
total_sizerp   rW   chunkresolved_manifest
local_snaprV   old_installed_versionold_versioned_path	old_pathspasc_pathbinpkg_asc_urlpromotedtrigmanifest_pathrT   cmdversioned_pathcleanup_pathtargetr   tarball_paths1                                                    r   r4   r4   z   s
   M#45&(>?	BF	k3	1QVVXv 
  9%vh'7'**]+K::fb!Dzz*b)H&**Xu56N **.."5;;=AUUK::>>"3R8>>@DXXL\$B?	$q	)VWX 
h*J0GHJ77>>*--,XJnXJaPQ!
%h/J*c"a8$ #!(+;++H5 (9-(X(X3H: >!!.z.9IL M*/Kz)9-UV' , ww||$4kB77>>,''lC(A89JTZZ\|tzz|J ) ;?vE^_`q'LTFRST[S\\de
WW\\*:tfAgYh<WX
\\*T:a&&(!$QYY]]3CQ%G!HJ!,Jj$/1d(stLY]X^^_`g_hJi7%&^^z^%JE$u ! $CJ 7 &K7/ ;"1(6t(L% %`$7$G%A$Qb%c
 HUV KD6QRSZR[[\]^ )+;(;(;D(A%(.<)+6LQUPVVWXmWnnrNs)t&ww~~&899 KL^K_`a$78J$K	!*A#$ (#%77==#3#3 %(]^_]`&a b (!ww~~a00 %(DQC&H I :1 = !% "+  LM_L``tuv0	$/[\]' mo% ^` &.ww~~h//'TUYTZZ[\c[ddp%qN!n5**,!(D1QGGAII. 2 6
 =dV1WISQRfNNE:x#LTXYEG
 B:,OP-jsC !26+D67);PQR %9$HH I(TU STXSYYZ[bZcde )-d4IJHaPeOfftuv!% ;D6EF$D!$,,4&k*"t4tD#D$//4E4M'->(?J ?vFG %  
tfAgYo
>?"48M	m	BBB 
	vRE
|7
;<VH%{3zz'2&3%jCC5IQU]ab '
 Tr*V*4@KK.>WW\\*@TF!G9TXBYZNKK)>:KK5GD6QU(WX$&{O$7$7$=!$)>')I)$0EF
 <!!,/77>>&!!MM&5KK.ww''x(89H77<<:Lww~~l++		,' < 3D6=>D$$$4&k"t4t<D$'',=,E%6 7B7v>?  } 
 	: #"$ K )(7 7// ;:& ) 1(*5GD6QU(W%77>>*;<<,0)	1 % ` Z[\Z]^__`T 21 65 "44 f&)NtfTUV]U^^`ab`c'deef6  'B4&1#Mqrs!&'* 
	2  VHbQRPSTUUVsm  kk"*k9/k4k4 k9Ap 	Al/l l</l+l3l/;p 	m p 3n F?p o$o op #$o) Bp q-Cq 
k"
k1	4k99
l
ll
l,	'l//
l>9p Anp np 
o)n=7p =op 
o	o
o&!p )p=ppp 
q#p==q
q
q=!q88q=rv   )rs   )NF)"r   rE   r   r   rh   r   r   r   utilsr   r   r   r	   r
   r   r   r   r   r   TMP_RECIPE_DIRr   r   
expanduserr   r"   r   r   r   dr   r+   r9   rZ   r4    r   r   <module>r      s   " 
    6 6 V  V  V   NT *77%%&<= 0 < 7 + 
.0FH[]m	nAKKD! 
o*@!LLm@r   