JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbro h!T@sr ddlZddlZddlZddlmZddlmZddlmZddl Tddl m Z ddl m Z Gdd d eZdS) N)Command)DEBUG) write_file)*)get_python_version)logc@sdeZdZdZgdZgdZddddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ 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=Nzfinalize_optionss6         zbdist_rpm.finalize_optionscCsT|dd|dd|j|jf|d|dt|jtrr#r$)ZREADMEz README.txtr 1r!rr%r&r'r(r)r*r+r,r-r.r/r1r2r3r4r5r:)Z ensure_stringrHZ get_contactZget_contact_emailZensure_string_list isinstancer$listrBrCexistsappend_format_changelogr%Zensure_filename)r<Zreadmer=r=r>rJsD                         zbdist_rpm.finalize_package_datacCstrtdtd|jtd|jtd|jtd|j|jr*|j}||ni}dD]}t j |j |||<|||q.|d}t j |d|j }|t||fd ||jrddS|j jdd}|d }|jryd g|_nd g|_|d ||j _|d }|d}||||jrt j |jr||j|ntd|jtddg} |jr| dn|j r| dn| d| !dd|j"g|j#r| !ddt j $|j g|j%s| d|j&r| d| |d} | d} d| d} d| | |f} t '| }z:g}d} |(}|s$n|)*}||d |dur:|d }q|+}|rKt,d!t-| W|+n|+w|.| |j/s|j 0rit1}nd"}|j st j |d#|}|2||jt j |j|}|j jd$||f|js|D]4}t j |d%|}t j |r|2||jt j |jt j 3|}|j jd$||fqdSdSdS)&Nzbefore _get_package_data():zvendor =z packager =z doc_files =z changelog =)SOURCESSPECSZBUILDRPMSSRPMSrSz%s.specz writing '%s'sdistZbztarZgztarrrRzicon file '%s' does not existz building RPMsZrpmbuildz-bsz-bbz-baz--definez __python %sz _topdir %sz--cleanz--quietz%{name}-%{version}-%{release}z.src.rpmz%{arch}/z .%{arch}.rpmz%rpm -q --qf '%s %s\n' --specfile '%s'TrzFailed to execute: %sanyrUrrT)4rprintr"r#r$r%rrZmkpathrBrCrDrrHget_nameZexecuter_make_spec_fileZ dist_filesZreinitialize_commandrZformatsZ run_commandZget_archive_filesZ copy_filer&rOZDistutilsFileErrorrinforrPrextendrr8abspathr6rpopenreadlinestripsplitcloseZDistutilsExecErrorreprZspawnZdry_runrIrZ move_filebasename)r<Zspec_dirZrpm_dirr Z spec_pathZsaved_dist_filesrVsourceZ source_dirZrpm_cmdZ nvr_stringZsrc_rpmZ non_src_rpmZq_cmdoutZ binary_rpmsZ source_rpmlinelZstatusZ pyversionZsrpmfilenamer@r=r=r>runs                           z bdist_rpm.runcCstj|jtj|S)N)rBrCrDrrd)r<rCr=r=r> _dist_pathszbdist_rpm._dist_pathc CsL d|jd|jddd|jd|jdddd|jg}td }d d d | D}d }d}|||}||krU| d| d|d | gd|j re| dn| d| d|j d|jddg|js|js| dn| d|jdD](}t||}t|tr| d|d|fq|dur| d||fq|jdkr| d|j|jr| d|j|jr| d d|j|jr| d!tj|j|jr| d"| dd#|jgd$|jtjtj d%f}d&|} |j!r"d'| } d(|} d)d*d+| fd,d-| fd.d/d0d1d2d3g } | D]C\} } }t|| }|sI|r{| dd4| g|rvt"|}| |#$d Wdn 1sowYq9| |q9| gd5|j%r| d6d|j%|j&r| dd7g| |j&|S)8Nz %define name z%define version -_z%define unmangled_version z%define release z Summary: zrpm --eval %{__os_install_post} cSsg|]}d|qS)z %s \)r`).0rgr=r=r> sz-bdist_rpm._make_spec_file..zbrp-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)ZVendorZPackagerZProvidesZRequiresZ ConflictsZ Obsoletesz%s: %s ZUNKNOWNzUrl: zDistribution: zBuildRequires: zIcon: z AutoReq: 0z %descriptionz%s %srz%s buildzenv CFLAGS="$RPM_OPT_FLAGS" z>%s install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES)r0r'z&%setup -n %{name}-%{unmangled_version}Zbuildr(Zinstallr))Zcleanr*zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr+N)Zprer,N)Zpostr-N)Zpreunr.N)Zpostunr/N%)rnz%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rHrYZ get_versionreplacer Zget_description subprocessZ getoutputrD splitlinesrPr\rZ get_licenserr:rIgetattrlowerrMrNZget_urlrr4r&rBrCrdr9Zget_long_descriptionrrEargvr7openreadrar$r%)r<Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultfr=r=r>rZs                    zbdist_rpm._make_spec_filecCs~ |s|Sg}|dD]'}|}|ddkr"|d|gq|ddkr.||q|d|q|ds=|d=|S)Nrorrrnrlz )r`rar\rP)r<r%Z new_changelogrgr=r=r>rQ0s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optr?rKrJrjrkrZrQr=r=r=r>rs"m-- *r)rurErBZdistutils.corerZdistutils.debugrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr=r=r=r>s