SliTaz Packages

Community Doc Forum Pro Shop Bugs Hg
.

Receipt for package “lxc”

# SliTaz package receipt.

PACKAGE="lxc"
VERSION="5.0.3"
CATEGORY="system-tools"
SHORT_DESC="Userspace control package for Linux Containers."
MAINTAINER="maintainer@slitaz.org"
LICENSE="LGPL2.1"
WEB_SITE="https://linuxcontainers.org/lxc/"

TARBALL="$PACKAGE-$VERSION.tar.gz"
WGET_URL="https://linuxcontainers.org/downloads/$PACKAGE/$TARBALL"

DEPENDS="bridge-utils gcc-lib-base gnutls iptables libcap \
linux-bridge linux-netfilter perl util-linux-getopt libseccomp \
busybox-pam shadow"
BUILD_DEPENDS="meson gnutls-dev libcap-dev openssl-dev \
libseccomp-dev pam-dev util-linux-getopt"

HOST_ARCH="i486 x86_64"

# What is the latest version available today?
current_version()
{
    wget -O - https://linuxcontainers.org/lxc/downloads/ 2>/dev/null | \
    sed '/\/lxc-[0-9]/!d;s|.*lxc-||;s|.tar.*||;q'
}

# Rules to configure and make the package.
compile_rules()
{
    # Workaround, with lxc > 4.x we have flood cc1 about miss usr/include
    CFLAGS="$CFLAGS -Wno-missing-include-dirs"

    meson _build \
        --prefix=/usr \
        --libdir=lib \
        --libexecdir=/usr/lib \
        --bindir=/usr/bin \
        --sbindir=/usr/sbin \
        --sysconfdir=/etc \
        --buildtype=release \
    -Ddistrosysconfdir=/etc/default \
    -Dglobal-config-path=/etc/lxc \
    -Drootfs-mount-path=/var/lib/lxc \
    -Dapparmor=false \
    -Dselinux=false \
    -Dman=false \
    -Dpam-cgroup=true \
    -Dinit-script=sysvinit

    ninja -C _build
    DESTDIR=$install ninja -C _build install
}

# Rules to gen a SliTaz package suitable for Tazpkg.   
genpkg_rules()                                      
{
    mkdir -p $fs/lib $fs/etc/init.d $fs/usr/share

    cp -a $install/usr/share/lxc    $fs/usr/share

    cook_copy_folders    bin
    cook_copy_folders    lib

    rm -rf                $fs/usr/lib/pkgconfig

    cp -a $install/etc/default $fs/etc
    cp -a $install/etc/lxc    $fs/etc

    cook_copy_folders    var

    sed -i    -e 's/^is_set(/zgrep() { zcat | grep "$@"; }\n\n&/' \
        -e 's/\(.*\$GREP .*\)\(\$CONFIG.*\)/\1< \2/' \
                    $fs/usr/bin/lxc-checkconfig
    chmod +x            $fs/usr/bin/lxc-*

    # Copy stuff for cgroupfs
    cp -a $stuff/cgroupfs-* $fs/usr/bin
    chmod +x $fs/usr/bin/cgroupfs-*
    cp -a $stuff/cgroupfs $fs/etc/init.d

    ## Copy necessary stuff for unprivileged containers
    # Move pam_cgfs.so to /lib/security
    mv $fs/usr/lib/security    $fs/lib
    chmod +x $fs/lib/security/pam_cgfs.so
    cp $stuff/lxc-usernet $fs/etc/lxc
    mkdir $fs/usr/share/lxc/examples
    cp $stuff/default-unprivileged.conf $fs/usr/share/lxc/examples
    cp $stuff/sub*id $fs/etc

    # Ensure cgroup mounted inside containers
    sed -i 's/cgroup:mixed/cgroup:mixed:force/g' $fs/usr/share/lxc/templates/lxc-*
}

post_install()
{
    # Ensure br_netfilter module loaded at startup
    if ! grep -q br_netfilter $1/etc/rcS.conf; then
         sed -i 's/LOAD_MODULES="/&br_netfilter /' "$1/etc/rcS.conf"
    fi
    modprobe br_netfilter

        grep ^RUN_DAEMONS "$1/etc/rcS.conf" | grep -q "cgroupfs" || sed -i \
          's/RUN_DAEMONS="/&cgroupfs /' "$1/etc/rcS.conf"

    grep -q 'pam_cgfs.so' "$1/etc/pam.d/login" || cat <<EOT >> "$1/etc/pam.d/login"
session    required    pam_cgfs.so    -c freezer,cpu,cpuset,memory
EOT

    # mount cgroup hierarchy
    $1/etc/init.d/cgroupfs start

    [ -n "$1" ] && return
    lxc-checkconfig  | tee /dev/stderr | grep -q required && cat <<EOT

You have to fix your kernel configuration first to use lxc !

EOT
}

pre_remove()
{
    sed -i "s/cgroupfs //" "$1/etc/rcS.conf"
    sed -i '/pam_cgfs/d' "$1/etc/pam.d/login"
}
6107 packages and 261132 files in current database (Mon 07 Jul 2025 12:01:25 AM UTC)