Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to external composefs #3108

Merged
merged 3 commits into from
Apr 12, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cci.jenkinsfile
Original file line number Diff line number Diff line change
@@ -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") {
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions Makefile-libostree.am
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions Makefile-switchroot.am
Original file line number Diff line number Diff line change
@@ -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
6 changes: 0 additions & 6 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -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
1 change: 0 additions & 1 deletion autogen.sh
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions ci/installdeps.sh
Original file line number Diff line number Diff line change
@@ -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
1 change: 0 additions & 1 deletion composefs
Submodule composefs deleted from 2d5cdc
66 changes: 19 additions & 47 deletions configure.ac
Original file line number Diff line number Diff line change
@@ -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 <sys/mount.h>
#include <linux/mount.h>
],[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 <sys/mount.h>
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 <sys/mount.h> since it is always used. */
#include <sys/mount.h>
#include <linux/mount.h>
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"
], [
2 changes: 2 additions & 0 deletions tests/test-admin-deploy-composefs.sh
Original file line number Diff line number Diff line change
@@ -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"