+
    Pid?                     V   ^ RI t ^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIH	t	H
t
HtHtHtHtHtHtHt ^ RIHt Rt] P(                  ! ]RR7       ] P*                  P-                  R4      tR	tR
tRtRt]]]]]3 F  t] P(                  ! ]RR7       K  	  R tRR ltRR ltRR lt RR lt!R# )    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                     \         P                  P                  \        V  R 24      p\         P                  P	                  V4      '       g   \        RV  R24      hV# )
.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                D   \         P                  P                  \        V  R24      p\         P                  P	                  V4      '       g   \        RV  R24      hV'       g   V# \         P                  P                  \        V  R24      p\        V4      ;_uu_ 4       pVP                  4       pRRR4       XP                  RV4      p\        VR4      ;_uu_ 4       pVP                  V4       RRR4       V#   + '       g   i     LR; i  + '       g   i     T# ; i)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;D;D	D	c                    \        V \        4      '       d   V .p \        4       pV  F  pW2R ,          9  d   \        RV R24       K!  \        RV 24       RpV'       d\   \        P
                  P                  W R24      p\        P
                  P                  V4      '       g   \        RV RV R24       RpV'       g   \        V4      p\        WAR	R
7       K  	  R# )	installedz[fempkg] Skipping rebuild of z: not installed.z [fempkg] Rebuilding dependency: Nr   Warning: recipe for  not found in .T)force_rebuild)

