# Generated by rust2rpm 24
%bcond_without check
%global crate python-launcher
Name: rust-python-launcher
Version: 1.0.0
Release: %autorelease
Summary: Python launcher for Unix
License: MIT
URL: https://crates.io/crates/python-launcher
Source: %{crates_source}
# Manually created patch for downstream crate metadata changes
# * drop criterion dev-dependency (only used in benchmarks)
# * exclude some files that are only useful for upstream:
# https://github.com/brettcannon/python-launcher/pull/147
# * Bump assert_cmd to 2.0.0
Patch: python-launcher-fix-metadata.diff
BuildRequires: rust-packaging >= 23
%global _description %{expand:
The Python Launcher for Unix.
Launch your Python interpreter the lazy/smart way!
This launcher is an implementation of the py command for Unix-based platforms.
The goal is to have py become the cross-platform command that Python users
typically use to launch an interpreter while doing development.
By having a command that is version-agnostic when it comes to Python,
it side-steps the "what should the python command point to?" debate by clearly
specifying that upfront (i.e. the newest version of Python that can be found).
This also unifies the suggested command to document for launching Python on
both Windows as Unix as py has existed as the preferred command on Windows
since 2012 with the release of Python 3.3.
Typical usage would be:
py -m venv .venv
py ... # Whatever you would normally use `python` for during development.
This creates a virtual environment in a .venv directory using the latest
version of Python installed. Subsequent uses of py will then use that virtual
environment as long as it is in the current (or higher) directory;
no environment activation required (although the Python Launcher supports
activated environments as well)!
A non-goal of this launcher is to become the way to launch the Python
interpreter all the time. If you know the exact interpreter you want to
launch then you should launch it directly; same goes for when you have
requirements on the type of interpreter you want.
The Python Launcher should be viewed as a tool of convenience, not necessity.}
%description %{_description}
%package -n %{crate}
Summary: %{summary}
Provides: py = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: py%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
# LICENSE.dependencies contains a full license breakdown
%description -n %{crate} %{_description}
%files -n %{crate}
%license LICENSE
%license LICENSE.dependencies
%doc CHANGELOG.md
%doc CODE_OF_CONDUCT.md
%doc CONTRIBUTING.md
%doc README.md
%{_bindir}/py
%{_mandir}/man1/py.1.*
%{fish_completions_dir}/py.fish
%package devel
Summary: %{summary}
BuildArch: noarch
%description devel %{_description}
This package contains library source intended for building other packages which
use the "%{crate}" crate.
%files devel
%license %{crate_instdir}/LICENSE
%doc %{crate_instdir}/CHANGELOG.md
%doc %{crate_instdir}/CODE_OF_CONDUCT.md
%doc %{crate_instdir}/CONTRIBUTING.md
%doc %{crate_instdir}/README.md
%{crate_instdir}/
%package -n %{name}+default-devel
Summary: %{summary}
BuildArch: noarch
%description -n %{name}+default-devel %{_description}
This package contains library source intended for building other packages which
use the "default" feature of the "%{crate}" crate.
%files -n %{name}+default-devel
%ghost %{crate_instdir}/Cargo.toml
%prep
%autosetup -n %{crate}-%{version_no_tilde} -p1
%cargo_prep
%generate_buildrequires
%cargo_generate_buildrequires
%build
%cargo_build
%cargo_license_summary
%{cargo_license} > LICENSE.dependencies
%install
%cargo_install
# install man page
mkdir -p %{buildroot}/%{_mandir}/man1
cp -pav docs/man-page/py.1 %{buildroot}/%{_mandir}/man1/
# install fish completions
mkdir -p %{buildroot}/%{fish_completions_dir}
cp -pav completions/py.fish %{buildroot}/%{fish_completions_dir}/
%if %{with check}
%check
# skip a test which relies on files that are not included in published crates
%cargo_test -- -- --skip unexecutable
%endif
%changelog
%autochangelog