]> git.proxmox.com Git - mirror_lxc.git/blame - lxc.spec.in
Small fix for Lua 5.3 compatibility.
[mirror_lxc.git] / lxc.spec.in
CommitLineData
5e97c3fc 1#
2# lxc: linux Container library
3#
4# (C) Copyright IBM Corp. 2007, 2008
5#
6# Authors:
9afe19d6 7# Daniel Lezcano <daniel.lezcano at free.fr>
5e97c3fc 8#
9# This library is free software; you can redistribute it and/or
10# modify it under the terms of the GNU Lesser General Public
11# License as published by the Free Software Foundation; either
12# version 2.1 of the License, or (at your option) any later version.
13#
14# This library is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17# Lesser General Public License for more details.
18#
19# You should have received a copy of the GNU Lesser General Public
20# License along with this library; if not, write to the Free Software
250b1eec 21# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
5e97c3fc 22
0adde0f8
DE
23%global with_python %{?_with_python: 1} %{?!_with_python: 0}
24%global with_lua %{?_with_lua: 1} %{?!_with_lua: 0}
25
420dfb59
DE
26# Set with_systemd on distros that use it, so we can install the service
27# file, otherwise the sysvinit script will be installed
28%if 0%{?fedora} >= 14 || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210
29%global with_systemd 1
30%define init_script systemd
0af99319
MW
31#
32# BuildRequires systemd-units on fedora and rhel
33%if 0%{?fedora} >= 14 || 0%{?rhel} >= 7
420dfb59 34BuildRequires: systemd-units
0af99319
MW
35#
36# BuildRequires systemd on openSUSE and SUSE
37%endif
38%if 0%{?suse_version} >= 1210
39BuildRequires: systemd
40%endif
420dfb59
DE
41%else
42%global with_systemd 0
dc068290 43%define init_script sysvinit
420dfb59
DE
44%endif
45
fce070c8
DE
46# Must use /var/run for runtime_path on older releases or dnsmasq in the
47# lxc-net script will not be able to write its pid in /run (selinux denial)
48%if 0%{?fedora} < 15 || 0%{?rhel} < 7
49%define _with_runtime_path --with-runtime-path=/var/run
50%endif
51
9588a6ce
SH
52# RPM needs alpha/beta/rc in Release: not Version: to ensure smooth
53# package upgrades from alpha->beta->rc->release. For more info see:
54# http://fedoraproject.org/wiki/Packaging%3aNamingGuidelines#NonNumericRelease
55%if "x@LXC_VERSION_BETA@" != "x"
56%global beta_rel @LXC_VERSION_BETA@
57%global beta_dot .%{beta_rel}
58%else
59%global norm_rel 1
60%endif
61
5e97c3fc 62Name: @PACKAGE@
9588a6ce
SH
63Version: @LXC_VERSION_BASE@
64Release: %{?beta_rel:0.1.%{beta_rel}}%{?!beta_rel:%{norm_rel}}%{?dist}
07520b2a 65URL: http://linuxcontainers.org
9588a6ce 66Source: http://linuxcontainers.org/downloads/%{name}-%{version}%{?beta_dot}.tar.gz
0adde0f8 67Summary: Linux Containers userspace tools
5e97c3fc 68Group: Applications/System
0adde0f8 69License: LGPLv2+
cef07149 70BuildRoot: %{_tmppath}/%{name}-%{version}-build
fce070c8
DE
71Requires: openssl rsync dnsmasq bridge-utils
72Requires(pre): /usr/sbin/useradd
73Requires(postun): /usr/sbin/userdel
74%if 0%{?fedora} < 15 || 0%{?rhel} < 7
75Requires: libcgroup
76%endif
0af99319
MW
77# Note for Suse. The "docbook2X" BuildRequires does properly
78# match docbook2x on Suse in a case insensitive manner
79BuildRequires: libcap libcap-devel docbook2X graphviz libxslt pkgconfig
80
81#
82# Additional packages for openSUSE and SUSE
83#
84%if 0%{?suse_version} >= 1210
85PreReq: permissions
86BuildRequires: libapparmor-devel linux-glibc-devel lsb-release docbook-utils
87
88#
89# libseccomp-devel only needed on i386/i586/i686 and X86_64
90#
91%ifarch %ix86 x86_64
92BuildRequires: libseccomp-devel
93%endif
94%endif
5e97c3fc 95
ce951132
DE
96%if %{with_python}
97Requires: python3
98BuildRequires: python3-devel
99%endif
100
5e97c3fc 101%description
0adde0f8 102Containers are insulated areas inside a system, which have their own namespace
f7f1ba77
SG
103for filesystem, network, PID, IPC, CPU and memory allocation and which can be
104created using the Control Group and Namespace features included in the Linux
0adde0f8
DE
105kernel.
106
107This package provides the lxc-* tools, which can be used to start a single
108daemon in a container, or to boot an entire "containerized" system, and to
109manage and debug your containers.
110
111%package libs
112Summary: Shared library files for %{name}
113Group: System Environment/Libraries
114%description libs
1c41ddcb
GK
115The %{name}-libs package contains libraries for running %{name} applications.
116
0adde0f8
DE
117%package devel
118Summary: Development library for %{name}
119Group: Development/Libraries
120Requires: %{name} = %{version}-%{release}, pkgconfig
121%description devel
805415fc 122The %{name}-devel package contains header files and library needed for
0adde0f8
DE
123development of the Linux containers.
124
125%if %{with_lua}
126%package lua
127Summary: Lua bindings for %{name}
128Group: System Environment/Libraries
9f2fd74c 129Requires: lua-filesystem lua-alt-getopt
0adde0f8
DE
130BuildRequires: lua-devel
131%description lua
132The %{name}-lua package contains %{name} bindings for lua.
133%endif
5e97c3fc 134
135%prep
9588a6ce 136%setup -q -n %{name}-%{version}%{?beta_dot}
5e97c3fc 137%build
ce951132 138PATH=$PATH:/usr/sbin:/sbin %configure $args \
f080ffd7
DE
139%if %{with_lua}
140 --enable-lua \
141%endif
ce951132
DE
142%if %{with_python}
143 --enable-python \
0af99319
MW
144%endif
145%if "x%{_unitdir}" != "x"
146 --with-systemdsystemunitdir=%{_unitdir} \
ce951132 147%endif
fce070c8 148 %{?_with_runtime_path} \
420dfb59
DE
149 --disable-rpath \
150 --with-init-script=%{init_script}
cef07149 151make %{?_smp_mflags}
5e97c3fc 152
153%install
b9cb4325
DE
154rm -rf %{buildroot}
155make install DESTDIR=%{buildroot}
156find %{buildroot} -type f -name '*.la' -exec rm -f {} ';'
805415fc 157
5e97c3fc 158%clean
159rm -rf %{buildroot}
160
0af99319 161%pre
fce070c8 162# Ensure that lxc-dnsmasq uid & gid gets correctly allocated
0af99319
MW
163if getent passwd lxc-dnsmasq >/dev/null 2>&1 ; then : ; else \
164 /usr/sbin/useradd -M -r -s /sbin/nologin \
165 -c "LXC Networking Service" -d %_localstatedir/%name lxc-dnsmasq 2> /dev/null \
166 || exit 1
167fi
168
cef07149 169%post
0af99319
MW
170# This test should trigger a network configure on a new install.
171if [ ! -f %{_sysconfdir}/sysconfig/lxc-net ] || ! grep -q 'USE_LXC_BRIDGE=' %{_sysconfdir}/sysconfig/lxc-net
172then
173 # Grab a random 10net subnet. Need to add test logic...
174 while [ true ]
175 do
176 SUBNET=10.$(($RANDOM % 256)).$(($RANDOM % 256))
177 if ! ip -4 route ls | grep -q "^$SUBNET"
178 then
179 break
180 fi
181 done
182
183 cat > %{_sysconfdir}/sysconfig/lxc-net <<EOF
184# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your
185# containers. Set to "false" if you'll use virbr0 or another existing
186# bridge, or mavlan to your host's NIC.
187USE_LXC_BRIDGE="true"
188
189# If you change the LXC_BRIDGE to something other than lxcbr0, then
190# you will also need to update your /etc/lxc/default.conf as well as the
191# configuration (/var/lib/lxc/<container>/config) for any containers
192# already created using the default config to reflect the new bridge
193# name.
194# If you have the dnsmasq daemon installed, you'll also have to update
195# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon.
196LXC_BRIDGE="lxcbr0"
197LXC_ADDR="$SUBNET.1"
198LXC_NETMASK="255.255.255.0"
199LXC_NETWORK="$SUBNET.0/24"
200LXC_DHCP_RANGE="$SUBNET.2,$SUBNET.254"
201LXC_DHCP_MAX="253"
202# Uncomment the next line if you'd like to use a conf-file for the lxcbr0
203# dnsmasq. For instance, you can use 'dhcp-host=mail1,10.0.3.100' to have
204# container 'mail1' always get ip address 10.0.3.100.
205#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf
206
207# Uncomment the next line if you want lxcbr0's dnsmasq to resolve the .lxc
208# domain. You can then add "server=/lxc/10.0.3.1' (or your actual $LXC_ADDR)
209# to /etc/dnsmasq.conf, after which 'container1.lxc' will resolve on your
210# host.
211#LXC_DOMAIN="lxc"
212EOF
213fi
214
fce070c8
DE
215%postun
216/usr/sbin/userdel lxc-dnsmasq > /dev/null 2>&1 || :
217
0adde0f8
DE
218%post libs -p /sbin/ldconfig
219%postun libs -p /sbin/ldconfig
805415fc 220
5e97c3fc 221%files
222%defattr(-,root,root)
5e97c3fc 223%{_bindir}/*
0af99319
MW
224# openSUSE/SUSE
225%if 0%{?suse_version} >= 1210
226%dir %{_sysconfdir}/apparmor.d
227%dir %{_sysconfdir}/apparmor.d/abstractions
228%dir %{_sysconfdir}/apparmor.d/abstractions/%{name}
229%config %{_sysconfdir}/apparmor.d/abstractions/%{name}/container-base
230%config %{_sysconfdir}/apparmor.d/abstractions/%{name}/start-container
231%config %{_sysconfdir}/apparmor.d/%{name}-containers
232%dir %{_sysconfdir}/apparmor.d/%{name}
233%config %{_sysconfdir}/apparmor.d/%{name}/%{name}-default
234%config %{_sysconfdir}/apparmor.d/%{name}/%{name}-default-with-mounting
235%config %{_sysconfdir}/apparmor.d/%{name}/%{name}-default-with-nesting
236%config %{_sysconfdir}/apparmor.d/usr.bin.%{name}-start
237%endif
0adde0f8
DE
238%{_mandir}/man1/lxc*
239%{_mandir}/man5/lxc*
240%{_mandir}/man7/lxc*
0af99319
MW
241# not openSUSE/SUSE
242%if %{undefined suse_version}
0adde0f8
DE
243%{_mandir}/ja/man1/lxc*
244%{_mandir}/ja/man5/lxc*
245%{_mandir}/ja/man7/lxc*
0af99319 246%endif
411c76ce 247%{_datadir}/doc/*
b9cb4325 248%{_datadir}/lxc/*
e0f2f5c7 249%{_sysconfdir}/bash_completion.d
0af99319 250%{_sysconfdir}/sysconfig/*
0adde0f8 251%config(noreplace) %{_sysconfdir}/lxc/*
0af99319 252%config(noreplace) %{_sysconfdir}/sysconfig/*
5e97c3fc 253
420dfb59 254%if %{with_systemd}
0af99319 255%{_unitdir}/lxc-net.service
420dfb59
DE
256%{_unitdir}/lxc.service
257%else
258%{_sysconfdir}/rc.d/init.d/lxc
0af99319 259%{_sysconfdir}/rc.d/init.d/lxc-net
420dfb59 260%endif
87ff951e 261
1c41ddcb
GK
262%files libs
263%defattr(-,root,root)
ba5783a5 264%{_sbindir}/*
1c41ddcb
GK
265%{_libdir}/*.so.*
266%{_libdir}/%{name}
ce951132
DE
267%if %{with_python}
268%{_libdir}/python*
269%endif
7323456e 270%{_localstatedir}/*
e0f2f5c7 271%{_libexecdir}/%{name}
45e854dc 272%attr(4111,root,root) %{_libexecdir}/%{name}/lxc-user-nic
420dfb59 273%if %{with_systemd}
87ff951e 274%attr(555,root,root) %{_libexecdir}/%{name}/lxc-devsetup
0af99319
MW
275%attr(555,root,root) %{_libexecdir}/%{name}/lxc-net
276%attr(555,root,root) %{_libexecdir}/%{name}/lxc-containers
420dfb59 277%endif
1c41ddcb 278
58d6a17e
MW
279%if %{with_python}
280%{_libdir}/python3.3/site-packages/_lxc*
281%{_libdir}/python3.3/site-packages/lxc/*
282%endif
283
0adde0f8
DE
284%if %{with_lua}
285%files lua
286%defattr(-,root,root)
287%{_datadir}/lua
288%{_libdir}/lua
289%endif
290
5e97c3fc 291%files devel
292%defattr(-,root,root)
293%{_includedir}/%{name}/*
1c41ddcb 294%{_libdir}/*.so
b9cb4325 295%{_libdir}/pkgconfig/*
5e97c3fc 296
297%changelog
0adde0f8
DE
298* Tue Oct 22 2013 Dwight Engen <dwight.engen@oracle.com> - 1.0.0-0.1.alpha2
299- fix some rpmlint warnings/errors
ec64264d 300- split lua bits into separate package
0adde0f8
DE
301
302* Mon Sep 10 2012 Dwight Engen <dwight.engen@oracle.com> - 0.8.0
b9cb4325
DE
303- fix lxc-init moved to libexec
304- .pc moved to _libdir
305- package template files /usr/share/lxc/templates
306
0adde0f8 307* Thu Sep 8 2011 Greg Kurz <gkurz@fr.ibm.com> - 0.7.5.1
1c41ddcb
GK
308- fix installed files for rpmbuild
309- introduce lxc-libs package
b4915399 310
0adde0f8 311* Fri Jul 23 2010 Daniel Lezcano <dlezcano@fr.ibm.com> - 0.7.2
7ef6e440
DL
312- set attribute for installed files
313- fix libraries installation
7ef6e440 314
7920b1b4 315* Tue Mar 24 2009 Daniel Lezcano <daniel.lezcano@free.fr> - 0.6.1
237315ff
DL
316- Removed capability setting, let the user to do that through "lxc-setcap"
317
0adde0f8 318* Mon Feb 16 2009 Daniel Lezcano <daniel.lezcano@free.fr> - 0.6.0
44931bc7 319- Added more capabilities to the executables
320
0adde0f8 321* Sun Jan 25 2009 Daniel Lezcano <daniel.lezcano@free.fr> - 0.6.0
cef07149 322- Reduced spec file
323
0adde0f8 324* Sun Aug 3 2008 Daniel Lezcano <dlezcano@fr.ibm.com> - 0.1.0
5e97c3fc 325- Initial RPM release.
326
327# Local variables:
328# mode: shell-script
329# sh-shell: rpm
330# end: