lxc: 5.0.3 -> 6.0.0

This commit is contained in:
Tim Biermann 2024-04-05 23:32:06 +02:00
parent 72cd82318f
commit 463b5febaa
Signed by: tb
GPG Key ID: 42F8B4E30B673606
5 changed files with 10 additions and 455 deletions

View File

@ -48,8 +48,8 @@ drwxr-xr-x root/root usr/include/lxc/
drwxr-xr-x root/root usr/lib/
-rw-r--r-- root/root usr/lib/liblxc.a
lrwxrwxrwx root/root usr/lib/liblxc.so -> liblxc.so.1
lrwxrwxrwx root/root usr/lib/liblxc.so.1 -> liblxc.so.1.7.0
-rwxr-xr-x root/root usr/lib/liblxc.so.1.7.0
lrwxrwxrwx root/root usr/lib/liblxc.so.1 -> liblxc.so.1.8.0
-rwxr-xr-x root/root usr/lib/liblxc.so.1.8.0
drwxr-xr-x root/root usr/lib/lxc/
drwxr-xr-x root/root usr/lib/lxc/hooks/
-rwxr-xr-x root/root usr/lib/lxc/hooks/unmount-namespace

View File

@ -1,8 +1,8 @@
untrusted comment: verify with /etc/ports/contrib.pub
RWSagIOpLGJF36l8CLTzpgu2mpaWnFyPlyegj9K8lA6mQrrHbH1x5pe0nqYBahj9YzJcFTnEYNqsV8fWB68kim2xktoHTGH7xwg=
SHA256 (Pkgfile) = 0fd95e5718281692da42098afe7dc3d3562a82e60a988c6009907ef06c215488
SHA256 (.footprint) = 72a44af4eade1eadbf064767d92890daad3c785b09d001b85987d63c7bd5e3be
SHA256 (lxc-5.0.3.tar.gz) = 2693a4c654dcfdafb3aa95c262051d8122afa1b6f5cef1920221ebbdee934d07
RWSagIOpLGJF36sjSDLJ9Vyg/wglmG0RCMvajIB5Cg7jbjRZhPd3KLZTG3bRYOmUVgbM6HGzthNHBhLFkS5ZuPFUUQYJoeKq7AU=
SHA256 (Pkgfile) = 52e451a794abadc008b40ad00321787d27da92ce8a93a910f5a2d602b0a189ec
SHA256 (.footprint) = d5f2272c73c2346be27b5c3dd677a7deb3f264fa023551d2c5f3779361346f2e
SHA256 (lxc-6.0.0.tar.gz) = 3f6981c61ff39f9e550a18cf22d6e26792cde5dd34f9d3c93badfeaaee8814b2
SHA256 (default.conf) = 6739fe54ffe7924a63fd47d8ff4b453e08b78bbd1b08e4426504b8f740e8b55f
SHA256 (lxc-usernet) = 83c30e9489fffd7bf815e312860e2c9b3022a0f422570d35a19eb021b433fe0f
SHA256 (lxc-users-setup) = 995f72d2284334ab84790951cfbf91d9b7016f4a93a3c51d774dea0e04e8000b

View File

