1 Summary: Fast, dense and secure container management
6 Group: Applications/System
7 Source0: https://linuxcontainers.org/downloads/lxd/%{name}-%{version}.tar.gz
8 # Source0-md5: 535d78758d3ca3542326eb6f3e072ccf
9 Source1: %{name}.service
11 Source3: %{name}br.init
12 Source4: %{name}.sysconfig
13 URL: http://linuxcontainers.org/
14 %ifarch %{x8664} arm aarch64 ppc64
15 BuildRequires: criu-devel >= 1.7
17 BuildRequires: golang >= 1.5
18 BuildRequires: lxc-devel >= 1.1
19 BuildRequires: pkgconfig
20 BuildRequires: rpmbuild(macros) >= 1.228
21 Requires(post,preun): /sbin/chkconfig
22 Requires(postun): /usr/sbin/groupdel
23 Requires(pre): /usr/bin/getgid
24 Requires(pre): /usr/sbin/groupadd
25 Requires: rc-scripts >= 0.4.0.10
29 Requires: uname(release) >= 4.1
31 ExclusiveArch: %{ix86} %{x8664} %{arm}
32 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
34 %define _enable_debug_packages 0
35 %define gobuild(o:) go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x %{?**};
36 %define gopath %{_libdir}/golang
37 %define import_path github.com/lxc/lxd
40 LXD is a container "hypervisor" and a new user experience for LXC.
42 Specifically, it is made of three components:
43 - A system-wide daemon (lxd)
44 - A command line client (lxc)
45 - An OpenStack Nova plugin (nova-compute-lxd)
47 The daemon exports a REST API both locally and if enabled, over the
50 The command line tool is designed to be a very simple, yet very
51 powerful tool to manage all your containers. It can handle connect to
52 multiple container hosts and easily give you an overview of all the
53 containers on your network, let you create some more where you want
54 them and even move them around while they are running.
56 The OpenStack plugin then allows you to use your lxd hosts as compute
57 nodes, running workloads on containers rather than virtual machines.
63 export GOPATH=$(pwd)/dist
64 cd $GOPATH/src/%{import_path}
66 %gobuild -o dist/bin/lxd ./lxd
67 %gobuild -o dist/bin/lxc ./lxc
70 rm -rf $RPM_BUILD_ROOT
71 install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_mandir}/man1,/etc/{rc.d/init.d,sysconfig},%{systemdunitdir}} \
72 $RPM_BUILD_ROOT/var/lib/%{name}/{containers,devices,devlxd,images,security,shmounts,snapshots} \
73 $RPM_BUILD_ROOT/var/log/%{name}
75 # lxd refuses to start containter without this directory
76 install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/rootfs
79 install -p dist/bin/lxd $RPM_BUILD_ROOT%{_sbindir}
80 install -p dist/bin/lxc $RPM_BUILD_ROOT%{_bindir}
82 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{systemdunitdir}
83 install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
84 install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}br
85 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
88 %groupadd -g 273 %{name}
91 /sbin/chkconfig --add %{name}
92 %service -n %{name} restart
93 %systemd_post %{name}.service
96 if [ "$1" = "0" ]; then
97 %service -q %{name} stop
98 /sbin/chkconfig --del %{name}
100 %systemd_preun %{name}.service
103 if [ "$1" = "0" ]; then
109 rm -rf $RPM_BUILD_ROOT
112 %defattr(644,root,root,755)
113 %doc README.md CONTRIBUTING.md AUTHORS doc/*
114 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}
115 %attr(754,root,root) /etc/rc.d/init.d/%{name}
116 %attr(754,root,root) /etc/rc.d/init.d/%{name}br
117 %attr(755,root,root) %{_bindir}/lxc
118 %attr(755,root,root) %{_sbindir}/lxd
119 %{systemdunitdir}/%{name}.service
120 %dir %attr(750,root,root) %{_libdir}/%{name}/rootfs
121 %dir %attr(750,root,logs) /var/log/%{name}
122 %dir %attr(700,root,root) /var/lib/%{name}
123 %dir %attr(700,root,root) /var/lib/%{name}/containers
124 %dir %attr(700,root,root) /var/lib/%{name}/devices
125 %dir %attr(700,root,root) /var/lib/%{name}/devlxd
126 %dir %attr(700,root,root) /var/lib/%{name}/images
127 %dir %attr(700,root,root) /var/lib/%{name}/security
128 %dir %attr(700,root,root) /var/lib/%{name}/shmounts
129 %dir %attr(700,root,root) /var/lib/%{name}/snapshots