File pyenv.spec of Package pyenv

#
# spec file for package pyenv
#
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%define pyenv_dir      %{_libexecdir}/pyenv
#
Name:           pyenv
Version:        2.5.3
Release:        0
Summary:        Python Version Management
License:        MIT
Group:          Development/Languages/Python
URL:            https://github.com/pyenv/pyenv
Source:         https://github.com/pyenv/pyenv/archive/refs/tags/v%{version}.tar.gz#/pyenv-%{version}.tar.gz
#
BuildRequires:  bash-completion
BuildRequires:  bats
BuildRequires:  fdupes
BuildRequires:  fish
BuildRequires:  gcc
BuildRequires:  make
BuildRequires:  pkgconfig
BuildRequires:  zsh
#
Requires:       pkgconfig
#
# Additional soft build requirements.
# Use list from https://github.com/pyenv/pyenv/wiki#suggested-build-environment
#
# Once pyenv is installed and user requests a new Python version,
# we need to make sure it will build:
Recommends:     automake
Recommends:     bzip2
Recommends:     findutils
Recommends:     gcc
#
Recommends:     gdbm-devel
Recommends:     gmp-devel
Recommends:     openssl-devel
Recommends:     patch
Recommends:     readline-devel
#
Recommends:     pkgconfig(bzip2)
Recommends:     pkgconfig(clzma)
Recommends:     pkgconfig(expat)
Recommends:     pkgconfig(libffi)
Recommends:     pkgconfig(liblzma)
Recommends:     pkgconfig(ncurses)
Recommends:     pkgconfig(sqlite3)
Recommends:     pkgconfig(tcl)
Recommends:     pkgconfig(tk)
Recommends:     pkgconfig(uuid)
Recommends:     pkgconfig(zlib)

%description
pyenv lets the user switch between multiple versions of Python.

This project was forked from rbenv and ruby-build, and modified for Python.

%package bash-completion
Summary:        Bash completion for %{name}
Group:          System/Shells
Requires:       %{name} = %{version}
Supplements:    (pyenv and bash-completion)
BuildArch:      noarch

%description bash-completion
Bash command line completion support for %{name}.

%package fish-completion
Summary:        Fish completion for %{name}
Group:          System/Shells
Requires:       %{name} = %{version}
Supplements:    (pyenv and fish)
BuildArch:      noarch

%description fish-completion
Fish command line completion support for %{name}.

%package zsh-completion
Summary:        Zsh completion for %{name}
Group:          System/Shells
Requires:       %{name} = %{version}
Supplements:    (pyenv and zsh)
BuildArch:      noarch

%description zsh-completion
Zsh command line completion support for %{name}.

%prep
%autosetup -p1 -n %{name}-%{version}

sed -i -e '1s,^#!%{_bindir}/env bash,#!/bin/bash,' libexec/* pyenv.d/exec/pip-rehash/* plugins/python-build/bin/*

%build
##
pushd src
%configure
%make_build
popd

%install
mkdir -p %{buildroot}%{pyenv_dir} \
         %{buildroot}%{pyenv_dir}/plugins \
         %{buildroot}%{pyenv_dir}/shims/ \
         %{buildroot}%{pyenv_dir}/share/python-build/ \
         %{buildroot}%{_sysconfdir}/pyenv.d/ \
         %{buildroot}%{_bindir}

cp -R libexec %{buildroot}%{pyenv_dir}
cp -R bin %{buildroot}%{pyenv_dir}
cp -a pyenv.d %{buildroot}%{_sysconfdir}/

## Install shell completions:
install -D -m0644 completions/pyenv.bash %{buildroot}%{_datadir}/bash-completion/completions/pyenv
install -D -m0644 completions/pyenv.zsh %{buildroot}%{_sysconfdir}/zsh_completion.d/pyenv
install -D -m0644 completions/pyenv.fish %{buildroot}%{_datadir}/fish/vendor_completions.d/pyenv.fish

## Install manpage
install -D -m0644 man/man1/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1
pushd %{buildroot}%{_mandir}/man1/
 ln -s %{name}.1 python-build.1
popd

ln -s %{pyenv_dir}/bin/pyenv %{buildroot}%{_bindir}/pyenv

## python-build
pushd plugins/python-build
 install -m755 bin/* %{buildroot}%{pyenv_dir}/libexec
 cp -a share/python-build %{buildroot}%{pyenv_dir}/share/
popd

%fdupes %{buildroot}%{pyenv_dir}

%check
export PATH="$PATH:%{buildroot}%{_libexecdir}/pyenv/libexec"
bats test/{pyenv,hooks,versions}.bats

%files
%doc CHANGELOG.md COMMANDS.md README.md
%license LICENSE
%exclude %{_sysconfdir}/pyenv.d/rehash/*/.gitignore

%config %{_sysconfdir}/pyenv.d/rehash/*.d/default.list
%config %{_sysconfdir}/pyenv.d/exec/pip-rehash.bash
%config %{_sysconfdir}/pyenv.d/rehash/*.bash
%config %{_sysconfdir}/pyenv.d/install/*.bash

%{pyenv_dir}
%dir %{_sysconfdir}/pyenv.d
%dir %{_sysconfdir}/pyenv.d/exec/
%dir %{_sysconfdir}/pyenv.d/rehash/
%dir %{_sysconfdir}/pyenv.d/rehash/*.d/
%dir %{_sysconfdir}/pyenv.d/install/

%{_sysconfdir}/pyenv.d/exec/pip-rehash
%{_bindir}/pyenv
#
%{_mandir}/man1/%{name}.1%{?ext_man}
%{_mandir}/man1/python-build.1%{?ext_man}

%files bash-completion
%{_datadir}/bash-completion/completions/pyenv

%files fish-completion
%{_datadir}/fish/vendor_completions.d/pyenv.fish

%files zsh-completion
%config %{_sysconfdir}/zsh_completion.d/pyenv

%changelog
openSUSE Build Service is sponsored by