\d!TdZddlZddlZddlZddlmZddlmZddlm Z ddl Tddl m Z ddl mZGd d eZdS) zwdistutils.command.bdist_rpm Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).N)Command)DEBUG) write_file)*)get_python_version)logcXeZdZdZgdZgdZddddZdZd Zd Z d Z d Z d Z dZ dS) bdist_rpmzcreate an RPM distribution)))z bdist-base=Nz/base directory for creating built distributions)z rpm-base=Nzdbase directory for creating RPMs (defaults to "rpm" under --bdist-base; must be specified for RPM 2))z dist-dir=dzDdirectory to put final RPM files in (and .spec files if --spec-only))zpython=NzMpath to Python interpreter to hard-code in the .spec file (default: "python"))z fix-pythonNzLhard-code the exact path to the current Python interpreter in the .spec file)z spec-onlyNzonly regenerate spec file)z source-onlyNzonly generate source RPM)z binary-onlyNzonly generate binary RPM)z use-bzip2Nz7use bzip2 instead of gzip to create source distribution)zdistribution-name=Nzgname of the (Linux) distribution to which this RPM applies (*not* the name of the module distribution!))zgroup=Nz9package classification [default: "Development/Libraries"])zrelease=NzRPM release number)zserial=NzRPM serial number)zvendor=NzaRPM "vendor" (eg. "Joe Blow ") [default: maintainer or author from setup script])z packager=NzBRPM packager (eg. "Jane Doe ") [default: vendor])z doc-files=Nz6list of documentation files (space or comma-separated))z changelog=Nz RPM changelog)zicon=Nzname of icon file)z provides=Nz%capabilities provided by this package)z requires=Nz%capabilities required by this package)z conflicts=Nz-capabilities which conflict with this package)zbuild-requires=Nz+capabilities required to build this package)z obsoletes=Nz*capabilities made obsolete by this package) no-autoreqNz+do not automatically calculate dependencies) keep-tempkz"don't clean up RPM build directory) no-keep-tempNz&clean up RPM build directory [default])use-rpm-opt-flagsNz8compile with RPM_OPT_FLAGS when building from source RPM)no-rpm-opt-flagsNz&do not pass any RPM CFLAGS to compiler) rpm3-modeNz"RPM 3 compatibility mode (default)) rpm2-modeNzRPM 2 compatibility mode)z prep-script=Nz3Specify a script for the PREP phase of RPM building)z build-script=Nz4Specify a script for the BUILD phase of RPM building)z pre-install=Nz:Specify a script for the pre-INSTALL phase of RPM building)zinstall-script=Nz6Specify a script for the INSTALL phase of RPM building)z post-install=Nz;Specify a script for the post-INSTALL phase of RPM building)zpre-uninstall=Nzs r@finalize_optionszbdist_rpm.finalize_optionssU ""7,HIII = > C*ACCCGLL%@@DM ;  (!n ' _ N&LNN N 7g  (*246G*<== =   L 0 L&JLL L 0022 '%&D " ""7,DEEE ""$$$$$rBcd|dd|d|jd|jd|d|dt |jtrGdD]D}tj |r#||jvr|j |E|d d |d |d |d | |j |_ |d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|ddS)Nr"zDevelopment/Librariesr%z <>r&r')READMEz README.txtr#1r$r!r(r)r*r+r,r-r.r/r0r1r2r4r5r6r7r8r=) ensure_stringrQ get_contactget_contact_emailensure_string_list isinstancer'listrJrKexistsappend_format_changelogr(ensure_filename)r?readmes r@rSzbdist_rpm.finalize_package_datas 7$;<<< 8(,(9(E(E(G(G(G(G(,(9(K(K(M(M(M(MO P P P :&&&  ,,, dnd + + 22 2 27>>&))2fDN.J.JN))&111 9c*** 8$$$ ./// ;'''//?? V$$$ ]+++ ^,,, -... ^,,, _--- ]+++ ^,,, _--- -...  +++  +++  ,,,  0111  ,,, <(((((rBc trctdtd|jtd|jtd|jtd|j|jr|j}||nRi}dD]E}tj |j |||<|||F|d}tj |d|j z}|t ||fd |z|jrdS|j jdd}|d }|jr d g|_nd g|_|d ||j _|d }|d}||||jrWtj |jr||j|nt7d|jzt9jddg} |jr| dn2|j r| dn| d| !dd|j"zg|j#r<| !ddtj $|j zg|j%s| d|j&r| d| |d} | dz} d| zdz} d| d| d |d!} tj'| } g}d} |(}|sna|)*}tW|d#ksJ||d$||d }x|,}|rt[d%t]| z |,n#|,wxYw|/| |j0s|j 1rte}nd&}|j stj |d'|}tj |sJ|3||jtj |j|}|j jd(||f|js|D]}tj |d)|}tj |r|3||jtj |jtj 4|}|j jd(||fdSdSdS)*Nzbefore _get_package_data():zvendor =z packager =z doc_files =z changelog =)SOURCESSPECSBUILDRPMSSRPMSrfz%s.specz writing '%s'sdistbztargztarrrezicon file '%s' does not existz building RPMsrpmbuildz-bsz-bbz-baz--definez __python %sz _topdir %sz--cleanz--quietz%{name}-%{version}-%{release}z.src.rpmz%{arch}/z .%{arch}.rpmz rpm -q --qf ' z\n' --specfile ''TrzFailed to execute: %sanyrir rh)5rprintr%r&r'r(rrmkpathrJrKrLrrQget_nameexecuter_make_spec_file dist_filesreinitialize_commandr formats run_commandget_archive_files copy_filer)r_DistutilsFileErrorrinforr`rextendrr;abspathr9rpopenreadlinestripsplitlencloseDistutilsExecErrorreprspawndry_runrRr move_filebasename)r?spec_dirrpm_dirr spec_pathsaved_dist_filesrjsource source_dirrpm_cmd nvr_stringsrc_rpm non_src_rpmq_cmdout binary_rpms source_rpmlinelstatus pyversionsrpmfilenamerEs r@runz bdist_rpm.runsJ  1 / 0 0 0 *dk * * * , . . . - 0 0 0 - 0 0 0 > (}H KK ! ! ! !GC ( (W\\$-;;  GAJ''''w'HGLL!*T->-G-G-I-I!IKK  Z**,,.#i/ 1 1 1 >  F ,7:))'22 > &$IEMM$IEM !!!'7$((**1-Y'  vz*** 9 Cw~~di(( Cty*5555(5 ACCC !!!,   " NN5 ! ! ! !   " NN5 ! ! ! ! NN5 ! ! ! MDK$?@AAA > M NNJ)BGOODM,J,JJL M M M~ & NN9 % % % : & NN9 % % %y!!! 5 z) :-> GG[[[)))-huoo KJ &||~~JJLL&&((1vv{{{{""1Q4(((%!"1J &YY[[F P()@4;;)NOOO P IIKKKKCIIKKKK 7| @ 0022 ".00 ! # 8w||GG$4jAAw~~d++,,,tT]3337<< zBB!,33 )X6888# @&@@C',,wv<@@@+ @ @ @ @@@s B2QQ2ctj|jtj|S)N)rJrKrLrr)r?rKs r@ _dist_pathzbdist_rpm._dist_paths*w||DM27+;+;D+A+ABBBrBc  d|jzd|jddzd|jzd|jddzdd|jzg}t jd }d d | D}d }d }|||}||kr0| d| d|zd z| gd|j r| dn| d| d|j zd|jzddg|js/|js| dn| d|jzdD]}t#||}t'|t(r.| |dd|g|| |d||jdkr/| d|jz|jr| d|jz|jr0| d d|jz|jr:| d!t2j|jz|jr| d"| dd#|jg|jdt2jt>j d$}d%|z} |j!rd&| z} d'|z} d(d)d*| fd+d,| fd-d.d/d0d1d2g } | D]\} } }t#|| }|s|r| dd3| zg|rbtE|5}| |#$d dddn #1swxYwY| || gd4|j%r0| d5d|j%z|j&r1| dd6g| |j&|S)7ziGenerate the text of an RPM spec file and return it as a list of strings (one per line). z %define name z%define version -_z%define unmangled_version z%define release z Summary: zrpm --eval %{__os_install_post} c<g|]}d|zS)z %s \)r).0rs r@ z-bdist_rpm._make_spec_file..s;!G!G!G%)"+TZZ\\!9!G!G!GrBzbrp-python-bytecompile \ z%brp-python-bytecompile %{__python} \ z2# Workaround for http://bugs.python.org/issue14443z%define __os_install_post )z Name: %{name}zVersion: %{version}zRelease: %{release}z-Source0: %{name}-%{unmangled_version}.tar.bz2z,Source0: %{name}-%{unmangled_version}.tar.gzz License: zGroup: z>BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootzPrefix: %{_prefix}zBuildArch: noarchz BuildArch: %s)VendorPackagerProvidesRequires Conflicts Obsoletesz: rnNUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionrz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r3r*z&%setup -n %{name}-%{unmangled_version}buildr+installr,)cleanr-zrm -rf $RPM_BUILD_ROOT) verifyscriptr.N)prer/N)postr0N)preunr1N)postunr2N%)rz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rQrt get_versionreplacer#get_description subprocess getoutputrL splitlinesr`rr get_licenser"r=rRgetattrlowerr]r^get_urlr!r7r)rJrKrr<get_long_descriptionrrMargvr:openreadrr'r()r? spec_file vendor_hookproblemfixed fixed_hookfieldvaldef_setup_call def_build install_cmdscript_optionsrpm_optattrdefaultfs r@rvzbdist_rpm._make_spec_filesE d/88:: : !2!>!>!@!@!H!HS!Q!Q Q (4+<+H+H+J+J J !5!5c#!>!> >  $+;;== =  !*+LMM ii!G!G-8-C-C-E-E!G!G!GHH /9 ((%88  $ $   Q R R R   9JFM N N N $$$ % % % > M   L M M M M   K L L L $+7799 9  " L $ % % %  B$4466 6  !4555   o? A A A : :E$ ..C#t$$ :  UUUCHHSMMM!BCCCC  UUUCC!8999   $ $ & &) 3 3   Wt'8'@'@'B'BB C C C  ! H   -0FF G G G   <   . XXd&9::; < < < 9 E   X(8(8(C(CC D D D ? +   \ * * *     2 2 4 4   $%)KKK0@0@!0M0M0MN/  ! C6BI25CD  N ni 0 (+ 6 ? 3 ( * , .  )7 . . $WdG$%%C .g .  'M"$%%%.c?a!(()=)=>>>???????????????$$W---     > A   Wsxx'?'?? @ @ @ > -         T^ , , ,s-;R44R8 ;R8 c`|s|Sg}|dD]t}|}|ddkr|d|g:|ddkr||\|d|zu|ds|d=|S)zKFormat the changelog correctly and convert it to a list of strings rrrrrz )rrrr`)r?r( new_changelogrs r@razbdist_rpm._format_changelog0s   OO%%++D11 2 2D::<+)+)+)ZB@B@B@HCCCgggRrBr )__doc__rrMrJdistutils.corerdistutils.debugrdistutils.file_utilrdistutils.errorsdistutils.sysconfigr distutilsrr rrBr@rs """"""!!!!!!******222222uuuuuuuuuurB