Sophie

Sophie

distrib > Mageia > 9 > x86_64 > by-pkgid > 6546bad9d5acf114c99dc7af906ee126 > files > 19

kubernetes-1.27.3-1.mga9.src.rpm

# Originally taken from https://src.fedoraproject.org/rpms/kubernetes/blob/373a3c5094ea9719600df1be0ef408e745ee71f7/f/kubernetes.spec
%global with_debug   0

%if 0%{?with_debug}
# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12
%global _dwz_low_mem_die_limit 0
%else
%global debug_package %{nil}
%endif

%global provider                github
%global provider_tld            com
%global project                 kubernetes
%global repo                    kubernetes
# https://github.com/kubernetes/kubernetes

%global provider_prefix         %{provider}.%{provider_tld}/%{project}/%{repo}
%global import_path             k8s.io/kubernetes
%global commit       			25b4e43193bcda6c7328a6d147b1fb73a33f1598
%global shortcommit             %(c=%{commit}; echo ${c:0:7})

# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work
%global _buildshell  /bin/bash
#global _checkshell  /bin/bash
# Needed otherwise bash fails on variables after the build phase in the script generated
%global __spec_helper_post %{nil}

##############################################
Name:           kubernetes
Version:        1.27.3
Release:        %mkrel 1
Summary:        Container cluster management
License:        ASL 2.0
URL:            https://%{import_path}
ExclusiveArch:  x86_64 aarch64 %{arm}
Group:          System/Configuration

Source0:        https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz
Source3:        kubernetes-accounting.conf
Source33:       genmanpages.sh
Source101:      kube-proxy.service
Source102:      kube-apiserver.service
Source103:      kube-scheduler.service
Source104:      kube-controller-manager.service
Source105:      kubelet.service
Source106:      environ-apiserver
Source107:      environ-config
Source108:      environ-controller-manager
Source109:      environ-kubelet
Source110:      environ-kubelet.kubeconfig
Source111:      environ-proxy
Source112:      environ-scheduler
Source114:      kubeadm.conf
Source115:      kubernetes.conf
Patch3:         build-with-debug-info.patch

# kubernetes is decomposed into master and node subpackages
# require both of them for updates
Requires: kubernetes-master = %{version}-%{release}
Requires: kubernetes-node = %{version}-%{release}

%description
%{summary}

##############################################
%package master
Summary: Kubernetes services for master host

BuildRequires: golang >= 1.19
BuildRequires: systemd
BuildRequires: rsync
BuildRequires: go-md2man
BuildRequires: go-bindata

Requires(pre): shadow-utils
Requires(postun): systemd-units
Requires: kubernetes-client = %{version}-%{release}

# if node is installed with node, version and release must be the same
Conflicts: kubernetes-node < %{version}-%{release}
Conflicts: kubernetes-node > %{version}-%{release}

%description master
Kubernetes services for master host

##############################################
%package node
Summary: Kubernetes services for node host
Group:   System/Configuration
Requires: docker
Requires: conntrack-tools

BuildRequires: golang >= 1.19
BuildRequires: systemd
BuildRequires: rsync
BuildRequires: go-md2man
BuildRequires: go-bindata

Requires(pre): shadow-utils
Requires(postun): systemd-units
Requires:      socat
Requires:      kubernetes-client = %{version}-%{release}

# if master is installed with node, version and release must be the same
Conflicts: kubernetes-master < %{version}-%{release}
Conflicts: kubernetes-master > %{version}-%{release}

%description node
Kubernetes services for node host

##############################################
%package  kubeadm
Summary:  Kubernetes tool for standing up clusters
Requires: kubernetes-node = %{version}-%{release}
Group:    System/Configuration
Requires: containernetworking-plugins

%description kubeadm
Kubernetes tool for standing up clusters

##############################################
%package client
Summary: Kubernetes client tools
Group:    System/Configuration

BuildRequires: golang >= 1.19
BuildRequires: go-bindata

%description client
Kubernetes client tools like kubectl

##############################################

%prep
%setup -q -n %{repo}-%{commit}

%if 0%{?with_debug}
%patch3 -p1
%endif

# src/k8s.io/kubernetes/pkg/util/certificates
# Patch the code to remove eliptic.P224 support
# For whatever reason:
# https://groups.google.com/forum/#!topic/Golang-nuts/Oq4rouLEvrU
for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do
  if [ -d "${dir}" ]; then
    pushd ${dir}
    sed -i "/^[^=]*$/ s/oidNamedCurveP224/oidNamedCurveP256/g" *.go
    sed -i "/^[^=]*$/ s/elliptic\.P224/elliptic.P256/g" *.go
    popd
  fi
done

mkdir -p src/k8s.io/kubernetes
mv $(ls -a | grep -vE "^src$|^\.$|^\.\.$") src/k8s.io/kubernetes/.

