2 # - lxdbr0 interface setup for systemd
4 Summary: Fast, dense and secure container management
9 Group: Applications/System
10 Source0: https://linuxcontainers.org/downloads/lxd/%{name}-%{version}.tar.gz
11 # Source0-md5: 535d78758d3ca3542326eb6f3e072ccf
12 Source1: %{name}.service
14 Source3: %{name}br.init
15 Source4: %{name}.sysconfig
17 URL: http://linuxcontainers.org/
18 %ifarch %{x8664} arm aarch64 ppc64
19 BuildRequires: criu-devel >= 1.7
21 BuildRequires: golang >= 1.5
22 BuildRequires: lxc-devel >= 1.1
23 BuildRequires: pkgconfig
24 BuildRequires: rpmbuild(macros) >= 1.228
25 Requires(post,preun): /sbin/chkconfig
26 Requires(postun): /usr/sbin/groupdel
27 Requires(pre): /usr/bin/getgid
28 Requires(pre): /usr/sbin/groupadd
29 Requires: rc-scripts >= 0.4.0.10
33 Requires: uname(release) >= 4.1
35 ExclusiveArch: %{ix86} %{x8664} %{arm}
36 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
38 %define _enable_debug_packages 0
39 %define gobuild(o:) go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x %{?**};
40 %define gopath %{_libdir}/golang
41 %define import_path github.com/lxc/lxd
42 %define _libexecdir %{_prefix}/lib
45 LXD is a container "hypervisor" and a new user experience for LXC.
47 Specifically, it is made of three components:
48 - A system-wide daemon (lxd)
49 - A command line client (lxc)
50 - An OpenStack Nova plugin (nova-compute-lxd)
52 The daemon exports a REST API both locally and if enabled, over the
55 The command line tool is designed to be a very simple, yet very
56 powerful tool to manage all your containers. It can handle connect to
57 multiple container hosts and easily give you an overview of all the
58 containers on your network, let you create some more where you want
59 them and even move them around while they are running.
61 The OpenStack plugin then allows you to use your lxd hosts as compute
62 nodes, running workloads on containers rather than virtual machines.
68 export GOPATH=$(pwd)/dist
69 cd $GOPATH/src/%{import_path}
71 %gobuild -o dist/bin/lxd ./lxd
72 %gobuild -o dist/bin/lxc ./lxc
75 rm -rf $RPM_BUILD_ROOT
76 install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_mandir}/man1,/etc/{rc.d/init.d,sysconfig},%{systemdunitdir}} \
77 $RPM_BUILD_ROOT%{_libexecdir} \
78 $RPM_BUILD_ROOT/var/lib/%{name}/{containers,devices,devlxd,images,security,shmounts,snapshots} \
79 $RPM_BUILD_ROOT/var/log/%{name}
81 # lxd refuses to start containter without this directory
82 install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/rootfs
84 install -p dist/bin/lxd $RPM_BUILD_ROOT%{_sbindir}
85 install -p dist/bin/lxc $RPM_BUILD_ROOT%{_bindir}
87 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{systemdunitdir}
88 install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
89 install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}br
90 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
92 install -p %{SOURCE5} $RPM_BUILD_ROOT%{_libexecdir}/lxd-wrapper
95 %groupadd -g 273 %{name}
98 /sbin/chkconfig --add %{name}br
99 /sbin/chkconfig --add %{name}
100 %service -n %{name} restart
101 %systemd_post %{name}.service
104 if [ "$1" = "0" ]; then
105 %service -q %{name} stop
106 %service -q %{name}br stop
107 /sbin/chkconfig --del %{name}
108 /sbin/chkconfig --del %{name}br
110 %systemd_preun %{name}.service
113 if [ "$1" = "0" ]; then
119 rm -rf $RPM_BUILD_ROOT
122 %defattr(644,root,root,755)
123 %doc README.md CONTRIBUTING.md AUTHORS doc/*
124 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}
125 %attr(754,root,root) /etc/rc.d/init.d/%{name}
126 %attr(754,root,root) /etc/rc.d/init.d/%{name}br
127 %attr(755,root,root) %{_bindir}/lxc
128 %attr(755,root,root) %{_sbindir}/lxd
129 %{systemdunitdir}/%{name}.service
130 %dir %attr(750,root,root) %{_libdir}/%{name}
131 %dir %attr(750,root,root) %{_libdir}/%{name}/rootfs
132 %attr(750,root,root) %{_libexecdir}/%{name}-wrapper
133 %dir %attr(750,root,logs) /var/log/%{name}
134 %dir %attr(711,root,root) /var/lib/%{name}
135 %dir %attr(711,root,root) /var/lib/%{name}/containers
136 %dir %attr(700,root,root) /var/lib/%{name}/devices
137 %dir %attr(700,root,root) /var/lib/%{name}/devlxd
138 %dir %attr(700,root,root) /var/lib/%{name}/images
139 %dir %attr(700,root,root) /var/lib/%{name}/security
140 %dir %attr(711,root,root) /var/lib/%{name}/shmounts
141 %dir %attr(700,root,root) /var/lib/%{name}/snapshots