Current File : //lib/python3.9/site-packages/dnf-plugins/__pycache__/reposync.cpython-39.pyc
a

���g\9�@s�ddlmZddlmZddlZddlZddlZddlZddlmZm	Z	ddl
mZddlZddl
Zdd�ZGdd	�d	ejj�ZejjGd
d�dejj��ZdS)�)�absolute_import)�unicode_literalsN)�_�logger)�OptionParsercCs(tj�t���}tj�tj�|||��S�N)�dnfZi18nZucd�os�getcwd�path�realpath�join)Zintermediate�target�cwd�r�8/usr/lib/python3.9/site-packages/dnf-plugins/reposync.py�_pkgdir#srcs(eZdZ�fdd�Z�fdd�Z�ZS)�RPMPayloadLocationcs$tt|��||�tj�|�|_dSr)�superr�__init__r	r�dirname�package_dir)�self�pkg�progressZpkg_location��	__class__rrr)szRPMPayloadLocation.__init__cs*tt|���}tj�|j�|j|d<|S)N�dest)rr�_target_paramsr�util�
ensure_dirr)r�tprrrr-s
z!RPMPayloadLocation._target_params)�__name__�
__module__�__qualname__rr�
__classcell__rrrrr(srcs�eZdZdZed�Z�fdd�Zedd��Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z�ZS)�RepoSyncCommand)Zreposyncz&download all packages from remote repocstt|��|�dSr)rr&r)r�clirrrr9szRepoSyncCommand.__init__c	Cs|jdddgtjdtd�d�|jddd	td
�d�|jddd	td
�d�|jdddd	td�d�|jdddd	td�d�|jdtd�d�|jdddd	td�d�|jddd	td�d�|jdddtd�d �|jd!dd	td"�d�|jd#dd	td$�d�|jd%d&dd	td'�d�dS)(Nz-az--arch�archesz[arch]z$download only packages for this ARCH)r�default�action�metavar�helpz--deleteF�
store_truez5delete local packages no longer present in repository)r)r*r,z--download-metadatazdownload all the metadata.z-gz
--gpgcheckzBRemove packages that fail GPG signature checking after downloadingz-mz--downloadcompsz&also download and uncompress comps.xmlz--metadata-pathzXwhere to store downloaded repository metadata. Defaults to the value of --download-path.)r,z-nz
--newest-onlyz&download only newest packages per-repoz--norepopathz,Don't add the reponame to the download path.z-pz--download-pathz./z&where to store downloaded repositories)r)r,z
--remote-timezCtry to set local timestamps of local files by the one on the serverz--sourcezdownload only source packagesz-uz--urlsz:Just list urls of what would be downloaded, don't download)�add_argumentrZ_SplitCallbackr)�parserrrr�
set_argparser<sJ�
�
�����
�
�
�
��zRepoSyncCommand.set_argparserc	Cs�|jj}d|_d|_|jj}|jjrv|���	�|jjD]<}z||}Wn"t
yjtj�d|��Yn0|�
�q8|jjr�|��tt|����dkr�|jjr�tj�td���|��D]}|j��d|_q�dS)NTzUnknown repo: '%s'.�z1Can't use --norepopath with multiple repositoriesF)r'�demandsZavailable_reposZsack_activation�base�repos�opts�repo�all�disable�KeyErrorrZCliError�enable�sourceZenable_source_repos�len�list�iter_enabled�
norepopathr�_repoZexpireZdeltarpm)rr2r4Zrepoidr6rrr�	configure\s*
�
zRepoSyncCommand.configurec	s�d|jj_d}|jj��D�]�}|jjr4|j�d�|jj	r�|jj
r�|j��D]6\}}|�|�}|rnt
|�qNtd�|}t�|�qNn
|�	|�|jj�r|jj
�rt|j�����fdd�dD�}|�r|D] }|�|�}|r�t
|��qq�td�}t�|�n
|�|�|�|�}	|jj
�r0|�|	�n�|�|	�|jj�r�|	D]l}
|�|
�}t�|fdd�|
�|
_|j�|
�\}}
|d	k�rHt�td
��tj� |�|
��t�!|�d}�qH|jj"r|�#||	�q|�s�t$j%�&td���dS)
NTz%Failed to get mirror for metadata: %scsg|]}|�vr�|�qSrr)�.0�md_type�Zmdlrr�
<listcomp>�s�z'RepoSyncCommand.run.<locals>.<listcomp>)�groupZgroup_gzZgroup_gz_zckz(Failed to get mirror for the group file.cSs|Srr)�s�
local_pathrrr�<lambda>��z%RepoSyncCommand.run.<locals>.<lambda>rzRemoving {}: {}FzGPG signature check failed.)'r3ZconfZ	keepcacher4r>r5Zremote_timer@ZsetPreserveRemoteTime�download_metadataZurlsZgetMetadataLocations�remote_location�printrr�warningZ
downloadcomps�dict�getcomps�get_pkglist�
print_urls�download_packagesZgpgcheck�pkg_download_path�types�
MethodTypeZlocalPkgZpackage_signature_check�formatr	r�basename�unlink�delete�delete_old_local_packagesr�
exceptions�Error)rZgpgcheck_okr6rCZmd_location�url�msgZgroup_locationsZgroup_location�pkglistrrH�result�errorrrDr�runwsd