###############

%build
pushd src/k8s.io/kubernetes/
source hack/lib/init.sh
kube::golang::setup_env
	
export KUBE_GIT_TREE_STATE="clean"
export KUBE_GIT_COMMIT=%{commit}
export KUBE_GIT_VERSION=v{version}
export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace

# Build each binary separately to generate a unique build-id.
# Otherwise: Duplicate build-ids /builddir/build/BUILDROOT/.../usr/bin/kube-apiserver and /builddir/build/BUILDROOT/.../usr/bin/kubeadm
make WHAT="cmd/kube-proxy"
make WHAT="cmd/kube-apiserver"
make WHAT="cmd/kube-controller-manager"
make WHAT="cmd/kubelet"
make WHAT="cmd/kubeadm"
make WHAT="cmd/kube-scheduler"
make WHAT="cmd/kubectl"

# Gen docs
make WHAT="cmd/gendocs"
make WHAT="cmd/genkubedocs"
make WHAT="cmd/genman"
make WHAT="cmd/genyaml"
kube::util::gen-docs .

%install

pushd src/k8s.io/kubernetes/
source hack/lib/init.sh
kube::golang::setup_env
output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)"

	
echo "+++ INSTALLING binaries"
install -m 755 -d %{buildroot}%{_bindir}
	
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-proxy
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-controller-manager
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubelet
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubeadm
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-scheduler
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubectl
	
echo "+++ INSTALLING kubelet service config"
install -d -m 0755 %{buildroot}/%{_unitdir}
install -p -m 0644 -t %{buildroot}/%{_unitdir}/ %{SOURCE114}

	
echo "+++ INSTALLING bash completion"
install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/
%{buildroot}%{_bindir}/kubectl completion bash > %{buildroot}%{_datadir}/bash-completion/completions/kubectl

	
echo "+++ INSTALLING config files"
%define remove_environ_prefix() %(echo -n %1|sed 's/.*environ-//g')
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
install -d -m 0700 %{buildroot}%{_sysconfdir}/%{name}/manifests
install -m 644 -T %{SOURCE106} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE106}}
install -m 644 -T %{SOURCE107} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE107}}
install -m 644 -T %{SOURCE108} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE108}}
install -m 644 -T %{SOURCE109} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE109}}
install -m 644 -T %{SOURCE110} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE110}}
install -m 644 -T %{SOURCE111} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE111}}
install -m 644 -T %{SOURCE112} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE112}}

# place systemd/tmpfiles.d/kubernetes.conf to /usr/lib/tmpfiles.d/kubernetes.conf
install -d -m 0755 %{buildroot}%{_tmpfilesdir}
install -p -m 0644 -t %{buildroot}/%{_tmpfilesdir} %{SOURCE115}

# enable CPU and Memory accounting
install -d -m 0755 %{buildroot}/%{_unitdir}
install -p -m 0644 -t %{buildroot}/%{_unitdir}/ %{SOURCE3}

	
echo "+++ INSTALLING service files"
install -d -m 0755 %{buildroot}%{_unitdir}
install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE101}
install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE102}
install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE103}
install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE104}
install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE105}

	
echo "+++ INSTALLING manpages"
install -d %{buildroot}%{_mandir}/man1
	
