#debuginfo not supported with Go
%global debug_package %{nil}
%global import_path github.com/GoogleCloudPlatform/kubernetes
%global commit 98ac8e178fcf1627399d659889bcb5fe25abdca4
%global shortcommit %(c=%{commit}; echo ${c:0:7})
#binaries which should be called kube-*
%global prefixed_binaries proxy apiserver controller-manager scheduler
#binaries which should not be renamed at all
%global nonprefixed_binaries kubelet kubecfg
#all of the above
%global binaries %{prefixed_binaries} %{nonprefixed_binaries}
#I really need this, otherwise "version_ldflags=$(kube::version_ldflags)"
# does not work
%global _buildshell /bin/bash
%global _checkshell /bin/bash
Name: kubernetes
Version: 0.3
Release: 0.3.git%{shortcommit}%{?dist}
Summary: Container cluster management
License: ASL 2.0
URL: https://github.com/GoogleCloudPlatform/kubernetes
ExclusiveArch: x86_64
Source0: https://github.com/GoogleCloudPlatform/kubernetes/archive/%{commit}/kubernetes-%{shortcommit}.tar.gz
#config files
Source10: config
Source11: apiserver
Source12: controller-manager
Source13: proxy
Source14: kubelet
Source15: scheduler
#service files
Source20: kube-apiserver.service
Source21: kube-controller-manager.service
Source22: kube-proxy.service
Source23: kubelet.service
Source24: kube-scheduler.service
Patch1: 0001-remove-all-third-party-software.patch
%if 0%{?fedora} >= 21 || 0%{?rhel}
Requires: docker
%else
Requires: docker-io
%endif
Requires: etcd
Requires: cadvisor
Requires(pre): shadow-utils
BuildRequires: git
BuildRequires: golang >= 1.2-7
BuildRequires: systemd
BuildRequires: golang-cover
BuildRequires: etcd
BuildRequires: golang(bitbucket.org/kardianos/osext)
BuildRequires: golang(github.com/coreos/go-log/log)
BuildRequires: golang(github.com/coreos/go-systemd)
BuildRequires: golang(github.com/coreos/go-etcd/etcd)
BuildRequires: golang(github.com/google/gofuzz)
BuildRequires: golang(code.google.com/p/go.net/context)
BuildRequires: golang(code.google.com/p/go.net/html)
BuildRequires: golang(code.google.com/p/go.net/websocket)
BuildRequires: golang(code.google.com/p/goauth2)
BuildRequires: golang(code.google.com/p/go-uuid)
BuildRequires: golang(code.google.com/p/google-api-go-client)
BuildRequires: golang(github.com/fsouza/go-dockerclient) > 0-0.6
BuildRequires: golang(github.com/golang/glog)
BuildRequires: golang(github.com/stretchr/objx)
BuildRequires: golang(github.com/stretchr/testify)
BuildRequires: golang(gopkg.in/v1/yaml)
BuildRequires: golang(github.com/google/cadvisor)
BuildRequires: golang(code.google.com/p/gcfg)
BuildRequires: golang(github.com/mitchellh/goamz/aws)
BuildRequires: golang(github.com/mitchellh/goamz/ec2)
BuildRequires: golang(github.com/vaughan0/go-ini)
BuildRequires: golang(github.com/elazarl/go-bindata-assetfs)
%description
%{summary}
%prep
%autosetup -Sgit -n %{name}-%{commit}
%build
export KUBE_GIT_COMMIT=%{commit}
export KUBE_GIT_TREE_STATE="dirty"
export KUBE_GIT_VERSION=v%{version}
export KUBE_EXTRA_GOPATH=%{gopath}
export KUBE_NO_GODEPS="true"
. hack/config-go.sh
kube::setup_go_environment
version_ldflags=$(kube::version_ldflags)
targets=($(kube::default_build_targets))
targets+=("cmd/integration")
binaries=($(kube::binaries_from_targets "${targets[@]}"))
for binary in ${binaries[@]}; do
bin=$(basename "${binary}")
echo "+++ Building ${bin}"
go build -o "${KUBE_TARGET}/bin/${bin}" \
"${goflags[@]:+${goflags[@]}}" \
-ldflags "${version_ldflags}" \
"${binary}"
done
%check
export KUBE_EXTRA_GOPATH=%{gopath}
export KUBE_NO_GODEPS="true"
export KUBE_NO_BUILD_INTEGRATION="true"
exit
echo "******Testing the commands*****"
hack/test-cmd.sh
# In Fedora 20 and RHEL7 the go cover tools isn't available correctly
%if 0%{?fedora} >= 21
echo "******Testing the go code******"
hack/test-go.sh
echo "******Testing integration******"
hack/test-integration.sh
%endif
echo "******Benchmarking kube********"
hack/benchmark-go.sh
%install
install -m 755 -d %{buildroot}%{_bindir}
for bin in %{prefixed_binaries}; do
echo "+++ INSTALLING ${bin}"
install -p -m 755 _output/go/bin/${bin} %{buildroot}%{_bindir}/kube-${bin}
done
for bin in %{nonprefixed_binaries}; do
echo "+++ INSTALLING ${bin}"
install -p -m 755 _output/go/bin/${bin} %{buildroot}%{_bindir}/${bin}
done
# install the bash completion
install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/
install -t %{buildroot}%{_datadir}/bash-completion/completions/ contrib/completions/bash/kubecfg
# install config files
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE15}
# install service files
install -d -m 0755 %{buildroot}%{_unitdir}
install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE20} %{SOURCE21} %{SOURCE22} %{SOURCE23} %{SOURCE24}
# install the place the kubelet defaults to put volumes
install -d %{buildroot}/var/lib/kubelet
%files
%doc README.md LICENSE CONTRIB.md CONTRIBUTING.md DESIGN.md
%{_bindir}/kube-apiserver
%{_bindir}/kubecfg
%{_bindir}/kube-controller-manager
%{_bindir}/kubelet
%{_bindir}/kube-proxy
%{_bindir}/kube-scheduler
%{_unitdir}/kube-apiserver.service
%{_unitdir}/kubelet.service
%{_unitdir}/kube-scheduler.service
%{_unitdir}/kube-controller-manager.service
%{_unitdir}/kube-proxy.service
%dir %{_sysconfdir}/%{name}
%{_datadir}/bash-completion/completions/kubecfg
%dir /var/lib/kubelet
%config(noreplace) %{_sysconfdir}/%{name}/config
%config(noreplace) %{_sysconfdir}/%{name}/apiserver
%config(noreplace) %{_sysconfdir}/%{name}/controller-manager
%config(noreplace) %{_sysconfdir}/%{name}/proxy
%config(noreplace) %{_sysconfdir}/%{name}/kubelet
%config(noreplace) %{_sysconfdir}/%{name}/scheduler
%pre
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
%systemd_post %{basename:%{SOURCE20}} %{basename:%{SOURCE21}} %{basename:%{SOURCE22}} %{basename:%{SOURCE22}} %{basename:%{SOURCE24}}
%preun
%systemd_preun %{basename:%{SOURCE20}} %{basename:%{SOURCE21}} %{basename:%{SOURCE22}} %{basename:%{SOURCE23}} %{basename:%{SOURCE24}}
%postun
%systemd_postun
%changelog
* Tue Oct 14 2014 jchaloup <jchaloup@redhat.com> - 0.3-0.3.git98ac8e1
- create /var/lib/kubelet
- Use bash completions from upstream
- Bump to upstream 98ac8e178fcf1627399d659889bcb5fe25abdca4
- all by Eric Paris
* Mon Sep 29 2014 Jan Chaloupka <jchaloup@redhat.com> - 0.3-0.2.git88fdb65
- replace * with coresponding files
- remove dependency on gcc
* Wed Sep 24 2014 Eric Paris <eparis@redhat.com - 0.3-0.1.git88fdb65
- Bump to upstream 88fdb659bc44cf2d1895c03f8838d36f4d890796
* Tue Sep 23 2014 Eric Paris <eparis@redhat.com - 0.3-0.0.gitbab5082
- Bump to upstream bab5082a852218bb65aaacb91bdf599f9dd1b3ac
* Fri Sep 19 2014 Eric Paris <eparis@redhat.com - 0.2-0.10.git06316f4
- Bump to upstream 06316f486127697d5c2f5f4c82963dec272926cf
* Thu Sep 18 2014 Eric Paris <eparis@redhat.com - 0.2-0.9.gitf7a5ec3
- Bump to upstream f7a5ec3c36bd40cc2216c1da331ab647733769dd
* Wed Sep 17 2014 Eric Paris <eparis@redhat.com - 0.2-0.8.gitac8ee45
- Try to intelligently determine the deps
* Wed Sep 17 2014 Eric Paris <eparis@redhat.com - 0.2-0.7.gitac8ee45
- Bump to upstream ac8ee45f4fc4579b3ed65faafa618de9c0f8fb26
* Mon Sep 15 2014 Eric Paris <eparis@redhat.com - 0.2-0.5.git24b5b7e
- Bump to upstream 24b5b7e8d3a8af1eecf4db40c204e3c15ae955ba
* Thu Sep 11 2014 Eric Paris <eparis@redhat.com - 0.2-0.3.gitcc7999c
- Bump to upstream cc7999c00a40df21bd3b5e85ecea3b817377b231
* Wed Sep 10 2014 Eric Paris <eparis@redhat.com - 0.2-0.2.git60d4770
- Add bash completions
* Wed Sep 10 2014 Eric Paris <eparis@redhat.com - 0.2-0.1.git60d4770
- Bump to upstream 60d4770127d22e51c53e74ca94c3639702924bd2
* Mon Sep 08 2014 Lokesh Mandvekar <lsm5@fedoraproject.org> - 0.1-0.4.git6ebe69a
- prefer autosetup instead of setup (revert setup change in 0-0.3.git)
https://fedoraproject.org/wiki/Autosetup_packaging_draft
- revert version number to 0.1
* Mon Sep 08 2014 Lokesh Mandvekar <lsm5@fedoraproject.org> - 0-0.3.git6ebe69a
- gopath defined in golang package already
- package owns /etc/kubernetes
- bash dependency implicit
- keep buildroot/$RPM_BUILD_ROOT macros consistent
- replace with macros wherever possible
- set version, release and source tarball prep as per
https://fedoraproject.org/wiki/Packaging:SourceURL#Github
* Mon Sep 08 2014 Eric Paris <eparis@redhat.com>
- make services restart automatically on error
* Sat Sep 06 2014 Eric Paris <eparis@redhat.com - 0.1-0.1.0.git6ebe69a8
- Bump to upstream 6ebe69a8751508c11d0db4dceb8ecab0c2c7314a
* Wed Aug 13 2014 Eric Paris <eparis@redhat.com>
- update to upstream
- redo build to use project scripts
- use project scripts in %check
- rework deletion of third_party packages to easily detect changes
- run apiserver and controller-manager as non-root
* Mon Aug 11 2014 Adam Miller <maxamillion@redhat.com>
- update to upstream
- decouple the rest of third_party
* Thu Aug 7 2014 Eric Paris <eparis@redhat.com>
- update to head
- update package to include config files
* Wed Jul 16 2014 Colin Walters <walters@redhat.com>
- Initial package