Ñò
$8Zc           @   s¾   d  Z  d Z d d k Z d d k Z d d k Z d d k Td d k l Z d d k l	 Z	 d d k
 l Z d d k l Z d d k Td d	 k l Z d d
 k l Z d e f d „  ƒ  YZ d S(   sw   distutils.command.bdist_rpm

Implements the Distutils 'bdist_rpm' command (create RPM source and binary
distributions).s   $Id$iÿÿÿÿN(   t   *(   t   Command(   t   DEBUG(   t   get_platform(   t
   write_file(   t   get_python_version(   t   logt	   bdist_rpmc        *   B   sø   e  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 h d2 d5 6d7 d9 6d; d= 6Z dS „  Z dT „  Z dU „  Z	 dV „  Z
 dW „  Z dX „  Z dY „  Z RS(ƒ   s   create an RPM distributions   bdist-base=s/   base directory for creating built distributionss	   rpm-base=sd   base directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)s	   dist-dir=t   dsD   directory to put final RPM files in (and .spec files if --spec-only)s   python=sM   path to Python interpreter to hard-code in the .spec file (default: "python")s
   fix-pythonsL   hard-code the exact path to the current Python interpreter in the .spec files	   spec-onlys   only regenerate spec files   source-onlys   only generate source RPMs   binary-onlys   only generate binary RPMs	   use-bzip2s7   use bzip2 instead of gzip to create source distributions   distribution-name=sg   name of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)s   group=s9   package classification [default: "Development/Libraries"]s   release=s   RPM release numbers   serial=s   RPM serial numbers   vendor=sa   RPM "vendor" (eg. "Joe Blow <joe@example.com>") [default: maintainer or author from setup script]s	   packager=sA   RPM packager (eg. "Jane Doe <jane@example.net>")[default: vendor]s
   doc-files=s6   list of documentation files (space or comma-separated)s
   changelog=s   RPM changelogs   icon=s   name of icon files	   provides=s%   capabilities provided by this packages	   requires=s%   capabilities required by this packages
   conflicts=s-   capabilities which conflict with this packages   build-requires=s+   capabilities required to build this packages
   obsoletes=s*   capabilities made obsolete by this packages
   no-autoreqs+   do not automatically calculate dependenciess	   keep-tempt   ks"   don't clean up RPM build directorys   no-keep-temps&   clean up RPM build directory [default]s   use-rpm-opt-flagss8   compile with RPM_OPT_FLAGS when building from source RPMs   no-rpm-opt-flagss&   do not pass any RPM CFLAGS to compilers	   rpm3-modes"   RPM 3 compatibility mode (default)s	   rpm2-modes   RPM 2 compatibility modes   prep-script=s3   Specify a script for the PREP phase of RPM buildings   build-script=s4   Specify a script for the BUILD phase of RPM buildings   pre-install=s:   Specify a script for the pre-INSTALL phase of RPM buildings   install-script=s6   Specify a script for the INSTALL phase of RPM buildings   post-install=s;   Specify a script for the post-INSTALL phase of RPM buildings   pre-uninstall=s<   Specify a script for the pre-UNINSTALL phase of RPM buildings   post-uninstall=s=   Specify a script for the post-UNINSTALL phase of RPM buildings   clean-script=s4   Specify a script for the CLEAN phase of RPM buildings   verify-script=s6   Specify a script for the VERIFY phase of the RPM builds   force-arch=s0   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   ('   t   Nonet
   bdist_baset   rpm_baset   dist_dirt   pythont
   fix_pythont	   spec_onlyt   binary_onlyt   source_onlyt	   use_bzip2t   distribution_namet   groupt   releaset   serialt   vendort   packagert	   doc_filest	   changelogt   icont   prep_scriptt   build_scriptt   install_scriptt   clean_scriptt   verify_scriptt   pre_installt   post_installt   pre_uninstallt   post_uninstallt   prept   providest   requirest	   conflictst   build_requirest	   obsoletest	   keep_tempt   use_rpm_opt_flagst	   rpm3_modet
   no_autoreqt
   force_arch(   t   self(    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyt   initialize_optionsŠ   sL    																																					c         C   s$  |  i  d d ƒ |  i d  j o6 |  i p t d ‚ n t i i |  i d ƒ |  _ n |  i	 d  j o' |  i
 o t i |  _	 q¤ d |  _	 n |  i
 o t d ‚ n t i d j o t d t i ‚ n |  i o |  i o t d	 ‚ n |  i i ƒ  p d
 |  _ n |  i  d d ƒ |  i ƒ  d  S(   Nt   bdistR   s)   you must specify --rpm-base in RPM 2 modet   rpmR   s8   --python and --fix-python are mutually exclusive optionst   posixs9   don't know how to create RPM distributions on platform %ss6   cannot supply both '--source-only' and '--binary-only'i    R   (   s
   bdist_bases
   bdist_base(   s   dist_dirs   dist_dir(   t   set_undefined_optionsR   R
   R.   t   DistutilsOptionErrort   ost   patht   joinR   R   R   t   syst
   executablet   namet   DistutilsPlatformErrorR   R   t   distributiont   has_ext_modulesR-   t   finalize_package_data(   R1   (    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyt   finalize_options¹   s0    





c         C   sØ  |  i  d d ƒ |  i  d d |  i i ƒ  |  i i ƒ  f ƒ |  i  d ƒ |  i d ƒ t |  i ƒ t j oL xI d D]= } t i	 i
 | ƒ o$ | |  i j o |  i i | ƒ qs qs Wn |  i  d	 d
 ƒ |  i  d ƒ |  i  d ƒ |  i  d ƒ |  i |  i ƒ |  _ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i  d ƒ d  S(   NR   s   Development/LibrariesR   s   %s <%s>R   R   t   READMEs
   README.txtR   t   1R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R'   R(   R)   R*   R+   R0   (   RC   s
   README.txt(   t   ensure_stringR?   t   get_contactt   get_contact_emailt   ensure_string_listt   typeR   t   ListTypeR8   R9   t   existst   appendt   _format_changelogR   t   ensure_filename(   R1   t   readme(    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyRA   Û   s@    	 #c         C   sˆ  t  o9 d GHd G|  i GHd G|  i GHd G|  i GHd G|  i GHn |  i o |  i } |  i | ƒ nO h  } x; d% D]3 } t i	 i
 |  i | ƒ | | <|  i | | ƒ qq W| d } t i	 i
 | d |  i i ƒ  ƒ } |  i t | |  i ƒ  f d | ƒ |  i o d  S|  i i } |  i d ƒ } |  i o d g | _ n d g | _ |  i d ƒ | |  i _ | i ƒ  d } | d } |  i | | ƒ |  i oA t i	 i |  i ƒ o |  i |  i | ƒ qÖt d |  i ‚ n t i d ƒ d g }	 t i	 i d ƒ p t i	 i d ƒ o d g }	 n |  i o |	 i d ƒ n) |  i o |	 i d ƒ n |	 i d ƒ |  i  o* |	 i! d d t i	 i" |  i ƒ g ƒ n |  i# p |	 i d ƒ n |	 i | ƒ d }
 |
 d } d |
 d  } d! | | | f } t i$ | ƒ } g  } d  } xy | i& ƒ  } | p Pn t' i( t' i) | ƒ ƒ } t* | ƒ d" j p t+ ‚ | i | d# ƒ | d  j o | d } qq| i, ƒ  } | o t- d$ t. | ƒ ƒ ‚ n |  i/ |	 ƒ |  i0 pº |  i pJ t i	 i
 | d
 | ƒ } t i	 i | ƒ p t+ ‚ |  i1 | |  i ƒ n |  i pX xU | D]I } t i	 i
 | d	 | ƒ } t i	 i | ƒ o |  i1 | |  i ƒ q/q/Wq„n d  S(&   Ns   before _get_package_data():s   vendor =s
   packager =s   doc_files =s   changelog =t   SOURCESt   SPECSt   BUILDt   RPMSt   SRPMSs   %s.specs   writing '%s't   sdistt   bztart   gztari    s   icon file '%s' does not exists   building RPMsR4   s   /usr/bin/rpmbuilds   /bin/rpmbuildt   rpmbuilds   -bss   -bbs   -bas   --defines
   _topdir %ss   --cleans   %{name}-%{version}-%{release}s   .src.rpms   %{arch}/s   .%{arch}.rpms%   rpm -q --qf '%s %s\n' --specfile '%s'i   i   s   Failed to execute: %s(   RP   RQ   RR   RS   RT   (2   R   R   R   R   R   R   R   t   mkpathR8   R9   R:   R   R?   t   get_namet   executeR   t   _make_spec_filet
   dist_filest   reinitialize_commandR   t   formatst   run_commandt   get_archive_filest	   copy_fileR   RK   t   DistutilsFileErrorR   t   infoR   RL   R   R.   t   extendt   abspathR,   t   popenR
   t   readlinet   stringt   splitt   stript   lent   AssertionErrort   closet   DistutilsExecErrort   reprt   spawnt   dry_runt	   move_file(   R1   t   spec_dirt   rpm_dirR   t	   spec_patht   saved_dist_filesRU   t   sourcet
   source_dirt   rpm_cmdt
   nvr_stringt   src_rpmt   non_src_rpmt   q_cmdt   outt   binary_rpmst
   source_rpmt   linet   lt   statust   srpmR4   (    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyt   run
  s¬    
	 
	



	


	!




 c         C   s"   t  i i |  i t  i i | ƒ ƒ S(   N(   R8   R9   R:   R   t   basename(   R1   R9   (    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyt
   _dist_path~  s    c   
      C   s  d |  i  i ƒ  d |  i  i ƒ  i d d ƒ d |  i  i ƒ  d |  i i d d ƒ d d |  i  i ƒ  g } | i d	 d
 d g ƒ |  i o | i d ƒ n | i d ƒ | i d |  i  i	 ƒ  d |  i
 d d g ƒ |  i p% |  i  i ƒ  p | i d ƒ qn | i d |  i ƒ x… dB D]} } t |  t i | ƒ ƒ } t | ƒ t j o$ | i d | t i | ƒ f ƒ q | dC j	 o | i d | | f ƒ q q W|  i  i ƒ  d j o | i d |  i  i ƒ  ƒ n |  i o | i d |  i ƒ n |  i o! | i d t i |  i ƒ ƒ n |  i o$ | i d t i i |  i ƒ ƒ n |  i o | i d  ƒ n | i d d! |  i  i ƒ  g ƒ d" |  i t i i t i d# ƒ f } d$ | } |  i  o d% | } n dD d) d* | f d+ d, d- | f dE dF dG dH dI dJ g	 } x | D]‡ \ } } }	 t |  | ƒ } | p |	 o[ | i d d; | g ƒ | o, | i t i! t" | d< ƒ i# ƒ  d= ƒ ƒ q—| i |	 ƒ qqW| i d d> d? g ƒ |  i$ o! | i d@ t i |  i$ ƒ ƒ n |  i% o' | i d dA g ƒ | i |  i% ƒ n | S(K   si   Generate the text of an RPM spec file and return it as a
        list of strings (one per line).
        s   %define name s   %define version t   -t   _s   %define unmangled_version s   %define release t    s	   Summary: s   Name: %{name}s   Version: %{version}s   Release: %{release}s-   Source0: %{name}-%{unmangled_version}.tar.bz2s,   Source0: %{name}-%{unmangled_version}.tar.gzs	   License: s   Group: s>   BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroots   Prefix: %{_prefix}s   BuildArch: noarchs   BuildArch: %st   Vendort   Packagert   Providest   Requirest	   Conflictst	   Obsoletess   %s: %st   UNKNOWNs   Url: s   Distribution: s   BuildRequires: s   Icon: s
   AutoReq: 0s   %descriptions   %s %si    s   %s builds   env CFLAGS="$RPM_OPT_FLAGS" R&   R   s&   %setup -n %{name}-%{unmangled_version}t   buildR   t   installR   s:   %s install --root=$RPM_BUILD_ROOT --record=INSTALLED_FILESt   cleanR    s   rm -rf $RPM_BUILD_ROOTt   verifyscriptR!   t   preR"   t   postR#   t   preunR$   t   postunR%   t   %t   rs   
