($INBOX_DIR/description missing)
 help / color / mirror / Atom feed
From: Fathi Boudra <fathi.boudra@linaro.org>
To: openembedded-devel@lists.openembedded.org
Cc: Fathi Boudra <fathi.boudra@linaro.org>
Subject: [PATCH] [oe][meta-filesystem][PATCH v2] composefs: add a new recipe
Date: Tue,  9 Apr 2024 09:54:44 +0200	[thread overview]
Message-ID: <20240409075444.27196-1-fathi.boudra@linaro.org> (raw)

Tools to handle creating and mounting composefs images

Flexible mechanism to support read-only mountable filesystem trees,
stacking on top of Linux filesystem.

It will allow to enable filesystem integrity by leveraging the stack:
ostree -> composefs -> fs-verity

For reference:
https://github.com/containers/composefs?tab=readme-ov-file#filesystem-integrity
https://ostreedev.github.io/ostree/composefs/#using-composefs-with-ostree

Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
---

Changes since v1:
 * move the recipe to meta-filesystem due to fuse3 dependency.
 * add a patch to support latest musl due to the basename function
   https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7

 .../composefs/composefs_1.0.3.bb              | 23 ++++++
 ...e-portable-implementation-for-basena.patch | 75 +++++++++++++++++++
 2 files changed, 98 insertions(+)
 create mode 100644 meta-filesystems/recipes-support/composefs/composefs_1.0.3.bb
 create mode 100644 meta-filesystems/recipes-support/composefs/files/0001-musl-basename-use-portable-implementation-for-basena.patch

diff --git a/meta-filesystems/recipes-support/composefs/composefs_1.0.3.bb b/meta-filesystems/recipes-support/composefs/composefs_1.0.3.bb
new file mode 100644
index 0000000000..7607b0a12c
--- /dev/null
+++ b/meta-filesystems/recipes-support/composefs/composefs_1.0.3.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Tools to handle creating and mounting composefs images"
+HOMEPAGE = "https://github.com/containers/composefs"
+LICENSE = "GPL-3.0-or-later & LGPL-2.0-or-later & Apache-2.0"
+LIC_FILES_CHKSUM = "\
+    file://BSD-2-Clause.txt;md5=121c8a0a8fa5961a26b7863034ebcce8 \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
+    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+    file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504 \
+    file://LICENSE.Apache-2.0;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+"
+DEPENDS = "fuse3 openssl"
+SRCREV = "2d5cdcb9176cfe4ccf1761ef6d78e1c48de35649"
+PV = "1.0.3"
+
+SRC_URI = "\
+    git://github.com/containers/composefs.git;protocol=https;branch=main \
+    file://0001-musl-basename-use-portable-implementation-for-basena.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
diff --git a/meta-filesystems/recipes-support/composefs/files/0001-musl-basename-use-portable-implementation-for-basena.patch b/meta-filesystems/recipes-support/composefs/files/0001-musl-basename-use-portable-implementation-for-basena.patch
new file mode 100644
index 0000000000..49a0b21c6e
--- /dev/null
+++ b/meta-filesystems/recipes-support/composefs/files/0001-musl-basename-use-portable-implementation-for-basena.patch
@@ -0,0 +1,75 @@
+From b21a9d4f10a066cac76bb345d31fdd24afcf3e6f Mon Sep 17 00:00:00 2001
+From: Fathi Boudra <fathi.boudra@linaro.org>
+Date: Tue, 9 Apr 2024 08:47:37 +0200
+Subject: [PATCH] musl: basename: use portable implementation for basename API
+
+musl has removed the non-prototype declaration of basename from string.h which
+now results in build errors with newer clang compilers.
+
+Implement GNU basename behavior using strchr which is portable across libcs.
+
+Fixes:
+| ../../git/tools/mountcomposefs.c:43:20:
+| error: call to undeclared function 'basename'; ISO C99 and later do not
+| support implicit function declarations [-Wimplicit-function-declaration]
+|    43 |         const char *bin = basename(argv0);
+|       |                           ^
+| ../../git/tools/mountcomposefs.c:43:14:
+| error: incompatible integer to pointer conversion initializing 'const char *'
+| with an expression of type 'int' [-Wint-conversion]
+|    43 |         const char *bin = basename(argv0);
+|       |                     ^     ~~~~~~~~~~~~~~~
+
+For reference:
+https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Closes: https://github.com/containers/composefs/issues/272
+
+Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
+
+Upstream-Status: Submitted [https://github.com/containers/composefs/pull/273]
+---
+ libcomposefs/lcfs-utils.h |    6 ++++++
+ tools/mkcomposefs.c       |    2 +-
+ tools/mountcomposefs.c    |    3 ++-
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+--- a/tools/mountcomposefs.c
++++ b/tools/mountcomposefs.c
+@@ -37,10 +37,11 @@
+ #include <linux/fsverity.h>
+ 
+ #include "libcomposefs/lcfs-mount.h"
++#include "libcomposefs/lcfs-utils.h"
+ 
+ static void usage(const char *argv0)
+ {
+-	const char *bin = basename(argv0);
++	const char *bin = gnu_basename(argv0);
+ 	fprintf(stderr,
+ 		"usage: %s [-t type] [-o opt[,opts..]] IMAGE MOUNTPOINT\n"
+ 		"Example:\n"
+--- a/libcomposefs/lcfs-utils.h
++++ b/libcomposefs/lcfs-utils.h
+@@ -161,4 +161,10 @@ static inline void *steal_pointer(void *
+ /* type safety */
+ #define steal_pointer(pp) (0 ? (*(pp)) : (steal_pointer)(pp))
+ 
++static inline const char *gnu_basename(const char *filename)
++{
++	const char *p = strrchr(filename, '/');
++	return p ? p+1 : filename;
++}
++
+ #endif
+--- a/tools/mkcomposefs.c
++++ b/tools/mkcomposefs.c
+@@ -315,7 +315,7 @@ static int fill_store(struct lcfs_node_s
+ 
+ static void usage(const char *argv0)
+ {
+-	const char *bin = basename(argv0);
++	const char *bin = gnu_basename(argv0);
+ 	fprintf(stderr,
+ 		"Usage: %s [OPTIONS] SOURCE IMAGE\n"
+ 		"Options:\n"
-- 
2.43.0



             reply	other threads:[~2024-04-09  7:54 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-09  7:54 Fathi Boudra [this message]
2024-04-09 10:00 ` [PATCH] [oe][meta-filesystem][PATCH v2] composefs: add a new recipe Jose Quaresma
2024-04-09 10:09   ` Fathi Boudra
2024-04-09 10:28     ` Jose Quaresma

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240409075444.27196-1-fathi.boudra@linaro.org \
    --to=fathi.boudra@linaro.org \
    --cc=openembedded-devel@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).