File protoc-gen-go-grpc.spec of Package protoc-gen-go-grpc

#
# spec file for package protoc-gen-go-grpc
#
# copyright (c) 2025 munix9@googlemail.com
#

%define pkg_org protoc-gen-go-grpc
%define flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == ""
%define pkg_nam %{pkg_org}
%define pkg_ver 1.5.1
%else
%define pkg_nam %{pkg_org}-%(echo "%{flavor}" | cut -d. -f1-2 | tr . _)
%define pkg_ver %{flavor}
%endif
%define pkg_bin %{pkg_org}-%{pkg_ver}
%define pkg_pri %(echo "%{pkg_ver}" | sed 's/[^0-9]*//g')

Name:           %{pkg_nam}
Version:        %{pkg_ver}
Release:        0
Summary:        The Go language implementation of gRPC
License:        Apache-2.0
URL:            https://github.com/grpc/grpc-go
# https://github.com/grpc/grpc-go/releases?q=%22protoc-gen-go-grpc%22
Source0:        %{url}/archive/cmd/%{pkg_org}/v%{version}/%{pkg_org}-%{version}.tar.gz
Source1:        vendor-%{version}.tar.gz
BuildRequires:  golang-packaging
Requires(post): update-alternatives
Requires(postun): update-alternatives
%if "%{flavor}" != ""
Provides:       %{pkg_org} = %{version}
%endif

%description
The Go implementation of gRPC: A high performance, open source,
general RPC framework that puts mobile and HTTP/2 first.

%prep
%autosetup -n grpc-go-cmd-%{pkg_org}-v%{version} -a1 -p1
mv vendor cmd/%{pkg_org}

%build
pushd cmd/%{pkg_org}
go build -v -mod=readonly -mod=vendor -buildmode=pie -trimpath -ldflags=-buildid=
popd

%install
install -D -m 0755 cmd/%{pkg_org}/%{pkg_org} %{buildroot}%{_bindir}/%{pkg_bin}

install -d -m 0755 %{buildroot}%{_sysconfdir}/alternatives
touch %{buildroot}%{_sysconfdir}/alternatives/%{pkg_org}
ln -sf %{_sysconfdir}/alternatives/%{pkg_org} %{buildroot}%{_bindir}/%{pkg_org}

%check
export PATH=%{buildroot}%{_bindir}:$PATH
%{pkg_bin} -version

%post
%{_sbindir}/update-alternatives --install \
    %{_bindir}/%{pkg_org} %{pkg_org} %{_bindir}/%{pkg_bin} %{pkg_pri}

%postun
if [ ! -f %{_bindir}/%{pkg_bin} ] ; then
    %{_sbindir}/update-alternatives --remove %{pkg_org} %{_bindir}/%{pkg_bin}
fi

%files
%license LICENSE
%doc cmd/%{pkg_org}/README.md
%{_bindir}/%{pkg_bin}
%{_bindir}/%{pkg_org}
%ghost %{_sysconfdir}/alternatives/%{pkg_org}

%changelog
openSUSE Build Service is sponsored by