Blob Blame History Raw
%global provider	github
%global provider_tld	com
%global project		google
%global repo		cadvisor
%global commit		8c4f650e62f096710da794e536de86e34447fca9

%global import_path	%{provider}.%{provider_tld}/%{project}/%{repo}
%global gopath		%{_datadir}/gocode
%global shortcommit	%(c=%{commit}; echo ${c:0:7})
%global debug_package	%{nil}

Name:		%{repo}
Version:	0.5.0
Release:	0.0.git%{shortcommit}%{?dist}
Summary:	Analyzes resource usage and performance characteristics of running containers
License:	ASL 2.0
URL:		https://%{import_path}
Source0:	https://%{import_path}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz
Source1:	cadvisor
Source2:	cadvisor.service
BuildRequires:	docker-io-pkg-devel
BuildRequires:	systemd
BuildRequires:	glibc-static
BuildRequires:	golang >= 1.2.1-3
BuildRequires:	golang(github.com/docker/libcontainer)
BuildRequires:	golang(github.com/fsouza/go-dockerclient)
BuildRequires:	golang(github.com/coreos/go-systemd)
BuildRequires:	golang(github.com/godbus/dbus)
BuildRequires:	golang(github.com/kr/text)
BuildRequires:	golang(github.com/kr/pretty)
BuildRequires:	golang(github.com/influxdb/influxdb/client)
BuildRequires:	golang(github.com/stretchr/testify)
BuildRequires:	golang(github.com/stretchr/objx)
BuildRequires:	golang(github.com/golang/glog)
BuildRequires:  golang(github.com/codegangsta/cli)
BuildRequires:  golang(github.com/docker/docker)
BuildRequires:  golang(github.com/docker/libcontainer)
BuildRequires:  golang(github.com/gorilla/mux)
BuildRequires:  golang(github.com/kr/pty)
BuildRequires:  golang(github.com/onsi/ginkgo)
BuildRequires:  golang(github.com/onsi/gomega)
BuildRequires:  golang(github.com/SeanDolphin/bqschema)
BuildRequires:  golang(github.com/syndtr/gocapability/capability)
BuildRequires:  golang(code.google.com/p/goauth2)
BuildRequires:  golang(code.google.com/p/go.exp)
BuildRequires:  golang(code.google.com/p/gomock)
BuildRequires:  golang(code.google.com/p/google-api-go-client)
Requires:	docker-io
ExclusiveArch:	x86_64 

%description
%{summary}

cAdvisor (Container Advisor) provides container users an understanding of the
resource usage and performance characteristics of their running containers.
It is a running daemon that collects, aggregates, processes, and exports
information about running containers. Specifically, for each container it keeps
resource isolation parameters, historical resource usage, histograms of
complete historical resource usage and network statistics. This data is
exported by container and machine-wide.

cAdvisor currently supports lmctfy containers as well as Docker containers
(those that use the default libcontainer execdriver). Other container backends
can also be added. cAdvisor's container abstraction is based on lmctfy's
so containers are inherently nested hierarchically.

%package devel
Requires:	golang
Summary:	Analyzes resource usage and performance characteristics of running containers
Provides:	golang(%{import_path}) = %{version}-%{release}
Provides:	golang(%{import_path}/advice) = %{version}-%{release}
Provides:	golang(%{import_path}/advice/interface) = %{version}-%{release}
Provides:	golang(%{import_path}/api) = %{version}-%{release}
Provides:	golang(%{import_path}/client) = %{version}-%{release}
Provides:	golang(%{import_path}/container) = %{version}-%{release}
Provides:	golang(%{import_path}/container/docker) = %{version}-%{release}
Provides:	golang(%{import_path}/container/libcontainer) = %{version}-%{release}
Provides:	golang(%{import_path}/container/raw) = %{version}-%{release}
Provides:	golang(%{import_path}/deploy) = %{version}-%{release}
Provides:	golang(%{import_path}/info) = %{version}-%{release}
Provides:	golang(%{import_path}/manager) = %{version}-%{release}
Provides:	golang(%{import_path}/pages) = %{version}-%{release}
Provides:	golang(%{import_path}/pages/static) = %{version}-%{release}
Provides:	golang(%{import_path}/sampling) = %{version}-%{release}
Provides:	golang(%{import_path}/storage) = %{version}-%{release}
Provides:	golang(%{import_path}/storage/cache) = %{version}-%{release}
Provides:	golang(%{import_path}/storage/influxdb) = %{version}-%{release}
Provides:	golang(%{import_path}/storage/memory) = %{version}-%{release}
Provides:	golang(%{import_path}/utils) = %{version}-%{release}
BuildRequires:	docker-io-pkg-devel
BuildRequires:	golang
BuildRequires:	golang(github.com/docker/libcontainer)
BuildRequires:	golang(github.com/fsouza/go-dockerclient)
BuildRequires:	golang(github.com/coreos/go-systemd)
BuildRequires:	golang(github.com/godbus/dbus)
BuildRequires:	golang(github.com/kr/text)
BuildRequires:	golang(github.com/kr/pretty)
BuildRequires:	golang(github.com/influxdb/influxdb/client)
BuildRequires:	golang(github.com/stretchr/testify)
BuildRequires:	golang(github.com/stretchr/objx)
BuildRequires:  golang(github.com/codegangsta/cli)
BuildRequires:  golang(github.com/docker/docker)
BuildRequires:  golang(github.com/docker/libcontainer)
BuildRequires:  golang(github.com/golang/glog)
BuildRequires:  golang(github.com/gorilla/mux)
BuildRequires:  golang(github.com/kr/pty)
BuildRequires:  golang(github.com/onsi/ginkgo)
BuildRequires:  golang(github.com/onsi/gomega)
BuildRequires:  golang(github.com/SeanDolphin/bqschema)
BuildRequires:  golang(github.com/syndtr/gocapability/capability)
BuildRequires:  golang(code.google.com/p/goauth2)
BuildRequires:  golang(code.google.com/p/go.exp)
BuildRequires:  golang(code.google.com/p/gomock)
BuildRequires:  golang(code.google.com/p/google-api-go-client)