@ -1,63 +0,0 @@
From 16ebb29dccb35bf74e8a19e8c45d2513f927476f Mon Sep 17 00:00:00 2001
Message-Id: <16ebb29dccb35bf74e8a19e8c45d2513f927476f.1660130248.git.congdanhqx@gmail.com>
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
<congdanhqx@gmail.com>
Date: Tue, 9 Aug 2022 22:24:09 +0700
Subject: [PATCH] meson.build: allow explicit distrosysconfdir
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Allows either:
- Build inside minimal-and-clean chroot with neither
/etc/sysconfig nor /etc/default available.
- Cross Compile lxc from foreign distro,
let's say host distro uses /etc/sysconfig and build distro
uses /etc/default and vice versus.
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
---
meson.build | 8 ++++++--
meson_options.txt | 3 +++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index a145faf0..b27cc8ed 100644
--- a/meson.build
+++ b/meson.build
@@ -117,14 +117,18 @@ conf.set('SYSCONFDIR', sysconfdir)
# Set sysconfdir
fs = import('fs')
-if fs.is_dir('/etc/sysconfig')
+distrosysconfdir = get_option('distrosysconfdir')
+if distrosysconfdir != ''
+ distrosysconfdir = join_paths(sysconfdir, distrosysconfdir)
+ conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
+elif fs.is_dir('/etc/sysconfig')
distrosysconfdir = join_paths(sysconfdir, 'sysconfig')
conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
elif fs.is_dir('/etc/default')
distrosysconfdir = join_paths(sysconfdir, 'default')
conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
else
- distrosysconfdir = ''
+ error('"distrosysconfdir" is not set')
endif
# Cross-compile on Android.
diff --git a/meson_options.txt b/meson_options.txt
index c14dacf2..de583a08 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -115,3 +115,6 @@ option('thread-safety', type : 'boolean', value : 'true',
# was --{disable,enable}-memfd-rexec in autotools
option('memfd-rexec', type : 'boolean', value : 'true',
description : 'whether to rexec the lxc-attach binary when attaching to a container')
+
+option('distrosysconfdir', type : 'string', value: '',
+ description: 'relative path to sysconfdir for distro default configuration')
--
2.37.1.561.ga4036fcf2c

View File

@ -1,383 +0,0 @@
From c1115e1503bf955c97f4cf3b925a6a9f619764c3 Mon Sep 17 00:00:00 2001
From: Christian Brauner <brauner@kernel.org>
Date: Tue, 9 Aug 2022 16:14:25 +0200
Subject: [PATCH 1/3] build: detect where struct mount_attr is declared
Fixes: #4176
Signed-off-by: Christian Brauner (Microsoft) <christian.brauner@ubuntu.com>
---
meson.build | 30 ++++++++++++++++++++++++++++--
src/lxc/conf.c | 6 +++---
src/lxc/conf.h | 2 +-
src/lxc/mount_utils.c | 6 +++---
src/lxc/syscall_wrappers.h | 12 ++++++++++--
5 files changed, 45 insertions(+), 11 deletions(-)
diff --git a/meson.build b/meson.build
index a145faf069..f679aabbc8 100644
--- a/meson.build
+++ b/meson.build
@@ -590,7 +590,6 @@ decl_headers = '''
foreach decl: [
'__aligned_u64',
'struct clone_args',
- 'struct mount_attr',
'struct open_how',
'struct rtnl_link_stats64',
]
@@ -610,7 +609,6 @@ foreach tuple: [
['struct seccomp_notif_sizes'],
['struct clone_args'],
['__aligned_u64'],
- ['struct mount_attr'],
['struct open_how'],
['struct rtnl_link_stats64'],
]
@@ -630,6 +628,34 @@ foreach tuple: [
endif
endforeach
+## Types.
+decl_headers = '''
+#include <sys/mount.h>
+'''
+
+# We get -1 if the size cannot be determined
+if cc.sizeof('struct mount_attr', prefix: decl_headers, args: '-D_GNU_SOURCE') > 0
+ srcconf.set10('HAVE_' + 'struct mount_attr'.underscorify().to_upper(), true)
+ found_types += 'struct mount_attr (sys/mount.h)'
+else
+ srcconf.set10('HAVE_' + 'struct mount_attr'.underscorify().to_upper(), false)
+ missing_types += 'struct mount_attr (sys/mount.h)'
+endif
+
+## Types.
+decl_headers = '''
+#include <linux/mount.h>
+'''
+
+# We get -1 if the size cannot be determined
+if cc.sizeof('struct mount_attr', prefix: decl_headers, args: '-D_GNU_SOURCE') > 0
+ srcconf.set10('HAVE_UAPI_' + 'struct mount_attr'.underscorify().to_upper(), true)
+ found_types += 'struct mount_attr (linux/mount.h)'
+else
+ srcconf.set10('HAVE_UAPI_' + 'struct mount_attr'.underscorify().to_upper(), false)
+ missing_types += 'struct mount_attr (linux/mount.h)'
+endif
+
## Headers.
foreach ident: [
['bpf', '''#include <sys/syscall.h>
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index ffbe74c2f6..4193cd07f5 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -2885,7 +2885,7 @@ static int __lxc_idmapped_mounts_child(struct lxc_handler *handler, FILE *f)
struct lxc_mount_options opts = {};
int dfd_from;
const char *source_relative, *target_relative;
- struct lxc_mount_attr attr = {};
+ struct mount_attr attr = {};
ret = parse_lxc_mount_attrs(&opts, mntent.mnt_opts);
if (ret < 0)
@@ -3005,7 +3005,7 @@ static int __lxc_idmapped_mounts_child(struct lxc_handler *handler, FILE *f)
/* Set propagation mount options. */
if (opts.attr.propagation) {
- attr = (struct lxc_mount_attr) {
+ attr = (struct mount_attr) {
.propagation = opts.attr.propagation,
};
@@ -4109,7 +4109,7 @@ int lxc_idmapped_mounts_parent(struct lxc_handler *handler)
for (;;) {
__do_close int fd_from = -EBADF, fd_userns = -EBADF;
- struct lxc_mount_attr attr = {};
+ struct mount_attr attr = {};
struct lxc_mount_options opts = {};
ssize_t ret;
diff --git a/src/lxc/conf.h b/src/lxc/conf.h
index 7dc2f15b60..772479f9e1 100644
--- a/src/lxc/conf.h
+++ b/src/lxc/conf.h
@@ -223,7 +223,7 @@ struct lxc_mount_options {
unsigned long mnt_flags;
unsigned long prop_flags;
char *data;
- struct lxc_mount_attr attr;
+ struct mount_attr attr;
char *raw_options;
};
diff --git a/src/lxc/mount_utils.c b/src/lxc/mount_utils.c
index bba75f933c..88dd73ee36 100644
--- a/src/lxc/mount_utils.c
+++ b/src/lxc/mount_utils.c
@@ -31,7 +31,7 @@ lxc_log_define(mount_utils, lxc);
* setting in @attr_set, but must also specify MOUNT_ATTR__ATIME in the
* @attr_clr field.
*/
-static inline void set_atime(struct lxc_mount_attr *attr)
+static inline void set_atime(struct mount_attr *attr)
{
switch (attr->attr_set & MOUNT_ATTR__ATIME) {
case MOUNT_ATTR_RELATIME:
@@ -272,7 +272,7 @@ int create_detached_idmapped_mount(const char *path, int userns_fd,
{
__do_close int fd_tree_from = -EBADF;
unsigned int open_tree_flags = OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC;
- struct lxc_mount_attr attr = {
+ struct mount_attr attr = {
.attr_set = MOUNT_ATTR_IDMAP | attr_set,
.attr_clr = attr_clr,
.userns_fd = userns_fd,
@@ -335,7 +335,7 @@ int __fd_bind_mount(int dfd_from, const char *path_from, __u64 o_flags_from,
__u64 attr_clr, __u64 propagation, int userns_fd,
bool recursive)
{
- struct lxc_mount_attr attr = {
+ struct mount_attr attr = {
.attr_set = attr_set,
.attr_clr = attr_clr,
.propagation = propagation,
diff --git a/src/lxc/syscall_wrappers.h b/src/lxc/syscall_wrappers.h
index a5e98b565c..c8a7d0c7b7 100644
--- a/src/lxc/syscall_wrappers.h
+++ b/src/lxc/syscall_wrappers.h
@@ -18,6 +18,12 @@
#include "macro.h"
#include "syscall_numbers.h"
+#if HAVE_STRUCT_MOUNT_ATTR
+#include <sys/mount.h>
+#elif HAVE_UAPI_STRUCT_MOUNT_ATTR
+#include <linux/mount.h>
+#endif
+
#ifdef HAVE_LINUX_MEMFD_H
#include <linux/memfd.h>
#endif
@@ -210,16 +216,18 @@ extern int fsmount(int fs_fd, unsigned int flags, unsigned int attr_flags);
/*
* mount_setattr()
*/
-struct lxc_mount_attr {
+#if !HAVE_STRUCT_MOUNT_ATTR && !HAVE_UAPI_STRUCT_MOUNT_ATTR
+struct mount_attr {
__u64 attr_set;
__u64 attr_clr;
__u64 propagation;
__u64 userns_fd;
};
+#endif
#if !HAVE_MOUNT_SETATTR
static inline int mount_setattr(int dfd, const char *path, unsigned int flags,
- struct lxc_mount_attr *attr, size_t size)
+ struct mount_attr *attr, size_t size)
{
return syscall(__NR_mount_setattr, dfd, path, flags, attr, size);
}
From ef1e0607b82e27350c2d677d649c6a0a9693fd40 Mon Sep 17 00:00:00 2001
From: Christian Brauner <brauner@kernel.org>
Date: Tue, 9 Aug 2022 16:27:40 +0200
Subject: [PATCH 2/3] build: detect sys/pidfd.h availability
Fixes: #4176
Signed-off-by: Christian Brauner (Microsoft) <christian.brauner@ubuntu.com>
---
meson.build | 1 +
src/lxc/process_utils.h | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/meson.build b/meson.build
index f679aabbc8..e999542336 100644
--- a/meson.build
+++ b/meson.build
@@ -735,6 +735,7 @@ foreach tuple: [
['sys/resource.h'],
['sys/memfd.h'],
['sys/personality.h'],
+ ['sys/pidfd.h'],
['sys/signalfd.h'],
['sys/timerfd.h'],
['pty.h'],
diff --git a/src/lxc/process_utils.h b/src/lxc/process_utils.h
index 9c15b15741..ed84741d0e 100644
--- a/src/lxc/process_utils.h
+++ b/src/lxc/process_utils.h
@@ -15,6 +15,10 @@
#include <sys/syscall.h>
#include <unistd.h>
+#if HAVE_SYS_PIDFD_H
+#include <sys/pidfd.h>
+#endif
+
#include "compiler.h"
#include "syscall_numbers.h"
@@ -136,9 +140,11 @@
#endif
/* waitid */
+#if !HAVE_SYS_PIDFD_H
#ifndef P_PIDFD
#define P_PIDFD 3
#endif
+#endif
#ifndef CLONE_ARGS_SIZE_VER0
#define CLONE_ARGS_SIZE_VER0 64 /* sizeof first published struct */
From cbabe8abf11e7e7fb49c123bae31efdd9bc8f1e8 Mon Sep 17 00:00:00 2001
From: Christian Brauner <brauner@kernel.org>
Date: Tue, 9 Aug 2022 17:19:40 +0200
Subject: [PATCH 3/3] build: check for FS_CONFIG_* header symbol in sys/mount.h
Fixes: #4176
Signed-off-by: Christian Brauner (Microsoft) <christian.brauner@ubuntu.com>
---
meson.build | 59 +++++++++++++++++++++++++++++++++++++++++--
src/lxc/mount_utils.h | 16 ++++++++++++
2 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index e999542336..9f8a5de60c 100644
--- a/meson.build
+++ b/meson.build
@@ -639,8 +639,7 @@ if cc.sizeof('struct mount_attr', prefix: decl_headers, args: '-D_GNU_SOURCE') >
found_types += 'struct mount_attr (sys/mount.h)'
else
srcconf.set10('HAVE_' + 'struct mount_attr'.underscorify().to_upper(), false)
- missing_types += 'struct mount_attr (sys/mount.h)'
-endif
+ missing_types += 'struct mount_attr (sys/mount.h)' endif
## Types.
decl_headers = '''
@@ -656,6 +655,62 @@ else
missing_types += 'struct mount_attr (linux/mount.h)'
endif
+if cc.has_header_symbol('sys/mount.h', 'FSCONFIG_SET_FLAG')
+ srcconf.set10('HAVE_' + 'FSCONFIG_SET_FLAG'.underscorify().to_upper(), true)
+ found_types += 'FSCONFIG_SET_FLAG'
+else
+ srcconf.set10('HAVE_' + 'FSCONFIG_SET_FLAG'.underscorify().to_upper(), false)
+ missing_types += 'FSCONFIG_SET_FLAG'
+endif
+
+if cc.has_header_symbol('sys/mount.h', 'FS_CONFIG_SET_STRING')
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_STRING'.underscorify().to_upper(), true)
+ found_types += 'FS_CONFIG_SET_STRING'
+else
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_STRING'.underscorify().to_upper(), false)
+ missing_types += 'FS_CONFIG_SET_STRING'
+endif
+
+if cc.has_header_symbol('sys/mount.h', 'FS_CONFIG_SET_BINARY')
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_BINARY'.underscorify().to_upper(), true)
+ found_types += 'FS_CONFIG_SET_BINARY'
+else
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_BINARY'.underscorify().to_upper(), false)
+ missing_types += 'FS_CONFIG_SET_BINARY'
+endif
+
+if cc.has_header_symbol('sys/mount.h', 'FS_CONFIG_SET_PATH_EMPTY')
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_PATH_EMPTY'.underscorify().to_upper(), true)
+ found_types += 'FS_CONFIG_SET_PATH_EMPTY'
+else
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_PATH_EMPTY'.underscorify().to_upper(), false)
+ missing_types += 'FS_CONFIG_SET_PATH_EMPTY'
+endif
+
+if cc.has_header_symbol('sys/mount.h', 'FS_CONFIG_SET_PATH_FD')
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_PATH_FD'.underscorify().to_upper(), true)
+ found_types += 'FS_CONFIG_SET_PATH_FD'
+else
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_PATH_FD'.underscorify().to_upper(), false)
+ missing_types += 'FS_CONFIG_SET_PATH_FD'
+endif
+
+if cc.has_header_symbol('sys/mount.h', 'FS_CONFIG_SET_CMD_CREATE')
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_CMD_CREATE'.underscorify().to_upper(), true)
+ found_types += 'FS_CONFIG_SET_CMD_CREATE'
+else
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_CMD_CREATE'.underscorify().to_upper(), false)
+ missing_types += 'FS_CONFIG_SET_CMD_CREATE'
+endif
+
+if cc.has_header_symbol('sys/mount.h', 'FS_CONFIG_SET_CMD_RECONFIGURE')
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_CMD_RECONFIGURE'.underscorify().to_upper(), true)
+ found_types += 'FS_CONFIG_SET_CMD_RECONFIGURE'
+else
+ srcconf.set10('HAVE_' + 'FS_CONFIG_SET_CMD_RECONFIGURE'.underscorify().to_upper(), false)
+ missing_types += 'FS_CONFIG_SET_CMD_RECONFIGURE'
+endif
+
## Headers.
foreach ident: [
['bpf', '''#include <sys/syscall.h>
diff --git a/src/lxc/mount_utils.h b/src/lxc/mount_utils.h
index ea392672d8..fd34739459 100644
--- a/src/lxc/mount_utils.h
+++ b/src/lxc/mount_utils.h
@@ -82,37 +82,53 @@ struct lxc_rootfs;
#endif
/* fsconfig() commands */
+#if !HAVE_FSCONFIG_SET_FLAG
#ifndef FSCONFIG_SET_FLAG
#define FSCONFIG_SET_FLAG 0 /* Set parameter, supplying no value */
#endif
+#endif
+#if !HAVE_FSCONFIG_SET_STRING
#ifndef FSCONFIG_SET_STRING
#define FSCONFIG_SET_STRING 1 /* Set parameter, supplying a string value */
#endif
+#endif
+#if !HAVE_FSCONFIG_SET_BINARY
#ifndef FSCONFIG_SET_BINARY
#define FSCONFIG_SET_BINARY 2 /* Set parameter, supplying a binary blob value */
#endif
+#endif
+#if !HAVE_FSCONFIG_SET_PATH
#ifndef FSCONFIG_SET_PATH
#define FSCONFIG_SET_PATH 3 /* Set parameter, supplying an object by path */
#endif
+#endif
+#if !HAVE_FSCONFIG_SET_PATH_EMPTY
#ifndef FSCONFIG_SET_PATH_EMPTY
#define FSCONFIG_SET_PATH_EMPTY 4 /* Set parameter, supplying an object by (empty) path */
#endif
+#endif
+#if !HAVE_FSCONFIG_SET_FD
#ifndef FSCONFIG_SET_FD
#define FSCONFIG_SET_FD 5 /* Set parameter, supplying an object by fd */
#endif
+#endif
+#if !HAVE_FSCONFIG_CMD_CREATE
#ifndef FSCONFIG_CMD_CREATE
#define FSCONFIG_CMD_CREATE 6 /* Invoke superblock creation */
#endif
+#endif
+#if !FSCONFIG_CMD_RECONFIGURE
#ifndef FSCONFIG_CMD_RECONFIGURE
#define FSCONFIG_CMD_RECONFIGURE 7 /* Invoke superblock reconfiguration */
#endif
+#endif
/* fsmount() flags */
#ifndef FSMOUNT_CLOEXEC

View File

@ -1,11 +1,11 @@
# Description: container namespace cgroup virtualisation for linux guests
# URL: https://linuxcontainers.org/lxc
# Maintainer: Tim Biermann, tbier at posteo dot de
# Depends: libseccomp meson ninja
# Optional: dnsmasq gnupg lua
# Depends: libseccomp
# Optional: dbus dnsmasq gnupg lua
name=lxc
version=5.0.3
version=6.0.0
release=1
source=(https://linuxcontainers.org/downloads/$name/$name-$version.tar.gz
default.conf lxc-usernet lxc-users-setup lxc-users lxc-cgroups lxc-net)
@ -15,6 +15,7 @@ build() {
# fix pam_libdir
sed "/pam_security/s/libdir/'\/', 'lib'/" -i $name-$version/meson.build
prt-get isinst dbus && PKGMK_LXC+=' -D dbus=true' || PKGMK_LXC+=' -D dbus=false'
prt-get isinst docbook2x && PKGMK_LXC+=' -D man=true' || PKGMK_LXC+=' -D man=false'
meson setup $name-$version build $PKGMK_LXC \