;
Ñâ"Ic               @   s¥   d  Z  d Z d d l Z d d l Z d d l m Z d d l m Z d d l m	 Z	 d d l
 m Z d d l Td d	 l m Z d d
 l m Z Gd „  d e ƒ Z d S(   uw   distutils.command.bdist_rpm

Implements the Distutils 'bdist_rpm' command (create RPM source and binary
distributions).u?   $Id: bdist_rpm.py 61003 2008-02-23 18:30:17Z christian.heimes $i    N(   u   Command(   u   DEBUG(   u   get_platform(   u
   write_file(   u   *(   u   get_python_version(   u   logc          *   B   sþ   |  Ee  Z d  Z d[ d\ d] d^ d_ d` da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz d{ d| d} d~ d d€ d d‚ g( Z d2 d7 d; d0 g Z i d2 d5 6d7 d9 6d; d= 6Z dS „  Z dT „  Z dU „  Z	 dV „  Z
 dW „  Z dX „  Z dY „  Z dZ S(ƒ   u   create an RPM distributionu   bdist-base=u/   base directory for creating built distributionsu	   rpm-base=ud   base directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)u	   dist-dir=u   duD   directory to put final RPM files in (and .spec files if --spec-only)u   python=uM   path to Python interpreter to hard-code in the .spec file (default: "python")u
   fix-pythonuL   hard-code the exact path to the current Python interpreter in the .spec fileu	   spec-onlyu   only regenerate spec fileu   source-onlyu   only generate source RPMu   binary-onlyu   only generate binary RPMu	   use-bzip2u7   use bzip2 instead of gzip to create source distributionu   distribution-name=ug   name of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)u   group=u9   package classification [default: "Development/Libraries"]u   release=u   RPM release numberu   serial=u   RPM serial numberu   vendor=ua   RPM "vendor" (eg. "Joe Blow <joe@example.com>") [default: maintainer or author from setup script]u	   packager=uA   RPM packager (eg. "Jane Doe <jane@example.net>")[default: vendor]u
   doc-files=u6   list of documentation files (space or comma-separated)u
   changelog=u   RPM changelogu   icon=u   name of icon fileu	   provides=u%   capabilities provided by this packageu	   requires=u%   capabilities required by this packageu
   conflicts=u-   capabilities which conflict with this packageu   build-requires=u+   capabilities required to build this packageu
   obsoletes=u*   capabilities made obsolete by this packageu
   no-autorequ+   do not automatically calculate dependenciesu	   keep-tempu   ku"   don't clean up RPM build directoryu   no-keep-tempu&   clean up RPM build directory [default]u   use-rpm-opt-flagsu8   compile with RPM_OPT_FLAGS when building from source RPMu   no-rpm-opt-flagsu&   do not pass any RPM CFLAGS to compileru	   rpm3-modeu"   RPM 3 compatibility mode (default)u	   rpm2-modeu   RPM 2 compatibility modeu   prep-script=u3   Specify a script for the PREP phase of RPM buildingu   build-script=u4   Specify a script for the BUILD phase of RPM buildingu   pre-install=u:   Specify a script for the pre-INSTALL phase of RPM buildingu   install-script=u6   Specify a script for the INSTALL phase of RPM buildingu   post-install=u;   Specify a script for the post-INSTALL phase of RPM buildingu   pre-uninstall=u<   Specify a script for the pre-UNINSTALL phase of RPM buildingu   post-uninstall=u=   Specify a script for the post-UNINSTALL phase of RPM buildingu   clean-script=u4   Specify a script for the CLEAN phase of RPM buildingu   verify-script=u6   Specify a script for the VERIFY phase of the RPM buildu   force-arch=u0   Force an architecture onto the RPM build processc             C   sZ  d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _	 d  |  _
 d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _  d  |  _! d |  _" d |  _# d |  _$ d |  _% d  |  _& d  S(   Ni    i   ('   u   Noneu
   bdist_baseu   rpm_baseu   dist_diru   pythonu
   fix_pythonu	   spec_onlyu   binary_onlyu   source_onlyu	   use_bzip2u   distribution_nameu   groupu   releaseu   serialu   vendoru   packageru	   doc_filesu	   changelogu   iconu   prep_scriptu   build_scriptu   install_scriptu   clean_scriptu   verify_scriptu   pre_installu   post_installu   pre_uninstallu   post_uninstallu   prepu   providesu   requiresu	   conflictsu   build_requiresu	   obsoletesu	   keep_tempu   use_rpm_opt_flagsu	   rpm3_modeu
   no_autorequ
   force_arch(   u   self(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu   initialize_options‡   sL    																																					c             C   s0  |  j  d d ƒ |  j d  k o9 |  j p t d ƒ ‚ n t j j |  j d ƒ |  _ n |  j	 d  k o' |  j
 o t j |  _	 qª d |  _	 n |  j
 o t d ƒ ‚ n t j d k o t d t j ƒ ‚ n |  j o |  j o t d	 ƒ ‚ n |  j j ƒ  p d
 |  _ n |  j  d d ƒ |  j ƒ  d  S(   Nu   bdistu
   bdist_baseu)   you must specify --rpm-base in RPM 2 modeu   rpmu   pythonu8   --python and --fix-python are mutually exclusive optionsu   posixu9   don't know how to create RPM distributions on platform %su6   cannot supply both '--source-only' and '--binary-only'i    u   dist_dir(   u
   bdist_baseu
   bdist_base(   u   dist_diru   dist_dir(   u   set_undefined_optionsu   rpm_baseu   Noneu	   rpm3_modeu   DistutilsOptionErroru   osu   pathu   joinu
   bdist_baseu   pythonu
   fix_pythonu   sysu
   executableu   nameu   DistutilsPlatformErroru   binary_onlyu   source_onlyu   distributionu   has_ext_modulesu   use_rpm_opt_flagsu   finalize_package_data(   u   self(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu   finalize_options³   s.    


c             C   sÕ  |  j  d d ƒ |  j  d d |  j j ƒ  |  j j ƒ  f ƒ |  j  d ƒ |  j d ƒ t |  j t ƒ oL xI d D]= } t j	 j
 | ƒ o$ | |  j k o |  j j | ƒ qp qp Wn |  j  d	 d
 ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j |  j ƒ |  _ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j  d ƒ d  S(   Nu   groupu   Development/Librariesu   vendoru   %s <%s>u   packageru	   doc_filesu   READMEu
   README.txtu   releaseu   1u   serialu   distribution_nameu	   changelogu   iconu   prep_scriptu   build_scriptu   install_scriptu   clean_scriptu   verify_scriptu   pre_installu   post_installu   pre_uninstallu   post_uninstallu   providesu   requiresu	   conflictsu   build_requiresu	   obsoletesu
   force_arch(   u   READMEu
   README.txt(   u   ensure_stringu   distributionu   get_contactu   get_contact_emailu   ensure_string_listu
   isinstanceu	   doc_filesu   listu   osu   pathu   existsu   appendu   _format_changelogu	   changelogu   ensure_filename(   u   selfu   readme(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu   finalize_package_dataÒ   s@    	 #c             C   s£  t  oN t d ƒ t d |  j ƒ t d |  j ƒ t d |  j ƒ t d |  j ƒ n |  j o |  j } |  j | ƒ nO i  } x; d% D]3 } t	 j
 j |  j | ƒ | | <|  j | | ƒ q† W| d } t	 j
 j | d |  j j ƒ  ƒ } |  j t | |  j ƒ  f d | ƒ |  j o d  S|  j j d  d  … } |  j d ƒ } |  j o d g | _ n d g | _ |  j d ƒ | |  j _ | j ƒ  d } | d } |  j | | ƒ |  j oD t	 j
 j |  j ƒ o |  j |  j | ƒ q÷t d |  j ƒ ‚ n t j d ƒ d g }	 t	 j
 j d ƒ p t	 j
 j d ƒ o d g }	 n |  j o |	 j d ƒ n) |  j  o |	 j d ƒ n |	 j d ƒ |  j! o* |	 j" d d t	 j
 j# |  j ƒ g ƒ n |  j$ p |	 j d ƒ n |	 j | ƒ d }
 |
 d } d |
 d  } d! | | | f } t	 j% | ƒ } g  } d  } xs | j' ƒ  } | p Pn | j( ƒ  j) ƒ  } t* | ƒ d" k p t+ ‚ | j | d# ƒ | d  k o | d } q.q.| j, ƒ  } | o t- d$ t. | ƒ ƒ ‚ n |  j/ |	 ƒ |  j0 pº |  j  pJ t	 j
 j | d
 | ƒ } t	 j
 j | ƒ p t+ ‚ |  j1 | |  j ƒ n |  j pX xU | D]I } t	 j
 j | d	 | ƒ } t	 j
 j | ƒ o |  j1 | |  j ƒ qJqJWqŸn d  S(&   Nu   before _get_package_data():u   vendor =u
   packager =u   doc_files =u   changelog =u   SOURCESu   SPECSu   BUILDu   RPMSu   SRPMSu   %s.specu   writing '%s'u   sdistu   bztaru   gztari    u   icon file '%s' does not existu   building RPMsu   rpmu   /usr/bin/rpmbuildu   /bin/rpmbuildu   rpmbuildu   -bsu   -bbu   -bau   --defineu
   _topdir %su   --cleanu   %{name}-%{version}-%{release}u   .src.rpmu   %{arch}/u   .%{arch}.rpmu%   rpm -q --qf '%s %s\n' --specfile '%s'i   i   u   Failed to execute: %s(   u   SOURCESu   SPECSu   BUILDu   RPMSu   SRPMS(2   u   DEBUGu   printu   vendoru   packageru	   doc_filesu	   changelogu	   spec_onlyu   dist_diru   mkpathu   osu   pathu   joinu   rpm_baseu   distributionu   get_nameu   executeu
   write_fileu   _make_spec_fileu
   dist_filesu   reinitialize_commandu	   use_bzip2u   formatsu   run_commandu   get_archive_filesu	   copy_fileu   iconu   existsu   DistutilsFileErroru   logu   infou   source_onlyu   appendu   binary_onlyu	   rpm3_modeu   extendu   abspathu	   keep_tempu   popenu   Noneu   readlineu   stripu   splitu   lenu   AssertionErroru   closeu   DistutilsExecErroru   repru   spawnu   dry_runu	   move_file(   u   selfu   spec_diru   rpm_diru   du	   spec_pathu   saved_dist_filesu   sdistu   sourceu
   source_diru   rpm_cmdu
   nvr_stringu   src_rpmu   non_src_rpmu   q_cmdu   outu   binary_rpmsu
   source_rpmu   lineu   lu   statusu   srpmu   rpm(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu   runÿ   s¬    

	 
	



	


	!




 c             C   s"   t  j j |  j t  j j | ƒ ƒ S(   N(   u   osu   pathu   joinu   dist_diru   basename(   u   selfu   path(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu
   _dist_pathp  s    c       
      C   s  d |  j  j ƒ  d |  j  j ƒ  j d d ƒ d |  j  j ƒ  d |  j j d d ƒ d d |  j  j ƒ  g } | j d	 d
 d g ƒ |  j o | j d ƒ n | j d ƒ | j d |  j  j	 ƒ  d |  j
 d d g ƒ |  j p% |  j  j ƒ  p | j d ƒ qn | j d |  j ƒ x dC D]w } t |  | j ƒ  ƒ } t | t ƒ o$ | j d | d j | ƒ f ƒ q | dD k	 o | j d | | f ƒ q q W|  j  j ƒ  d k o | j d |  j  j ƒ  ƒ n |  j o | j d |  j ƒ n |  j o! | j d d j |  j ƒ ƒ n |  j o$ | j d  t j j |  j ƒ ƒ n |  j o | j d! ƒ n | j d d" |  j  j ƒ  g ƒ d# |  j t j j t j d$ ƒ f } d% | } |  j o d& | } n dE d* d+ | f d, d- d. | f dF dG dH dI dJ dK g	 } xŒ | D]„ \ } } }	 t |  | ƒ } | p |	 oX | j d d< | g ƒ | o) | j t  | d= ƒ j! ƒ  j" d> ƒ ƒ qŽ| j |	 ƒ q
q
W| j d d? d@ g ƒ |  j# o! | j dA d j |  j# ƒ ƒ n |  j$ o' | j d dB g ƒ | j |  j$ ƒ n | S(L   ui   Generate the text of an RPM spec file and return it as a
        list of strings (one per line).
        u   %define name u   %define version u   -u   _u   %define unmangled_version u   %define release u    u	   Summary: u   Name: %{name}u   Version: %{version}u   Release: %{release}u-   Source0: %{name}-%{unmangled_version}.tar.bz2u,   Source0: %{name}-%{unmangled_version}.tar.gzu	   License: u   Group: u>   BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootu   Prefix: %{_prefix}u   BuildArch: noarchu   BuildArch: %su   Vendoru   Packageru   Providesu   Requiresu	   Conflictsu	   Obsoletesu   %s: %su    u   UNKNOWNu   Url: u   Distribution: u   BuildRequires: u   Icon: u
   AutoReq: 0u   %descriptionu   %s %si    u   %s buildu   env CFLAGS="$RPM_OPT_FLAGS" u   prepu   prep_scriptu&   %setup -n %{name}-%{unmangled_version}u   buildu   build_scriptu   installu   install_scriptu:   %s install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESu   cleanu   clean_scriptu   rm -rf $RPM_BUILD_ROOTu   verifyscriptu   verify_scriptu   preu   pre_installu   postu   post_installu   preunu   pre_uninstallu   postunu   post_uninstallu   %u   ru   
u   %files -f INSTALLED_FILESu   %defattr(-,root,root)u   %doc u
   %changelog(   u   Vendoru   Packageru   Providesu   Requiresu	   Conflictsu	   ObsoletesN(   u   prepu   prep_scriptu&   %setup -n %{name}-%{unmangled_version}(   u   cleanu   clean_scriptu   rm -rf $RPM_BUILD_ROOT(   u   verifyscriptu   verify_scriptN(   u   preu   pre_installN(   u   postu   post_installN(   u   preunu   pre_uninstallN(   u   postunu   post_uninstallN(%   u   distributionu   get_nameu   get_versionu   replaceu   releaseu   get_descriptionu   extendu	   use_bzip2u   appendu   get_licenseu   groupu
   force_archu   has_ext_modulesu   getattru   loweru
   isinstanceu   listu   joinu   Noneu   get_urlu   distribution_nameu   build_requiresu   iconu   osu   pathu   basenameu
   no_autorequ   get_long_descriptionu   pythonu   sysu   argvu   use_rpm_opt_flagsu   openu   readu   splitu	   doc_filesu	   changelog(
   u   selfu	   spec_fileu   fieldu   valu   def_setup_callu	   def_buildu   script_optionsu   rpm_optu   attru   default(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu   _make_spec_files  s¬    





     $

	
$
&

		 )

!

c             C   s³   | p | Sg  } x„ | j  ƒ  j d ƒ D]m } | j  ƒ  } | d d k o | j d | g ƒ q( | d d k o | j | ƒ q( | j d | ƒ q( W| d p | d =n | S(   uK   Format the changelog correctly and convert it to a list of strings
        u   
i    u   *u    u   -u     (   u   stripu   splitu   extendu   append(   u   selfu	   changelogu   new_changelogu   line(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu   _format_changelog  s     N(   u   bdist-base=Nu/   base directory for creating built distributions(   u	   rpm-base=Nud   base directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)(   u	   dist-dir=u   duD   directory to put final RPM files in (and .spec files if --spec-only)(   u   python=NuM   path to Python interpreter to hard-code in the .spec file (default: "python")(   u
   fix-pythonNuL   hard-code the exact path to the current Python interpreter in the .spec file(   u	   spec-onlyNu   only regenerate spec file(   u   source-onlyNu   only generate source RPM(   u   binary-onlyNu   only generate binary RPM(   u	   use-bzip2Nu7   use bzip2 instead of gzip to create source distribution(   u   distribution-name=Nug   name of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)(   u   group=Nu9   package classification [default: "Development/Libraries"](   u   release=Nu   RPM release number(   u   serial=Nu   RPM serial number(   u   vendor=Nua   RPM "vendor" (eg. "Joe Blow <joe@example.com>") [default: maintainer or author from setup script](   u	   packager=NuA   RPM packager (eg. "Jane Doe <jane@example.net>")[default: vendor](   u
   doc-files=Nu6   list of documentation files (space or comma-separated)(   u
   changelog=Nu   RPM changelog(   u   icon=Nu   name of icon file(   u	   provides=Nu%   capabilities provided by this package(   u	   requires=Nu%   capabilities required by this package(   u
   conflicts=Nu-   capabilities which conflict with this package(   u   build-requires=Nu+   capabilities required to build this package(   u
   obsoletes=Nu*   capabilities made obsolete by this package(   u
   no-autoreqNu+   do not automatically calculate dependencies(   u	   keep-tempu   ku"   don't clean up RPM build directory(   u   no-keep-tempNu&   clean up RPM build directory [default](   u   use-rpm-opt-flagsNu8   compile with RPM_OPT_FLAGS when building from source RPM(   u   no-rpm-opt-flagsNu&   do not pass any RPM CFLAGS to compiler(   u	   rpm3-modeNu"   RPM 3 compatibility mode (default)(   u	   rpm2-modeNu   RPM 2 compatibility mode(   u   prep-script=Nu3   Specify a script for the PREP phase of RPM building(   u   build-script=Nu4   Specify a script for the BUILD phase of RPM building(   u   pre-install=Nu:   Specify a script for the pre-INSTALL phase of RPM building(   u   install-script=Nu6   Specify a script for the INSTALL phase of RPM building(   u   post-install=Nu;   Specify a script for the post-INSTALL phase of RPM building(   u   pre-uninstall=Nu<   Specify a script for the pre-UNINSTALL phase of RPM building(   u   post-uninstall=Nu=   Specify a script for the post-UNINSTALL phase of RPM building(   u   clean-script=Nu4   Specify a script for the CLEAN phase of RPM building(   u   verify-script=Nu6   Specify a script for the VERIFY phase of the RPM build(   u   force-arch=Nu0   Force an architecture onto the RPM build process(   u   __name__u
   __module__u   descriptionu   Noneu   user_optionsu   boolean_optionsu   negative_optu   initialize_optionsu   finalize_optionsu   finalize_package_datau   runu
   _dist_pathu   _make_spec_fileu   _format_changelog(   u
   __locals__(    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu	   bdist_rpm   sº   
                                        			

	,		-	q		™u	   bdist_rpm(   u   __doc__u   __revision__u   sysu   osu   distutils.coreu   Commandu   distutils.debugu   DEBUGu   distutils.utilu   get_platformu   distutils.file_utilu
   write_fileu   distutils.errorsu   distutils.sysconfigu   get_python_versionu	   distutilsu   logu	   bdist_rpm(    (    (    u8   /mit/python/lib/python3.0/distutils/command/bdist_rpm.pyu   <module>   s   
