B YI~dX � @ s� d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm Z d dl mZmZ d dlm Z d dlZe�d�ZG d d � d e�ZG dd� dee�ZdS ) � N)�ST_MODE)� sysconfig)�Command)�newer)�convert_path� Mixin2to3)�logs ^#!.*python[0-9.]*([ ].*)?$c @ sH e Zd ZdZdddgZdgZdd� Zdd � Zd d� Zdd � Z dd� Z dS )� build_scriptsz("build" scripts (copy and fixup #! line))z build-dir=�dzdirectory to "build" (copy) to)�force�fz1forcibly build everything (ignore file timestamps)zexecutable=�ez*specify final destination interpreter pathr c C s" d | _ d | _d | _d | _d | _d S )N)� build_dir�scriptsr � executable�outfiles)�self� r �D/opt/alt/python37/lib64/python3.7/distutils/command/build_scripts.py�initialize_options s z build_scripts.initialize_optionsc C s | � dddd� | jj| _d S )NZbuild)r r )r r )r r )Zset_undefined_optionsZdistributionr )r r r r �finalize_options% s zbuild_scripts.finalize_optionsc C s | j S )N)r )r r r r �get_source_files, s zbuild_scripts.get_source_filesc C s | j s d S | �� d S )N)r �copy_scripts)r r r r �run/ s zbuild_scripts.runc C s� | � | j� g }g }�x(| jD �]}d}t|�}tj�| jtj�|��}|�|� | j spt ||�spt�d|� qyt |d�}W n tk r� | js�� d }Y nXX t�|j�\}}|�d� |�� } | s�| �d| � qt�| �} | r�d}| �d�p�d}|�rt�d || j� |�|� | j�stj�s.| j}n(tj�t�d �dt�d�t�d �f �}t�|�}d| | d } y| �d� W n$ tk �r� t d�!| ���Y nX y| �|� W n& tk �r� t d�!| |���Y nX t |d��}|�"| � |�#|�$� � W d Q R X |�r<|�%� q|�r&|�%� |�|� | �&||� qW tj'dk�r�xh|D ]`}| j�rlt�d|� nDt�(|�t) d@ }|dB d@ }||k�rRt�d|||� t�*||� �qRW ||fS )NFznot copying %s (up-to-date)�rbr z%s is an empty file (skipping)T� � zcopying and adjusting %s -> %sZBINDIRz python%s%sZVERSIONZEXEs #!� zutf-8z.The shebang ({!r}) is not decodable from utf-8zAThe shebang ({!r}) is not decodable from the script encoding ({})�wb�posixzchanging mode of %si� im z!changing mode of %s from %o to %o)+Zmkpathr r r �os�path�join�basename�appendr r r �debug�open�OSError�dry_run�tokenize�detect_encoding�readline�seek�warn� first_line_re�match�group�infor Zpython_buildr Zget_config_var�fsencode�decode�UnicodeDecodeError� ValueError�format�write� writelines� readlines�closeZ copy_file�name�statr �chmod)r r � updated_filesZscriptZadjustZoutfiler �encoding�linesZ first_liner/ Zpost_interpr ZshebangZoutf�fileZoldmodeZnewmoder r r r 5 s� zbuild_scripts.copy_scriptsN)�__name__� __module__�__qualname__�descriptionZuser_optionsZboolean_optionsr r r r r r r r r r s r c @ s e Zd Zdd� ZdS )�build_scripts_2to3c C s&