%define scl rh-python36 %{?scl:%scl_package %{name}} %{!?scl:%global pkg_name %{name}} %define name traceback2 %define version 1.4.0 %define unmangled_version 1.4.0 %define unmangled_version 1.4.0 %define release 1 Summary: Backports of the traceback module %{?scl:Requires: %{scl}-runtime} %{?scl:BuildRequires: %{scl}-runtime} Name: %{?scl_prefix}traceback2 Version: %{version} Release: %{release} Source0: traceback2-%{unmangled_version}.tar.gz License: UNKNOWN Group: Development/Libraries BuildRoot: %{_tmppath}/traceback2-%{version}-%{release}-buildroot Prefix: %{_prefix} BuildArch: noarch Vendor: Testing-cabal Packager: Martin Juhl Url: https://github.com/testing-cabal/traceback2 %description A backport of traceback to older supported Pythons. >>> import traceback2 as traceback Profit. Things to be aware of! In Python 2.x, unlike traceback, traceback2 creates unicode output (because it depends on the linecache2 module). Exception frame clearing silently does nothing if the interpreter in use does not support it. traceback2._some_str, which while not an official API is so old its likely in use behaves similarly to the Python3 version - objects where unicode(obj) fails but str(object) works will be shown as b'thestrvaluerepr'. %prep %{?scl:scl enable %{scl} - << \EOF} set -ex %setup -n traceback2-%{unmangled_version} -n traceback2-%{unmangled_version} %{?scl:EOF} %build %{?scl:scl enable %{scl} - << \EOF} set -ex python3 setup.py build %{?scl:EOF} %install %{?scl:scl enable %{scl} - << \EOF} set -ex python3 setup.py install --single-version-externally-managed -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES %{?scl:EOF} %clean %{?scl:scl enable %{scl} - << \EOF} set -ex rm -rf $RPM_BUILD_ROOT %{?scl:EOF} %files -f INSTALLED_FILES %defattr(-,root,root)