# from k8s tarball copied docs/man/man1/*.1	
install -p -m 644 docs/man/man1/*.1 %{buildroot}%{_mandir}/man1

# install the place the kubelet defaults to put volumes and default folder structure
install -d %{buildroot}%{_sharedstatedir}/kubelet
	
mkdir -p %{buildroot}/run
install -d -m 0755 %{buildroot}/run/%{name}/
	
popd

mv src/k8s.io/kubernetes/*.md .
mv src/k8s.io/kubernetes/LICENSE .

%check
if [ 1 != 1 ]; then
echo "******Testing the commands*****"
hack/test-cmd.sh
echo "******Benchmarking kube********"
hack/benchmark-go.sh

# In Fedora 20 and RHEL7 the go cover tools isn't available correctly
echo "******Testing the go code******"
hack/test-go.sh
echo "******Testing integration******"
hack/test-integration.sh --use_go_build
fi

##############################################
%files
# empty as it depends on master and node

##############################################
%files master
%license LICENSE
%doc *.md
%{_mandir}/man1/kube-apiserver.1*
%{_mandir}/man1/kube-controller-manager.1*
%{_mandir}/man1/kube-scheduler.1*
%attr(754, -, kube) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver
%{_bindir}/kube-controller-manager
%{_bindir}/kube-scheduler
%{_unitdir}/kube-apiserver.service
%{_unitdir}/kube-controller-manager.service
%{_unitdir}/kube-scheduler.service
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/apiserver
%config(noreplace) %{_sysconfdir}/%{name}/scheduler
%config(noreplace) %{_sysconfdir}/%{name}/config
%config(noreplace) %{_sysconfdir}/%{name}/controller-manager
%{_tmpfilesdir}/kubernetes.conf
%ghost %verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name}

##############################################
%files node
%license LICENSE
%doc *.md
%{_mandir}/man1/kubelet.1*
%{_mandir}/man1/kube-proxy.1*
%{_bindir}/kubelet
%{_bindir}/kube-proxy
%{_unitdir}/kube-proxy.service
%{_unitdir}/kubelet.service
%dir %{_sharedstatedir}/kubelet
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/manifests
%config(noreplace) %{_sysconfdir}/%{name}/config
%config(noreplace) %{_sysconfdir}/%{name}/kubelet
%config(noreplace) %{_sysconfdir}/%{name}/proxy
%config(noreplace) %{_sysconfdir}/%{name}/kubelet.kubeconfig
%config(noreplace) %{_unitdir}/kubernetes-accounting.conf
%{_tmpfilesdir}/kubernetes.conf
%ghost %verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name}

##############################################
%files kubeadm
%license LICENSE
%doc *.md
%{_mandir}/man1/kubeadm.1*
%{_mandir}/man1/kubeadm-*
%{_bindir}/kubeadm
%config(noreplace) %{_unitdir}/kubeadm.conf

##############################################
%files client
%license LICENSE
%doc *.md
%{_mandir}/man1/kubectl.1*
%{_mandir}/man1/kubectl-*
%{_bindir}/kubectl
%{_datadir}/bash-completion/completions/kubectl

##############################################

%pre master
getent group kube >/dev/null || groupadd -r kube
getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \
        -c "Kubernetes user" kube

%post master
%systemd_post kube-apiserver kube-scheduler kube-controller-manager

%preun master
%systemd_preun kube-apiserver kube-scheduler kube-controller-manager

%postun master
%systemd_postun_with_restart kube-apiserver kube-scheduler kube-controller-manager

%pre node
getent group kube >/dev/null || groupadd -r kube
getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \
        -c "Kubernetes user" kube

%post node
%systemd_post kubelet kube-proxy
# If accounting is not currently enabled systemd reexec
if [[ `systemctl show docker kubelet | grep -q -e CPUAccounting=no -e MemoryAccounting=no; echo $?` -eq 0 ]]; then
  systemctl daemon-reexec
fi

%preun node
%systemd_preun kubelet kube-proxy

%postun node
%systemd_postun_with_restart kubelet kube-proxy


%changelog
* Mon Jun 26 2023 bcornec <bcornec> 1.27.3-1.mga9
+ Revision: 1963054
- Update to upstream k8s 1.27.3 to fix security issues

* Fri Dec 23 2022 bcornec <bcornec> 1.26.0-1.mga9
+ Revision: 1926077
- Update to upstream k8s 1.26.0

* Sat Nov 12 2022 bcornec <bcornec> 1.25.4-1.mga9
+ Revision: 1906500
- Fix security issues as per mga#29267

* Sat Sep 17 2022 bcornec <bcornec> 1.25.1-1.mga9
+ Revision: 1889470
- Update to upstream k8s 1.25.1

* Tue Sep 06 2022 bcornec <bcornec> 1.25.0-1.mga9
+ Revision: 1884647
- Update to upstream k8s 1.25.0

* Tue Aug 23 2022 bcornec <bcornec> 1.24.4-1.mga9
+ Revision: 1879695
- Fix duplicate delivery
- Update k8s to upstream 1.24.4

* Mon Aug 01 2022 bcornec <bcornec> 1.24.3-1.mga9
+ Revision: 1874122
- Update to upstream k8s 1.24.3

* Fri Mar 25 2022 umeabot <umeabot> 1.22.2-2.mga9
+ Revision: 1827054
- Mageia 9 Mass Rebuild

* Sun Oct 17 2021 bcornec <bcornec> 1.22.2-1.mga9
+ Revision: 1751912
- Update to upstream k8s 1.22.2

* Thu Mar 25 2021 bcornec <bcornec> 1.20.4-3.mga9
+ Revision: 1710223
+ rebuild (emptylog)

* Thu Mar 25 2021 bcornec <bcornec> 1.20.4-2.mga9
+ Revision: 1710215
- Fix postun as %%systemd_postun alone is just empty
- Originally from https://src.fedoraproject.org/rpms/kubernetes/blob/373a3c5094ea9719600df1be0ef408e745ee71f7/f/kubernetes.spec
- Use the unitdir destination for conf files related to systemd
- Fix install deps
  FTR: spec file adapted from https://src.fedoraproject.org/rpms/kubernetes/blob/rawhide/f/kubernetes.spec originaly
- Import kubernetes
+ joequant <joequant>
- imported package kubernetes