�






�
�
zRepoSyncCommand.runcCs$t|jjp|jj|jjs|jnd�S�N�)rr5ZdestdirZ
download_pathr?�id�rr6rrr�repo_target�s�zRepoSyncCommand.repo_targetcCs2|jjr$t|jj|jjs|jnd�S|�|�SdSrd)r5Z
metadata_pathrr?rfrhrgrrr�metadata_target�szRepoSyncCommand.metadata_targetcCsT|�|j�}tj�tj�||j��}|�tj�|d��sPtj	�
td��||���|S)Nrez6Download target '{}' is outside of download path '{}'.)
rhr6r	rrr
�location�
startswithrr\r]rrW)rrrhrTrrrrT�s���z!RepoSyncCommand.pkg_download_pathc	
s�t�fdd�|D��}t���|��D]�\}}}|D]r}tj�||�}|�d�r4tj�|�r4||vr4zt�|�t	�
td�|�Wq4ty�t	�
td�|�Yq40q4q&dS)Nc3s|]}��|�VqdSr)rT�rBr�rrr�	<genexpr>�rJz<RepoSyncCommand.delete_old_local_packages.<locals>.<genexpr>z.rpmz[DELETED] %szfailed to delete file %s)�setr	�walkrhrr
�endswith�isfilerYr�infor�OSErrorrb)	rr6r`Zdownloaded_files�dirpath�dirnames�	filenames�filenamerrrmrr[�s
z)RepoSyncCommand.delete_old_local_packagescCsZ|j��}|rV|�|�}tj�|�tj�|d�}tj	j
j||d�t�
td�|j�dS)Nz	comps.xml)rz!comps.xml for repository %s saved)r@Z
getCompsFnrirrr r	rr
ZyumZmisc�
decompressrrsrrf)rr6Zcomps_fnZ	dest_pathrrrrrP�s

zRepoSyncCommand.getcompscCs|�|�}|j�|�dS)NT)rir@ZdownloadMetadata)rr6rhrrrrK�s
z!RepoSyncCommand.download_metadatacCs�tjjs|��S|��|jj��}t�}i}i}|D]d}|��}|�	|�|�
|��i��
|��g��
|�|D]&}|�
|i��
|��g��
|���qrq6|j|j|d�d���}	t�}
|��D]�\}}t�}
|
�t|��dd�d�t�}|��D]}|D]}|�	|����qq�|j|d���D]&}d�|�}|
�t|||���q(|
D]$}||D]}|
�	|����q`�qTq�|	�|j|
d��}	|	S)a\
        return union of these queries:
        - the latest NEVRAs from non-modular packages
        - all packages from stream version with the latest package NEVRA
          (this should not be needed but the latest package NEVRAs might be
          part of an older module version)
        - all packages from the latest stream version
        )Znevra_strict)Zpkg__neqT)�reverserz3{0.name}-{0.epoch}:{0.version}-{0.release}.{0.arch})rr3ZWITH_MODULESZlatestZapplyZ_moduleContainerZgetModulePackagesroZgetArtifacts�update�
setdefaultZ
getNameStreamZ
getVersionNum�append�filter�items�add�sorted�keys�valuesrW�max�union)r�queryZmodule_packagesZ
all_artifactsZmodule_dictZartifact_versionZmodule_packageZ	artifactsZartifactZlatest_queryZlatest_stream_artifactsZ
namestreamZversion_dictZversionsZstream_artifacts�modules�moduleZ
latest_pkgZnevra�versionrrr�_get_latest�sP	
����
�

zRepoSyncCommand._get_latestcCsd|jjjtjd���j|jd�}|jj	r2|�
|�}|jjrH|jdd�n|jjr`|j|jjd�|S)N��flags)Zreponame�src)Zarch)
r3�sackr��hawkey�IGNORE_MODULAR_EXCLUDESZ	availableZfiltermrfr5Znewest_onlyr�r;r()rr6r�rrrrQs�
zRepoSyncCommand.get_pkglistcsj�j}|jj��dur tj���tj�|jj	t
jd����d�}��fdd�|D�}|�
||�dd�dS)Nr�rcsg|]}t|���|���qSr)rrTrl�rrrrrE0s�z5RepoSyncCommand.download_packages.<locals>.<listcomp>F)r3�outputrr�callbackZNullDownloadProgress�drpmZ	DeltaInfor�r�r�r�Z	installedZ_download_remote_payloads)rr`r3r�Zpayloadsrr�rrS)s
��z!RepoSyncCommand.download_packagescCs<|D]2}|��}|rt|�qtd�|j}t�|�qdS)Nz$Failed to get mirror for package: %s)rLrMr�namerrN)rr`rr^r_rrrrR4s
zRepoSyncCommand.print_urls)r"r#r$�aliasesrZsummaryr�staticmethodr0rArcrhrirTr[rPrKr�rQrSrRr%rrrrr&4s"
:
	9r&)Z
__future__rrr�r	�shutilrUZdnfpluginscorerrZdnf.cli.option_parserrrZdnf.clirr6Z
RPMPayloadrZpluginZregister_commandr'ZCommandr&rrrr�<module>s