isinstancestrr   printr   r   r   r   r   build_package)packagesrepo_dirdbpkg
dep_recipes   &&   r   rebuild_packager;   E   s    (C  :	Bo%1#6FGH067
h%z0BCJ77>>*--,SEzKL!
%c*Jj$?# r   c           
     *    \         P                  ! RRRV .\         P                  \         P                  RRR7      pVP                  P	                  4       p\        V4      p\        TRR	T  2R
7      ;_uu_ 4       p\         P                  ! RRRT RT.\         P                  \         P                  RR7      pTP                   F,  pTP                  4       '       g   K  TP                  ^4       K.  	  TP                  4        TP                  ^ 8w  d,   \         P                  ! TP                  TP                  4      h RRR4       R#   \         P                   d   p\        RTP                   24       h Rp?ii ; i  + '       g   i     R# ; i)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@   )
subprocessrunPIPEr>   
splitlineslenCalledProcessErrorr4   r?   r   Popenstripupdatewait
returncodeargs)	tar_pathdestresultfilestotal_filesepbarproclines	   &&       r   extract_tar_zst_with_progressr[   _   sB   15(C????
 ((*%j 
Kf[
3K	M	MQU168T4P????	
 KKDzz||A   			??a//KK   
N	M (( 9!((DE
 
N	M	Ms,   A E ;AFA!FE> E99E>F	c                    \        R R4       \        RR4       Vf   \        4       p\        4       p/ p\        V R4      ;_uu_ 4       p\	        VP                  4       V4       RRR4       VR,          VR,          rWs9   d   \        RV R	24       R# VP                  V4       VP                  R
4      p	VP                  R. 4      p
VP                  R. 4      p\        VP                  RR4      4      p\        P                  P                  RR4      P                  4       Re9   p\        P                  P                  RR4      P                  4       Re9   pV'       g(   \        WxVR7      '       d   \        RV RV R24       R# V
 EF#  pRpV'       d\   \        P                  P                  W R24      p\        P                  P!                  V4      '       g   \        RV RV R24       RpV'       g   \#        V4      p/ p\        VR4      ;_uu_ 4       p\	        VP                  4       V4       RRR4       VR,          pVR,          P                  V4      pVe   \%        VV4      '       g&   \        RV RV RV R24       \'        VWR7       EK  \        R V R!V R"24       EK&  	  V'       Eg   \        P                  P                  \(        R#4      pRp. p\        P                  P!                  V4      '       dU   \        VR4      ;_uu_ 4       pV Uu. uF+  pVP+                  4       '       g   K  VP+                  4       NK-  	  ppRRR4       VV9   Ed   \        R$V R%24        R&V RV R'2p\        P                  P                  \(        V RV R'24      p\,        P                  ! VR(R)7      ;_uu_ 4       pVP/                  4        \1        VP2                  P                  R*^ 4      4      pRfp\        VR+4      ;_uu_ 4       p\5        VR,R(R-V RV 2R.7      ;_uu_ 4       pVP7                  VR/7       F8  pV'       g   K  VP9                  V4       VP;                  \=        V4      4       K:  	  RRR4       RRR4       RRR4        \?        WxR07      pV'       d9    \        PD                  ! \F        R(R27       \I        WxV4      p \        R3V  24       M\        R5V R6V R24       VR,          P                  V4      p"V"'       Ed   V'       Eg   V'       Eg   \        P                  P                  \L        V RV" R124      p#\        P                  P!                  V#4      '       d   \        R7V# 24       \O        V#4      p$V$ F  p%V%'       g   K  \        P                  PQ                  V%4      '       g   \        R8V% 24       KB  \        P                  P!                  V%4      '       g   Ki  \        R9V% 24       \S        V%4       K  	  MO\        R:V# R;24       M?V"'       g   \        RV R<24       M'V'       d   \        R=4       MV'       d   \        R>4       VR?,           p&\        P                  P!                  V&4      '       gy   R&V RV R@2p'\,        P                  ! V'4      ;_uu_ 4       pVP/                  4        \        V&R+4      ;_uu_ 4       pVP9                  VPT                  4       RRR4       RRR4       \        RAV RV RB24        \V        PX                  ! RCRDV&V.R(RE7       \        RF4       \        RIT 24       \_        TRJRK7       \a        YxTR7       \        RLT RT RM24       \        Pb                  ! RNT R6T& 24       T'       d4   \e        Yx4      p(T('       d   \        ROT( 24       M\        RPT RT 24       T"'       d   \g        TT"4       \        RQT RT" RR24       R(pV'       d   V'       d   \        RUV RB24       V F  p)\i        V)\j        4      '       d*   \        RVV) 24       \V        PX                  ! V)R(R(RW7       KB  \i        V)\l        4      '       d   RXV)9   d   \o        V)RX,          V4       Kt  \        RYV) 24       K  	  R# \        RZV RV R[24       \?        WxR07      p*\        V*4      ;_uu_ 4       p\q        R\ V 4       4      p+RRR4       \        R]V R^\=        X+4       R_24       \s        VR`,          V	4       VP                  Ra. 4       F-  p,\        RVV, 24       \V        PX                  ! RbV, 2R(R(RW7       K/  	  \a        WxVR7        \?        WxR07      pV'       d   \        PD                  ! \L        R(R27       \        P                  P                  \L        V RV R124      p-\t        Pv                  ! VV-4       \t        Pv                  ! V-\        P                  P                  \B        V R124      4       VR,          P                  V4      p"V"'       d   V"V8w  d   \g        VV"4       Rg EF  p.\        P                  Py                  T.4      p/\        P                  P!                  T/4      '       g   KJ  \t        Pz                  ! T/R(Rd7       \        PD                  ! T/R(R27       \        P                  P}                  TR`,          4      p0\        P                  P                  \~        T04      p1\        P                  P!                  T14      '       g   K  \        P                  ! T14       EK  	  T'       d   \        RUT RB24       T F  p)\i        T)\j        4      '       d*   \        RVT) 24       \V        PX                  ! T)R(R(RW7       KB  \i        T)\l        4      '       d   RXT)9   d   \o        T)RX,          T4       Kt  \        RYT) 24       K  	  R# R#   + '       g   i     EL; i  + '       g   i     E	L; iu upi   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  \@         dS    \        P                  P                  \B        T R124      p\        P                  P!                  T4      '       g   Rp EL6i ; i  \J         d   p!\        R4T! 24        Rp!?!ELRp!?!ii ; i  + '       g   i     EL; i  + '       g   i     EL; i  \V        PZ                   d   p!\]        RGT RT RHT! 24      hRp!?!ii ; i  \J         d    p!\        RST RHT! RT24       Rp Rp!?!ELRp!?!ii ; i  + '       g   i     EL; i  \J         d   p!\        RcT RHT! 24        Rp!?!ELkRp!?!ii ; i)hr   z/var/tmp/fempkg/tmp/fempkgbuildz/var/tmp/fempkgbuildNrr   r'   z)[fempkg] Detected circular dependency on z, skipping...source_typedepstriggersatomicFFEMPKG_SOURCE FEMPKG_NODELETE)r8   z	[fempkg] -z- is already installed. Skipping installation.r   r.   r/   r0   r-   zInstalling/updating dependency z (installed: z
, latest: ))_visitedz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-lengthwbBzDownloading )rC   rD   
unit_scalerE   )
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)rA   z)[fempkg] Signature verified successfully.z%[fempkg] GPG verification failed for z: z*[fempkg] Extracting binary package to / : /)rS   z[fempkg] Installed z from binary package.zrm -rf 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> )shellrA   r;   z[fempkg] Unknown trigger type: z[fempkg] Building z from source...c              3   p   "   T F,  qP                  4       '       g   K  VP                  4       x  K.  	  R # 5iN)rM   ).0rZ   s   & r   	<genexpr> build_package.<locals>.<genexpr>>  s      BZZ\|tzz||s   66zUsing manifest for z (z files)sourcebuildz*. /etc/profile && mkdir -p /tmp/fempkg && z8[fempkg] Warning: failed to save versioned manifest for )ignore_errors)1trueyesi   )r   r]   )Ar	   setr   r#   execr$   r4   addgetboolr   environlowerr   r   r   r   r   r   r5   BINPKG_CACHE_DIRrM   requestsraise_for_statusintheadersr   iter_contentr&   rN   rJ   r+   r   r"   makedirsLOCAL_MANIFESTS_DIRr
   	ExceptionVERSIONED_MANIFEST_DIRr   isabsr   r*   rF   rG   rK   RuntimeErrorr[   r   systemr   r   r2   r3   dictr;   sortedr   shutilcopyrealpathrmtreebasenamer   remove)2recipe_filer7   r1   rh   r8   reciper)   nameversionr_   r`   ra   atomic_upgradesource_onlynodelete_envdep_namer:   dep_infodep_latest_verinstalled_verbinpkg_indexbinpkg_successbinpkg_listrZ   
binpkg_url
local_pathr^   
total_sizerm   rX   chunkresolved_manifest
local_snaprW   old_installed_versionold_versioned_path	old_pathspasc_pathbinpkg_asc_urlpromotedtrigmanifest_pathrU   cmdversioned_pathcleanup_pathtargetr   tarball_paths2   &&&&                                              r   r5   r5      sv   M#45&(>?5	BF	k3		1QVVXv 
  9%vh'7' 9$}MNLL**]+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*hBBKz)9-UV' , ;ww||$4kB77>>,''lC((A89JTZZ\|tzz|J ) ;?vE^_`d'LTFRST[S\\de
