U ,aIT@s|ddlZddlZddlZddlmZddlmZddlmZddl m Z ddl Tddl m Z ddlmZGd d d eZdS) N)Command)DEBUG) get_platform) write_file)*)get_python_version)logc)@seZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g)Zd+d,d-d.d/gZd+d,d-d0Zd1d2Zd3d4Zd5d6Z d7d8Z 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-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=Nz@/opt/alt/python38/lib64/python3.8/distutils/command/bdist_rpm.pyinitialize_optionssNzbdist_rpm.initialize_optionscCs|dd|jdkr6|js$tdtj|jd|_|jdkrX|j rPt j |_qfd|_n|j rftdtj dkr~t dtj |jr|jrtd |jsd |_|dd |dS) NZbdist)rrz)you must specify --rpm-base in RPM 2 moderpmZpython3z8--python and --fix-python are mutually exclusive optionsposixz9don't know how to create RPM distributions on platform %sz6cannot supply both '--source-only' and '--binary-only'r)rr)Zset_undefined_optionsrr9ZDistutilsOptionErrorospathjoinrrrsys executablenameZDistutilsPlatformErrorrr distributionhas_ext_modulesr8finalize_package_datar<r>r>r?finalize_optionss6        zbdist_rpm.finalize_optionscCsT|dd|dd|j|jf|d|dt|jtrxdD]&}tj |rP||jkrP|j |qP|dd |d |d |d | |j |_ |d |d|d|d|d|d|d|d|d|d|d|d|d|d|d|ddS)Nr zDevelopment/Librariesr#z%s <%s>r$r%)ZREADMEz README.txtr!1r"rr&r'r(r)r*r+r,r-r.r/r0r2r3r4r5r6r;)Z ensure_stringrIZ get_contactZget_contact_emailZensure_string_list isinstancer%listrCrDexistsappend_format_changelogr&Zensure_filename)r=Zreadmer>r>r?rKsB                        zbdist_rpm.finalize_package_datacCstrr>r?runs                            z bdist_rpm.runcCstj|jtj|S)N)rCrDrErre)r=rDr>r>r? _dist_pathszbdist_rpm._dist_pathc CsJd|jd|jddd|jd|jdddd|jg}td }d d d | D}d }d}|||}||kr| d| d|d | dddg|j r| dn | d| d|j d|jddg|js|js&| dn| d|jdD]V}t||}t|trb| d|d|fn|dk r*| 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!rXd)| } d*|} d+d,d-| fd.d/| fd0d1d2d3d4d5g } | D]n\} } }t|| }|s|r| dd6| g|rt"|}| |#$d W5QRXn | |q| dd7d8g|j%r$| d9d|j%|j&rF| dd:g| |j&|S);Nz %define name z%define version -_z%define unmangled_version z%define release z Summary: zrpm --eval %{__os_install_post} cSsg|]}d|qS)z %s \)rb).0rhr>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)r1r(z&%setup -n %{name}-%{unmangled_version}Zbuildr)Zinstallr*)Zcleanr+zrm -rf $RPM_BUILD_ROOT)Z verifyscriptr,N)Zprer-N)Zpostr.N)Zpreunr/N)Zpostunr0N%z%files -f INSTALLED_FILESz%defattr(-,root,root)z%doc z %changelog)'rIrZZ get_versionreplacer!Zget_description subprocessZ getoutputrE splitlinesrQr]rZ get_licenser r;rJgetattrlowerrNrOZget_urlrr5r'rCrDrer:Zget_long_descriptionrrFargvr8openreadrcr%r&)r=Z spec_fileZ vendor_hookZproblemZfixedZ fixed_hookZfieldvalZdef_setup_callZ def_buildZ install_cmdZscript_optionsZrpm_optattrdefaultfr>r>r?r[s                       zbdist_rpm._make_spec_filecCs||s|Sg}|dD]N}|}|ddkrB|d|gq|ddkrZ||q|d|q|dsx|d=|S)Nrprrrormz )rbrcr]rQ)r=r&Z new_changelogrhr>r>r?rR1s   zbdist_rpm._format_changelogN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optr@rLrKrkrlr[rRr>r>r>r?r sxm--*r )rvrFrCZdistutils.corerZdistutils.debugrZdistutils.utilrZdistutils.file_utilrZdistutils.errorsZdistutils.sysconfigrZ distutilsrr r>r>r>r?s