From 3647395fe5b14b22a70215f1b2a7046098c75bf3 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 15 Feb 2024 10:31:26 -0500 Subject: [PATCH 1/3] tests: Skip composefs tests without the feature Previously this was masked by us shipping composefs vendored. --- tests/test-admin-deploy-composefs.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test-admin-deploy-composefs.sh b/tests/test-admin-deploy-composefs.sh index a4565a7416..fd39dc8d5d 100755 --- a/tests/test-admin-deploy-composefs.sh +++ b/tests/test-admin-deploy-composefs.sh @@ -21,6 +21,8 @@ set -euox pipefail . $(dirname $0)/libtest.sh +skip_without_ostree_feature composefs + # Exports OSTREE_SYSROOT so --sysroot not needed. setup_os_repository "archive" "syslinux" From 8a9f067d616b4634b8373a169fc0154ebbdfbca5 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Sun, 3 Dec 2023 15:24:52 -0500 Subject: [PATCH 2/3] ci: Drop `SKIP_INSTALLDEPS=1` Right now there's skew where we don't have composefs-devel in the buildroot. In general this optimization isn't worth it. --- .cci.jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cci.jenkinsfile b/.cci.jenkinsfile index 1f41be1a19..d586edde6c 100644 --- a/.cci.jenkinsfile +++ b/.cci.jenkinsfile @@ -18,7 +18,7 @@ stage("Build") { git fetch origin --tags git submodule update --init - env MAKE_JOBS=${n} SKIP_INSTALLDEPS=1 ./ci/build.sh + env MAKE_JOBS=${n} ./ci/build.sh """) } stage("Unit tests") { From eb54a44169cf83470dab49b0342ffd6e9b66cf0e Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 15 Feb 2024 10:15:26 -0500 Subject: [PATCH 3/3] Switch to external composefs Since there's now a stable shared library, let's use it. --- .gitmodules | 3 -- Makefile-libostree.am | 4 +-- Makefile-switchroot.am | 4 +-- Makefile.am | 6 ---- autogen.sh | 1 - ci/installdeps.sh | 2 ++ composefs | 1 - configure.ac | 66 ++++++++++++------------------------------ 8 files changed, 25 insertions(+), 62 deletions(-) delete mode 160000 composefs diff --git a/.gitmodules b/.gitmodules index da3863f6e3..00d1685de8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,6 +4,3 @@ [submodule "bsdiff"] path = bsdiff url = https://github.com/mendsley/bsdiff -[submodule "composefs"] - path = composefs - url = https://github.com/containers/composefs.git diff --git a/Makefile-libostree.am b/Makefile-libostree.am index b80be2e9f0..b18e1c236c 100644 --- a/Makefile-libostree.am +++ b/Makefile-libostree.am @@ -186,7 +186,7 @@ EXTRA_DIST += \ $(top_srcdir)/src/libostree/libostree-released.sym \ $(NULL) -libostree_1_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/bsdiff -I$(srcdir)/libglnx -I$(srcdir)/composefs -I$(srcdir)/src/libotutil -I$(srcdir)/src/libotcore -I$(srcdir)/src/libostree -I$(builddir)/src/libostree \ +libostree_1_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/bsdiff -I$(srcdir)/libglnx -I$(srcdir)/src/libotutil -I$(srcdir)/src/libotcore -I$(srcdir)/src/libostree -I$(builddir)/src/libostree \ -I$(srcdir)/src/switchroot \ $(OT_INTERNAL_GIO_UNIX_CFLAGS) $(OT_INTERNAL_GPGME_CFLAGS) $(OT_DEP_LZMA_CFLAGS) $(OT_DEP_ZLIB_CFLAGS) $(OT_DEP_CRYPTO_CFLAGS) \ -fvisibility=hidden '-D_OSTREE_PUBLIC=__attribute__((visibility("default"))) extern' \ @@ -265,7 +265,7 @@ libostree_1_la_SOURCES += \ $(NULL) if USE_COMPOSEFS -libostree_1_la_LIBADD += libcomposefs.la +libostree_1_la_LIBADD += $(OT_DEP_COMPOSEFS_LIBS) endif # USE_COMPOSEFS # XXX: work around clang being passed -fstack-clash-protection which it doesn't understand diff --git a/Makefile-switchroot.am b/Makefile-switchroot.am index 1e458e0e2c..9a1d41371f 100644 --- a/Makefile-switchroot.am +++ b/Makefile-switchroot.am @@ -49,7 +49,7 @@ ostree-prepare-root : $(ostree_prepare_root_SOURCES) CLEANFILES += ostree-prepare-root else ostree_boot_PROGRAMS += ostree-prepare-root -ostree_prepare_root_CFLAGS += $(AM_CFLAGS) -Isrc/switchroot -I$(srcdir)/composefs -I$(srcdir)/src/libostree -I$(srcdir)/src/libotcore -I$(srcdir)/src/libotutil +ostree_prepare_root_CFLAGS += $(AM_CFLAGS) -Isrc/switchroot -I$(srcdir)/src/libostree -I$(srcdir)/src/libotcore -I$(srcdir)/src/libotutil ostree_prepare_root_SOURCES += src/switchroot/ostree-prepare-root.c ostree_prepare_root_CPPFLAGS += $(OT_INTERNAL_GIO_UNIX_CFLAGS) $(OT_DEP_CRYPTO_CFLAGS) -I $(srcdir)/libglnx ostree_prepare_root_LDADD += $(AM_LDFLAGS) $(OT_INTERNAL_GIO_UNIX_LIBS) $(OT_DEP_CRYPTO_LIBS) libotcore.la libotutil.la libglnx.la @@ -69,7 +69,7 @@ ostree_remount_LDADD += $(OT_DEP_SELINUX_LIBS) endif if USE_COMPOSEFS -ostree_prepare_root_LDADD += libcomposefs.la +ostree_prepare_root_LDADD += $(OT_DEP_COMPOSEFS_LIBS) endif if BUILDOPT_SYSTEMD diff --git a/Makefile.am b/Makefile.am index 19abc0c1e1..ddaf790ed7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -117,14 +117,8 @@ include bsdiff/Makefile-bsdiff.am.inc EXTRA_DIST += bsdiff/Makefile-bsdiff.am noinst_LTLIBRARIES += libbsdiff.la -COMPOSEFSDIR=$(srcdir)/composefs/libcomposefs LCFS_DEP_CRYPTO_CFLAGS=$(OT_DEP_CRYPTO_CFLAGS) LCFS_DEP_CRYPTO_LIBS=$(OT_DEP_CRYPTO_LIBS) -include composefs/libcomposefs/Makefile-lib.am.inc -EXTRA_DIST += composefs/libcomposefs/Makefile-lib.am -if USE_COMPOSEFS -noinst_LTLIBRARIES += libcomposefs.la -endif include Makefile-otutil.am include Makefile-otcore.am diff --git a/autogen.sh b/autogen.sh index ea2412c4e9..689bba8f89 100755 --- a/autogen.sh +++ b/autogen.sh @@ -35,7 +35,6 @@ fi # changing this, please also change Makefile.am. sed -e 's,$(libglnx_srcpath),libglnx,g' < libglnx/Makefile-libglnx.am >libglnx/Makefile-libglnx.am.inc sed -e 's,$(libbsdiff_srcpath),bsdiff,g' < bsdiff/Makefile-bsdiff.am >bsdiff/Makefile-bsdiff.am.inc -sed -e 's,$(COMPOSEFSDIR),composefs/libcomposefs,g' < composefs/libcomposefs/Makefile-lib.am >composefs/libcomposefs/Makefile-lib.am.inc # FIXME - figure out how to get aclocal to find this by default ln -sf ../libglnx/libglnx.m4 buildutil/libglnx.m4 diff --git a/ci/installdeps.sh b/ci/installdeps.sh index f63e2d4ea6..d71240e5e6 100755 --- a/ci/installdeps.sh +++ b/ci/installdeps.sh @@ -17,6 +17,8 @@ dn=$(dirname $0) pkg_upgrade pkg_install_buildroot pkg_builddep ostree +# Not yet in the spec +pkg_install composefs-devel pkg_install sudo which attr fuse strace \ libubsan libasan libtsan redhat-rpm-config \ elfutils fsverity-utils diff --git a/composefs b/composefs deleted file mode 160000 index 2d5cdcb917..0000000000 --- a/composefs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2d5cdcb9176cfe4ccf1761ef6d78e1c48de35649 diff --git a/configure.ac b/configure.ac index 6b30cd9f41..e0cc51bc7d 100644 --- a/configure.ac +++ b/configure.ac @@ -284,53 +284,25 @@ AS_IF([test x$have_gpgme = xyes], ) AM_CONDITIONAL(USE_GPGME, test "x$have_gpgme" = xyes) -dnl composefs won't work at all without this -AC_CHECK_HEADERS([endian.h sys/endian.h machine/endian.h]) -AC_CHECK_FUNCS([reallocarray]) -AC_MSG_CHECKING([for MOUNT_ATTR_IDMAP]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([ - #include - #include - ],[int foo = MOUNT_ATTR_IDMAP;] - )], - [AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_MOUNT_ATTR_IDMAP], 1, [Define if MOUNT_ATTR_IDMAP is available in linux/mount.h]) - have_mount_attr_idmap=yes], - [AC_MSG_RESULT(no)]) -dnl These are needed by libcomposefs to use the new mount API optionally -AC_MSG_CHECKING([for new mount API (fsconfig)]) -AC_COMPILE_IFELSE( - [AC_LANG_SOURCE([[ - #include - int cmd = FSCONFIG_CMD_CREATE; - ]])], - [AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_FSCONFIG_CMD_CREATE_SYS_MOUNT_H], 1, [Define if FSCONFIG_CMD_CREATE is available in sys/mount.h])], - [AC_MSG_RESULT(no)]) -AC_COMPILE_IFELSE( - [AC_LANG_SOURCE([[ - /* also make sure it doesn't conflict with since it is always used. */ - #include - #include - int cmd = FSCONFIG_CMD_CREATE; - ]])], - [AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_FSCONFIG_CMD_CREATE_LINUX_MOUNT_H], 1, [Define if FSCONFIG_CMD_CREATE is available in linux/mount.h])], - [AC_MSG_RESULT(no)]) - -composefs_default=yes -if test x"$have_mount_attr_idmap" != xyes; then - composefs_default=no -fi AC_ARG_WITH(composefs, - AS_HELP_STRING([--with-composefs], [Support composefs]), - :, with_composefs=$composefs_default) - -if test x$with_composefs != xno; then OSTREE_FEATURES="$OSTREE_FEATURES composefs"; - AC_DEFINE([HAVE_COMPOSEFS], 1, [Define if we have libcomposefs]) -fi -AM_CONDITIONAL(USE_COMPOSEFS, test $with_composefs != no) + AS_HELP_STRING([--with-composefs], [Support composefs (default yes)]), + :, with_composefs=maybe) + +have_composefs=no +AS_IF([ test x$with_composefs != xno ], [ + AC_MSG_CHECKING([for composefs]) + PKG_CHECK_EXISTS(composefs, have_composefs=yes, have_composefs=no) + AC_MSG_RESULT([$have_composefs]) + AS_IF([ test x$have_composefs = xno && test x$with_composefs != xmaybe ], [ + AC_MSG_ERROR([composefs is enabled but could not be found]) + ]) + AS_IF([ test x$have_composefs = xyes], [ + PKG_CHECK_MODULES(OT_DEP_COMPOSEFS, [composefs]) + OSTREE_FEATURES="$OSTREE_FEATURES composefs"; + AC_DEFINE([HAVE_COMPOSEFS], 1, [Define if we have libcomposefs]) + ]) +]) +AM_CONDITIONAL(USE_COMPOSEFS, test x$have_composefs = xyes) LIBSODIUM_DEPENDENCY="1.0.14" AC_ARG_WITH(ed25519_libsodium, @@ -737,7 +709,7 @@ echo " dracut: $with_dracut mkinitcpio: $with_mkinitcpio Static compiler for ostree-prepare-root: $with_static_compiler - Composefs: $with_composefs" + Composefs: $have_composefs" AS_IF([test x$with_builtin_grub2_mkconfig = xyes], [ echo " builtin grub2-mkconfig (instead of system): $with_builtin_grub2_mkconfig" ], [