s   %files -f INSTALLED_FILESs   %defattr(-,root,root)s   %doc s
   %changelog(   RŒ   R   RŽ   R   R   R‘   N(   s   preps   prep_scripts&   %setup -n %{name}-%{unmangled_version}(   R•   s   clean_scripts   rm -rf $RPM_BUILD_ROOT(   R–   s   verify_scriptN(   R—   s   pre_installN(   R˜   s   post_installN(   R™   s   pre_uninstallN(   Rš   s   post_uninstallN(&   R?   RZ   t   get_versiont   replaceR   t   get_descriptionRe   R   RL   t   get_licenseR   R0   R@   t   getattrRi   t   lowerRI   RJ   R:   R
   t   get_urlR   R*   R   R8   R9   R‡   R/   t   get_long_descriptionR   R;   t   argvR-   Rj   t   opent   readR   R   (
   R1   t	   spec_filet   fieldt   valt   def_setup_callt	   def_buildt   script_optionst   rpm_optt   attrt   default(    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyR\     s¬    





     $

	
$
&

		 ,

!

c         C   s¼   | p | Sg  } x t  i t  i | ƒ d ƒ D]p } t  i | ƒ } | d d j o | i d | g ƒ q. | d d j o | i | ƒ q. | i d | ƒ q. W| d p | d =n | S(   sK   Format the changelog correctly and convert it to a list of strings
        s   
i    R    R‹   R‰   s     (   Ri   Rj   Rk   Re   RL   (   R1   R   t   new_changelogR‚   (    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyRM     s     N(   s   bdist-base=Ns/   base directory for creating built distributions(   s	   rpm-base=Nsd   base directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2)(   s	   dist-dir=R   sD   directory to put final RPM files in (and .spec files if --spec-only)(   s   python=NsM   path to Python interpreter to hard-code in the .spec file (default: "python")(   s
   fix-pythonNsL   hard-code the exact path to the current Python interpreter in the .spec file(   s	   spec-onlyNs   only regenerate spec file(   s   source-onlyNs   only generate source RPM(   s   binary-onlyNs   only generate binary RPM(   s	   use-bzip2Ns7   use bzip2 instead of gzip to create source distribution(   s   distribution-name=Nsg   name of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!)(   s   group=Ns9   package classification [default: "Development/Libraries"](   s   release=Ns   RPM release number(   s   serial=Ns   RPM serial number(   s   vendor=Nsa   RPM "vendor" (eg. "Joe Blow <joe@example.com>") [default: maintainer or author from setup script](   s	   packager=NsA   RPM packager (eg. "Jane Doe <jane@example.net>")[default: vendor](   s
   doc-files=Ns6   list of documentation files (space or comma-separated)(   s
   changelog=Ns   RPM changelog(   s   icon=Ns   name of icon file(   s	   provides=Ns%   capabilities provided by this package(   s	   requires=Ns%   capabilities required by this package(   s
   conflicts=Ns-   capabilities which conflict with this package(   s   build-requires=Ns+   capabilities required to build this package(   s
   obsoletes=Ns*   capabilities made obsolete by this package(   s
   no-autoreqNs+   do not automatically calculate dependencies(   s	   keep-tempR	   s"   don't clean up RPM build directory(   s   no-keep-tempNs&   clean up RPM build directory [default](   s   use-rpm-opt-flagsNs8   compile with RPM_OPT_FLAGS when building from source RPM(   s   no-rpm-opt-flagsNs&   do not pass any RPM CFLAGS to compiler(   s	   rpm3-modeNs"   RPM 3 compatibility mode (default)(   s	   rpm2-modeNs   RPM 2 compatibility mode(   s   prep-script=Ns3   Specify a script for the PREP phase of RPM building(   s   build-script=Ns4   Specify a script for the BUILD phase of RPM building(   s   pre-install=Ns:   Specify a script for the pre-INSTALL phase of RPM building(   s   install-script=Ns6   Specify a script for the INSTALL phase of RPM building(   s   post-install=Ns;   Specify a script for the post-INSTALL phase of RPM building(   s   pre-uninstall=Ns<   Specify a script for the pre-UNINSTALL phase of RPM building(   s   post-uninstall=Ns=   Specify a script for the post-UNINSTALL phase of RPM building(   s   clean-script=Ns4   Specify a script for the CLEAN phase of RPM building(   s   verify-script=Ns6   Specify a script for the VERIFY phase of the RPM build(   s   force-arch=Ns0   Force an architecture onto the RPM build process(   t   __name__t
   __module__t   descriptionR
   t   user_optionst   boolean_optionst   negative_optR2   RB   RA   R†   Rˆ   R\   RM   (    (    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyR      sº                                           			

	/	"	/	t		›(   t   __doc__t   __revision__R;   R8   Ri   t   typest   distutils.coreR   t   distutils.debugR   t   distutils.utilR   t   distutils.file_utilR   t   distutils.errorst   distutils.sysconfigR   t	   distutilsR   R   (    (    (    s1   /usr/lib/python2.6/distutils/command/bdist_rpm.pyt   <module>   s   $