WW\\*:tfAgYh<WX
\\*T::a&&(!$QYY]]3CQ%G!HJ!,Jj$//1d(stLY]X^^_`g_hJi7 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5**,!(D1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		GJ<q
;<$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>?  a 
 		F #""$ K )((7 7 7/// ;::$ ) 1(*5GD6QU(W%77>>*;<<,0)1 % ` Z[\Z]^__`H 211 655 "44 f&)NtfTUV]U^^`ab`c'deef.  'B4&1#Mqrs!&'( 
		(  VHbQRPSTUUVs  o>pp+p&:p&p+0Au Aq'q	-p?/p?<q	q'u q; !u *6s  3u u u &Au 5Au 2u 95u /u u 8u 'u ;%t t	<tu 't* Bu  u v3Cv  v >p	p#&p++p<	?q
	q	q$	q''q8	2	u ;Assu su s?&s:4u :s??u t	tt'	!	u *u?uuu v&v  vv	w'v>>wrs   )rp   )NFN)"r   rF   r   r   r8   r   r   r   utilsr   r   r   r	   r
   r   r   r   r   r   TMP_RECIPE_DIRr   r   
expanduserr   r"   r   r   r   dr   r+   r;   r[   r5    r   r   <module>r      s   " 
    6 6 V  V  V   NT *77%%&<= 0 < 7 + 
.0FH[]m	nAKKD! 
o*@4!LLb@r   