U ÙAT^ITc@s|ddlZddlZddlZddlmZddlmZddlmZddl m Z ddl Tddl m Z ddlmZGd d „d eƒZdS) éN)ÚCommand)ÚDEBUG)Ú get_platform)Ú write_file)Ú*)Úget_python_version)Úlogc)@s¸eZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0œZd1d2„Zd3d4„Zd5d6„Z d7d8„Z d9d:„Z d;d<„Z d=d>„Z d?S)@Ú 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-tempZkz"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=Nzr!r")ZREADMEz README.txtrZ1rrr#r$r%r&r'r(r)r*r+r,r-r/r0r1r2r3r8)Z ensure_stringrCZ get_contactZget_contact_emailZensure_string_listÚ isinstancer"Úlistr?r@ÚexistsÚappendÚ_format_changelogr#Zensure_filename)r:Zreadmer;r;r<rEÔsB  ÿÿ                      zbdist_rpm.finalize_package_datacCsštrr;r;r<ÚrunsÐ      ÿÿý     ÿ    ÿ    ÿ       ÿ  ÿÿz bdist_rpm.runcCstj |jtj |¡¡S)N)r?r@rArrV)r:r@r;r;r<Ú _dist_path…szbdist_rpm._dist_pathc CsJd|j ¡d|j ¡ dd¡d|j ¡d|j dd¡dd|j ¡g}t d ¡}d  d d „|  ¡Dƒ¡}d }d}| ||¡}||kr¨|  d¡|  d|d ¡|  dddg¡|j rÊ|  d¡n |  d¡|  d|j  ¡d|jddg¡|js|j ¡s&|  d¡n|  d|j¡dD]V}t|| ¡ƒ}t|tƒrb|  d|d |¡f¡n|dk r*|  d||f¡q*|j ¡dkr¦|  d |j ¡¡|jr¾|  d!|j¡|jrÜ|  d"d |j¡¡|jrü|  d#tj |j¡¡|jr|  d$¡|  dd%|j ¡g¡d&|jtj tj d'¡f}d(|} |j!rXd)| } d*|} d+d,d-| fd.d/| fd0d1d2d3d4d5g } | D]n\} } }t|| ƒ}|s¦|r†|  dd6| g¡|rèt"|ƒ}|  | #¡ $d ¡¡W5QRXn |  |¡q†|  dd7d8g¡|j%r$|  d9d |j%¡¡|j&rF|  dd:g¡|  |j&¡|S);Nz %define name z%define version ú-Z_z%define unmangled_version z%define release Úz Summary: zrpm --eval %{__os_install_post}Ú cSsg|]}d| ¡‘qS)z %s \)rT)Z.0rWr;r;r<Z œsÿz-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: %sz 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)r.r%z&%setup -n %{name}-%{unmangled_version}Zbuildr&Zinstallr')Zcleanr(zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr)N)Zprer*N)Zpostr+N)Zpreunr,N)Zpostunr-Nz%z%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rCrQZ get_versionZreplacerZget_descriptionÚ subprocessZ getoutputrAZ splitlinesrJrSrZ get_licenserr8rDZgetattrZlowerrGrHZget_urlrr2r$r?r@rVr7Zget_long_descriptionrrBZargvr5ZopenZreadrUr"r#)r:Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldZvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optZattrZdefaultZfr;r;r<rRˆsÈ   ú  ÿ   ý   ü     ÿ ýÿ÷   þ  ýþ zbdist_rpm._make_spec_filecCs||s|Sg}| ¡ d¡D]N}| ¡}|ddkrB| d|g¡q|ddkrZ| |¡q| d|¡q|dsx|d=|S)Nr\rrr[rZz )rTrUrSrJ)r:r#Z new_changelogrWr;r;r<rK1s   zbdist_rpm._format_changelogN)Z__name__Z __module__Z __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr=rFrErXrYrRrKr;r;r;r<rsx—mÿþ--*r)r]rBr?Zdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrrr;r;r;r<Zs