%description devel
%{summary}

cAdvisor (Container Advisor) provides container users an understanding of the
resource usage and performance characteristics of their running containers.
It is a running daemon that collects, aggregates, processes, and exports
information about running containers. Specifically, for each container it keeps
resource isolation parameters, historical resource usage, histograms of
complete historical resource usage and network statistics. This data is
exported by container and machine-wide.

cAdvisor currently supports lmctfy containers as well as Docker containers
(those that use the default libcontainer execdriver). Other container backends
can also be added. cAdvisor's container abstraction is based on lmctfy's
so containers are inherently nested hierarchically.

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

%build
mkdir _build

pushd _build
  mkdir -p src/github.com/google
  ln -s $(dirs +1 -l) src/github.com/google/cadvisor
popd
export GOPATH=$(pwd)/_build:%{buildroot}%{gopath}:%{gopath}

go build --ldflags '-extldflags "-static"' github.com/google/cadvisor

%install
# main package binary
install -d -p %{buildroot}%{_bindir}
install -p -m0755 cadvisor %{buildroot}%{_bindir}

# install systemd/sysconfig 
install -d -m0755 %{buildroot}%{_sysconfdir}/sysconfig/
install -p -m0660 %{SOURCE1} %{buildroot}%{_sysconfdir}/sysconfig/%{name} 
install -d -m0755 %{buildroot}%{_unitdir}
install -p -m0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{name}.service

# devel package golang libs
install -d -p %{buildroot}/%{gopath}/src/%{import_path}/

for d in api client container deploy info healthz manager pages storage \
       utils
do
    cp -pav $d %{buildroot}/%{gopath}/src/%{import_path}/
done

%post
%systemd_post cadvisor.service

%preun
%systemd_preun cadvisor.service

%postun
%systemd_postun

%files
%doc AUTHORS CHANGELOG.md CONTRIBUTING.md CONTRIBUTORS LICENSE README.md 
%{_bindir}/cadvisor
%{_unitdir}/%{name}.service
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}

%files devel
%doc AUTHORS CHANGELOG.md CONTRIBUTING.md CONTRIBUTORS LICENSE README.md 
%dir %{gopath}/src/%{provider}.%{provider_tld}/%{project}
%dir %{gopath}/src/%{import_path}
%dir %{gopath}/src/%{import_path}/api
%dir %{gopath}/src/%{import_path}/client
%dir %{gopath}/src/%{import_path}/container
%dir %{gopath}/src/%{import_path}/deploy
%dir %{gopath}/src/%{import_path}/info
%dir %{gopath}/src/%{import_path}/manager
%dir %{gopath}/src/%{import_path}/pages
%dir %{gopath}/src/%{import_path}/storage
%dir %{gopath}/src/%{import_path}/utils
%dir %{gopath}/src/%{import_path}/healthz
%{gopath}/src/%{import_path}/api/*
%{gopath}/src/%{import_path}/client/*
%{gopath}/src/%{import_path}/container/*
%{gopath}/src/%{import_path}/deploy/*
%{gopath}/src/%{import_path}/info/*
%{gopath}/src/%{import_path}/manager/*
%{gopath}/src/%{import_path}/pages/*
%{gopath}/src/%{import_path}/storage/*
%{gopath}/src/%{import_path}/utils/*
%{gopath}/src/%{import_path}/healthz/*

%changelog
* Thu Nov 13 2014 Eric Paris <eparis@redhat.com> - 0.5.0-0.0.git8c4f650
- update to 0.5.0

* Sat Oct 18 2014 jchaloup <jchaloup@redhat.com> - 0.4.1-0.1.git6906a8c
- update to 0.4.1

* Thu Oct 09 2014 jchaloup <jchaloup@redhat.com> - 0.3.0-0.4.git9d158c3
- Move cadvisor.service and cadvisor config file from patch into repo
- Fix the build, thanks to Lokesh

* Fri Sep 19 2014 Lokesh Mandvekar <lsm5@fedoraproject.org> - 0.3.0-0.3.git9d158c3
- own parent directory of <gopath</src/<import_path>
- preserve timestamps of copied files in -devel
- use _unitdir macro for systemd install path

* Fri Sep 12 2014 Eric Paris <eparis@redhat.com - 0.3.0-0.2.git9d158c3
- Log to stderr (and thus journal) by default

* Thu Sep 11 2014 Eric Paris <eparis@redhat.com - 0.3.0-0.1.git9d158c3
- Bump to upstream 9d158c3d66e8e6d14cfeb1d73695ab18dbc744e8

* Wed Aug 20 2014 Eric Paris <eparis@redhat.com - 0.2.0-2
- Bump to upstream 17b0ec576bcbeb321c133e4378dee1e500c9850d

* Thu Aug 07 2014 Adam Miller <maxamillion@fedoraproject.org> - 0.2.0-1
- First package for Fedora