X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=lxc.spec.in;h=7fcd811ff7e413f0f94453dc516813d86195c950;hb=2f32e37ef41c97ae9d166457d7b0141df96dc3fd;hp=763ce51a845822c5ec2b23166d37e03b0fa5707a;hpb=f7f1ba77b76e4d4dc18638cfdc859c3dc1750a9e;p=mirror_lxc.git diff --git a/lxc.spec.in b/lxc.spec.in index 763ce51a8..7fcd811ff 100644 --- a/lxc.spec.in +++ b/lxc.spec.in @@ -20,8 +20,31 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -%global with_python %{?_with_python: 1} %{?!_with_python: 0} -%global with_lua %{?_with_lua: 1} %{?!_with_lua: 0} +# Set with_systemd on distros that use it, so we can install the service +# file, otherwise the sysvinit script will be installed +%if 0%{?fedora} >= 14 || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210 +%global with_systemd 1 +%define init_script systemd +# +# BuildRequires systemd-units on fedora and rhel +%if 0%{?fedora} >= 14 || 0%{?rhel} >= 7 +BuildRequires: systemd-units +%endif +# +# BuildRequires systemd on openSUSE and SUSE +%if 0%{?suse_version} >= 1210 +BuildRequires: systemd +%endif +%else +%global with_systemd 0 +%define init_script sysvinit +%endif + +# Must use /var/run for runtime_path on older releases or dnsmasq in the +# lxc-net script will not be able to write its pid in /run (selinux denial) +%if 0%{?fedora} < 15 || 0%{?rhel} < 7 +%define _with_runtime_path --with-runtime-path=/var/run +%endif # RPM needs alpha/beta/rc in Release: not Version: to ensure smooth # package upgrades from alpha->beta->rc->release. For more info see: @@ -42,12 +65,37 @@ Summary: Linux Containers userspace tools Group: Applications/System License: LGPLv2+ BuildRoot: %{_tmppath}/%{name}-%{version}-build -Requires: openssl rsync -BuildRequires: libcap libcap-devel docbook2X +Requires: openssl rsync dnsmasq bridge-utils +Requires: %{name}-libs = %{version}-%{release} +Requires(pre): /usr/sbin/useradd +Requires(postun): /usr/sbin/userdel +%if 0%{?fedora} < 15 || 0%{?rhel} < 7 +Requires: libcgroup +%endif +# Note for Suse. The "docbook2X" BuildRequires does properly +# match docbook2x on Suse in a case insensitive manner +BuildRequires: libcap libcap-devel docbook2X graphviz libxslt pkgconfig -%if %{with_python} -Requires: python3 -BuildRequires: python3-devel +# +# Additional packages for openSUSE and SUSE +# +%if 0%{?suse_version} >= 1210 +PreReq: permissions +BuildRequires: libapparmor-devel linux-glibc-devel lsb-release docbook-utils + +# +# libseccomp-devel only needed on i386/i586/i686 and X86_64 +# +%ifarch %ix86 x86_64 +BuildRequires: libseccomp-devel +%endif +%endif + +# +# Additional package for Tizen +# +%if %{defined tizen_version} +BuildRequires: pkgconfig(dlog) %endif %description @@ -74,27 +122,16 @@ Requires: %{name} = %{version}-%{release}, pkgconfig The %{name}-devel package contains header files and library needed for development of the Linux containers. -%if %{with_lua} -%package lua -Summary: Lua bindings for %{name} -Group: System Environment/Libraries -Requires: lua-filesystem -BuildRequires: lua-devel -%description lua -The %{name}-lua package contains %{name} bindings for lua. -%endif - %prep %setup -q -n %{name}-%{version}%{?beta_dot} %build PATH=$PATH:/usr/sbin:/sbin %configure $args \ -%if %{with_lua} - --enable-lua \ +%if "x%{_unitdir}" != "x" + --with-systemdsystemunitdir=%{_unitdir} \ %endif -%if %{with_python} - --enable-python \ -%endif - --disable-rpath + %{?_with_runtime_path} \ + --disable-rpath \ + --with-init-script=%{init_script} make %{?_smp_mflags} %install @@ -102,58 +139,133 @@ rm -rf %{buildroot} make install DESTDIR=%{buildroot} find %{buildroot} -type f -name '*.la' -exec rm -f {} ';' -# Install some of our systemd stuff... -install -d -m 755 %{buildroot}/lib/systemd/system -install -c -m 644 src/lxc/lxc.service %{buildroot}/lib/systemd/system -install -c -m 755 src/lxc/lxc-devsetup %{buildroot}/%{_libexecdir}/%{name} - %clean rm -rf %{buildroot} +%pre +# Ensure that lxc-dnsmasq uid & gid gets correctly allocated +if getent passwd lxc-dnsmasq >/dev/null 2>&1 ; then : ; else \ + /usr/sbin/useradd -M -r -s /sbin/nologin \ + -c "LXC Networking Service" -d %_localstatedir/%name lxc-dnsmasq 2> /dev/null \ + || exit 1 +fi + %post +# This test should trigger a network configure on a new install. +if [ ! -d @LXC_DISTRO_SYSCONF@ ] +then + mkdir -p @LXC_DISTRO_SYSCONF@ +fi + +if [ ! -f @LXC_DISTRO_SYSCONF@/lxc-net ] || ! grep -q 'USE_LXC_BRIDGE=' @LXC_DISTRO_SYSCONF@/lxc-net +then + # Grab a random 10net subnet. Need to add test logic... + while [ true ] + do + SUBNET=10.$(($RANDOM % 256)).$(($RANDOM % 256)) + if ! ip -4 route ls | grep -q "^$SUBNET" + then + break + fi + done + + cat > @LXC_DISTRO_SYSCONF@/lxc-net </config) for any containers +# already created using the default config to reflect the new bridge +# name. +# If you have the dnsmasq daemon installed, you'll also have to update +# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. +LXC_BRIDGE="lxcbr0" +LXC_BRIDGE_MAC="00:16:3e:00:00:00" +LXC_ADDR="$SUBNET.1" +LXC_NETMASK="255.255.255.0" +LXC_NETWORK="$SUBNET.0/24" +LXC_DHCP_RANGE="$SUBNET.2,$SUBNET.254" +LXC_DHCP_MAX="253" +# Uncomment the next line if you'd like to use a conf-file for the lxcbr0 +# dnsmasq. For instance, you can use 'dhcp-host=mail1,10.0.3.100' to have +# container 'mail1' always get ip address 10.0.3.100. +#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf + +# Uncomment the next line if you want lxcbr0's dnsmasq to resolve the .lxc +# domain. You can then add "server=/lxc/10.0.3.1' (or your actual $LXC_ADDR) +# to /etc/dnsmasq.conf, after which 'container1.lxc' will resolve on your +# host. +#LXC_DOMAIN="lxc" +EOF +fi + +%postun +/usr/sbin/userdel lxc-dnsmasq > /dev/null 2>&1 || : + %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig %files %defattr(-,root,root) %{_bindir}/* -%attr(4111,root,root) %{_bindir}/lxc-attach -%attr(4111,root,root) %{_bindir}/lxc-create -%attr(4111,root,root) %{_bindir}/lxc-clone -%attr(4111,root,root) %{_bindir}/lxc-start -%attr(4111,root,root) %{_bindir}/lxc-netstat -%attr(4111,root,root) %{_bindir}/lxc-unshare -%attr(4111,root,root) %{_bindir}/lxc-execute -%attr(4111,root,root) %{_bindir}/lxc-checkpoint -%attr(4111,root,root) %{_bindir}/lxc-restart +# openSUSE/SUSE +%if 0%{?suse_version} >= 1210 +%dir %{_sysconfdir}/apparmor.d +%dir %{_sysconfdir}/apparmor.d/abstractions +%dir %{_sysconfdir}/apparmor.d/abstractions/%{name} +%config %{_sysconfdir}/apparmor.d/abstractions/%{name}/container-base +%config %{_sysconfdir}/apparmor.d/abstractions/%{name}/start-container +%config %{_sysconfdir}/apparmor.d/%{name}-containers +%dir %{_sysconfdir}/apparmor.d/%{name} +%config %{_sysconfdir}/apparmor.d/%{name}/%{name}-default +%config %{_sysconfdir}/apparmor.d/%{name}/%{name}-default-with-mounting +%config %{_sysconfdir}/apparmor.d/%{name}/%{name}-default-with-nesting +%config %{_sysconfdir}/apparmor.d/usr.bin.%{name}-start +%endif %{_mandir}/man1/lxc* %{_mandir}/man5/lxc* %{_mandir}/man7/lxc* +# not openSUSE/SUSE +%if %{undefined suse_version} %{_mandir}/ja/man1/lxc* %{_mandir}/ja/man5/lxc* %{_mandir}/ja/man7/lxc* +%{_mandir}/ko/man1/lxc* +%{_mandir}/ko/man5/lxc* +%{_mandir}/ko/man7/lxc* +%endif %{_datadir}/doc/* %{_datadir}/lxc/* +%{_sysconfdir}/bash_completion.d %config(noreplace) %{_sysconfdir}/lxc/* +%config(noreplace) %{_sysconfdir}/sysconfig/* -/lib/systemd/system/* +%if %{with_systemd} +%{_unitdir}/lxc-net.service +%{_unitdir}/lxc.service +%{_unitdir}/lxc@.service +%else +%{_sysconfdir}/rc.d/init.d/lxc +%{_sysconfdir}/rc.d/init.d/lxc-net +%endif %files libs %defattr(-,root,root) +%{_sbindir}/* %{_libdir}/*.so.* +%{_libdir}/*.a %{_libdir}/%{name} -%if %{with_python} -%{_libdir}/python* -%endif %{_localstatedir}/* -%attr(4555,root,root) %{_libexecdir}/%{name}/lxc-init -%attr(555,root,root) %{_libexecdir}/%{name}/lxc-devsetup - -%if %{with_lua} -%files lua -%defattr(-,root,root) -%{_datadir}/lua -%{_libdir}/lua +%{_libexecdir}/%{name}/hooks/unmount-namespace +%{_libexecdir}/%{name}/lxc-apparmor-load +%{_libexecdir}/%{name}/lxc-monitord +%attr(4111,root,root) %{_libexecdir}/%{name}/lxc-user-nic +%if %{with_systemd} +%attr(555,root,root) %{_libexecdir}/%{name}/lxc-net +%attr(555,root,root) %{_libexecdir}/%{name}/lxc-containers %endif %files devel @@ -165,7 +277,7 @@ rm -rf %{buildroot} %changelog * Tue Oct 22 2013 Dwight Engen - 1.0.0-0.1.alpha2 - fix some rpmlint warnings/errors -- split lua bits into seperate package +- split lua bits into separate package * Mon Sep 10 2012 Dwight Engen - 0.8.0 - fix lxc-init moved to libexec