# python3_pkgversion specifies the version of Python 3 in the distro. It can be # a specific version (e.g. 34 in Fedora EPEL7) %python3_pkgversion 3 # Set to /bin/true to avoid %ifdefs and %{? in specfiles %__python3_other /bin/true %py3_other_build /bin/true %py3_other_install /bin/true # === Macros for Build/Requires tags using Python dist tags === # - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages # - These macros need to be in macros.python-srpm, because BuildRequires tags # get rendered as runtime requires into the metadata of SRPMs. # Converts Python dist name to a canonical format %py_dist_name() %{lua:\ name = rpm.expand("%{?1:%{1}}");\ canonical = string.gsub(string.lower(name), "[^%w%.]+", "-");\ print(canonical);\ } # Creates Python 2 dist tag(s) after converting names to canonical format # Needs to first put all arguments into a list, because invoking a different # macro (%py_dist_name) overwrites them %py2_dist() %{lua:\ args = {}\ arg = 1\ while (true) do\ name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\ if (name == nil or name == '') then\ break\ end\ args[arg] = name\ arg = arg + 1\ end\ for arg, name in ipairs(args) do\ canonical = rpm.expand("%py_dist_name " .. name);\ print("python2dist(" .. canonical .. ") ");\ end\ } # Creates Python 3 dist tag(s) after converting names to canonical format # Needs to first put all arguments into a list, because invoking a different # macro (%py_dist_name) overwrites them %py3_dist() %{lua:\ args = {}\ arg = 1\ while (true) do\ name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\ if (name == nil or name == '') then\ break\ end\ args[arg] = name\ arg = arg + 1\ end\ for arg, name in ipairs(args) do\ canonical = rpm.expand("%py_dist_name " .. name);\ print("python3dist(" .. canonical .. ") ");\ end\ } # Macro to replace overly complicated references to PyPI source files. # Expands to the pythonhosted URL for a package # Accepts zero to three arguments: # 1: The PyPI project name, defaulting to %srcname if it is defined, then # %pypi_name if it is defined, then just %name. # 2: The PYPI version, defaulting to %version. # 3: The file extension, defaulting to "tar.gz". (A period will be added # automatically.) # Requires %__pypi_url and %__pypi_default_extension to be defined. %__pypi_url https://files.pythonhosted.org/packages/source/ %__pypi_default_extension tar.gz %pypi_source() %{lua: local src = rpm.expand('%1') local ver = rpm.expand('%2') local ext = rpm.expand('%3') local url = rpm.expand('%__pypi_url') \ -- If no first argument, try %srcname, then %pypi_name, then %name -- Note that rpm leaves macros unchanged if they are not defined. if src == '%1' then src = rpm.expand('%srcname') end if src == '%srcname' then src = rpm.expand('%pypi_name') end if src == '%pypi_name' then src = rpm.expand('%name') end \ -- If no second argument, use %version if ver == '%2' then ver = rpm.expand('%version') end \ -- If no third argument, use the preset default extension if ext == '%3' then ext = rpm.expand('%__pypi_default_extension') end \ local first = string.sub(src, 1, 1) \ print(url .. first .. '/' .. src .. '/' .. src .. '-' .. ver .. '.' .. ext) }