diff --git a/Makefile-libostree.am b/Makefile-libostree.am index e2ebae3a..39dc0d14 100644 --- a/Makefile-libostree.am +++ b/Makefile-libostree.am @@ -49,12 +49,13 @@ libostreeinclude_HEADERS = $(libostree_public_headers) $(libostree_public_built_ ENUM_TYPES = $(NULL) ENUM_TYPES += $(srcdir)/src/libostree/ostree-fetcher.h +# TODO: GLIB_CHECK_VERSION > 2.5x: use --output instead of mv (see https://github.com/ostreedev/ostree/pull/1329) src/libostree/ostree-enumtypes.h: src/libostree/ostree-enumtypes.h.template $(ENUM_TYPES) $(AM_V_GEN) $(GLIB_MKENUMS) \ --template $< \ $(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ -src/libostree/ostree-enumtypes.c: src/libostree/ostree-enumtypes.c.template $(ENUM_TYPES) +src/libostree/ostree-enumtypes.c: src/libostree/ostree-enumtypes.c.template src/libostree/ostree-enumtypes.h $(ENUM_TYPES) $(AM_V_GEN) $(GLIB_MKENUMS) \ --template $< \ $(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ @@ -261,6 +262,10 @@ OSTree-1.0.gir: libostree-1.la Makefile OSTree_1_0_gir_EXPORT_PACKAGES = ostree-1 OSTree_1_0_gir_INCLUDES = Gio-2.0 OSTree_1_0_gir_CFLAGS = $(libostree_1_la_CFLAGS) +if ENABLE_EXPERIMENTAL_API +# When compiling this is set via config.h, but g-ir-scanner can't use that +OSTree_1_0_gir_CFLAGS += -DOSTREE_ENABLE_EXPERIMENTAL_API=1 +endif OSTree_1_0_gir_LIBS = libostree-1.la OSTree_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=Ostree --symbol-prefix=ostree $(GI_SCANNERFLAGS) OSTree_1_0_gir_FILES = $(libostreeinclude_HEADERS) $(filter-out %-private.h %/ostree-soup-uri.h $(libostree_experimental_headers),$(libostree_1_la_SOURCES)) diff --git a/Makefile-tests.am b/Makefile-tests.am index bc962aac..6d0e0865 100644 --- a/Makefile-tests.am +++ b/Makefile-tests.am @@ -35,13 +35,14 @@ AM_TESTS_ENVIRONMENT += OT_TESTS_DEBUG=1 \ LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && pwd)$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}} \ PATH=$$(cd $(top_builddir)/tests && pwd):$${PATH} \ OSTREE_FEATURES="$(OSTREE_FEATURES)" \ + PYTHONUNBUFFERED=1 \ $(NULL) if BUILDOPT_ASAN AM_TESTS_ENVIRONMENT += OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc endif uninstalled_test_data = tests/ostree-symlink-stamp tests/ostree-prepare-root-symlink-stamp \ - tests/ostree-remount-symlink-stamp tests/rofiles-fuse-symlink-stamp + tests/ostree-remount-symlink-stamp dist_uninstalled_test_scripts = tests/test-symbols.sh tests/coccinelle.sh @@ -143,6 +144,7 @@ endif if BUILDOPT_FUSE _installed_or_uninstalled_test_scripts += tests/test-rofiles-fuse.sh +uninstalled_test_data += tests/rofiles-fuse-symlink-stamp else EXTRA_DIST += tests/test-rofiles-fuse.sh endif diff --git a/Makefile.am b/Makefile.am index 2a33282f..6043b2aa 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,8 +29,8 @@ AM_CPPFLAGS += -DDATADIR='"$(datadir)"' -DLIBEXECDIR='"$(libexecdir)"' \ -DOSTREE_COMPILATION \ -DG_LOG_DOMAIN=\"OSTree\" \ -DOSTREE_GITREV='"$(OSTREE_GITREV)"' \ - -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_50 \ - -DSOUP_VERSION_MIN_REQUIRED=SOUP_VERSION_2_40 -DSOUP_VERSION_MAX_ALLOWED=SOUP_VERSION_2_48 + -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 '-DGLIB_VERSION_MAX_ALLOWED=G_ENCODE_VERSION(2,50)' \ + -DSOUP_VERSION_MIN_REQUIRED=SOUP_VERSION_2_40 '-DSOUP_VERSION_MAX_ALLOWED=G_ENCODE_VERSION(2,48)' AM_CFLAGS += -std=gnu99 $(WARN_CFLAGS) AM_DISTCHECK_CONFIGURE_FLAGS += \ --enable-gtk-doc \ diff --git a/Makefile.in b/Makefile.in index b23e63d1..cb185ad0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -462,16 +462,18 @@ check_PROGRAMS = $(am__EXEEXT_13) $(am__EXEEXT_14) $(am__EXEEXT_15) @USE_LIBMOUNT_TRUE@am__append_40 = $(OT_DEP_LIBMOUNT_LIBS) @USE_SELINUX_TRUE@am__append_41 = $(OT_DEP_SELINUX_CFLAGS) @USE_SELINUX_TRUE@am__append_42 = $(OT_DEP_SELINUX_LIBS) -@BUILDOPT_INTROSPECTION_TRUE@am__append_43 = OSTree-1.0.gir +# When compiling this is set via config.h, but g-ir-scanner can't use that +@BUILDOPT_INTROSPECTION_TRUE@@ENABLE_EXPERIMENTAL_API_TRUE@am__append_43 = -DOSTREE_ENABLE_EXPERIMENTAL_API=1 @BUILDOPT_INTROSPECTION_TRUE@am__append_44 = OSTree-1.0.gir -@BUILDOPT_INTROSPECTION_TRUE@am__append_45 = OSTree-1.0.typelib -@BUILDOPT_INTROSPECTION_TRUE@am__append_46 = $(gir_DATA) $(typelib_DATA) -@ENABLE_EXPERIMENTAL_API_TRUE@am__append_47 = \ +@BUILDOPT_INTROSPECTION_TRUE@am__append_45 = OSTree-1.0.gir +@BUILDOPT_INTROSPECTION_TRUE@am__append_46 = OSTree-1.0.typelib +@BUILDOPT_INTROSPECTION_TRUE@am__append_47 = $(gir_DATA) $(typelib_DATA) +@ENABLE_EXPERIMENTAL_API_TRUE@am__append_48 = \ @ENABLE_EXPERIMENTAL_API_TRUE@ src/ostree/ot-builtin-create-usb.c \ @ENABLE_EXPERIMENTAL_API_TRUE@ src/ostree/ot-builtin-find-remotes.c \ @ENABLE_EXPERIMENTAL_API_TRUE@ $(NULL) -@USE_CURL_OR_SOUP_TRUE@am__append_48 = src/ostree/ot-remote-builtin-add-cookie.c \ +@USE_CURL_OR_SOUP_TRUE@am__append_49 = src/ostree/ot-remote-builtin-add-cookie.c \ @USE_CURL_OR_SOUP_TRUE@ src/ostree/ot-remote-builtin-delete-cookie.c \ @USE_CURL_OR_SOUP_TRUE@ src/ostree/ot-remote-builtin-list-cookies.c \ @USE_CURL_OR_SOUP_TRUE@ src/ostree/ot-remote-cookie-util.h \ @@ -479,65 +481,66 @@ check_PROGRAMS = $(am__EXEEXT_13) $(am__EXEEXT_14) $(am__EXEEXT_15) @USE_CURL_OR_SOUP_TRUE@ $(NULL) src/ostree/ot-builtin-pull.c # Eventually once we stop things from using this, we should support disabling this -@USE_LIBSOUP_TRUE@am__append_49 = src/ostree/ot-builtin-trivial-httpd.c -@USE_LIBSOUP_TRUE@am__append_50 = ostree-trivial-httpd +@USE_LIBSOUP_TRUE@am__append_50 = src/ostree/ot-builtin-trivial-httpd.c +@USE_LIBSOUP_TRUE@am__append_51 = ostree-trivial-httpd # This is necessary for the cookie jar bits -@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_51 = $(OT_INTERNAL_SOUP_CFLAGS) -@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_52 = $(OT_INTERNAL_SOUP_LIBS) -@USE_LIBARCHIVE_TRUE@am__append_53 = $(OT_DEP_LIBARCHIVE_CFLAGS) -@USE_LIBARCHIVE_TRUE@am__append_54 = $(OT_DEP_LIBARCHIVE_LIBS) -@BUILDOPT_SYSTEMD_TRUE@am__append_55 = ostree-remount +@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_52 = $(OT_INTERNAL_SOUP_CFLAGS) +@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_53 = $(OT_INTERNAL_SOUP_LIBS) +@USE_LIBARCHIVE_TRUE@am__append_54 = $(OT_DEP_LIBARCHIVE_CFLAGS) +@USE_LIBARCHIVE_TRUE@am__append_55 = $(OT_DEP_LIBARCHIVE_LIBS) +@BUILDOPT_SYSTEMD_TRUE@am__append_56 = ostree-remount # It is built anyway as a side-effect of having the symlink in tests/, # and if we declare it here, it gets cleaned up properly -@BUILDOPT_SYSTEMD_FALSE@am__append_56 = ostree-remount -@BUILDOPT_USE_STATIC_COMPILER_FALSE@am__append_57 = ostree-prepare-root +@BUILDOPT_SYSTEMD_FALSE@am__append_57 = ostree-remount +@BUILDOPT_USE_STATIC_COMPILER_FALSE@am__append_58 = ostree-prepare-root # This is the "new mode" of using a generator for /var; see # https://github.com/ostreedev/ostree/issues/855 -@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_58 = -DHAVE_SYSTEMD_AND_LIBMOUNT=1 @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_59 = -DHAVE_SYSTEMD_AND_LIBMOUNT=1 +@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_60 = -DHAVE_SYSTEMD_AND_LIBMOUNT=1 @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@systemdsystemgenerator_PROGRAMS = ostree-system-generator$(EXEEXT) -@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_60 = $(systemdsystemgenerator_PROGRAMS) +@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_61 = $(systemdsystemgenerator_PROGRAMS) # Allow the distcheck install under $prefix test to pass -@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_61 = --with-systemdsystemgeneratordir='$${libdir}/systemd/system-generators' -@BUILDOPT_FUSE_TRUE@am__append_62 = rofiles-fuse -@BUILDOPT_ASAN_TRUE@am__append_63 = OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc -@ENABLE_EXPERIMENTAL_API_TRUE@am__append_64 = $(experimental_test_scripts) -@ENABLE_EXPERIMENTAL_API_TRUE@am__append_65 = tests/repo-finder-mount -@ENABLE_EXPERIMENTAL_API_FALSE@am__append_66 = $(experimental_test_scripts) -@BUILDOPT_FUSE_TRUE@am__append_67 = tests/test-rofiles-fuse.sh -@BUILDOPT_FUSE_FALSE@am__append_68 = tests/test-rofiles-fuse.sh -@USE_LIBSOUP_TRUE@am__append_69 = tests/test-remote-cookies.sh -@BUILDOPT_GJS_TRUE@am__append_70 = $(js_tests) $(js_installed_tests) -@BUILDOPT_GJS_FALSE@am__append_71 = $(js_tests) -@BUILDOPT_GJS_FALSE@am__append_72 = $(js_installed_tests) -@ENABLE_INSTALLED_TESTS_FALSE@am__append_73 = -rpath $(abs_builddir) -@ENABLE_EXPERIMENTAL_API_TRUE@am__append_74 = \ +@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_62 = --with-systemdsystemgeneratordir='$${libdir}/systemd/system-generators' +@BUILDOPT_FUSE_TRUE@am__append_63 = rofiles-fuse +@BUILDOPT_ASAN_TRUE@am__append_64 = OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc +@ENABLE_EXPERIMENTAL_API_TRUE@am__append_65 = $(experimental_test_scripts) +@ENABLE_EXPERIMENTAL_API_TRUE@am__append_66 = tests/repo-finder-mount +@ENABLE_EXPERIMENTAL_API_FALSE@am__append_67 = $(experimental_test_scripts) +@BUILDOPT_FUSE_TRUE@am__append_68 = tests/test-rofiles-fuse.sh +@BUILDOPT_FUSE_TRUE@am__append_69 = tests/rofiles-fuse-symlink-stamp +@BUILDOPT_FUSE_FALSE@am__append_70 = tests/test-rofiles-fuse.sh +@USE_LIBSOUP_TRUE@am__append_71 = tests/test-remote-cookies.sh +@BUILDOPT_GJS_TRUE@am__append_72 = $(js_tests) $(js_installed_tests) +@BUILDOPT_GJS_FALSE@am__append_73 = $(js_tests) +@BUILDOPT_GJS_FALSE@am__append_74 = $(js_installed_tests) +@ENABLE_INSTALLED_TESTS_FALSE@am__append_75 = -rpath $(abs_builddir) +@ENABLE_EXPERIMENTAL_API_TRUE@am__append_76 = \ @ENABLE_EXPERIMENTAL_API_TRUE@ tests/test-bloom \ @ENABLE_EXPERIMENTAL_API_TRUE@ tests/test-repo-finder-config \ @ENABLE_EXPERIMENTAL_API_TRUE@ tests/test-repo-finder-mount \ @ENABLE_EXPERIMENTAL_API_TRUE@ $(NULL) -@ENABLE_EXPERIMENTAL_API_TRUE@@USE_AVAHI_TRUE@am__append_75 = tests/test-repo-finder-avahi -@USE_LIBARCHIVE_TRUE@am__append_76 = tests/test-libarchive-import -@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_77 = $(_installed_or_uninstalled_test_scripts) -@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_78 = $(_installed_or_uninstalled_test_programs) -@ENABLE_INSTALLED_TESTS_TRUE@am__append_79 = install-installed-tests-extra +@ENABLE_EXPERIMENTAL_API_TRUE@@USE_AVAHI_TRUE@am__append_77 = tests/test-repo-finder-avahi +@USE_LIBARCHIVE_TRUE@am__append_78 = tests/test-libarchive-import +@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_79 = $(_installed_or_uninstalled_test_scripts) +@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_80 = $(_installed_or_uninstalled_test_programs) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_81 = install-installed-tests-extra # Allow the distcheck install under $prefix test to pass -@BUILDOPT_SYSTEMD_TRUE@am__append_80 = --with-systemdsystemunitdir='$${libdir}/systemd/system' +@BUILDOPT_SYSTEMD_TRUE@am__append_82 = --with-systemdsystemunitdir='$${libdir}/systemd/system' # We're using the system grub2-mkconfig generator -@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_81 = src/boot/grub2/grub2-15_ostree -@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_82 = install-grub2-config-hook -@BUILDOPT_TRIVIAL_HTTPD_TRUE@@ENABLE_MAN_TRUE@am__append_83 = ostree-trivial-httpd.1 +@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_83 = src/boot/grub2/grub2-15_ostree +@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_84 = install-grub2-config-hook +@BUILDOPT_TRIVIAL_HTTPD_TRUE@@ENABLE_MAN_TRUE@am__append_85 = ostree-trivial-httpd.1 # We still want to distribute the source, even if we are not building it -@BUILDOPT_TRIVIAL_HTTPD_FALSE@@ENABLE_MAN_TRUE@am__append_84 = man/ostree-trivial-httpd.xml -@BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_85 = rofiles-fuse.1 -@ENABLE_MAN_TRUE@am__append_86 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml) -@ENABLE_MAN_TRUE@am__append_87 = \ +@BUILDOPT_TRIVIAL_HTTPD_FALSE@@ENABLE_MAN_TRUE@am__append_86 = man/ostree-trivial-httpd.xml +@BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_87 = rofiles-fuse.1 +@ENABLE_MAN_TRUE@am__append_88 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml) +@ENABLE_MAN_TRUE@am__append_89 = \ @ENABLE_MAN_TRUE@ $(man1_MANS) \ @ENABLE_MAN_TRUE@ $(man5_MANS) \ @ENABLE_MAN_TRUE@ $(NULL) @@ -1729,7 +1732,7 @@ am__EXEEXT_25 = tests/test-basic.sh tests/test-basic-user.sh \ tests/test-switchroot.sh tests/test-pull-contenturl.sh \ tests/test-pull-mirrorlist.sh tests/test-summary-update.sh \ tests/test-summary-view.sh $(am__EXEEXT_2) $(am__EXEEXT_22) \ - $(am__append_67) $(am__append_69) $(am__EXEEXT_24) + $(am__append_68) $(am__append_71) $(am__EXEEXT_24) @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__EXEEXT_26 = \ @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@ $(am__EXEEXT_25) am__EXEEXT_27 = $(am__EXEEXT_2) $(am__EXEEXT_26) @@ -2017,28 +2020,28 @@ AM_CPPFLAGS = -DDATADIR='"$(datadir)"' -DLIBEXECDIR='"$(libexecdir)"' \ -DOSTREE_FEATURES='"$(OSTREE_FEATURES)"' -DOSTREE_COMPILATION \ -DG_LOG_DOMAIN=\"OSTree\" -DOSTREE_GITREV='"$(OSTREE_GITREV)"' \ -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 \ - -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_50 \ + '-DGLIB_VERSION_MAX_ALLOWED=G_ENCODE_VERSION(2,50)' \ -DSOUP_VERSION_MIN_REQUIRED=SOUP_VERSION_2_40 \ - -DSOUP_VERSION_MAX_ALLOWED=SOUP_VERSION_2_48 + '-DSOUP_VERSION_MAX_ALLOWED=G_ENCODE_VERSION(2,48)' AM_CFLAGS = -std=gnu99 $(WARN_CFLAGS) # Allow the distcheck install under $prefix test to pass AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man \ - --disable-maintainer-mode $(NULL) $(am__append_61) \ - $(am__append_80) \ + --disable-maintainer-mode $(NULL) $(am__append_62) \ + $(am__append_82) \ BASH_COMPLETIONSDIR='$${datadir}/bash-completion/completions' SUBDIRS = . $(am__append_14) NULL = BUILT_SOURCES = $(nodist_libostree_1_la_SOURCES) MANPAGES = -CLEANFILES = $(am__append_13) $(BUILT_SOURCES) $(am__append_46) \ +CLEANFILES = $(am__append_13) $(BUILT_SOURCES) $(am__append_47) \ src/ostree/parse-datetime.c tests/libreaddir-rand.so \ tests/ostree-symlink-stamp \ tests/ostree-prepare-root-symlink-stamp \ tests/ostree-remount-symlink-stamp \ tests/rofiles-fuse-symlink-stamp tests/ostree \ tests/ostree-prepare-root tests/ostree-remount \ - tests/rofiles-fuse $(am__append_87) + tests/rofiles-fuse $(am__append_89) EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) autogen.sh \ COPYING README.md $(am__append_15) libglnx/README.md \ libglnx/COPYING libglnx/libglnx.m4 $(NULL) \ @@ -2055,19 +2058,19 @@ EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) autogen.sh \ src/libostree/ostree-repo-deprecated.h \ src/libostree/ostree-version.h src/ostree/parse-datetime.y \ buildutil/tap-driver.sh buildutil/tap-test tests/glib.supp \ - tests/ostree.supp $(NULL) $(am__append_66) $(am__append_68) \ - $(am__append_71) tests/libtest.sh $(am__append_72) \ + tests/ostree.supp $(NULL) $(am__append_67) $(am__append_70) \ + $(am__append_73) tests/libtest.sh $(am__append_74) \ tests/libostreetest.h tests/libtest.sh \ tests/gpg-verify-data/README.md $(NULL) \ src/boot/dracut/module-setup.sh src/boot/dracut/ostree.conf \ src/boot/mkinitcpio/ostree \ src/boot/ostree-prepare-root.service \ src/boot/ostree-remount.service src/boot/grub2/grub2-15_ostree \ - src/boot/grub2/ostree-grub-generator $(NULL) $(am__append_84) \ - $(am__append_86) + src/boot/grub2/ostree-grub-generator $(NULL) $(am__append_86) \ + $(am__append_88) bin_SCRIPTS = lib_LTLIBRARIES = libostree-1.la -pkglibexec_SCRIPTS = $(am__append_81) +pkglibexec_SCRIPTS = $(am__append_83) noinst_LTLIBRARIES = $(am__append_1) libglnx.la libbsdiff.la \ libotutil.la libostree-kernel-args.la $(am__append_18) \ libostreetest.la @@ -2075,11 +2078,11 @@ privlibdir = $(pkglibdir) privlib_LTLIBRARIES = pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = src/libostree/ostree-1.pc -INTROSPECTION_GIRS = $(am__append_43) +INTROSPECTION_GIRS = $(am__append_44) girdir = $(datadir)/gir-1.0 -gir_DATA = $(am__append_44) +gir_DATA = $(am__append_45) typelibdir = $(libdir)/girepository-1.0 -typelib_DATA = $(am__append_45) +typelib_DATA = $(am__append_46) gsettings_SCHEMAS = ostree_bootdir = $(prefix)/lib/ostree @@ -2097,7 +2100,8 @@ AM_TESTS_ENVIRONMENT = G_TEST_SRCDIR="$(abs_srcdir)" \ LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && \ pwd)$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}} PATH=$$(cd \ $(top_builddir)/tests && pwd):$${PATH} \ - OSTREE_FEATURES="$(OSTREE_FEATURES)" $(NULL) $(am__append_63) + OSTREE_FEATURES="$(OSTREE_FEATURES)" PYTHONUNBUFFERED=1 \ + $(NULL) $(am__append_64) LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/buildutil/tap-driver.sh LOG_COMPILER = $(top_srcdir)/buildutil/tap-test installed_test_LTLIBRARIES = $(am__append_12) @@ -2137,14 +2141,14 @@ all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installe # This initializes some more variables # This is a special facility to chain together hooks easily -INSTALL_DATA_HOOKS = install-mkdir-remotes-d-hook $(am__append_79) \ - $(am__append_82) +INSTALL_DATA_HOOKS = install-mkdir-remotes-d-hook $(am__append_81) \ + $(am__append_84) ALL_LOCAL_RULES = tests/libreaddir-rand.so shortened_sysconfdir = $$(echo "$(sysconfdir)" | sed -e 's|^$(prefix)||' -e 's|^/||') OSTREE_GITREV = $(shell cd $(srcdir) && if command -v git >/dev/null 2>&1 && test -d .git; then git describe --abbrev=42 --tags --always HEAD; fi) ACLOCAL_AMFLAGS = -I buildutil -I libglnx ${ACLOCAL_FLAGS} GITIGNOREFILES = aclocal.m4 build-aux/ buildutil/*.m4 config.h.in \ - gtk-doc.make $(am__append_60) + gtk-doc.make $(am__append_61) OT_INTERNAL_GIO_UNIX_CFLAGS = $(OT_DEP_GIO_UNIX_CFLAGS) OT_INTERNAL_GIO_UNIX_LIBS = $(OT_DEP_GIO_UNIX_LIBS) OT_INTERNAL_SOUP_CFLAGS = $(OT_DEP_SOUP_CFLAGS) @@ -2385,7 +2389,9 @@ libostree_1_la_LIBADD = libotutil.la libglnx.la libbsdiff.la \ EXTRA_libostree_1_la_DEPENDENCIES = $(symbol_files) @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_EXPORT_PACKAGES = ostree-1 @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_INCLUDES = Gio-2.0 -@BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_CFLAGS = $(libostree_1_la_CFLAGS) +@BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_CFLAGS = \ +@BUILDOPT_INTROSPECTION_TRUE@ $(libostree_1_la_CFLAGS) \ +@BUILDOPT_INTROSPECTION_TRUE@ $(am__append_43) @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_LIBS = libostree-1.la @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=Ostree --symbol-prefix=ostree $(GI_SCANNERFLAGS) @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_FILES = $(libostreeinclude_HEADERS) $(filter-out %-private.h %/ostree-soup-uri.h $(libostree_experimental_headers),$(libostree_1_la_SOURCES)) @@ -2413,7 +2419,7 @@ ostree_SOURCES = src/ostree/main.c src/ostree/ot-builtin-admin.c \ src/ostree/ot-main.c src/ostree/ot-dump.h src/ostree/ot-dump.c \ src/ostree/ot-editor.c src/ostree/ot-editor.h \ src/ostree/parse-datetime.h src/ostree/parse-datetime.c \ - $(NULL) $(am__append_47) src/ostree/ot-admin-builtin-init-fs.c \ + $(NULL) $(am__append_48) src/ostree/ot-admin-builtin-init-fs.c \ src/ostree/ot-admin-builtin-diff.c \ src/ostree/ot-admin-builtin-deploy.c \ src/ostree/ot-admin-builtin-undeploy.c \ @@ -2440,7 +2446,7 @@ ostree_SOURCES = src/ostree/main.c src/ostree/ot-builtin-admin.c \ src/ostree/ot-remote-builtin-show-url.c \ src/ostree/ot-remote-builtin-refs.c \ src/ostree/ot-remote-builtin-summary.c $(NULL) \ - $(am__append_48) $(am__append_49) + $(am__append_49) $(am__append_50) ostree_bin_shared_cflags = $(AM_CFLAGS) -I$(srcdir)/src/libotutil -I$(srcdir)/src/libostree \ -I$(builddir)/src/libostree -I$(srcdir)/src/ostree -I$(srcdir)/libglnx $(OT_INTERNAL_GIO_UNIX_CFLAGS) \ -DPKGLIBEXECDIR=\"$(pkglibexecdir)\" @@ -2448,11 +2454,11 @@ ostree_bin_shared_cflags = $(AM_CFLAGS) -I$(srcdir)/src/libotutil -I$(srcdir)/sr ostree_bin_shared_ldadd = $(AM_LDFLAGS) libglnx.la libotutil.la libostree-1.la \ $(OT_INTERNAL_GIO_UNIX_LIBS) -ostree_CFLAGS = $(ostree_bin_shared_cflags) $(am__append_51) \ - $(am__append_53) -ostree_LDADD = $(ostree_bin_shared_ldadd) libbsdiff.la \ - libostree-kernel-args.la $(LIBSYSTEMD_LIBS) $(am__append_52) \ +ostree_CFLAGS = $(ostree_bin_shared_cflags) $(am__append_52) \ $(am__append_54) +ostree_LDADD = $(ostree_bin_shared_ldadd) libbsdiff.la \ + libostree-kernel-args.la $(LIBSYSTEMD_LIBS) $(am__append_53) \ + $(am__append_55) @USE_LIBSOUP_TRUE@ostree_trivial_httpd_SOURCES = src/ostree/ostree-trivial-httpd.c @USE_LIBSOUP_TRUE@ostree_trivial_httpd_CFLAGS = $(ostree_bin_shared_cflags) $(OT_INTERNAL_SOUP_CFLAGS) @USE_LIBSOUP_TRUE@ostree_trivial_httpd_LDADD = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_SOUP_LIBS) @@ -2461,7 +2467,7 @@ ostree_prepare_root_SOURCES = \ src/switchroot/ostree-prepare-root.c \ $(NULL) -ostree_prepare_root_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_58) +ostree_prepare_root_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_59) # We're using our internal generator @BUILDOPT_BUILTIN_GRUB2_MKCONFIG_TRUE@ostree_boot_SCRIPTS = src/boot/grub2/ostree-grub-generator @@ -2483,7 +2489,7 @@ ostree_remount_SOURCES = \ $(NULL) ostree_remount_CPPFLAGS = $(AM_CPPFLAGS) -Isrc/switchroot \ - $(am__append_59) + $(am__append_60) @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@ostree_system_generator_SOURCES = src/switchroot/ostree-mount-util.h \ @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@ src/switchroot/ostree-system-generator.c @@ -2493,9 +2499,9 @@ ostree_remount_CPPFLAGS = $(AM_CPPFLAGS) -Isrc/switchroot \ @BUILDOPT_FUSE_TRUE@rofiles_fuse_SOURCES = src/rofiles-fuse/main.c @BUILDOPT_FUSE_TRUE@rofiles_fuse_CFLAGS = $(AM_CFLAGS) -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(BUILDOPT_FUSE_CFLAGS) $(OT_INTERNAL_GIO_UNIX_CFLAGS) -I$(srcdir)/libglnx $(NULL) @BUILDOPT_FUSE_TRUE@rofiles_fuse_LDADD = libglnx.la $(BUILDOPT_FUSE_LIBS) $(OT_INTERNAL_GIO_UNIX_LIBS) -uninstalled_test_data = tests/ostree-symlink-stamp tests/ostree-prepare-root-symlink-stamp \ - tests/ostree-remount-symlink-stamp tests/rofiles-fuse-symlink-stamp - +uninstalled_test_data = tests/ostree-symlink-stamp \ + tests/ostree-prepare-root-symlink-stamp \ + tests/ostree-remount-symlink-stamp $(am__append_69) dist_uninstalled_test_scripts = tests/test-symbols.sh tests/coccinelle.sh # This logic implements ENABLE_INSTALLED_TESTS_EXCLUSIVE; see below. @@ -2503,9 +2509,9 @@ dist_uninstalled_test_scripts = tests/test-symbols.sh tests/coccinelle.sh # tests *only* run installed, to avoid having to run them twice in CI. # This overrides the glib-tap.mk emphasis on doing both, if we'd # used e.g. `dist_test_scripts`. -dist_test_scripts = $(NULL) $(am__append_77) -test_programs = $(NULL) $(am__append_74) $(am__append_75) \ - $(am__append_78) +dist_test_scripts = $(NULL) $(am__append_79) +test_programs = $(NULL) $(am__append_76) $(am__append_77) \ + $(am__append_80) _installed_or_uninstalled_test_scripts = tests/test-basic.sh \ tests/test-basic-user.sh tests/test-basic-user-only.sh \ tests/test-basic-root.sh tests/test-pull-subpath.sh \ @@ -2544,8 +2550,8 @@ _installed_or_uninstalled_test_scripts = tests/test-basic.sh \ tests/test-refs.sh tests/test-demo-buildsystem.sh \ tests/test-switchroot.sh tests/test-pull-contenturl.sh \ tests/test-pull-mirrorlist.sh tests/test-summary-update.sh \ - tests/test-summary-view.sh $(NULL) $(am__append_64) \ - $(am__append_67) $(am__append_69) $(am__append_70) + tests/test-summary-view.sh $(NULL) $(am__append_65) \ + $(am__append_68) $(am__append_71) $(am__append_72) experimental_test_scripts = \ tests/test-create-usb.sh \ tests/test-find-remotes.sh \ @@ -2559,7 +2565,7 @@ experimental_test_scripts = \ tests/test-pull-collections.sh \ $(NULL) -test_extra_programs = $(NULL) $(am__append_65) +test_extra_programs = $(NULL) $(am__append_66) tests_repo_finder_mount_SOURCES = tests/repo-finder-mount.c tests_repo_finder_mount_CFLAGS = $(common_tests_cflags) tests_repo_finder_mount_LDADD = $(common_tests_ldadd) libostreetest.la @@ -2617,7 +2623,7 @@ libreaddir_rand_la_LIBADD = \ $(NULL) libreaddir_rand_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version \ - $(am__append_73) + $(am__append_75) _installed_or_uninstalled_test_programs = tests/test-varint \ tests/test-ot-unix-utils tests/test-bsdiff \ tests/test-mutable-tree tests/test-keyfile-utils \ @@ -2625,7 +2631,7 @@ _installed_or_uninstalled_test_programs = tests/test-varint \ tests/test-gpg-verify-result tests/test-checksum \ tests/test-lzma tests/test-rollsum tests/test-basic-c \ tests/test-sysroot-c tests/test-pull-c tests/test-repo \ - $(am__append_76) + $(am__append_78) common_tests_cflags = $(ostree_bin_shared_cflags) $(OT_INTERNAL_GIO_UNIX_CFLAGS) -I$(srcdir)/libglnx common_tests_ldadd = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_GIO_UNIX_LIBS) libostreetest_la_SOURCES = tests/libostreetest.c tests/test-mock-gio.c tests/test-mock-gio.h @@ -2728,8 +2734,8 @@ tests_test_gpg_verify_result_LDADD = $(TESTS_LDADD) $(OT_INTERNAL_GPGME_LIBS) @ENABLE_MAN_TRUE@ ostree-pull.1 ostree-refs.1 ostree-remote.1 \ @ENABLE_MAN_TRUE@ ostree-reset.1 ostree-rev-parse.1 \ @ENABLE_MAN_TRUE@ ostree-show.1 ostree-summary.1 \ -@ENABLE_MAN_TRUE@ ostree-static-delta.1 $(am__append_83) \ -@ENABLE_MAN_TRUE@ $(am__append_85) +@ENABLE_MAN_TRUE@ ostree-static-delta.1 $(am__append_85) \ +@ENABLE_MAN_TRUE@ $(am__append_87) @ENABLE_MAN_TRUE@man5_files = ostree.repo.5 ostree.repo-config.5 @ENABLE_MAN_TRUE@man1_MANS = $(addprefix man/,$(man1_files)) @ENABLE_MAN_TRUE@man5_MANS = $(addprefix man/,$(man5_files)) @@ -8387,12 +8393,13 @@ $(srcdir)/bsdiff/Makefile-bsdiff.am.inc: $(srcdir)/bsdiff/Makefile-bsdiff.am @ENABLE_RUST_TRUE@$(bupsplitpath): Makefile $(BUPSPLIT_RUST_SRCS) @ENABLE_RUST_TRUE@ cd $(top_srcdir)/rust && CARGO_TARGET_DIR=@abs_top_builddir@/target cargo build --verbose $(CARGO_RELEASE_ARGS) +# TODO: GLIB_CHECK_VERSION > 2.5x: use --output instead of mv (see https://github.com/ostreedev/ostree/pull/1329) src/libostree/ostree-enumtypes.h: src/libostree/ostree-enumtypes.h.template $(ENUM_TYPES) $(AM_V_GEN) $(GLIB_MKENUMS) \ --template $< \ $(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ -src/libostree/ostree-enumtypes.c: src/libostree/ostree-enumtypes.c.template $(ENUM_TYPES) +src/libostree/ostree-enumtypes.c: src/libostree/ostree-enumtypes.c.template src/libostree/ostree-enumtypes.h $(ENUM_TYPES) $(AM_V_GEN) $(GLIB_MKENUMS) \ --template $< \ $(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ diff --git a/aclocal.m4 b/aclocal.m4 index 0277ed0a..0148f19a 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -23,9 +23,6 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # Configure paths for GLIB # Owen Taylor 1997-2001 -# Increment this whenever this file is changed. -#serial 1 - dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject, dnl gthread, or gio is specified in MODULES, pass to pkg-config @@ -115,7 +112,7 @@ dnl #include int -main (void) +main () { unsigned int major, minor, micro; @@ -960,7 +957,7 @@ AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ])dnl PKG_HAVE_DEFINE_WITH_MODULES -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -975,7 +972,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], +m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -991,14 +988,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl +[AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1050,7 +1047,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_COND_IF -*- Autoconf -*- -# Copyright (C) 2008-2014 Free Software Foundation, Inc. +# Copyright (C) 2008-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1087,7 +1084,7 @@ fi[]dnl # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1118,7 +1115,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1309,7 +1306,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1385,7 +1382,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1582,7 +1579,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1603,7 +1600,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1625,7 +1622,7 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1660,7 +1657,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1710,7 +1707,7 @@ rm -f confinc confmf # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1749,7 +1746,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1778,7 +1775,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1825,7 +1822,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1844,7 +1841,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1925,7 +1922,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1985,7 +1982,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2013,7 +2010,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2032,7 +2029,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/apidoc/Makefile.in b/apidoc/Makefile.in index e2f8db5f..04588e88 100644 --- a/apidoc/Makefile.in +++ b/apidoc/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -531,34 +531,34 @@ CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test @GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp #### setup #### -GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) -GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_@AM_V@) +GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### -GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) -GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_@AM_V@) +GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; -GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) -GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_@AM_V@) +GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### -GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) -GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML = $(GTK_DOC_V_XML_@AM_V@) +GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_@AM_DEFAULT_V@) GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### -GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) -GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_@AM_V@) +GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_@AM_DEFAULT_V@) GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; -GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) -GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_@AM_V@) +GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_@AM_DEFAULT_V@) GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### -GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) -GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_@AM_V@) +GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_@AM_DEFAULT_V@) GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; all: all-am @@ -780,38 +780,38 @@ $(REPORT_FILES): sgml-build.stamp setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ - files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ - if test "x$$files" != "x" ; then \ - for file in $$files ; do \ - destdir=`dirname $(abs_builddir)/$$file`; \ - test -d "$$destdir" || mkdir -p "$$destdir"; \ - test -f $(abs_srcdir)/$$file && \ - cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ - done; \ - fi; \ + files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ fi $(AM_V_at)touch setup-build.stamp scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ - scanobj_options=""; \ - gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ - if test "$$?" = "0"; then \ - if test "x$(V)" = "x1"; then \ - scanobj_options="--verbose"; \ - fi; \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ fi; \ - CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ - gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ - for i in $(SCANOBJ_FILES) ; do \ - test -f $$i || touch $$i ; \ - done \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ fi $(AM_V_at)touch scan-build.stamp @@ -821,7 +821,7 @@ $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE) sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp @@ -856,12 +856,8 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_con cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ - if test -f $(abs_srcdir)/$$file ; then \ - cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ - fi; \ - if test -f $(abs_builddir)/$$file ; then \ - cp $(abs_builddir)/$$file $(abs_builddir)/html; \ - fi; \ + test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp diff --git a/apidoc/html/index.html b/apidoc/html/index.html index 146d83bf..212b67f8 100644 --- a/apidoc/html/index.html +++ b/apidoc/html/index.html @@ -6,7 +6,7 @@ - + @@ -14,7 +14,7 @@
-

for OSTree 2017.13

+

for OSTree 2017.14


@@ -68,6 +68,6 @@ +
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-Core-repository-independent-functions.html b/apidoc/html/ostree-Core-repository-independent-functions.html index 4d35ac0a..121b34d8 100644 --- a/apidoc/html/ostree-Core-repository-independent-functions.html +++ b/apidoc/html/ostree-Core-repository-independent-functions.html @@ -8,7 +8,7 @@ - + @@ -590,7 +590,7 @@ ostree_checksum_to_bytes (const c

Returns

-

Binary checksum from checksum +

Binary checksum from checksum of length 32; free with g_free().

[transfer full][array fixed-size=32]

@@ -617,7 +617,7 @@ ostree_checksum_to_bytes_v (const

Returns

-

New GVariant of type ay with length 32.

+

New GVariant of type ay with length 32.

[transfer full]

@@ -636,14 +636,14 @@ ostree_checksum_from_bytes (const

csum

-

An binary checksum of length 32.

+

An binary checksum of length 32.

[array fixed-size=32]

Returns

-

String form of csum +

String form of csum .

[transfer full]

@@ -670,7 +670,7 @@ ostree_checksum_from_bytes_v (GVa

Returns

-

String form of csum_bytes +

String form of csum_bytes .

[transfer full]

@@ -696,7 +696,7 @@ ostree_checksum_inplace_from_bytes (const

csum

-

An binary checksum of length 32.

+

An binary checksum of length 32.

[array fixed-size=32] @@ -762,7 +762,7 @@ ostree_checksum_bytes_peek (GVari

Returns

-

Binary checksum data in bytes +

Binary checksum data in bytes ; do not free. If bytes does not have the correct length, return NULL.

[transfer none][array fixed-size=32][element-type guint8]

@@ -800,7 +800,7 @@ ostree_checksum_bytes_peek_validate (

Returns

-

Binary checksum data.

+

Binary checksum data.

[transfer none][array fixed-size=32][element-type guint8]

@@ -819,14 +819,14 @@ ostree_checksum_b64_from_bytes (const

csum

-

An binary checksum of length 32.

+

An binary checksum of length 32.

[array fixed-size=32]

Returns

-

Modified base64 encoding of csum +

Modified base64 encoding of csum

The "modified" term refers to the fact that instead of '/', the '_' character is used.

@@ -855,7 +855,7 @@ ostree_checksum_b64_to_bytes (const

Returns

-

Binary version of checksum +

Binary version of checksum .

[transfer full][array fixed-size=32]

@@ -884,7 +884,7 @@ character is used.

csum

-

An binary checksum of length 32.

+

An binary checksum of length 32.

[array fixed-size=32] @@ -917,7 +917,7 @@ ostree_checksum_b64_inplace_to_bytes (const

checksum

-

An binary checksum of length 32.

+

An binary checksum of length 32.

[array fixed-size=32] @@ -1060,12 +1060,12 @@ will be "gnome-ostree/buildmaster".

out_remote

-

The remote name, or NULL if the refspec refs to a local ref.

+

The remote name, or NULL if the refspec refs to a local ref.

[out][allow-none]

out_ref

-

Name of ref.

+

Name of ref.

[out][allow-none] @@ -1174,7 +1174,7 @@ ostree_object_name_serialize (const

Returns

-

A new floating GVariant containing checksum string and objtype.

+

A new floating GVariant containing checksum string and objtype.

[transfer floating]

@@ -1205,13 +1205,13 @@ only valid for the lifetime of variant

out_checksum

-

Pointer into string memory of variant +

Pointer into string memory of variant with checksum.

[out][transfer none]

out_objtype

-

Return object type.

+

Return object type.

[out] @@ -1277,12 +1277,12 @@ ostree_object_from_string (const

out_checksum

-

Parsed checksum.

+

Parsed checksum.

[out][transfer full]

out_objtype

-

Parsed object type.

+

Parsed object type.

[out] @@ -1335,17 +1335,17 @@ converts an object content stream back into components.

out_input

-

The raw file content stream.

+

The raw file content stream.

[out]

out_file_info

-

Normal metadata.

+

Normal metadata.

[out]

out_xattrs

-

Extended attributes.

+

Extended attributes.

[out] @@ -1402,17 +1402,17 @@ converts an object content stream back into components.

out_input

-

The raw file content stream.

+

The raw file content stream.

[out]

out_file_info

-

Normal metadata.

+

Normal metadata.

[out]

out_xattrs

-

Extended attributes.

+

Extended attributes.

[out] @@ -1475,17 +1475,17 @@ converts an object content stream back into components.

out_input

-

The raw file content stream.

+

The raw file content stream.

[out]

out_file_info

-

Normal metadata.

+

Normal metadata.

[out]

out_xattrs

-

Extended attributes.

+

Extended attributes.

[out] @@ -1535,12 +1535,12 @@ OSTREE_OBJECT_TYPE_FILE stream suitable for ostree pull.

xattrs

-

Optional extended attributes.

+

Optional extended attributes.

[allow-none]

out_input

-

Serialized object stream.

+

Serialized object stream.

[out] @@ -1594,17 +1594,17 @@ the least compression, and <0 giving the default level (currently 6).

xattrs

-

Optional extended attributes.

+

Optional extended attributes.

[allow-none]

options

-

A GVariant a{sv} with an extensible set of flags.

+

A GVariant a{sv} with an extensible set of flags.

[nullable]

out_input

-

Serialized object stream.

+

Serialized object stream.

[out] @@ -1657,17 +1657,17 @@ for writing data to an

xattrs

-

Optional extended attributes.

+

Optional extended attributes.

[
allow-none]

out_input

-

Serialized object stream.

+

Serialized object stream.

[out]

out_length

-

Length of stream.

+

Length of stream.

[out] @@ -1712,12 +1712,12 @@ ostree_checksum_file_from_input (

xattrs

-

Optional extended attributes.

+

Optional extended attributes.

[allow-none]

in

-

File content, should be NULL for symbolic links.

+

File content, should be NULL for symbolic links.

[allow-none] @@ -1727,7 +1727,7 @@ ostree_checksum_file_from_input (

out_csum

-

Return location for binary checksum.

+

Return location for binary checksum.

[out][array fixed-size=32] @@ -1775,7 +1775,7 @@ ostree_checksum_file (GFile

out_csum

-

Return location for binary checksum.

+

Return location for binary checksum.

[out][array fixed-size=32] @@ -1823,9 +1823,12 @@ allocated buffer.

path

-

Subpath -stbuf -(allow-none): Optional stat buffer

+

Subpath

+  + + +

stbuf (allow-none)

+

Optional stat buffer

  @@ -1835,9 +1838,12 @@ allocated buffer.

flags

-

Flags -out_checksum -(out) (transfer full): Return location for hex checksum

+

Flags

+  + + +

out_checksum (out) (transfer full)

+

Return location for hex checksum

  @@ -1942,7 +1948,7 @@ ostree_checksum_file_async_finish (

out_csum

-

Return location for binary checksum.

+

Return location for binary checksum.

[out][array fixed-size=32] @@ -1976,7 +1982,7 @@ ostree_create_directory_metadata (

xattrs

-

Optional extended attributes.

+

Optional extended attributes.

[allow-none] @@ -1984,7 +1990,7 @@ ostree_create_directory_metadata (

Returns

-

A new GVariant containing OSTREE_OBJECT_TYPE_DIR_META.

+

A new GVariant containing OSTREE_OBJECT_TYPE_DIR_META.

[transfer full]

@@ -2492,6 +2498,6 @@ Unix epoch in UTC, big-endian) when the commit was committed

+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-GPG-signature-verification-results.html b/apidoc/html/ostree-GPG-signature-verification-results.html index 3e8ec0d2..90912533 100644 --- a/apidoc/html/ostree-GPG-signature-verification-results.html +++ b/apidoc/html/ostree-GPG-signature-verification-results.html @@ -8,7 +8,7 @@ - + @@ -238,7 +238,7 @@ If no match is found, the function returns FALSE an

out_signature_index

-

return location for the index of the signature +

return location for the index of the signature signed by key_id , or NULL.

[out] @@ -290,7 +290,7 @@ find the number of signatures in result

attrs

-

Array of requested attributes.

+

Array of requested attributes.

[array length=n_attrs] @@ -413,7 +413,7 @@ format. Currently must be 0.

line_prefix

-

optional line prefix string.

+

optional line prefix string.

[allow-none] @@ -461,7 +461,7 @@ and signature index.

line_prefix

-

optional line prefix string.

+

optional line prefix string.

[allow-none] @@ -497,7 +497,7 @@ it will handle the NULL

result

-

an OstreeGpgVerifyResult.

+

an OstreeGpgVerifyResult.

[nullable] @@ -560,8 +560,6 @@ These may be returned by any API which creates or verifies signatures.


OstreeGpgVerifyResult

-
typedef struct OstreeGpgVerifyResult OstreeGpgVerifyResult;
-

Private instance structure.


@@ -707,6 +705,6 @@ for future variations.

+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html b/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html index bbf55d39..e41ec665 100644 --- a/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html +++ b/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html @@ -8,7 +8,7 @@ - + @@ -165,7 +165,7 @@ programmatically.

ostree_mutable_tree_new (void);

Returns

-

A new tree.

+

A new tree.

[transfer full]

@@ -256,7 +256,7 @@ exist.

split_path

-

File path components.

+

File path components.

[element-type utf8] @@ -266,7 +266,7 @@ exist.

out_parent

-

The parent tree.

+

The parent tree.

[out][transfer full] @@ -308,7 +308,7 @@ child will be returned in out_subdir

split_path

-

Split pathname.

+

Split pathname.

[element-type utf8] @@ -319,7 +319,7 @@ child will be returned in out_subdir

out_subdir

-

Target parent.

+

Target parent.

[out][transfer full] @@ -338,7 +338,7 @@ child will be returned in out_subdir ostree_mutable_tree_get_subdirs (OstreeMutableTree *self);

Returns

-

All children directories.

+

All children directories.

[transfer none][element-type utf8 OstreeMutableTree]

@@ -349,7 +349,7 @@ ostree_mutable_tree_get_subdirs (OstreeMutableTree *self);

Returns

-

All children files (the value is a checksum).

+

All children files (the value is a checksum).

[transfer none][element-type utf8 utf8]

@@ -358,13 +358,11 @@ ostree_mutable_tree_get_files (

Types and Values

OstreeMutableTree

-
typedef struct OstreeMutableTree OstreeMutableTree;
-

Private instance structure.

+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-OstreeRepo.html b/apidoc/html/ostree-OstreeRepo.html index c474d12e..0410ab45 100644 --- a/apidoc/html/ostree-OstreeRepo.html +++ b/apidoc/html/ostree-OstreeRepo.html @@ -8,7 +8,7 @@ - + @@ -1243,7 +1243,7 @@ already extant repository. If you want to create one, use

Returns

-

An accessor object for an OSTree repository located at dfd +

An accessor object for an OSTree repository located at dfd + path .

[transfer full]

@@ -1271,7 +1271,7 @@ ostree_repo_new (GFile *pa

Returns

-

An accessor object for an OSTree repository located at path +

An accessor object for an OSTree repository located at path .

[transfer full]

@@ -1308,7 +1308,7 @@ instead of assuming "/".

Returns

-

An accessor object for the OSTree repository located at repo_path +

An accessor object for the OSTree repository located at repo_path .

[transfer full]

@@ -1325,7 +1325,7 @@ Otherwise use the path in the OSTREE_REPO environment variable /ostree/repo.

Returns

-

An accessor object for an OSTree repository located at /ostree/repo.

+

An accessor object for an OSTree repository located at /ostree/repo.

[transfer full]

@@ -1523,7 +1523,7 @@ the mode or configuration (repo/config) of an exist

Returns

-

A new OSTree repository reference.

+

A new OSTree repository reference.

[transfer full]

@@ -1604,7 +1604,7 @@ that API. In general, you should avoid use of this API.

Returns

-

Path to repo.

+

Path to repo.

[transfer none]

@@ -1621,7 +1621,7 @@ ostree_repo_get_mode (OstreeRepo *self);

Returns

-

The repository configuration; do not modify.

+

The repository configuration; do not modify.

[transfer none]

@@ -1734,7 +1734,7 @@ are the same repository on disk, FALSE otherwise

OstreeRepo *self
);

Returns

-

A newly-allocated copy of the repository config.

+

A newly-allocated copy of the repository config.

[transfer full]

@@ -1786,7 +1786,7 @@ mapped as follows:

options

-

GVariant of type a{sv}.

+

GVariant of type a{sv}.

[allow-none] @@ -1878,7 +1878,7 @@ options.

sysroot

-

System root.

+

System root.

[allow-none] @@ -1898,7 +1898,7 @@ options.

options

-

GVariant of type a{sv}.

+

GVariant of type a{sv}.

[allow-none] @@ -1939,7 +1939,7 @@ alphabetically. If no remotes are available the function returns

out_n_remotes

-

Number of remotes available.

+

Number of remotes available.

[out][allow-none] @@ -1947,7 +1947,7 @@ alphabetically. If no remotes are available the function returns

Returns

-

a NULL-terminated +

a NULL-terminated array of remote names.

[array length=out_n_remotes][transfer full]

@@ -1985,7 +1985,7 @@ error if the provided remote does not exist.

out_url

-

Remote's URL.

+

Remote's URL.

[out][allow-none] @@ -2035,7 +2035,7 @@ not exist.

out_gpg_verify

-

Remote's GPG option.

+

Remote's GPG option.

[out][allow-none] @@ -2086,7 +2086,7 @@ remote does not exist.

out_gpg_verify_summary

-

Remote's GPG option.

+

Remote's GPG option.

[out][allow-none] @@ -2145,17 +2145,17 @@ from the remote named name

source_stream

-

a GInputStream, or NULL.

+

a GInputStream, or NULL.

[allow-none]

key_ids

-

a NULL-terminated array of GPG key IDs, or NULL.

+

a NULL-terminated array of GPG key IDs, or NULL.

[array zero-terminated=1][element-type utf8][allow-none]

out_imported

-

return location for the number of imported +

return location for the number of imported keys, or NULL.

[allow-none] @@ -2224,13 +2224,13 @@ with

out_summary

-

return location for raw summary data, or +

return location for raw summary data, or NULL.

[
out][optional]

out_signatures

-

return location for raw summary +

return location for raw summary signature data, or NULL.

[out][optional] @@ -2291,18 +2291,18 @@ The following are currently defined:

options

-

A GVariant a{sv} with an extensible set of flags.

+

A GVariant a{sv} with an extensible set of flags.

[nullable]

out_summary

-

return location for raw summary data, or +

return location for raw summary data, or NULL.

[out][optional]

out_signatures

-

return location for raw summary +

return location for raw summary signature data, or NULL.

[out][optional] @@ -2471,7 +2471,7 @@ to NULL.

out_value

-

location to store the list +

location to store the list of strings. The list should be freed with g_strfreev().

[out][array zero-terminated=1] @@ -2533,13 +2533,13 @@ option name. If an error is returned, out_value

default_value

-

Value returned if option_name +

Value returned if option_name is not present.

[allow-none]

out_value

-

Return location for value.

+

Return location for value.

[out] @@ -2580,7 +2580,7 @@ called.

Returns

-

Parent repository, or NULL if none.

+

Parent repository, or NULL if none.

[transfer none]

@@ -2702,7 +2702,7 @@ will not erase any data you write during the transaction.

out_transaction_resume

-

Whether this transaction +

Whether this transaction is resuming from a previous one. This is a legacy state, now OSTree pulls use per-commit state/.commitpartial files.

[allow-none][out] @@ -2748,7 +2748,7 @@ ostree_repo_commit_transaction (

out_stats

-

A set of statistics of things +

A set of statistics of things that happened during this transaction.

[
allow-none][out]
@@ -2837,7 +2837,7 @@ arguments.

checksum

-

The checksum to point it to.

+

The checksum to point it to.

[nullable] @@ -2881,7 +2881,7 @@ be made to the repository.

remote

-

A remote for the ref.

+

A remote for the ref.

[allow-none] @@ -2891,7 +2891,7 @@ be made to the repository.

checksum

-

The checksum to point it to.

+

The checksum to point it to.

[nullable] @@ -2927,7 +2927,7 @@ case where we're creating or overwriting an existing ref.

remote

-

A remote for the ref.

+

A remote for the ref.

[allow-none] @@ -2937,7 +2937,7 @@ case where we're creating or overwriting an existing ref.

checksum

-

The checksum to point it to, or NULL to unset.

+

The checksum to point it to, or NULL to unset.

[allow-none] @@ -2981,7 +2981,7 @@ ostree_repo_set_alias_ref_immediate (

remote

-

A remote for the ref.

+

A remote for the ref.

[
allow-none]
@@ -2991,7 +2991,7 @@ ostree_repo_set_alias_ref_immediate (

target

-

The ref target to point it to, or NULL to unset.

+

The ref target to point it to, or NULL to unset.

[
allow-none]
@@ -3161,7 +3161,7 @@ ostree_repo_has_object (

out_have_object

-

TRUE if repository contains object.

+

TRUE if repository contains object.

[
out]
@@ -3221,7 +3221,7 @@ computed checksum.

expected_checksum

-

If provided, validate content against this checksum.

+

If provided, validate content against this checksum.

[allow-none] @@ -3231,7 +3231,7 @@ computed checksum.

out_csum

-

Binary checksum.

+

Binary checksum.

[out][array fixed-size=32][allow-none] @@ -3284,7 +3284,7 @@ the checksum expected_checksum

expected_checksum

-

If provided, validate content against this checksum.

+

If provided, validate content against this checksum.

[allow-none] @@ -3342,7 +3342,7 @@ ostree_repo_write_metadata_finish (

out_csum

-

Binary checksum value.

+

Binary checksum value.

[
out][array fixed-size=32][element-type guint8]
@@ -3387,7 +3387,7 @@ be returned as out_csum

expected_checksum

-

If provided, validate content against this checksum.

+

If provided, validate content against this checksum.

[allow-none] @@ -3403,7 +3403,7 @@ be returned as out_csum

out_csum

-

Binary checksum.

+

Binary checksum.

[out][array fixed-size=32][allow-none] @@ -3634,7 +3634,7 @@ checksum expected_checksum

expected_checksum

-

If provided, validate content against this checksum.

+

If provided, validate content against this checksum.

[allow-none] @@ -3698,7 +3698,7 @@ ostree_repo_write_content_finish (

out_csum

-

A binary SHA256 checksum of the content object.

+

A binary SHA256 checksum of the content object.

[
out][transfer full]
@@ -3749,7 +3749,7 @@ find the given refspec in local.

out_rev

-

A checksum,or NULL if allow_noent +

A checksum,or NULL if allow_noent is true and it does not exist.

[out][transfer full] @@ -3808,7 +3808,7 @@ local ref is specified but not found.

out_rev

-

A checksum,or NULL if allow_noent +

A checksum,or NULL if allow_noent is true and it does not exist.

[out][transfer full] @@ -3852,13 +3852,13 @@ refspecs which have refspec_prefix

refspec_prefix

-

Only list refs which match this prefix.

+

Only list refs which match this prefix.

[allow-none]

out_all_refs

-

Mapping from ref to checksum.

-[out][element-type utf8 utf8] +

Mapping from ref to checksum.

+[out][element-type utf8 utf8][transfer container]

cancellable

@@ -3908,13 +3908,13 @@ name.

refspec_prefix

-

Only list refs which match this prefix.

+

Only list refs which match this prefix.

[allow-none]

out_all_refs

-

Mapping from ref to checksum.

-[out][element-type utf8 utf8] +

Mapping from ref to checksum.

+[out][element-type utf8 utf8][transfer container]

flags

@@ -3965,8 +3965,8 @@ ostree_repo_remote_list_refs (

out_all_refs

-

Mapping from ref to checksum.

-[
out][element-type utf8 utf8]
+

Mapping from ref to checksum.

+[out][element-type utf8 utf8][transfer container]

cancellable

@@ -4022,7 +4022,7 @@ result in out_variant

out_variant

-

Metadata object.

+

Metadata object.

[out][transfer full] @@ -4068,12 +4068,12 @@ means that only a sub-path of the commit is available.

out_commit

-

Commit.

+

Commit.

[out][allow-none]

out_state

-

Commit state.

+

Commit state.

[out][allow-none] @@ -4126,7 +4126,7 @@ exists, storing the result in out_variant

out_variant

-

Metadata.

+

Metadata.

[out][transfer full] @@ -4172,17 +4172,17 @@ content (for regular files), the metadata, and extended attributes.

out_input

-

File content.

+

File content.

[out][optional][nullable]

out_file_info

-

File information.

+

File information.

[out][optional][nullable]

out_xattrs

-

Extended attributes.

+

Extended attributes.

[out][optional][nullable] @@ -4238,12 +4238,12 @@ repositories.

out_input

-

Stream for object.

+

Stream for object.

[out]

out_size

-

Length of out_input +

Length of out_input .

[out] @@ -4300,7 +4300,7 @@ compression has been applied.

out_size

-

Size in bytes object occupies physically.

+

Size in bytes object occupies physically.

[out] @@ -4495,7 +4495,7 @@ file structure to mtree

modifier

-

Optional commit modifier.

+

Optional commit modifier.

[allow-none] @@ -4691,12 +4691,12 @@ ostree_repo_commit_modifier_new (

commit_filter

-

Function that can inspect individual files.

+

Function that can inspect individual files.

[
allow-none]

user_data

-

User data.

+

User data.

[allow-none] @@ -4709,7 +4709,7 @@ ostree_repo_commit_modifier_new (

Returns

-

A new commit modifier.

+

A new commit modifier.

[transfer full]

@@ -4801,7 +4801,7 @@ policy wins.

sepolicy

-

Policy to use for labeling.

+

Policy to use for labeling.

[allow-none] @@ -4874,7 +4874,7 @@ member of OstreeRepoCheckoutAtOptions, then call ostree_repo_commit_set_devino_cache().

Returns

-

Newly allocated cache.

+

Newly allocated cache.

[transfer full]

@@ -4937,7 +4937,7 @@ overlaying the resulting filesystem hierarchy into m

modifier

-

Optional modifier.

+

Optional modifier.

[allow-none] @@ -5003,7 +5003,7 @@ resulting filesystem hierarchy into mtree

modifier

-

Optional modifier.

+

Optional modifier.

[allow-none] @@ -5061,7 +5061,7 @@ file structure to mtree

modifier

-

Optional commit modifier.

+

Optional commit modifier.

[allow-none] @@ -5119,7 +5119,7 @@ the mtree

out_file

-

An OstreeRepoFile representing mtree +

An OstreeRepoFile representing mtree 's root.

[out] @@ -5170,22 +5170,22 @@ and root_metadata_checksum

parent

-

ASCII SHA256 checksum for parent, or NULL for none.

+

ASCII SHA256 checksum for parent, or NULL for none.

[allow-none]

subject

-

Subject.

+

Subject.

[allow-none]

body

-

Body.

+

Body.

[allow-none]

metadata

-

GVariant of type a{sv}, or NULL for none.

+

GVariant of type a{sv}, or NULL for none.

[allow-none] @@ -5195,7 +5195,7 @@ and root_metadata_checksum

out_commit

-

Resulting ASCII SHA256 checksum for commit.

+

Resulting ASCII SHA256 checksum for commit.

[out] @@ -5246,22 +5246,22 @@ and root_metadata_checksum

parent

-

ASCII SHA256 checksum for parent, or NULL for none.

+

ASCII SHA256 checksum for parent, or NULL for none.

[allow-none]

subject

-

Subject.

+

Subject.

[allow-none]

body

-

Body.

+

Body.

[allow-none]

metadata

-

GVariant of type a{sv}, or NULL for none.

+

GVariant of type a{sv}, or NULL for none.

[allow-none] @@ -5276,7 +5276,7 @@ and root_metadata_checksum

out_commit

-

Resulting ASCII SHA256 checksum for commit.

+

Resulting ASCII SHA256 checksum for commit.

[out] @@ -5328,7 +5328,7 @@ to NULL.

out_metadata

-

Metadata associated with commit in with format "a{sv}", or NULL if none exists.

+

Metadata associated with commit in with format "a{sv}", or NULL if none exists.

[out][transfer full] @@ -5382,7 +5382,7 @@ data will be deleted.

metadata

-

Metadata to associate with commit in with format "a{sv}", or NULL to delete.

+

Metadata to associate with commit in with format "a{sv}", or NULL to delete.

[allow-none] @@ -5430,7 +5430,7 @@ ostree_repo_checkout_at_options_set_devino

cache

-

Devino cache.

+

Devino cache.

[transfer none][nullable] @@ -5548,7 +5548,7 @@ cache.

options

-

Options.

+

Options.

[allow-none] @@ -5616,7 +5616,7 @@ cache.

options

-

Options.

+

Options.

[allow-none] @@ -5720,12 +5720,12 @@ ostree_repo_read_commit (

out_root

-

An OstreeRepoFile corresponding to the root.

+

An OstreeRepoFile corresponding to the root.

[out]

out_commit

-

The resolved commit checksum.

+

The resolved commit checksum.

[out] @@ -5884,7 +5884,7 @@ repository, returning its result in out_deltas

out_deltas

-

String name of deltas (checksum-checksum.delta).

+

String name of deltas (checksum-checksum.delta).

[out][element-type utf8][transfer container] @@ -5965,12 +5965,12 @@ for input files

metadata

-

Optional metadata.

+

Optional metadata.

[allow-none]

params

-

Parameters, see below.

+

Parameters, see below.

[allow-none] @@ -6048,7 +6048,7 @@ ostree_repo_traverse_new_reachable (ostree_object_name_deserialize().

Returns

-

A new hash table.

+

A new hash table.

[transfer container][element-type GVariant GVariant]

@@ -6093,7 +6093,7 @@ from commit_checksum

out_reachable

-

Set of reachable objects.

+

Set of reachable objects.

[out][transfer container][element-type GVariant GVariant] @@ -6211,17 +6211,17 @@ from

out_name

-

Name of current dir.

+

Name of current dir.

[
out][transfer none]

out_content_checksum

-

Checksum of current content.

+

Checksum of current content.

[out][transfer none]

out_meta_checksum

-

Checksum of current metadata.

+

Checksum of current metadata.

[out][transfer none] @@ -6255,12 +6255,12 @@ called if

out_name

-

Name of current file.

+

Name of current file.

[
out][transfer none]

out_checksum

-

Checksum of current file.

+

Checksum of current file.

[out][transfer none] @@ -6462,17 +6462,17 @@ deleting them.

out_objects_total

-

Number of objects found.

+

Number of objects found.

[out]

out_objects_pruned

-

Number of objects deleted.

+

Number of objects deleted.

[out]

out_pruned_object_size_total

-

Storage size in bytes of objects deleted.

+

Storage size in bytes of objects deleted.

[out] @@ -6516,7 +6516,7 @@ deleted.

commit

-

ASCII SHA256 checksum for commit, or NULL for each +

ASCII SHA256 checksum for commit, or NULL for each non existing commit.

[allow-none] @@ -6575,17 +6575,17 @@ statistics on objects that would be deleted, without actually deleting them.

out_objects_total

-

Number of objects found.

+

Number of objects found.

[out]

out_objects_pruned

-

Number of objects deleted.

+

Number of objects deleted.

[out]

out_pruned_object_size_total

-

Storage size in bytes of objects deleted.

+

Storage size in bytes of objects deleted.

[out] @@ -6653,7 +6653,7 @@ one around this call.

refs_to_fetch

-

Optional list of refs; if NULL, fetch all configured refs.

+

Optional list of refs; if NULL, fetch all configured refs.

[array zero-terminated=1][element-type utf8][allow-none] @@ -6663,7 +6663,7 @@ one around this call.

progress

-

Progress.

+

Progress.

[allow-none] @@ -6720,7 +6720,7 @@ subpath.

refs_to_fetch

-

Optional list of refs; if NULL, fetch all configured refs.

+

Optional list of refs; if NULL, fetch all configured refs.

[array zero-terminated=1][element-type utf8][allow-none] @@ -6730,7 +6730,7 @@ subpath.

progress

-

Progress.

+

Progress.

[allow-none] @@ -6808,7 +6808,7 @@ string to pull the latest commit for that ref

progress

-

Progress.

+

Progress.

[allow-none] @@ -6860,7 +6860,7 @@ and user_data

user_data

-

User data.

+

User data.

[allow-none] @@ -6904,7 +6904,7 @@ ostree_repo_sign_commit (

homedir

-

GPG home directory, or NULL.

+

GPG home directory, or NULL.

[
allow-none]
@@ -6995,12 +6995,12 @@ ostree_repo_add_gpg_signature_summary (

key_id

-

NULL-terminated array of GPG keys.

+

NULL-terminated array of GPG keys.

[
array zero-terminated=1][element-type utf8]

homedir

-

GPG home directory, or NULL.

+

GPG home directory, or NULL.

[allow-none] @@ -7053,7 +7053,7 @@ the verifications using GPG keys in the keyrings of all remotes.

remote_name

-

Name of remote.

+

Name of remote.

[nullable] @@ -7068,12 +7068,12 @@ the verifications using GPG keys in the keyrings of all remotes.

keyringdir

-

Path to directory GPG keyrings; overrides built-in default if given.

+

Path to directory GPG keyrings; overrides built-in default if given.

[nullable]

extra_keyring

-

Path to additional keyring file (not a directory).

+

Path to additional keyring file (not a directory).

[nullable] @@ -7091,7 +7091,7 @@ the verifications using GPG keys in the keyrings of all remotes.

Returns

-

an OstreeGpgVerifyResult, or NULL on error.

+

an OstreeGpgVerifyResult, or NULL on error.

[transfer full]

@@ -7129,12 +7129,12 @@ checksum commit_checksum

keyringdir

-

Path to directory GPG keyrings; overrides built-in default if given.

+

Path to directory GPG keyrings; overrides built-in default if given.

[allow-none]

extra_keyring

-

Path to additional keyring file (not a directory).

+

Path to additional keyring file (not a directory).

[allow-none] @@ -7189,12 +7189,12 @@ ostree_repo_verify_commit_ext (

keyringdir

-

Path to directory GPG keyrings; overrides built-in default if given.

+

Path to directory GPG keyrings; overrides built-in default if given.

[
allow-none]

extra_keyring

-

Path to additional keyring file (not a directory).

+

Path to additional keyring file (not a directory).

[allow-none] @@ -7212,7 +7212,7 @@ ostree_repo_verify_commit_ext (

Returns

-

an OstreeGpgVerifyResult, or NULL on error.

+

an OstreeGpgVerifyResult, or NULL on error.

[transfer full]

@@ -7269,7 +7269,7 @@ configured for remote

Returns

-

an OstreeGpgVerifyResult, or NULL on error.

+

an OstreeGpgVerifyResult, or NULL on error.

[transfer full]

@@ -7332,7 +7332,7 @@ ostree_repo_verify_summary (

Returns

-

an OstreeGpgVerifyResult, or NULL on error.

+

an OstreeGpgVerifyResult, or NULL on error.

[transfer full]

@@ -7374,7 +7374,7 @@ order.

additional_metadata

-

A GVariant of type a{sv}, or NULL.

+

A GVariant of type a{sv}, or NULL.

[allow-none] @@ -7396,8 +7396,6 @@ order.

Types and Values

OstreeRepo

-
typedef struct OstreeRepo OstreeRepo;
-

Private instance structure.


@@ -7639,6 +7637,8 @@ in bytes, counting only content objects.


enum OstreeRepoCommitState

+

Flags representing the state of a commit in the local repository, as returned +by ostree_repo_load_commit().

Members

@@ -7647,13 +7647,27 @@ in bytes, counting only content objects.

- + + + + + + + - - - + + + +

OSTREE_REPO_COMMIT_STATE_NORMAL

+

Commit is complete. This is the default. + (Since: 2017.14.)

+
 

OSTREE_REPO_COMMIT_STATE_PARTIAL

  
+

One or more objects are missing from the + local copy of the commit, but metadata is present. (Since: 2015.7.)

+
 
+

Since: 2015.7


@@ -7688,8 +7702,6 @@ in bytes, counting only content objects.


OstreeRepoCommitModifier

-
typedef struct OstreeRepoCommitModifier OstreeRepoCommitModifier;
-

A structure allowing control over commits.


@@ -7746,6 +7758,13 @@ in bytes, counting only content objects.

  + +

OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL

+ +

If a devino cache hit is found, skip modifier filters (non-directories only); Since: 2017.14

+ +  +
@@ -8092,6 +8111,6 @@ as - List of pack file checksums in which this object appears

+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html b/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html index 21f68ee7..25b03a92 100644 --- a/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html +++ b/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html @@ -8,7 +8,7 @@ - + @@ -183,7 +183,7 @@ must always have the correct type.

ostree_async_progress_new (void);

Returns

-

A new progress object.

+

A new progress object.

[transfer full]

@@ -220,7 +220,7 @@ set.

Returns

-

the current status, or NULL if none is set.

+

the current status, or NULL if none is set.

[transfer full][nullable]

Since: 2017.6

@@ -328,7 +328,7 @@ with it. The lookup is thread-safe.

Returns

-

value for the given key +

value for the given key , or NULL if it was not set.

[transfer full][nullable]

@@ -374,7 +374,7 @@ operation is thread-safe. NULL may be passed to cle

status

-

new status string, or NULL to clear the status.

+

new status string, or NULL to clear the status.

[nullable] @@ -540,12 +540,10 @@ events will be queued.

Types and Values

OstreeAsyncProgress

-
typedef struct OstreeAsyncProgress   OstreeAsyncProgress;
-
+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-Root-partition-mount-point.html b/apidoc/html/ostree-Root-partition-mount-point.html index d2ca1ea3..44e362b4 100644 --- a/apidoc/html/ostree-Root-partition-mount-point.html +++ b/apidoc/html/ostree-Root-partition-mount-point.html @@ -8,7 +8,7 @@ - + @@ -380,7 +380,7 @@ the current visible root file system is used, equivalent to

path

-

Path to a system root directory, or NULL to use the +

Path to a system root directory, or NULL to use the current visible root file system.

[allow-none] @@ -388,7 +388,7 @@ current visible root file system.

Returns

-

An accessor object for an system root located at path +

An accessor object for an system root located at path .

[transfer full]

@@ -400,7 +400,7 @@ current visible root file system.

ostree_sysroot_new_default (void);

Returns

-

An accessor for the current visible root / filesystem.

+

An accessor for the current visible root / filesystem.

[transfer full]

@@ -411,7 +411,7 @@ ostree_sysroot_new_default (void< ostree_sysroot_get_path (OstreeSysroot *self);

Returns

-

Path to rootfs.

+

Path to rootfs.

[transfer none]

@@ -530,7 +530,7 @@ be released if self

out_acquired

-

Whether or not the lock has been acquired.

+

Whether or not the lock has been acquired.

[out] @@ -771,7 +771,7 @@ ostree_sysroot_get_deployments (

Returns

-

Ordered list of deployments.

+

Ordered list of deployments.

[element-type OstreeDeployment][transfer container]

@@ -797,7 +797,7 @@ ostree_sysroot_get_booted_deployment (

Returns

-

The currently booted deployment, or NULL if none.

+

The currently booted deployment, or NULL if none.

[transfer none]

@@ -832,7 +832,7 @@ ostree_sysroot_get_deployment_directory

Returns

-

Path to deployment root directory.

+

Path to deployment root directory.

[transfer full]

@@ -869,7 +869,7 @@ or concatenate it with the full

Returns

-

Path to deployment root directory, relative to sysroot.

+

Path to deployment root directory, relative to sysroot.

[transfer full]

@@ -896,7 +896,7 @@ ostree_sysroot_get_deployment_origin_path

Returns

-

Path to deployment origin file.

+

Path to deployment origin file.

[transfer full]

@@ -999,7 +999,7 @@ has been invoked successfully.

Returns

-

The OSTree repository in sysroot self +

The OSTree repository in sysroot self .

[transfer none]

@@ -1031,7 +1031,7 @@ ostree_sysroot_get_repo (

out_repo

-

Repository in sysroot self +

Repository in sysroot self .

[
out][transfer full][optional]
@@ -1131,7 +1131,7 @@ values in new_kargs

new_kargs

-

Replace deployment's kernel arguments.

+

Replace deployment's kernel arguments.

[array zero-terminated=1][element-type utf8] @@ -1277,7 +1277,7 @@ version will perform post-deployment cleanup by default.

new_deployments

-

List of new deployments.

+

List of new deployments.

[element-type OstreeDeployment] @@ -1328,7 +1328,7 @@ if for example you want to control pruning of the repository.

new_deployments

-

List of new deployments.

+

List of new deployments.

[element-type OstreeDeployment] @@ -1387,7 +1387,7 @@ this function will write the current origin of deplo

new_origin

-

Origin content.

+

Origin content.

[allow-none] @@ -1437,7 +1437,7 @@ way merge with provided_merge_deployment

osname

-

osname to use for merge deployment.

+

osname to use for merge deployment.

[allow-none] @@ -1447,22 +1447,22 @@ way merge with provided_merge_deployment

origin

-

Origin to use for upgrades.

+

Origin to use for upgrades.

[allow-none]

provided_merge_deployment

-

Use this deployment for merge path.

+

Use this deployment for merge path.

[allow-none]

override_kernel_argv

-

Use these as kernel arguments; if NULL, inherit options from provided_merge_deployment.

+

Use these as kernel arguments; if NULL, inherit options from provided_merge_deployment.

[allow-none][array zero-terminated=1][element-type utf8]

out_new_deployment

-

The new deployment path.

+

The new deployment path.

[out] @@ -1503,7 +1503,7 @@ the first one in the current deployment list which matches osname.

osname

-

Operating system group.

+

Operating system group.

[allow-none] @@ -1511,7 +1511,7 @@ the first one in the current deployment list which matches osname.

Returns

-

Configuration merge deployment.

+

Configuration merge deployment.

[transfer full]

@@ -1548,17 +1548,17 @@ we're not looking at the booted deployment.

osname

-

"stateroot" name.

+

"stateroot" name.

[allow-none]

out_pending

-

The pending deployment.

+

The pending deployment.

[out][allow-none][transfer full]

out_rollback

-

The rollback deployment.

+

The rollback deployment.

[out][allow-none][transfer full] @@ -1597,7 +1597,7 @@ ostree_sysroot_origin_new_from_refspec

Returns

-

A new config file which sets refspec +

A new config file which sets refspec as an origin.

[transfer full]

@@ -1649,7 +1649,7 @@ later, instead.

osname

-

OS name.

+

OS name.

[allow-none] @@ -1659,7 +1659,7 @@ later, instead.

merge_deployment

-

Use this deployment for configuration merge.

+

Use this deployment for configuration merge.

[allow-none] @@ -1686,8 +1686,6 @@ later, instead.

Types and Values

OstreeSysroot

-
typedef struct OstreeSysroot OstreeSysroot;
-

@@ -1738,6 +1736,6 @@ later, instead.

+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-SELinux-policy-management.html b/apidoc/html/ostree-SELinux-policy-management.html index 41bf8a5c..730362db 100644 --- a/apidoc/html/ostree-SELinux-policy-management.html +++ b/apidoc/html/ostree-SELinux-policy-management.html @@ -8,7 +8,7 @@ - + @@ -173,7 +173,7 @@ ostree_sepolicy_new (GFile

Returns

-

An accessor object for SELinux policy in root located at path +

An accessor object for SELinux policy in root located at path .

[transfer full]

@@ -214,7 +214,7 @@ ostree_sepolicy_new_at (int

Returns

-

An accessor object for SELinux policy in root located at rootfs_dfd +

An accessor object for SELinux policy in root located at rootfs_dfd .

[transfer full]

@@ -226,7 +226,7 @@ ostree_sepolicy_new_at (intOstreeSePolicy *self);

Returns

-

Path to rootfs.

+

Path to rootfs.

[transfer none]

@@ -237,7 +237,7 @@ ostree_sepolicy_get_path (OstreeSePolicy *self);

Returns

-

Type of current policy.

+

Type of current policy.

[transfer none]

@@ -283,7 +283,7 @@ will be returned.

out_label

-

Return location for security context.

+

Return location for security context.

[allow-none][out][transfer full] @@ -307,7 +307,7 @@ will be returned.

ostree_sepolicy_get_csum (OstreeSePolicy *self);

Returns

-

Checksum of current policy.

+

Checksum of current policy.

[transfer none]

@@ -346,7 +346,7 @@ ostree_sepolicy_restorecon (

info

-

File attributes.

+

File attributes.

[
allow-none]
@@ -361,7 +361,7 @@ ostree_sepolicy_restorecon (

out_new_label

-

New label, or NULL if unchanged.

+

New label, or NULL if unchanged.

[
allow-none][out] @@ -447,8 +447,6 @@ ostree_sepolicy_fscreatecon_cleanup (

Types and Values

OstreeSePolicy

-
typedef struct OstreeSePolicy OstreeSePolicy;
-

@@ -484,6 +482,6 @@ ostree_sepolicy_fscreatecon_cleanup ( -
Generated by GTK-Doc V1.25
+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-Simple-upgrade-class.html b/apidoc/html/ostree-Simple-upgrade-class.html index 3097a612..e810bda4 100644 --- a/apidoc/html/ostree-Simple-upgrade-class.html +++ b/apidoc/html/ostree-Simple-upgrade-class.html @@ -8,7 +8,7 @@ - + @@ -195,7 +195,7 @@ ostree_sysroot_upgrader_new (

Returns

-

An upgrader.

+

An upgrader.

[transfer full]

@@ -223,7 +223,7 @@ ostree_sysroot_upgrader_new_for_os (

osname

-

Operating system name.

+

Operating system name.

[
allow-none]
@@ -241,7 +241,7 @@ ostree_sysroot_upgrader_new_for_os (

Returns

-

An upgrader.

+

An upgrader.

[transfer full]

@@ -271,7 +271,7 @@ ostree_sysroot_upgrader_new_for_os_with_flags

osname

-

Operating system name.

+

Operating system name.

[allow-none] @@ -294,7 +294,7 @@ ostree_sysroot_upgrader_new_for_os_with_flags

Returns

-

An upgrader.

+

An upgrader.

[transfer full]

@@ -320,7 +320,7 @@ ostree_sysroot_upgrader_get_origin (

Returns

-

The origin file, or NULL if unknown.

+

The origin file, or NULL if unknown.

[transfer none]

@@ -346,7 +346,7 @@ ostree_sysroot_upgrader_dup_origin (

Returns

-

A copy of the origin file, or NULL if unknown.

+

A copy of the origin file, or NULL if unknown.

[transfer full]

@@ -376,7 +376,7 @@ ostree_sysroot_upgrader_set_origin (

origin

-

The new origin.

+

The new origin.

[
allow-none] @@ -510,12 +510,12 @@ ref locally. Then out_changed

progress

-

Progress.

+

Progress.

[allow-none]

out_changed

-

Whether or not the origin changed.

+

Whether or not the origin changed.

[out] @@ -578,12 +578,12 @@ from inside the tree such as package databases.

progress

-

Progress.

+

Progress.

[allow-none]

out_changed

-

Whether or not the origin changed.

+

Whether or not the origin changed.

[out] @@ -642,8 +642,6 @@ with /etc, and update the bootloader configuration.

Types and Values

OstreeSysrootUpgrader

-
typedef struct OstreeSysrootUpgrader OstreeSysrootUpgrader;
-

@@ -710,6 +708,6 @@ with /etc, and update the bootloader configuration.

+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-ostree-bootconfig-parser.html b/apidoc/html/ostree-ostree-bootconfig-parser.html index d106b800..2e3b582f 100644 --- a/apidoc/html/ostree-ostree-bootconfig-parser.html +++ b/apidoc/html/ostree-ostree-bootconfig-parser.html @@ -8,7 +8,7 @@ - + @@ -150,7 +150,7 @@ ostree_bootconfig_parser_clone (

Returns

-

Copy of self +

Copy of self .

[transfer full]

@@ -256,6 +256,6 @@ ostree_bootconfig_parser_get ( -
Generated by GTK-Doc V1.25 +
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-ostree-chain-input-stream.html b/apidoc/html/ostree-ostree-chain-input-stream.html index 33875a3a..326f45a7 100644 --- a/apidoc/html/ostree-ostree-chain-input-stream.html +++ b/apidoc/html/ostree-ostree-chain-input-stream.html @@ -8,7 +8,7 @@ - + @@ -84,6 +84,6 @@ ostree_chain_input_stream_new (GP +
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-ostree-checksum-input-stream.html b/apidoc/html/ostree-ostree-checksum-input-stream.html index dd8ee2ca..15e8eabf 100644 --- a/apidoc/html/ostree-ostree-checksum-input-stream.html +++ b/apidoc/html/ostree-ostree-checksum-input-stream.html @@ -8,7 +8,7 @@ - + @@ -85,6 +85,6 @@ ostree_checksum_input_stream_new ( +
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-ostree-deployment.html b/apidoc/html/ostree-ostree-deployment.html index dc98e94b..3d344a80 100644 --- a/apidoc/html/ostree-ostree-deployment.html +++ b/apidoc/html/ostree-ostree-deployment.html @@ -8,7 +8,7 @@ - + @@ -230,12 +230,12 @@ ostree_deployment_equal (gconstpo

ap

-

A deployment.

+

A deployment.

[
type OstreeDeployment]

bp

-

A deployment.

+

A deployment.

[type OstreeDeployment] @@ -315,7 +315,7 @@ ostree_deployment_get_bootconfig (

Returns

-

Boot configuration.

+

Boot configuration.

[transfer none]

@@ -341,7 +341,7 @@ ostree_deployment_get_origin (

Returns

-

Origin.

+

Origin.

[transfer none]

@@ -370,7 +370,7 @@ or concatenate it with the full

Returns

-

Path to deployment root directory, relative to sysroot.

+

Path to deployment root directory, relative to sysroot.

[transfer full]

@@ -430,7 +430,7 @@ ostree_deployment_clone (

Returns

-

New deep copy of self +

New deep copy of self .

[transfer full]

@@ -522,6 +522,6 @@ ostree_deployment_unlocked_state_to_string +
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-ostree-diff.html b/apidoc/html/ostree-ostree-diff.html index 1b26e56c..aa4af9ec 100644 --- a/apidoc/html/ostree-ostree-diff.html +++ b/apidoc/html/ostree-ostree-diff.html @@ -8,7 +8,7 @@ - + @@ -162,17 +162,17 @@ sets of

modified

-

Modified files.

+

Modified files.

[
element-type OstreeDiffItem]

removed

-

Removed files.

+

Removed files.

[element-type Gio.File]

added

-

Added files.

+

Added files.

[element-type Gio.File] @@ -235,17 +235,17 @@ sets of

modified

-

Modified files.

+

Modified files.

[
element-type OstreeDiffItem]

removed

-

Removed files.

+

Removed files.

[element-type Gio.File]

added

-

Added files.

+

Added files.

[element-type Gio.File] @@ -255,7 +255,7 @@ sets of

options

-

Options.

+

Options.

[
allow-none] @@ -298,17 +298,17 @@ ostree_diff_print (GFile *

modified

-

Modified files.

+

Modified files.

[element-type OstreeDiffItem]

removed

-

Removed files.

+

Removed files.

[element-type Gio.File]

added

-

Added files.

+

Added files.

[element-type Gio.File] @@ -363,6 +363,6 @@ ostree_diff_print (GFile * +
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree-ostree-repo-file.html b/apidoc/html/ostree-ostree-repo-file.html index 180e2b34..0d93d1e6 100644 --- a/apidoc/html/ostree-ostree-repo-file.html +++ b/apidoc/html/ostree-ostree-repo-file.html @@ -7,7 +7,7 @@ - + @@ -174,7 +174,7 @@ ostree_repo_file_get_xattrs (OstreeRepoFile *self);

Returns

-

Repository.

+

Repository.

[transfer none]

@@ -185,7 +185,7 @@ ostree_repo_file_get_repo (OstreeRepoFile *self);

Returns

-

The root directory for the commit referenced by this file.

+

The root directory for the commit referenced by this file.

[transfer none]

@@ -255,12 +255,10 @@ ostree_repo_file_tree_query_child (

Types and Values

OstreeRepoFile

-
typedef struct OstreeRepoFile OstreeRepoFile;
-
+
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/html/ostree.devhelp2 b/apidoc/html/ostree.devhelp2 index 080d3318..088b0285 100644 --- a/apidoc/html/ostree.devhelp2 +++ b/apidoc/html/ostree.devhelp2 @@ -216,7 +216,7 @@ - + @@ -404,6 +404,7 @@ + @@ -413,6 +414,7 @@ + diff --git a/apidoc/html/reference.html b/apidoc/html/reference.html index 2a33d1ef..010487fe 100644 --- a/apidoc/html/reference.html +++ b/apidoc/html/reference.html @@ -8,7 +8,7 @@ - + @@ -1572,6 +1572,6 @@ OSTREE_YEAR_VERSION, macro in ostree-version +
Generated by GTK-Doc V1.26 \ No newline at end of file diff --git a/apidoc/ostree-experimental-sections.txt b/apidoc/ostree-experimental-sections.txt index 309d07fb..60daaca5 100644 --- a/apidoc/ostree-experimental-sections.txt +++ b/apidoc/ostree-experimental-sections.txt @@ -19,6 +19,9 @@ OstreeRemote ostree_remote_ref ostree_remote_unref ostree_remote_get_name +ostree_remote_get_url + +ostree_remote_get_type
diff --git a/apidoc/version.xml b/apidoc/version.xml index d7a9304e..8e8d187b 100644 --- a/apidoc/version.xml +++ b/apidoc/version.xml @@ -1 +1 @@ -2017.13 \ No newline at end of file +2017.14 \ No newline at end of file diff --git a/build-aux/compile b/build-aux/compile index a85b723c..2ab71e4e 100755 --- a/build-aux/compile +++ b/build-aux/compile @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -255,7 +255,8 @@ EOF echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -342,6 +343,6 @@ exit $ret # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/config.guess b/build-aux/config.guess index 2e9ad7fe..a7448442 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2016 Free Software Foundation, Inc. +# Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2016-10-02' +timestamp='2017-08-08' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2016 Free Software Foundation, Inc. +Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -259,6 +259,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; + *:Redox:*:*) + echo ${UNAME_MACHINE}-unknown-redox + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -837,10 +840,11 @@ EOF UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin @@ -1303,14 +1307,21 @@ EOF if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub @@ -1334,15 +1345,18 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) + NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; - NSR-?:NONSTOP_KERNEL:*:*) + NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk${UNAME_RELEASE} + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; @@ -1418,8 +1432,8 @@ cat >&2 <." version="\ GNU config.sub ($timestamp) -Copyright 1992-2016 Free Software Foundation, Inc. +Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -263,7 +263,7 @@ case $basic_machine in | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ - | i370 | i860 | i960 | ia64 \ + | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ @@ -301,6 +301,7 @@ case $basic_machine in | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ @@ -314,6 +315,7 @@ case $basic_machine in | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ + | wasm32 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) @@ -387,7 +389,7 @@ case $basic_machine in | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ @@ -428,6 +430,7 @@ case $basic_machine in | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ @@ -444,6 +447,7 @@ case $basic_machine in | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ + | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -946,6 +950,9 @@ case $basic_machine in nsr-tandem) basic_machine=nsr-tandem ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf @@ -1241,6 +1248,9 @@ case $basic_machine in basic_machine=a29k-wrs os=-vxworks ;; + wasm32) + basic_machine=wasm32-unknown + ;; w65*) basic_machine=w65-wdc os=-none @@ -1395,7 +1405,7 @@ case $os in | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ @@ -1407,7 +1417,7 @@ case $os in | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ - | -onefs* | -tirtos* | -phoenix*) + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1636,6 +1646,9 @@ case $basic_machine in sparc-* | *-sun) os=-sunos4.1.1 ;; + pru-*) + os=-elf + ;; *-be) os=-beos ;; diff --git a/build-aux/depcomp b/build-aux/depcomp index fc98710e..b39f98f9 100755 --- a/build-aux/depcomp +++ b/build-aux/depcomp @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2013-05-30.07; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -786,6 +786,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/install-sh b/build-aux/install-sh index 0b0fdcbb..0360b79e 100755 --- a/build-aux/install-sh +++ b/build-aux/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2013-12-25.23; # UTC +scriptversion=2016-01-11.22; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -496,6 +496,6 @@ done # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/missing b/build-aux/missing index f62bbae3..c6e37958 100755 --- a/build-aux/missing +++ b/build-aux/missing @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2013-10-28.13; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -210,6 +210,6 @@ exit $st # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/build-aux/test-driver b/build-aux/test-driver index 8e575b01..0218a01f 100755 --- a/build-aux/test-driver +++ b/build-aux/test-driver @@ -1,9 +1,9 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2013-07-13.22; # UTC +scriptversion=2016-01-11.22; # UTC -# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2011-2017 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -143,6 +143,6 @@ echo ":copy-in-global-log: $gcopy" >> $trs_file # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/buildutil/libglnx.m4 b/buildutil/libglnx.m4 index 770f117b..d5bcc2f1 100644 --- a/buildutil/libglnx.m4 +++ b/buildutil/libglnx.m4 @@ -1,6 +1,9 @@ AC_DEFUN([LIBGLNX_CONFIGURE], [ -AC_CHECK_DECLS([renameat2, memfd_create], +AC_CHECK_DECLS([ + renameat2, + memfd_create, + copy_file_range], [], [], [[ #include #include diff --git a/config.h.in b/config.h.in index 42295b39..0c05d5f4 100644 --- a/config.h.in +++ b/config.h.in @@ -21,7 +21,7 @@ /* Define if we should be compatible with wrpseudo */ #undef ENABLE_WRPSEUDO_COMPAT -/* The system grub2-mkconfig executible name */ +/* The system grub2-mkconfig executable name */ #undef GRUB2_MKCONFIG_PATH /* Define to 1 if you have the `archive_read_support_filter_all' function. */ @@ -30,6 +30,13 @@ /* Define if we have avahi-client.pc and avahi-glib.pc */ #undef HAVE_AVAHI +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define to 1 if you have the declaration of `copy_file_range', and to 0 if + you don't. */ +#undef HAVE_DECL_COPY_FILE_RANGE + /* Define to 1 if you have the declaration of `memfd_create', and to 0 if you don't. */ #undef HAVE_DECL_MEMFD_CREATE @@ -38,6 +45,10 @@ don't. */ #undef HAVE_DECL_RENAMEAT2 +/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. + */ +#undef HAVE_DECL_TZNAME + /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H @@ -74,6 +85,9 @@ /* Define to 1 if you have the `mnt_unref_cache' function. */ #undef HAVE_MNT_UNREF_CACHE +/* Define to 1 if you have the `nanotime' function. */ +#undef HAVE_NANOTIME + /* Define if we have openssl */ #undef HAVE_OPENSSL @@ -92,12 +106,23 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H +/* Define to 1 if `tm_zone' is a member of `struct tm'. */ +#undef HAVE_STRUCT_TM_TM_ZONE + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#undef HAVE_TM_ZONE + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +#undef HAVE_TZNAME + /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H @@ -128,6 +153,9 @@ /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + /* Define if using internal ostree-grub-generator */ #undef USE_BUILTIN_GRUB2_MKCONFIG diff --git a/configure b/configure index 98d45b28..4b1d37ed 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libostree 2017.13. +# Generated by GNU Autoconf 2.69 for libostree 2017.14. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libostree' PACKAGE_TARNAME='libostree' -PACKAGE_VERSION='2017.13' -PACKAGE_STRING='libostree 2017.13' +PACKAGE_VERSION='2017.14' +PACKAGE_STRING='libostree 2017.14' PACKAGE_BUGREPORT='walters@verbum.org' PACKAGE_URL='' @@ -1540,7 +1540,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libostree 2017.13 to adapt to many kinds of systems. +\`configure' configures libostree 2017.14 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1610,7 +1610,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libostree 2017.13:";; + short | recursive ) echo "Configuration of libostree 2017.14:";; esac cat <<\_ACEOF @@ -1851,7 +1851,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libostree configure 2017.13 +libostree configure 2017.14 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2262,11 +2262,68 @@ $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +$as_echo_n "checking for $2.$3... " >&6; } +if eval \${$4+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$4 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libostree $as_me 2017.13, which was +It was created by libostree $as_me 2017.14, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3134,7 +3191,7 @@ fi # Define the identity of the package. PACKAGE='libostree' - VERSION='2017.13' + VERSION='2017.14' # Some tools Automake needs. @@ -5868,9 +5925,9 @@ test -n "$YACC" || YACC="yacc" YEAR_VERSION=2017 -RELEASE_VERSION=13 +RELEASE_VERSION=14 -PACKAGE_VERSION=2017.13 +PACKAGE_VERSION=2017.14 if echo "$CFLAGS" | grep -q -E -e '-Werror($| )'; then : @@ -5879,23 +5936,24 @@ else for flag in \ - -pipe \ - -Wall \ - -Werror=empty-body \ - -Werror=strict-prototypes \ - -Werror=missing-prototypes \ - -Werror=implicit-function-declaration \ - "-Werror=format=2 -Werror=format-security -Werror=format-nonliteral" \ - -Werror=pointer-arith -Werror=init-self \ - -Werror=missing-declarations \ - -Werror=return-type \ - -Werror=switch \ - -Werror=overflow \ - -Werror=int-conversion \ - -Werror=parenthesis \ - -Werror=incompatible-pointer-types \ - -Werror=misleading-indentation \ - -Werror=missing-include-dirs -Werror=aggregate-return \ + -pipe \ + -Wall \ + -Werror=empty-body \ + -Werror=strict-prototypes \ + -Werror=missing-prototypes \ + -Werror=implicit-function-declaration \ + "-Werror=format=2 -Werror=format-security -Werror=format-nonliteral" \ + -Werror=pointer-arith -Werror=init-self \ + -Werror=missing-declarations \ + -Werror=return-type \ + -Werror=switch \ + -Werror=overflow \ + -Werror=int-conversion \ + -Werror=parenthesis \ + -Werror=undef \ + -Werror=incompatible-pointer-types \ + -Werror=misleading-indentation \ + -Werror=missing-include-dirs -Werror=aggregate-return \ -Werror=unused-result \ ; do @@ -13750,6 +13808,25 @@ fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_MEMFD_CREATE $ac_have_decl _ACEOF +ac_fn_c_check_decl "$LINENO" "copy_file_range" "ac_cv_have_decl_copy_file_range" " +#include +#include +#include +#include +#include +#include +#include + +" +if test "x$ac_cv_have_decl_copy_file_range" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_COPY_FILE_RANGE $ac_have_decl +_ACEOF # Check whether --enable-otmpfile was given. @@ -13786,6 +13863,120 @@ fi +for ac_func in nanotime clock_gettime +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if ${ac_cv_struct_tm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h +else + ac_cv_struct_tm=sys/time.h +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include +#include <$ac_cv_struct_tm> + +" +if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_ZONE 1 +_ACEOF + + +fi + +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h + +else + ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include +" +if test "x$ac_cv_have_decl_tzname" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME $ac_have_decl +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 +$as_echo_n "checking for tzname... " >&6; } +if ${ac_cv_var_tzname+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if !HAVE_DECL_TZNAME +extern char *tzname[]; +#endif + +int +main () +{ +return tzname[0][0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_var_tzname=yes +else + ac_cv_var_tzname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 +$as_echo "$ac_cv_var_tzname" >&6; } + if test $ac_cv_var_tzname = yes; then + +$as_echo "#define HAVE_TZNAME 1" >>confdefs.h + + fi +fi + ac_fn_c_check_header_mongrel "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default" if test "x$ac_cv_header_sys_xattr_h" = xyes; then : @@ -14155,7 +14346,7 @@ else #include int -main (void) +main () { unsigned int major, minor, micro; @@ -18168,7 +18359,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libostree $as_me 2017.13, which was +This file was extended by libostree $as_me 2017.14, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18234,7 +18425,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libostree config.status 2017.13 +libostree config.status 2017.14 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 92248af8..629c923b 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ dnl update libostree-released.sym from libostree-devel.sym, and update the check dnl in test-symbols.sh, and also set is_release_build=yes below. Then make dnl another post-release commit to bump the version, and set is_release_build=no. m4_define([year_version], [2017]) -m4_define([release_version], [13]) +m4_define([release_version], [14]) m4_define([package_version], [year_version.release_version]) AC_INIT([libostree], [package_version], [walters@verbum.org]) is_release_build=yes @@ -30,23 +30,24 @@ AC_SUBST([PACKAGE_VERSION], [package_version]) AS_IF([echo "$CFLAGS" | grep -q -E -e '-Werror($| )'], [], [ CC_CHECK_FLAGS_APPEND([WARN_CFLAGS], [CFLAGS], [\ - -pipe \ - -Wall \ - -Werror=empty-body \ - -Werror=strict-prototypes \ - -Werror=missing-prototypes \ - -Werror=implicit-function-declaration \ - "-Werror=format=2 -Werror=format-security -Werror=format-nonliteral" \ - -Werror=pointer-arith -Werror=init-self \ - -Werror=missing-declarations \ - -Werror=return-type \ - -Werror=switch \ - -Werror=overflow \ - -Werror=int-conversion \ - -Werror=parenthesis \ - -Werror=incompatible-pointer-types \ - -Werror=misleading-indentation \ - -Werror=missing-include-dirs -Werror=aggregate-return \ + -pipe \ + -Wall \ + -Werror=empty-body \ + -Werror=strict-prototypes \ + -Werror=missing-prototypes \ + -Werror=implicit-function-declaration \ + "-Werror=format=2 -Werror=format-security -Werror=format-nonliteral" \ + -Werror=pointer-arith -Werror=init-self \ + -Werror=missing-declarations \ + -Werror=return-type \ + -Werror=switch \ + -Werror=overflow \ + -Werror=int-conversion \ + -Werror=parenthesis \ + -Werror=undef \ + -Werror=incompatible-pointer-types \ + -Werror=misleading-indentation \ + -Werror=missing-include-dirs -Werror=aggregate-return \ -Werror=unused-result \ ])]) AC_SUBST(WARN_CFLAGS) @@ -83,6 +84,9 @@ AC_SUBST([OSTREE_FEATURES]) GLIB_TESTS LIBGLNX_CONFIGURE +dnl These bits attempt to mirror https://github.com/coreutils/gnulib/blob/e369b04cca4da1534c98628b8ee4648bfca2bb3a/m4/parse-datetime.m4#L27 +AC_CHECK_FUNCS([nanotime clock_gettime]) +AC_STRUCT_TIMEZONE AC_CHECK_HEADER([sys/xattr.h],,[AC_MSG_ERROR([You must have sys/xattr.h from glibc])]) AS_IF([test "$YACC" != "bison -y"], [AC_MSG_ERROR([bison not found but required])]) @@ -499,7 +503,7 @@ AS_IF([test x$with_grub2_mkconfig_path = x], [ dnl on some 'grub'. We default to grub2-mkconfig. AC_CHECK_PROGS(GRUB2_MKCONFIG, [grub2-mkconfig grub-mkconfig], [grub2-mkconfig]) ],[GRUB2_MKCONFIG=$with_grub2_mkconfig_path]) -AC_DEFINE_UNQUOTED([GRUB2_MKCONFIG_PATH], ["$GRUB2_MKCONFIG"], [The system grub2-mkconfig executible name]) +AC_DEFINE_UNQUOTED([GRUB2_MKCONFIG_PATH], ["$GRUB2_MKCONFIG"], [The system grub2-mkconfig executable name]) AC_ARG_WITH(static-compiler, AS_HELP_STRING([--with-static-compiler], diff --git a/gtk-doc.make b/gtk-doc.make index e4a12a5b..e5777b6e 100644 --- a/gtk-doc.make +++ b/gtk-doc.make @@ -81,55 +81,54 @@ $(REPORT_FILES): sgml-build.stamp #### setup #### -GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) -GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_@AM_V@) +GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ - files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ - if test "x$$files" != "x" ; then \ - for file in $$files ; do \ - destdir=`dirname $(abs_builddir)/$$file`; \ - test -d "$$destdir" || mkdir -p "$$destdir"; \ - test -f $(abs_srcdir)/$$file && \ - cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ - done; \ - fi; \ + files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ fi $(AM_V_at)touch setup-build.stamp - #### scan #### -GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) -GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_@AM_V@) +GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; -GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) -GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_@AM_V@) +GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ - scanobj_options=""; \ - gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ - if test "$$?" = "0"; then \ - if test "x$(V)" = "x1"; then \ - scanobj_options="--verbose"; \ - fi; \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ fi; \ - CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ - gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ - for i in $(SCANOBJ_FILES) ; do \ - test -f $$i || touch $$i ; \ - done \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ fi $(AM_V_at)touch scan-build.stamp @@ -138,14 +137,14 @@ $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE) #### xml #### -GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) -GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML=$(GTK_DOC_V_XML_@AM_V@) +GTK_DOC_V_XML_=$(GTK_DOC_V_XML_@AM_DEFAULT_V@) GTK_DOC_V_XML_0=@echo " DOC Building XML"; sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ - _source_dir="$${_source_dir} --source-dir=$$i" ; \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp @@ -166,12 +165,12 @@ xml/gtkdocentities.ent: Makefile #### html #### -GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) -GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_@AM_V@) +GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_@AM_DEFAULT_V@) GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; -GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) -GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_@AM_V@) +GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_@AM_DEFAULT_V@) GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) @@ -190,20 +189,16 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_con cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ - if test -f $(abs_srcdir)/$$file ; then \ - cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ - fi; \ - if test -f $(abs_builddir)/$$file ; then \ - cp $(abs_builddir)/$$file $(abs_builddir)/html; \ - fi; \ + test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp #### pdf #### -GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) -GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_@AM_V@) +GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_@AM_DEFAULT_V@) GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) diff --git a/libglnx/glnx-missing-syscall.h b/libglnx/glnx-missing-syscall.h index fef6e605..ebfd7f47 100644 --- a/libglnx/glnx-missing-syscall.h +++ b/libglnx/glnx-missing-syscall.h @@ -30,6 +30,7 @@ Add abstraction model for BPF programs */ +#include "config.h" #if !HAVE_DECL_RENAMEAT2 # ifndef __NR_renameat2 diff --git a/libglnx/libglnx.m4 b/libglnx/libglnx.m4 index 770f117b..d5bcc2f1 100644 --- a/libglnx/libglnx.m4 +++ b/libglnx/libglnx.m4 @@ -1,6 +1,9 @@ AC_DEFUN([LIBGLNX_CONFIGURE], [ -AC_CHECK_DECLS([renameat2, memfd_create], +AC_CHECK_DECLS([ + renameat2, + memfd_create, + copy_file_range], [], [], [[ #include #include diff --git a/src/boot/grub2/ostree-grub-generator b/src/boot/grub2/ostree-grub-generator index 5673b264..82e66bd7 100644 --- a/src/boot/grub2/ostree-grub-generator +++ b/src/boot/grub2/ostree-grub-generator @@ -61,7 +61,12 @@ read_config() populate_menu() { - boot_prefix="${OSTREE_BOOT_PARTITION}" + # Default to /boot if OSTREE_BOOT_PARTITION is not set and /boot is on the same device than ostree/repo + if [ -z ${OSTREE_BOOT_PARTITION+x} ] && [ -d /boot/ostree ] && [ -d /ostree/repo ] && [ $(stat -c '%d' /boot/ostree) -eq $(stat -c '%d' /ostree/repo) ]; then + boot_prefix="/boot" + else + boot_prefix="${OSTREE_BOOT_PARTITION}" + fi for config in $(ls ${entries_path}); do read_config ${config} menu="${menu}menuentry '${title}' {\n" diff --git a/src/libostree/libostree-devel.sym b/src/libostree/libostree-devel.sym index 3c5da23e..df18b9ab 100644 --- a/src/libostree/libostree-devel.sym +++ b/src/libostree/libostree-devel.sym @@ -18,8 +18,9 @@ ***/ /* Add new symbols here. Release commits should copy this section into -released.sym. */ -LIBOSTREE_2017.14 { -} LIBOSTREE_2017.13; + +LIBOSTREE_2017.15 { +} LIBOSTREE_2017.14; /* Stub section for the stable release *after* this development one; don't * edit this other than to update the last number. This is just a copy/paste diff --git a/src/libostree/libostree-experimental.sym b/src/libostree/libostree-experimental.sym index cbe373cf..b83ad1b0 100644 --- a/src/libostree/libostree-experimental.sym +++ b/src/libostree/libostree-experimental.sym @@ -89,3 +89,9 @@ global: ostree_repo_finder_override_get_type; ostree_repo_finder_override_new; } LIBOSTREE_2017.12_EXPERIMENTAL; + +LIBOSTREE_2017.14_EXPERIMENTAL { +global: + ostree_remote_get_type; + ostree_remote_get_url; +} LIBOSTREE_2017.13_EXPERIMENTAL; diff --git a/src/libostree/libostree-released.sym b/src/libostree/libostree-released.sym index 4cab4e5d..e4d50895 100644 --- a/src/libostree/libostree-released.sym +++ b/src/libostree/libostree-released.sym @@ -442,6 +442,9 @@ global: ostree_repo_checkout_at_options_set_devino; } LIBOSTREE_2017.12; +LIBOSTREE_2017.14 { +} LIBOSTREE_2017.13; + /* NOTE: Only add more content here in release commits! See the * comments at the top of this file. */ diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c index cee036d8..c029aa47 100644 --- a/src/libostree/ostree-core.c +++ b/src/libostree/ostree-core.c @@ -278,7 +278,7 @@ ostree_validate_remote_name (const char *remote_name, /** * ostree_validate_collection_id: - * @rev: (nullable): A collection ID + * @collection_id: (nullable): A collection ID * @error: Error * * Check whether the given @collection_id is valid. Return an error if it is @@ -2204,7 +2204,7 @@ _ostree_compare_timestamps (const char *current_rev, g_autofree char *current_ts_str = g_date_time_format (current_dt, "%c"); g_autofree char *new_ts_str = g_date_time_format (new_dt, "%c"); - return glnx_throw (error, "Upgrade target revision '%s' with timestamp '%s' is chronologically older than current revision '%s' with timestamp '%s'", + return glnx_throw (error, "Upgrade target revision '%s' with timestamp '%s' is chronologically older than current revision '%s' with timestamp '%s'; use --allow-downgrade to permit", new_rev, new_ts_str, current_rev, current_ts_str); } diff --git a/src/libostree/ostree-enumtypes.c.template b/src/libostree/ostree-enumtypes.c.template index f7eecf24..751c458a 100644 --- a/src/libostree/ostree-enumtypes.c.template +++ b/src/libostree/ostree-enumtypes.c.template @@ -18,9 +18,7 @@ * Boston, MA 02111-1307, USA. */ -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif +#include "config.h" #include #include "ostree-enumtypes.h" diff --git a/src/libostree/ostree-fetcher-curl.c b/src/libostree/ostree-fetcher-curl.c index 1f641882..58835529 100644 --- a/src/libostree/ostree-fetcher-curl.c +++ b/src/libostree/ostree-fetcher-curl.c @@ -167,6 +167,7 @@ _ostree_fetcher_finalize (GObject *object) { OstreeFetcher *self = OSTREE_FETCHER (object); + curl_multi_cleanup (self->multi); g_free (self->remote_name); g_free (self->cookie_jar_path); g_free (self->proxy); @@ -177,7 +178,6 @@ _ostree_fetcher_finalize (GObject *object) g_clear_pointer (&self->timer_event, (GDestroyNotify)destroy_and_unref_source); if (self->mainctx) g_main_context_unref (self->mainctx); - curl_multi_cleanup (self->multi); G_OBJECT_CLASS (_ostree_fetcher_parent_class)->finalize (object); } @@ -788,8 +788,13 @@ initiate_next_curl_request (FetcherRequest *req, curl_easy_setopt (req->easy, CURLOPT_PROGRESSFUNCTION, prog_cb); curl_easy_setopt (req->easy, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt (req->easy, CURLOPT_CONNECTTIMEOUT, 30L); - curl_easy_setopt (req->easy, CURLOPT_LOW_SPEED_LIMIT, 1L); - curl_easy_setopt (req->easy, CURLOPT_LOW_SPEED_TIME, 30L); + /* We used to set CURLOPT_LOW_SPEED_LIMIT and CURLOPT_LOW_SPEED_TIME + * here, but see https://github.com/ostreedev/ostree/issues/878#issuecomment-347228854 + * basically those options don't play well with HTTP2 at the moment + * where we can have lots of outstanding requests. Further, + * we could implement that functionality at a higher level + * more consistently too. + */ /* closure bindings -> task */ curl_easy_setopt (req->easy, CURLOPT_PRIVATE, task); diff --git a/src/libostree/ostree-ref.h b/src/libostree/ostree-ref.h index 3cf63ed4..e91fe854 100644 --- a/src/libostree/ostree-ref.h +++ b/src/libostree/ostree-ref.h @@ -48,7 +48,6 @@ typedef struct gchar *ref_name; /* (not nullable) */ } OstreeCollectionRef; -#ifndef __GI_SCANNER__ _OSTREE_PUBLIC GType ostree_collection_ref_get_type (void); @@ -59,7 +58,6 @@ _OSTREE_PUBLIC OstreeCollectionRef *ostree_collection_ref_dup (const OstreeCollectionRef *ref); _OSTREE_PUBLIC void ostree_collection_ref_free (OstreeCollectionRef *ref); -#endif _OSTREE_PUBLIC guint ostree_collection_ref_hash (gconstpointer ref); diff --git a/src/libostree/ostree-remote.c b/src/libostree/ostree-remote.c index 605a7eb9..b75640e7 100644 --- a/src/libostree/ostree-remote.c +++ b/src/libostree/ostree-remote.c @@ -180,3 +180,21 @@ ostree_remote_get_name (OstreeRemote *remote) return remote->name; } + +/** + * ostree_remote_get_url: + * @remote: an #OstreeRemote + * + * Get the URL from the remote. + * + * Returns: (transfer full): the remote's URL + * Since: 2017.14 + */ +gchar * +ostree_remote_get_url (OstreeRemote *remote) +{ + g_return_val_if_fail (remote != NULL, NULL); + g_return_val_if_fail (remote->ref_count > 0, NULL); + + return g_key_file_get_string (remote->options, remote->group, "url", NULL); +} diff --git a/src/libostree/ostree-remote.h b/src/libostree/ostree-remote.h index 23ee21bc..aa9bf731 100644 --- a/src/libostree/ostree-remote.h +++ b/src/libostree/ostree-remote.h @@ -47,16 +47,17 @@ G_BEGIN_DECLS typedef struct OstreeRemote OstreeRemote; #endif -#ifndef __GI_SCANNER__ _OSTREE_PUBLIC GType ostree_remote_get_type (void) G_GNUC_CONST; _OSTREE_PUBLIC OstreeRemote *ostree_remote_ref (OstreeRemote *remote); _OSTREE_PUBLIC void ostree_remote_unref (OstreeRemote *remote); -#endif /* GI_SCANNER */ _OSTREE_PUBLIC const gchar *ostree_remote_get_name (OstreeRemote *remote); +_OSTREE_PUBLIC +gchar *ostree_remote_get_url (OstreeRemote *remote); + G_END_DECLS diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index cf1a513f..a286e7ad 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -38,18 +38,33 @@ #include "ostree-checksum-input-stream.h" #include "ostree-varint.h" -/* In most cases, we write into a staging dir for commit, but we also allow - * direct writes into objects/ for e.g. hardlink imports. +/* If fsync is enabled and we're in a txn, we write into a staging dir for + * commit, but we also allow direct writes into objects/ for e.g. hardlink + * imports. */ static int commit_dest_dfd (OstreeRepo *self) { - if (self->in_transaction) + if (self->in_transaction && !self->disable_fsync) return self->commit_stagedir.fd; else return self->objects_dir_fd; } +/* If we don't have O_TMPFILE, or for symlinks we'll create temporary + * files. If we have a txn, use the staging dir to ensure that + * things are consistently locked against concurrent cleanup, and + * in general we have all of our data in one place. + */ +static int +commit_tmp_dfd (OstreeRepo *self) +{ + if (self->in_transaction) + return self->commit_stagedir.fd; + else + return self->tmp_dir_fd; +} + /* The objects/ directory has a two-character directory prefix for checksums * to avoid putting lots of files in a single directory. This technique * is quite old, but Git also uses it for example. @@ -404,46 +419,116 @@ add_size_index_to_metadata (OstreeRepo *self, return g_variant_ref_sink (g_variant_builder_end (builder)); } +typedef struct { + gboolean initialized; + GLnxTmpfile tmpf; + char *expected_checksum; + OtChecksum checksum; + guint64 content_len; + guint64 bytes_written; + guint uid; + guint gid; + guint mode; + GVariant *xattrs; +} OstreeRealRepoBareContent; +G_STATIC_ASSERT (sizeof (OstreeRepoBareContent) >= sizeof (OstreeRealRepoBareContent)); + /* Create a tmpfile for writing a bare file. Currently just used * by the static delta code, but will likely later be extended * to be used also by the dfd_iter commit path. */ gboolean -_ostree_repo_open_content_bare (OstreeRepo *self, - const char *checksum, - guint64 content_len, - GLnxTmpfile *out_tmpf, - GCancellable *cancellable, - GError **error) +_ostree_repo_bare_content_open (OstreeRepo *self, + const char *expected_checksum, + guint64 content_len, + guint uid, + guint gid, + guint mode, + GVariant *xattrs, + OstreeRepoBareContent *out_regwrite, + GCancellable *cancellable, + GError **error) { - return glnx_open_tmpfile_linkable_at (self->tmp_dir_fd, ".", O_WRONLY|O_CLOEXEC, - out_tmpf, error); + OstreeRealRepoBareContent *real = (OstreeRealRepoBareContent*) out_regwrite; + g_assert (!real->initialized); + real->initialized = TRUE; + g_assert (S_ISREG (mode)); + if (!glnx_open_tmpfile_linkable_at (commit_tmp_dfd (self), ".", O_WRONLY|O_CLOEXEC, + &real->tmpf, error)) + return FALSE; + ot_checksum_init (&real->checksum); + real->expected_checksum = g_strdup (expected_checksum); + real->content_len = content_len; + real->bytes_written = 0; + real->uid = uid; + real->gid = gid; + real->mode = mode; + real->xattrs = xattrs ? g_variant_ref (xattrs) : NULL; + + /* Initialize the checksum with the header info */ + g_autoptr(GFileInfo) finfo = _ostree_mode_uidgid_to_gfileinfo (mode, uid, gid); + g_autoptr(GBytes) header = _ostree_file_header_new (finfo, xattrs); + ot_checksum_update_bytes (&real->checksum, header); + + return TRUE; } -/* Used by static deltas, which have a separate "push" flow for - * regfile objects distinct from the "pull" model used by - * write_content_object(). - */ gboolean -_ostree_repo_commit_trusted_content_bare (OstreeRepo *self, - const char *checksum, - GLnxTmpfile *tmpf, - guint32 uid, - guint32 gid, - guint32 mode, - GVariant *xattrs, - GCancellable *cancellable, - GError **error) +_ostree_repo_bare_content_write (OstreeRepo *repo, + OstreeRepoBareContent *barewrite, + const guint8 *buf, + size_t len, + GCancellable *cancellable, + GError **error) { - /* I don't think this is necessary, but a similar check was here previously, - * keeping it for extra redundancy. - */ - if (!tmpf->initialized || tmpf->fd == -1) - return TRUE; + OstreeRealRepoBareContent *real = (OstreeRealRepoBareContent*) barewrite; + g_assert (real->initialized); + ot_checksum_update (&real->checksum, buf, len); + if (glnx_loop_write (real->tmpf.fd, buf, len) < 0) + return glnx_throw_errno_prefix (error, "write"); + return TRUE; +} - return commit_loose_regfile_object (self, checksum, - tmpf, uid, gid, mode, xattrs, - cancellable, error); +gboolean +_ostree_repo_bare_content_commit (OstreeRepo *self, + OstreeRepoBareContent *barewrite, + char *checksum_buf, + size_t buflen, + GCancellable *cancellable, + GError **error) +{ + OstreeRealRepoBareContent *real = (OstreeRealRepoBareContent*) barewrite; + g_assert (real->initialized); + ot_checksum_get_hexdigest (&real->checksum, checksum_buf, buflen); + + if (real->expected_checksum && + !_ostree_compare_object_checksum (OSTREE_OBJECT_TYPE_FILE, + real->expected_checksum, checksum_buf, + error)) + return FALSE; + + if (!commit_loose_regfile_object (self, checksum_buf, + &real->tmpf, real->uid, real->gid, + real->mode, real->xattrs, + cancellable, error)) + return FALSE; + + /* Let's have a guarantee that after commit the object is cleaned up */ + _ostree_repo_bare_content_cleanup (barewrite); + return TRUE; +} + +void +_ostree_repo_bare_content_cleanup (OstreeRepoBareContent *regwrite) +{ + OstreeRealRepoBareContent *real = (OstreeRealRepoBareContent*) regwrite; + if (!real->initialized) + return; + glnx_tmpfile_clear (&real->tmpf); + ot_checksum_clear (&real->checksum); + g_clear_pointer (&real->expected_checksum, (GDestroyNotify)g_free); + g_clear_pointer (&real->xattrs, (GDestroyNotify)g_variant_unref); + real->initialized = FALSE; } /* Allocate an O_TMPFILE, write everything from @input to it, but @@ -459,7 +544,7 @@ create_regular_tmpfile_linkable_with_content (OstreeRepo *self, GError **error) { g_auto(GLnxTmpfile) tmpf = { 0, }; - if (!glnx_open_tmpfile_linkable_at (self->tmp_dir_fd, ".", O_WRONLY|O_CLOEXEC, + if (!glnx_open_tmpfile_linkable_at (commit_tmp_dfd (self), ".", O_WRONLY|O_CLOEXEC, &tmpf, error)) return FALSE; @@ -597,7 +682,7 @@ write_content_object (OstreeRepo *self, * * We use GLnxTmpfile for regular files, and OtCleanupUnlinkat for symlinks. */ - g_auto(OtCleanupUnlinkat) tmp_unlinker = { self->tmp_dir_fd, NULL }; + g_auto(OtCleanupUnlinkat) tmp_unlinker = { commit_tmp_dfd (self), NULL }; g_auto(GLnxTmpfile) tmpf = { 0, }; goffset unpacked_size = 0; gboolean indexable = FALSE; @@ -606,7 +691,7 @@ write_content_object (OstreeRepo *self, { /* This will not be hit for bare-user or archive */ g_assert (self->mode == OSTREE_REPO_MODE_BARE || self->mode == OSTREE_REPO_MODE_BARE_USER_ONLY); - if (!_ostree_make_temporary_symlink_at (self->tmp_dir_fd, + if (!_ostree_make_temporary_symlink_at (commit_tmp_dfd (self), g_file_info_get_symlink_target (file_info), &tmp_unlinker.path, cancellable, error)) @@ -629,7 +714,7 @@ write_content_object (OstreeRepo *self, if (self->generate_sizes) indexable = TRUE; - if (!glnx_open_tmpfile_linkable_at (self->tmp_dir_fd, ".", O_WRONLY|O_CLOEXEC, + if (!glnx_open_tmpfile_linkable_at (commit_tmp_dfd (self), ".", O_WRONLY|O_CLOEXEC, &tmpf, error)) return FALSE; temp_out = g_unix_output_stream_new (tmpf.fd, FALSE); @@ -719,14 +804,14 @@ write_content_object (OstreeRepo *self, * Note, this does not apply for bare-user repos, as they store symlinks * as regular files. */ - if (G_UNLIKELY (fchownat (self->tmp_dir_fd, tmp_unlinker.path, + if (G_UNLIKELY (fchownat (tmp_unlinker.dfd, tmp_unlinker.path, uid, gid, AT_SYMLINK_NOFOLLOW) == -1)) return glnx_throw_errno_prefix (error, "fchownat"); if (xattrs != NULL) { - ot_security_smack_reset_dfd_name (self->tmp_dir_fd, tmp_unlinker.path); - if (!glnx_dfd_name_set_all_xattrs (self->tmp_dir_fd, tmp_unlinker.path, + ot_security_smack_reset_dfd_name (tmp_unlinker.dfd, tmp_unlinker.path); + if (!glnx_dfd_name_set_all_xattrs (tmp_unlinker.dfd, tmp_unlinker.path, xattrs, cancellable, error)) return FALSE; } @@ -968,7 +1053,7 @@ write_metadata_object (OstreeRepo *self, /* Write the metadata to a temporary file */ g_auto(GLnxTmpfile) tmpf = { 0, }; - if (!glnx_open_tmpfile_linkable_at (self->tmp_dir_fd, ".", O_WRONLY|O_CLOEXEC, + if (!glnx_open_tmpfile_linkable_at (commit_tmp_dfd (self), ".", O_WRONLY|O_CLOEXEC, &tmpf, error)) return FALSE; if (!glnx_try_fallocate (tmpf.fd, 0, len, error)) @@ -1350,8 +1435,40 @@ rename_pending_loose_objects (OstreeRepo *self, return glnx_throw_errno_prefix (error, "fsync"); } - if (!glnx_tmpdir_delete (&self->commit_stagedir, cancellable, error)) + return TRUE; +} + +/* Try to lock a transaction stage directory created by + * ostree_repo_prepare_transaction(). + */ +static gboolean +cleanup_txn_dir (OstreeRepo *self, + int dfd, + const char *path, + GCancellable *cancellable, + GError **error) +{ + g_auto(GLnxLockFile) lockfile = { 0, }; + gboolean did_lock; + + /* Try to lock, but if we don't get it, move on */ + if (!_ostree_repo_try_lock_tmpdir (dfd, path, &lockfile, &did_lock, error)) return FALSE; + if (!did_lock) + return TRUE; /* Note early return */ + + /* If however this is the staging directory for the *current* + * boot, then don't delete it now - we may end up reusing it, as + * is the point. + */ + if (g_str_has_prefix (path, self->stagedir_prefix)) + return TRUE; /* Note early return */ + + /* But, crucially we can now clean up staging directories + * from *other* boots. + */ + if (!glnx_shutil_rm_rf_at (dfd, path, cancellable, error)) + return glnx_prefix_error (error, "Removing %s", path); return TRUE; } @@ -1376,15 +1493,9 @@ cleanup_tmpdir (OstreeRepo *self, while (TRUE) { - guint64 delta; struct dirent *dent; - struct stat stbuf; - g_auto(GLnxLockFile) lockfile = { 0, }; - gboolean did_lock; - if (!glnx_dirfd_iterator_next_dent (&dfd_iter, &dent, cancellable, error)) return FALSE; - if (dent == NULL) break; @@ -1394,56 +1505,40 @@ cleanup_tmpdir (OstreeRepo *self, if (strcmp (dent->d_name, "cache") == 0) continue; + struct stat stbuf; if (!glnx_fstatat_allow_noent (dfd_iter.fd, dent->d_name, &stbuf, AT_SYMLINK_NOFOLLOW, error)) return FALSE; if (errno == ENOENT) /* Did another cleanup win? */ continue; - /* First, if it's a directory which needs locking, but it's - * busy, skip it. - */ + /* Handle transaction tmpdirs */ if (_ostree_repo_is_locked_tmpdir (dent->d_name)) { - if (!_ostree_repo_try_lock_tmpdir (dfd_iter.fd, dent->d_name, - &lockfile, &did_lock, error)) + if (!cleanup_txn_dir (self, dfd_iter.fd, dent->d_name, cancellable, error)) return FALSE; - if (!did_lock) - continue; + continue; /* We've handled this, move on */ } - /* If however this is the staging directory for the *current* - * boot, then don't delete it now - we may end up reusing it, as - * is the point. + /* At this point we're looking at an unknown-origin file or directory in + * the tmpdir. This could be something like a temporary checkout dir (used + * by rpm-ostree), or (from older versions of libostree) a tempfile if we + * don't have O_TMPFILE for commits. */ - if (g_str_has_prefix (dent->d_name, self->stagedir_prefix)) + + /* Ignore files from the future */ + if (stbuf.st_mtime > curtime_secs) continue; - else if (g_str_has_prefix (dent->d_name, OSTREE_REPO_TMPDIR_STAGING)) + + /* We're pruning content based on the expiry, which + * defaults to a day. That's what we were doing before we + * had locking...but in future we can be smarter here. + */ + guint64 delta = curtime_secs - stbuf.st_mtime; + if (delta > self->tmp_expiry_seconds) { - /* But, crucially we can now clean up staging directories - * from *other* boots - */ if (!glnx_shutil_rm_rf_at (dfd_iter.fd, dent->d_name, cancellable, error)) return glnx_prefix_error (error, "Removing %s", dent->d_name); } - else - { - /* Now we do time-based cleanup. Ignore it if it's somehow - * in the future... - */ - if (stbuf.st_mtime > curtime_secs) - continue; - - /* Now, we're pruning content based on the expiry, which - * defaults to a day. That's what we were doing before we - * had locking...but in future we can be smarter here. - */ - delta = curtime_secs - stbuf.st_mtime; - if (delta > self->tmp_expiry_seconds) - { - if (!glnx_shutil_rm_rf_at (dfd_iter.fd, dent->d_name, cancellable, error)) - return glnx_prefix_error (error, "Removing %s", dent->d_name); - } - } } return TRUE; @@ -1675,6 +1770,12 @@ ostree_repo_commit_transaction (OstreeRepo *self, if (!rename_pending_loose_objects (self, cancellable, error)) return FALSE; + g_debug ("txn commit %s", glnx_basename (self->commit_stagedir.path)); + if (!glnx_tmpdir_delete (&self->commit_stagedir, cancellable, error)) + return FALSE; + glnx_release_lock_file (&self->commit_stagedir_lock); + + /* This performs a global cleanup */ if (!cleanup_tmpdir (self, cancellable, error)) return FALSE; @@ -1691,9 +1792,6 @@ ostree_repo_commit_transaction (OstreeRepo *self, return FALSE; g_clear_pointer (&self->txn_collection_refs, g_hash_table_destroy); - glnx_tmpdir_unset (&self->commit_stagedir); - glnx_release_lock_file (&self->commit_stagedir_lock); - self->in_transaction = FALSE; if (!ot_ensure_unlinked_at (self->repo_dir_fd, "transaction", 0)) @@ -2695,47 +2793,70 @@ write_directory_content_to_mtree_internal (OstreeRepo *self, g_assert (dir_enum != NULL || dfd_iter != NULL); GFileType file_type = g_file_info_get_file_type (child_info); - const char *name = g_file_info_get_name (child_info); - g_ptr_array_add (path, (char*)name); - g_autofree char *child_relpath = ptrarray_path_join (path); - - /* See if we have a devino hit; this is used below. Further, for bare-user - * repos we'll reload our file info from the object (specifically the - * ostreemeta xattr). The on-disk state is not normally what we want to - * commit. Basically we're making sure that we pick up "real" uid/gid and any - * xattrs there. + /* Load flags into boolean constants for ease of readability (we also need to + * NULL-check modifier) */ - const char *loose_checksum = NULL; - g_autoptr(GVariant) source_xattrs = NULL; - if (dfd_iter != NULL && (file_type != G_FILE_TYPE_DIRECTORY)) - { - guint32 dev = g_file_info_get_attribute_uint32 (child_info, "unix::device"); - guint64 inode = g_file_info_get_attribute_uint64 (child_info, "unix::inode"); - loose_checksum = devino_cache_lookup (self, modifier, dev, inode); - if (loose_checksum && self->mode == OSTREE_REPO_MODE_BARE_USER) - { - child_info = NULL; - if (!ostree_repo_load_file (self, loose_checksum, NULL, &child_info, &source_xattrs, - cancellable, error)) - return FALSE; - } - } - - g_autoptr(GFileInfo) modified_info = NULL; - OstreeRepoCommitFilterResult filter_result = - _ostree_repo_commit_modifier_apply (self, modifier, child_relpath, child_info, &modified_info); - const gboolean child_info_was_modified = !_ostree_gfileinfo_equal (child_info, modified_info); - + const gboolean canonical_permissions = modifier && + (modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS); + const gboolean devino_canonical = modifier && + (modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL); /* We currently only honor the CONSUME flag in the dfd_iter case to avoid even * more complexity in this function, and it'd mostly only be useful when * operating on local filesystems anyways. */ const gboolean delete_after_commit = dfd_iter && modifier && (modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME); - const gboolean canonical_permissions = modifier && - (modifier->flags & OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS); + + /* See if we have a devino hit; this is used below in a few places. */ + const char *loose_checksum = NULL; + if (dfd_iter != NULL && (file_type != G_FILE_TYPE_DIRECTORY)) + { + guint32 dev = g_file_info_get_attribute_uint32 (child_info, "unix::device"); + guint64 inode = g_file_info_get_attribute_uint64 (child_info, "unix::inode"); + loose_checksum = devino_cache_lookup (self, modifier, dev, inode); + if (loose_checksum && devino_canonical) + { + /* Go directly to checksum, do not pass Go, do not collect $200. + * In this mode the app is required to break hardlinks for any + * files it wants to modify. + */ + if (!ostree_mutable_tree_replace_file (mtree, name, loose_checksum, error)) + return FALSE; + if (delete_after_commit) + { + if (!glnx_shutil_rm_rf_at (dfd_iter->fd, name, cancellable, error)) + return FALSE; + } + return TRUE; /* Early return */ + } + } + + /* Build the full path which we need for callbacks */ + g_ptr_array_add (path, (char*)name); + g_autofree char *child_relpath = ptrarray_path_join (path); + + /* For bare-user repos we'll reload our file info from the object + * (specifically the ostreemeta xattr), if it was checked out that way (via + * hardlink). The on-disk state is not normally what we want to commit. + * Basically we're making sure that we pick up "real" uid/gid and any xattrs + * there. + */ + g_autoptr(GVariant) source_xattrs = NULL; + if (loose_checksum && self->mode == OSTREE_REPO_MODE_BARE_USER) + { + child_info = NULL; + if (!ostree_repo_load_file (self, loose_checksum, NULL, &child_info, &source_xattrs, + cancellable, error)) + return FALSE; + } + + /* Call the filter */ + g_autoptr(GFileInfo) modified_info = NULL; + OstreeRepoCommitFilterResult filter_result = + _ostree_repo_commit_modifier_apply (self, modifier, child_relpath, child_info, &modified_info); + const gboolean child_info_was_modified = !_ostree_gfileinfo_equal (child_info, modified_info); if (filter_result != OSTREE_REPO_COMMIT_FILTER_ALLOW) { diff --git a/src/libostree/ostree-repo-finder.c b/src/libostree/ostree-repo-finder.c index 576a690c..9be176af 100644 --- a/src/libostree/ostree-repo-finder.c +++ b/src/libostree/ostree-repo-finder.c @@ -432,8 +432,8 @@ G_DEFINE_BOXED_TYPE (OstreeRepoFinderResult, ostree_repo_finder_result, * result * @priority: static priority of the result, where higher numbers indicate lower * priority - * @ref_to_checksum: (element-type OstreeCollectionRef utf8): map of collection–ref pairs - * to checksums provided by this result + * @ref_to_checksum: (element-type OstreeCollectionRef utf8) (transfer none): + * map of collection–ref pairs to checksums provided by this result * @summary_last_modified: Unix timestamp (seconds since the epoch, UTC) when * the summary file for the result was last modified, or `0` if this is unknown * diff --git a/src/libostree/ostree-repo-private.h b/src/libostree/ostree-repo-private.h index d8d16e1a..58c104b9 100644 --- a/src/libostree/ostree-repo-private.h +++ b/src/libostree/ostree-repo-private.h @@ -365,24 +365,41 @@ _ostree_repo_commit_tmpf_final (OstreeRepo *self, GCancellable *cancellable, GError **error); +typedef struct { + gboolean initialized; + gpointer opaque0[10]; + guint opaque1[10]; +} OstreeRepoBareContent; +void _ostree_repo_bare_content_cleanup (OstreeRepoBareContent *regwrite); +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(OstreeRepoBareContent, _ostree_repo_bare_content_cleanup) + gboolean -_ostree_repo_open_content_bare (OstreeRepo *self, - const char *checksum, - guint64 content_len, - GLnxTmpfile *out_tmpf, +_ostree_repo_bare_content_open (OstreeRepo *self, + const char *checksum, + guint64 content_len, + guint uid, + guint gid, + guint mode, + GVariant *xattrs, + OstreeRepoBareContent *out_regwrite, GCancellable *cancellable, GError **error); gboolean -_ostree_repo_commit_trusted_content_bare (OstreeRepo *self, - const char *checksum, - GLnxTmpfile *tmpf, - guint32 uid, - guint32 gid, - guint32 mode, - GVariant *xattrs, - GCancellable *cancellable, - GError **error); +_ostree_repo_bare_content_write (OstreeRepo *repo, + OstreeRepoBareContent *barewrite, + const guint8 *buf, + size_t len, + GCancellable *cancellable, + GError **error); + +gboolean +_ostree_repo_bare_content_commit (OstreeRepo *self, + OstreeRepoBareContent *barewrite, + char *checksum_buf, + size_t buflen, + GCancellable *cancellable, + GError **error); gboolean _ostree_repo_load_file_bare (OstreeRepo *self, diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index 44fae35e..c6fe7625 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -2325,19 +2325,39 @@ process_one_static_delta (OtPullData *pull_data, return ret; } -/* Loop over the static delta data we got from the summary, - * and find the newest commit for @out_from_revision that - * goes to @to_revision. +/* + * DELTA_SEARCH_RESULT_UNCHANGED: + * We already have the commit. * - * Additionally, @out_have_scratch_delta will be set to %TRUE - * if there is a %NULL → @to_revision delta, also known as + * DELTA_SEARCH_RESULT_NO_MATCH: + * No deltas were found. + * + * DELTA_SEARCH_RESULT_FROM: + * A regular delta was found, and the "from" revision will be + * set in `from_revision`. + * + * DELTA_SEARCH_RESULT_SCRATCH: + * There is a %NULL → @to_revision delta, also known as * a "from scratch" delta. */ +typedef struct { + enum { + DELTA_SEARCH_RESULT_UNCHANGED, + DELTA_SEARCH_RESULT_NO_MATCH, + DELTA_SEARCH_RESULT_FROM, + DELTA_SEARCH_RESULT_SCRATCH, + } result; + char from_revision[OSTREE_SHA256_STRING_LEN+1]; +} DeltaSearchResult; + +/* Loop over the static delta data we got from the summary, + * and find the a delta path (if available) that goes to @to_revision. + * See the enum in `DeltaSearchResult` for available result types. + */ static gboolean get_best_static_delta_start_for (OtPullData *pull_data, const char *to_revision, - gboolean *out_have_scratch_delta, - char **out_from_revision, + DeltaSearchResult *out_result, GCancellable *cancellable, GError **error) { @@ -2348,7 +2368,28 @@ get_best_static_delta_start_for (OtPullData *pull_data, g_assert (pull_data->summary_deltas_checksums != NULL); - *out_have_scratch_delta = FALSE; + out_result->result = DELTA_SEARCH_RESULT_NO_MATCH; + out_result->from_revision[0] = '\0'; + + /* First, do we already have this commit completely downloaded? */ + gboolean have_to_rev; + if (!ostree_repo_has_object (pull_data->repo, OSTREE_OBJECT_TYPE_COMMIT, + to_revision, &have_to_rev, + cancellable, error)) + return FALSE; + if (have_to_rev) + { + OstreeRepoCommitState to_rev_state; + if (!ostree_repo_load_commit (pull_data->repo, to_revision, + NULL, &to_rev_state, error)) + return FALSE; + if (!(to_rev_state & OSTREE_REPO_COMMIT_STATE_PARTIAL)) + { + /* We already have this commit, we're done! */ + out_result->result = DELTA_SEARCH_RESULT_UNCHANGED; + return TRUE; /* Early return */ + } + } /* Loop over all deltas known from the summary file, * finding ones which go to to_revision */ @@ -2366,9 +2407,17 @@ get_best_static_delta_start_for (OtPullData *pull_data, continue; if (cur_from_rev) - g_ptr_array_add (candidates, g_steal_pointer (&cur_from_rev)); + { + g_ptr_array_add (candidates, g_steal_pointer (&cur_from_rev)); + } else - *out_have_scratch_delta = TRUE; + { + /* We note that we have a _SCRATCH delta here, but we'll prefer using + * "from" deltas (obviously, they'll be smaller) where possible if we + * find one below. + */ + out_result->result = DELTA_SEARCH_RESULT_SCRATCH; + } } /* Loop over our candidates, find the newest one */ @@ -2407,7 +2456,11 @@ get_best_static_delta_start_for (OtPullData *pull_data, } } - *out_from_revision = g_strdup (newest_candidate); + if (newest_candidate) + { + out_result->result = DELTA_SEARCH_RESULT_FROM; + memcpy (out_result->from_revision, newest_candidate, OSTREE_SHA256_STRING_LEN+1); + } return TRUE; } @@ -3082,25 +3135,45 @@ initiate_request (OtPullData *pull_data, /* If we have a summary, we can use the newer logic */ if (pull_data->summary) { - gboolean have_scratch_delta = FALSE; + DeltaSearchResult deltares; /* Look for a delta to @to_revision in the summary data */ - if (!get_best_static_delta_start_for (pull_data, to_revision, - &have_scratch_delta, &delta_from_revision, + if (!get_best_static_delta_start_for (pull_data, to_revision, &deltares, pull_data->cancellable, error)) return FALSE; - if (delta_from_revision) /* Did we find a delta FROM commit? */ - initiate_delta_request (pull_data, delta_from_revision, to_revision, ref); - else if (have_scratch_delta) /* No delta FROM, do we have a scratch? */ - initiate_delta_request (pull_data, NULL, to_revision, ref); - else if (pull_data->require_static_deltas) /* No deltas found; are they required? */ + switch (deltares.result) { - set_required_deltas_error (error, (ref != NULL) ? ref->ref_name : "", to_revision); - return FALSE; + case DELTA_SEARCH_RESULT_NO_MATCH: + { + if (pull_data->require_static_deltas) /* No deltas found; are they required? */ + { + set_required_deltas_error (error, (ref != NULL) ? ref->ref_name : "", to_revision); + return FALSE; + } + else /* No deltas, fall back to object fetches. */ + queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); + } + break; + case DELTA_SEARCH_RESULT_FROM: + initiate_delta_request (pull_data, deltares.from_revision, to_revision, ref); + break; + case DELTA_SEARCH_RESULT_SCRATCH: + initiate_delta_request (pull_data, NULL, to_revision, ref); + break; + case DELTA_SEARCH_RESULT_UNCHANGED: + { + /* If we already have the commit, here things get a little special; we've historically + * fetched detached metadata, so let's keep doing that. But in the --require-static-deltas + * path, we don't, under the assumption the user wants as little network traffic as + * possible. + */ + if (pull_data->require_static_deltas) + break; + else + queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); + } } - else /* No deltas, fall back to object fetches. */ - queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); } else if (ref != NULL) { diff --git a/src/libostree/ostree-repo-refs.c b/src/libostree/ostree-repo-refs.c index 9289bb37..ed496253 100644 --- a/src/libostree/ostree-repo-refs.c +++ b/src/libostree/ostree-repo-refs.c @@ -725,7 +725,8 @@ _ostree_repo_list_refs_internal (OstreeRepo *self, * ostree_repo_list_refs: * @self: Repo * @refspec_prefix: (allow-none): Only list refs which match this prefix - * @out_all_refs: (out) (element-type utf8 utf8): Mapping from ref to checksum + * @out_all_refs: (out) (element-type utf8 utf8) (transfer container): + * Mapping from ref to checksum * @cancellable: Cancellable * @error: Error * @@ -750,7 +751,8 @@ ostree_repo_list_refs (OstreeRepo *self, * ostree_repo_list_refs_ext: * @self: Repo * @refspec_prefix: (allow-none): Only list refs which match this prefix - * @out_all_refs: (out) (element-type utf8 utf8): Mapping from ref to checksum + * @out_all_refs: (out) (element-type utf8 utf8) (transfer container): + * Mapping from ref to checksum * @flags: Options controlling listing behavior * @cancellable: Cancellable * @error: Error @@ -778,7 +780,8 @@ ostree_repo_list_refs_ext (OstreeRepo *self, * ostree_repo_remote_list_refs: * @self: Repo * @remote_name: Name of the remote. - * @out_all_refs: (out) (element-type utf8 utf8): Mapping from ref to checksum + * @out_all_refs: (out) (element-type utf8 utf8) (transfer container): + * Mapping from ref to checksum * @cancellable: Cancellable * @error: Error * @@ -893,7 +896,8 @@ remote_list_collection_refs_process_refs (OstreeRepo *self, * ostree_repo_remote_list_collection_refs: * @self: Repo * @remote_name: Name of the remote. - * @out_all_refs: (out) (element-type OstreeCollectionRef utf8): Mapping from collection–ref to checksum + * @out_all_refs: (out) (element-type OstreeCollectionRef utf8) (transfer container): + * Mapping from collection–ref to checksum * @cancellable: Cancellable * @error: Error * @@ -1165,7 +1169,8 @@ _ostree_repo_update_collection_refs (OstreeRepo *self, * ostree_repo_list_collection_refs: * @self: Repo * @match_collection_id: (nullable): If non-%NULL, only list refs from this collection - * @out_all_refs: (out) (element-type OstreeCollectionRef utf8): Mapping from collection–ref to checksum + * @out_all_refs: (out) (element-type OstreeCollectionRef utf8) (transfer container): + * Mapping from collection–ref to checksum * @flags: Options controlling listing behavior * @cancellable: Cancellable * @error: Error diff --git a/src/libostree/ostree-repo-static-delta-compilation-analysis.c b/src/libostree/ostree-repo-static-delta-compilation-analysis.c index f3e69af9..d96604e5 100644 --- a/src/libostree/ostree-repo-static-delta-compilation-analysis.c +++ b/src/libostree/ostree-repo-static-delta-compilation-analysis.c @@ -217,6 +217,37 @@ string_array_nonempty_intersection (GPtrArray *a, return FALSE; } +static gboolean +sizename_is_delta_candidate (OstreeDeltaContentSizeNames *sizename) +{ + /* Don't build candidates for the empty object */ + if (sizename->size == 0) + return FALSE; + + /* Look for known non-delta-able files (currently just compression like xz) */ + for (guint i = 0; i < sizename->basenames->len; i++) + { + const char *name = sizename->basenames->pdata[i]; + /* We could replace this down the line with g_content_type_guess() or so, + * but it's not clear to me that's a major win; we'd still need to + * maintain a list of compression formats, and this doesn't require + * allocation. + * NB: We explicitly don't have .gz here in case someone might be + * using --rsyncable for that. + */ + const char *dot = strrchr (name, '.'); + if (!dot) + continue; + const char *extension = dot+1; + /* Don't add .gz here, see above */ + if (g_str_equal (extension, "xz") || g_str_equal (extension, "bz2")) + return FALSE; + } + + /* Let's try it */ + return TRUE; +} + /* * Build up a map of files with matching basenames and similar size, * and use it to find apparently similar objects. @@ -258,7 +289,7 @@ _ostree_delta_compute_similar_objects (OstreeRepo *repo, &to_sizes, cancellable, error)) goto out; - + /* Iterate over all newly added objects, find objects which have * similar basename and sizes. * @@ -277,8 +308,7 @@ _ostree_delta_compute_similar_objects (OstreeRepo *repo, const guint64 max_threshold = to_sizenames->size * (1.0+similarity_percent_threshold/100.0); - /* Don't build candidates for the empty object */ - if (to_sizenames->size == 0) + if (!sizename_is_delta_candidate (to_sizenames)) continue; for (fuzzy = 0; fuzzy < 2 && !found; fuzzy++) @@ -286,12 +316,8 @@ _ostree_delta_compute_similar_objects (OstreeRepo *repo, for (j = lower; j < upper; j++) { OstreeDeltaContentSizeNames *from_sizenames = from_sizes->pdata[j]; - - /* Don't build candidates for the empty object */ - if (from_sizenames->size == 0) - { - continue; - } + if (!sizename_is_delta_candidate (from_sizenames)) + continue; if (from_sizenames->size < min_threshold) { diff --git a/src/libostree/ostree-repo-static-delta-processing.c b/src/libostree/ostree-repo-static-delta-processing.c index 4545b39f..3b9fd49f 100644 --- a/src/libostree/ostree-repo-static-delta-processing.c +++ b/src/libostree/ostree-repo-static-delta-processing.c @@ -55,11 +55,9 @@ typedef struct { GError **async_error; OstreeObjectType output_objtype; - GLnxTmpfile tmpf; guint64 content_size; - GOutputStream *content_out; - OtChecksum content_checksum; char checksum[OSTREE_SHA256_STRING_LEN+1]; + OstreeRepoBareContent content_out; char *read_source_object; int read_source_fd; gboolean have_obj; @@ -278,9 +276,7 @@ _ostree_static_delta_part_execute (OstreeRepo *repo, ret = TRUE; out: - glnx_tmpfile_clear (&state->tmpf); - g_clear_object (&state->content_out); - ot_checksum_clear (&state->content_checksum); + _ostree_repo_bare_content_cleanup (&state->content_out); return ret; } @@ -378,29 +374,6 @@ validate_ofs (StaticDeltaExecutionState *state, return TRUE; } -static gboolean -content_out_write (OstreeRepo *repo, - StaticDeltaExecutionState *state, - const guint8* buf, - gsize len, - GCancellable *cancellable, - GError **error) -{ - gsize bytes_written; - - if (state->content_checksum.initialized) - ot_checksum_update (&state->content_checksum, buf, len); - - /* Ignore bytes_written since we discard partial content */ - if (!g_output_stream_write_all (state->content_out, - buf, len, - &bytes_written, - cancellable, error)) - return FALSE; - - return TRUE; -} - static gboolean do_content_open_generic (OstreeRepo *repo, StaticDeltaExecutionState *state, @@ -485,33 +458,15 @@ dispatch_bspatch (OstreeRepo *repo, &stream) < 0) return FALSE; - if (!content_out_write (repo, state, buf, state->content_size, - cancellable, error)) + if (!_ostree_repo_bare_content_write (repo, &state->content_out, + buf, state->content_size, + cancellable, error)) return FALSE; } return TRUE; } -/* Before, we had a distinction between "trusted" and "untrusted" deltas - * which we've decided wasn't a good idea. Now, we always checksum the content. - * Compare with what ostree_checksum_file_from_input() is doing too. - */ -static gboolean -handle_untrusted_content_checksum (OstreeRepo *repo, - StaticDeltaExecutionState *state, - GCancellable *cancellable, - GError **error) -{ - g_autoptr(GFileInfo) finfo = _ostree_mode_uidgid_to_gfileinfo (state->mode, state->uid, state->gid); - g_autoptr(GBytes) header = _ostree_file_header_new (finfo, state->xattrs); - - ot_checksum_init (&state->content_checksum); - ot_checksum_update_bytes (&state->content_checksum, header); - - return TRUE; -} - static gboolean dispatch_open_splice_and_close (OstreeRepo *repo, StaticDeltaExecutionState *state, @@ -589,20 +544,18 @@ dispatch_open_splice_and_close (OstreeRepo *repo, if (!state->have_obj) { - if (!_ostree_repo_open_content_bare (repo, state->checksum, + if (!_ostree_repo_bare_content_open (repo, state->checksum, state->content_size, - &state->tmpf, + state->uid, state->gid, state->mode, + state->xattrs, + &state->content_out, cancellable, error)) goto out; - state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE); - if (!handle_untrusted_content_checksum (repo, state, cancellable, error)) - goto out; - - if (!content_out_write (repo, state, - state->payload_data + content_offset, - state->content_size, - cancellable, error)) + if (!_ostree_repo_bare_content_write (repo, &state->content_out, + state->payload_data + content_offset, + state->content_size, + cancellable, error)) goto out; } } @@ -691,17 +644,15 @@ dispatch_open (OstreeRepo *repo, if (!state->have_obj) { - if (!_ostree_repo_open_content_bare (repo, state->checksum, + if (!_ostree_repo_bare_content_open (repo, state->checksum, state->content_size, - &state->tmpf, + state->uid, state->gid, state->mode, + state->xattrs, + &state->content_out, cancellable, error)) return FALSE; - state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE); } - if (!handle_untrusted_content_checksum (repo, state, cancellable, error)) - return FALSE; - return TRUE; } @@ -740,8 +691,9 @@ dispatch_write (OstreeRepo *repo, if (G_UNLIKELY (bytes_read == 0)) return glnx_throw (error, "Unexpected EOF reading object %s", state->read_source_object); - if (!content_out_write (repo, state, (guint8*)buf, bytes_read, - cancellable, error)) + if (!_ostree_repo_bare_content_write (repo, &state->content_out, + (guint8*)buf, bytes_read, + cancellable, error)) return FALSE; content_size -= bytes_read; @@ -753,8 +705,9 @@ dispatch_write (OstreeRepo *repo, if (!validate_ofs (state, content_offset, content_size, error)) return FALSE; - if (!content_out_write (repo, state, state->payload_data + content_offset, content_size, - cancellable, error)) + if (!_ostree_repo_bare_content_write (repo, &state->content_out, + state->payload_data + content_offset, content_size, + cancellable, error)) return FALSE; } } @@ -818,34 +771,22 @@ dispatch_close (OstreeRepo *repo, { GLNX_AUTO_PREFIX_ERROR("opcode close", error); - if (state->content_out) + if (state->content_out.initialized) { - if (!g_output_stream_flush (state->content_out, cancellable, error)) + char actual_checksum[OSTREE_SHA256_STRING_LEN+1]; + if (!_ostree_repo_bare_content_commit (repo, &state->content_out, actual_checksum, + sizeof (actual_checksum), + cancellable, error)) return FALSE; - if (state->content_checksum.initialized) - { - char actual_checksum[OSTREE_SHA256_STRING_LEN+1]; - ot_checksum_get_hexdigest (&state->content_checksum, actual_checksum, sizeof (actual_checksum)); - - if (strcmp (actual_checksum, state->checksum) != 0) - return glnx_throw (error, "Corrupted object %s (actual checksum is %s)", - state->checksum, actual_checksum); - } - - if (!_ostree_repo_commit_trusted_content_bare (repo, state->checksum, &state->tmpf, - state->uid, state->gid, state->mode, - state->xattrs, - cancellable, error)) - return FALSE; - g_clear_object (&state->content_out); + g_assert_cmpstr (state->checksum, ==, actual_checksum); } if (!dispatch_unset_read_source (repo, state, cancellable, error)) return FALSE; g_clear_pointer (&state->xattrs, g_variant_unref); - ot_checksum_clear (&state->content_checksum); + _ostree_repo_bare_content_cleanup (&state->content_out); state->checksum_index++; state->output_target = NULL; diff --git a/src/libostree/ostree-repo-traverse.c b/src/libostree/ostree-repo-traverse.c index 0d9ddbd9..46c3e547 100644 --- a/src/libostree/ostree-repo-traverse.c +++ b/src/libostree/ostree-repo-traverse.c @@ -56,10 +56,6 @@ ostree_repo_commit_traverse_iter_init_commit (OstreeRepoCommitTraverseIter *it { struct _OstreeRepoRealCommitTraverseIter *real = (struct _OstreeRepoRealCommitTraverseIter*)iter; - gboolean ret = FALSE; - const guchar *csum; - g_autoptr(GVariant) meta_csum_bytes = NULL; - g_autoptr(GVariant) content_csum_bytes = NULL; memset (real, 0, sizeof (*real)); real->initialized = TRUE; @@ -68,21 +64,21 @@ ostree_repo_commit_traverse_iter_init_commit (OstreeRepoCommitTraverseIter *it real->current_dir = NULL; real->idx = 0; + g_autoptr(GVariant) content_csum_bytes = NULL; g_variant_get_child (commit, 6, "@ay", &content_csum_bytes); - csum = ostree_checksum_bytes_peek_validate (content_csum_bytes, error); + const guchar *csum = ostree_checksum_bytes_peek_validate (content_csum_bytes, error); if (!csum) - goto out; + return FALSE; ostree_checksum_inplace_from_bytes (csum, real->checksum_content); + g_autoptr(GVariant) meta_csum_bytes = NULL; g_variant_get_child (commit, 7, "@ay", &meta_csum_bytes); csum = ostree_checksum_bytes_peek_validate (meta_csum_bytes, error); if (!csum) - goto out; + return FALSE; ostree_checksum_inplace_from_bytes (csum, real->checksum_meta); - ret = TRUE; - out: - return ret; + return TRUE; } /** @@ -312,8 +308,6 @@ traverse_iter (OstreeRepo *repo, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - while (TRUE) { g_autoptr(GVariant) key = NULL; @@ -330,12 +324,11 @@ traverse_iter (OstreeRepo *repo, g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) { g_debug ("Ignoring not-found dirmeta"); - ret = TRUE; + return TRUE; /* Note early return */ } - else - g_propagate_error (error, g_steal_pointer (&local_error)); - goto out; + g_propagate_error (error, g_steal_pointer (&local_error)); + return FALSE; } else if (iterres == OSTREE_REPO_COMMIT_ITER_RESULT_END) break; @@ -371,16 +364,14 @@ traverse_iter (OstreeRepo *repo, if (!traverse_dirtree (repo, content_checksum, inout_reachable, ignore_missing_dirs, cancellable, error)) - goto out; + return FALSE; } } else g_assert_not_reached (); } - ret = TRUE; - out: - return ret; + return TRUE; } static gboolean @@ -391,12 +382,9 @@ traverse_dirtree (OstreeRepo *repo, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - g_autoptr(GVariant) dirtree = NULL; - ostree_cleanup_repo_commit_traverse_iter - OstreeRepoCommitTraverseIter iter = { 0, }; g_autoptr(GError) local_error = NULL; + g_autoptr(GVariant) dirtree = NULL; if (!ostree_repo_load_variant (repo, OSTREE_OBJECT_TYPE_DIR_TREE, checksum, &dirtree, &local_error)) { @@ -404,26 +392,25 @@ traverse_dirtree (OstreeRepo *repo, g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) { g_debug ("Ignoring not-found dirmeta %s", checksum); - ret = TRUE; + return TRUE; /* Early return */ } - else - g_propagate_error (error, g_steal_pointer (&local_error)); - goto out; + g_propagate_error (error, g_steal_pointer (&local_error)); + return FALSE; } g_debug ("Traversing dirtree %s", checksum); + ostree_cleanup_repo_commit_traverse_iter + OstreeRepoCommitTraverseIter iter = { 0, }; if (!ostree_repo_commit_traverse_iter_init_dirtree (&iter, repo, dirtree, OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE, error)) - goto out; + return FALSE; if (!traverse_iter (repo, &iter, inout_reachable, ignore_missing_dirs, cancellable, error)) - goto out; + return FALSE; - ret = TRUE; - out: - return ret; + return TRUE; } /** @@ -446,28 +433,21 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; g_autofree char *tmp_checksum = NULL; while (TRUE) { - gboolean recurse = FALSE; - g_autoptr(GVariant) key = NULL; - g_autoptr(GVariant) commit = NULL; - ostree_cleanup_repo_commit_traverse_iter - OstreeRepoCommitTraverseIter iter = { 0, }; - OstreeRepoCommitState commitstate; - gboolean ignore_missing_dirs = FALSE; - - key = g_variant_ref_sink (ostree_object_name_serialize (commit_checksum, OSTREE_OBJECT_TYPE_COMMIT)); + g_autoptr(GVariant) key = + g_variant_ref_sink (ostree_object_name_serialize (commit_checksum, OSTREE_OBJECT_TYPE_COMMIT)); if (g_hash_table_contains (inout_reachable, key)) break; + g_autoptr(GVariant) commit = NULL; if (!ostree_repo_load_variant_if_exists (repo, OSTREE_OBJECT_TYPE_COMMIT, commit_checksum, &commit, error)) - goto out; + return FALSE; /* Just return if the parent isn't found; we do expect most * people to have partial repositories. @@ -476,10 +456,12 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo, break; /* See if the commit is partial, if so it's not an error to lack objects */ + OstreeRepoCommitState commitstate; if (!ostree_repo_load_commit (repo, commit_checksum, NULL, &commitstate, error)) - goto out; + return FALSE; + gboolean ignore_missing_dirs = FALSE; if ((commitstate & OSTREE_REPO_COMMIT_STATE_PARTIAL) != 0) ignore_missing_dirs = TRUE; @@ -487,14 +469,17 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo, key = NULL; g_debug ("Traversing commit %s", commit_checksum); + ostree_cleanup_repo_commit_traverse_iter + OstreeRepoCommitTraverseIter iter = { 0, }; if (!ostree_repo_commit_traverse_iter_init_commit (&iter, repo, commit, OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE, error)) - goto out; + return FALSE; if (!traverse_iter (repo, &iter, inout_reachable, ignore_missing_dirs, cancellable, error)) - goto out; + return FALSE; + gboolean recurse = FALSE; if (maxdepth == -1 || maxdepth > 0) { g_free (tmp_checksum); @@ -511,9 +496,7 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo, break; } - ret = TRUE; - out: - return ret; + return TRUE; } /** @@ -536,17 +519,12 @@ ostree_repo_traverse_commit (OstreeRepo *repo, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - g_autoptr(GHashTable) ret_reachable = - ostree_repo_traverse_new_reachable (); - + g_autoptr(GHashTable) ret_reachable = ostree_repo_traverse_new_reachable (); if (!ostree_repo_traverse_commit_union (repo, commit_checksum, maxdepth, ret_reachable, cancellable, error)) - goto out; + return FALSE; - ret = TRUE; if (out_reachable) *out_reachable = g_steal_pointer (&ret_reachable); - out: - return ret; + return TRUE; } diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 7f2929b7..afd56e4c 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -1918,8 +1918,9 @@ ostree_repo_create (OstreeRepo *self, g_variant_new_variant (g_variant_new_string (self->collection_id))); glnx_autofd int repo_dir_fd = -1; + g_autoptr(GVariant) options = g_variant_ref_sink (g_variant_builder_end (builder)); if (!repo_create_at_internal (AT_FDCWD, repopath, mode, - g_variant_builder_end (builder), + options, &repo_dir_fd, cancellable, error)) return FALSE; @@ -4903,7 +4904,16 @@ _ostree_repo_try_lock_tmpdir (int tmpdir_dfd, } else { - did_lock = TRUE; + /* It's possible that we got a lock after seeing the directory, but + * another process deleted the tmpdir, so verify it still exists. + */ + struct stat stbuf; + if (!glnx_fstatat_allow_noent (tmpdir_dfd, tmpdir_name, &stbuf, AT_SYMLINK_NOFOLLOW, error)) + return FALSE; + if (errno == 0 && S_ISDIR (stbuf.st_mode)) + did_lock = TRUE; + else + glnx_release_lock_file (file_lock_out); } *out_did_lock = did_lock; @@ -4954,7 +4964,8 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd, if (!glnx_opendirat (dfd_iter.fd, dent->d_name, FALSE, &target_dfd, &local_error)) { - if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_DIRECTORY)) + if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_DIRECTORY) || + g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) continue; else { @@ -4978,6 +4989,8 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd, (void)futimens (target_dfd, NULL); /* We found an existing tmpdir which we managed to lock */ + g_debug ("Reusing tmpdir %s", dent->d_name); + reusing_dir = TRUE; ret_tmpdir.src_dfd = tmpdir_dfd; ret_tmpdir.fd = glnx_steal_fd (&target_dfd); ret_tmpdir.path = g_strdup (dent->d_name); @@ -5000,8 +5013,18 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd, error)) return FALSE; if (!did_lock) - continue; + { + /* We raced and someone else already locked the newly created + * directory. Free the resources here and then mark it as + * uninitialized so glnx_tmpdir_cleanup doesn't delete the directory + * when new_tmpdir goes out of scope. + */ + glnx_tmpdir_unset (&new_tmpdir); + new_tmpdir.initialized = FALSE; + continue; + } + g_debug ("Using new tmpdir %s", new_tmpdir.path); ret_tmpdir = new_tmpdir; /* Transfer ownership */ new_tmpdir.initialized = FALSE; } diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h index 15e5f94e..db54f022 100644 --- a/src/libostree/ostree-repo.h +++ b/src/libostree/ostree-repo.h @@ -539,7 +539,20 @@ gboolean ostree_repo_load_variant_if_exists (OstreeRepo *self, GVariant **out_variant, GError **error); +/** + * OstreeRepoCommitState: + * @OSTREE_REPO_COMMIT_STATE_NORMAL: Commit is complete. This is the default. + * (Since: 2017.14.) + * @OSTREE_REPO_COMMIT_STATE_PARTIAL: One or more objects are missing from the + * local copy of the commit, but metadata is present. (Since: 2015.7.) + * + * Flags representing the state of a commit in the local repository, as returned + * by ostree_repo_load_commit(). + * + * Since: 2015.7 + */ typedef enum { + OSTREE_REPO_COMMIT_STATE_NORMAL = 0, OSTREE_REPO_COMMIT_STATE_PARTIAL = (1 << 0), } OstreeRepoCommitState; @@ -631,6 +644,7 @@ typedef OstreeRepoCommitFilterResult (*OstreeRepoCommitFilter) (OstreeRepo *r * @OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS: Canonicalize permissions for bare-user-only mode. * @OSTREE_REPO_COMMIT_MODIFIER_FLAGS_ERROR_ON_UNLABELED: Emit an error if configured SELinux policy does not provide a label * @OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME: Delete added files/directories after commit; Since: 2017.13 + * @OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL: If a devino cache hit is found, skip modifier filters (non-directories only); Since: 2017.14 */ typedef enum { OSTREE_REPO_COMMIT_MODIFIER_FLAGS_NONE = 0, @@ -639,6 +653,7 @@ typedef enum { OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS = (1 << 2), OSTREE_REPO_COMMIT_MODIFIER_FLAGS_ERROR_ON_UNLABELED = (1 << 3), OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME = (1 << 4), + OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL = (1 << 5), } OstreeRepoCommitModifierFlags; /** diff --git a/src/libostree/ostree-soup-form.c b/src/libostree/ostree-soup-form.c index 74f9c7bb..dfaffb96 100644 --- a/src/libostree/ostree-soup-form.c +++ b/src/libostree/ostree-soup-form.c @@ -82,7 +82,7 @@ encode_pair (GString *str, const char *name, const char *value) /** * soup_form_encode_hash: - * @form_data_set: (element-type utf8 utf8): a hash table containing + * @form_data_set: (element-type utf8 utf8) (transfer none): a hash table containing * name/value pairs (as strings) * * Encodes @form_data_set into a value of type diff --git a/src/libostree/ostree-soup-uri.c b/src/libostree/ostree-soup-uri.c index 97f74636..a3fa2acc 100644 --- a/src/libostree/ostree-soup-uri.c +++ b/src/libostree/ostree-soup-uri.c @@ -1281,7 +1281,7 @@ soup_uri_set_query (SoupURI *uri, const char *query) /** * soup_uri_set_query_from_form: * @uri: a #SoupURI - * @form: (element-type utf8 utf8): a #GHashTable containing HTML form + * @form: (element-type utf8 utf8) (transfer none): a #GHashTable containing HTML form * information * * Sets @uri's query to the result of encoding @form according to the diff --git a/src/libostree/ostree-version.h b/src/libostree/ostree-version.h index 6b3217e7..f9a5e8d4 100644 --- a/src/libostree/ostree-version.h +++ b/src/libostree/ostree-version.h @@ -43,7 +43,7 @@ * * Since: 2017.4 */ -#define OSTREE_RELEASE_VERSION (13) +#define OSTREE_RELEASE_VERSION (14) /** * OSTREE_VERSION @@ -52,7 +52,7 @@ * * Since: 2017.4 */ -#define OSTREE_VERSION (2017.13) +#define OSTREE_VERSION (2017.14) /** * OSTREE_VERSION_S: @@ -62,7 +62,7 @@ * * Since: 2017.4 */ -#define OSTREE_VERSION_S "2017.13" +#define OSTREE_VERSION_S "2017.14" #define OSTREE_ENCODE_VERSION(year,release) \ ((year) << 16 | (release)) diff --git a/src/ostree/ot-admin-builtin-diff.c b/src/ostree/ot-admin-builtin-diff.c index fe0c5365..d33fd8a2 100644 --- a/src/ostree/ot-admin-builtin-diff.c +++ b/src/ostree/ot-admin-builtin-diff.c @@ -43,29 +43,20 @@ static GOptionEntry options[] = { gboolean ot_admin_builtin_diff (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { - g_autoptr(GOptionContext) context = NULL; - g_autoptr(OstreeSysroot) sysroot = NULL; - gboolean ret = FALSE; - g_autoptr(OstreeDeployment) deployment = NULL; - g_autoptr(GFile) deployment_dir = NULL; - g_autoptr(GPtrArray) modified = NULL; - g_autoptr(GPtrArray) removed = NULL; - g_autoptr(GPtrArray) added = NULL; - g_autoptr(GFile) orig_etc_path = NULL; - g_autoptr(GFile) new_etc_path = NULL; - - context = g_option_context_new (""); - + g_autoptr(GOptionContext) context = g_option_context_new (""); g_option_context_add_main_entries (context, options, NULL); + g_autoptr(OstreeSysroot) sysroot = NULL; if (!ostree_admin_option_context_parse (context, options, &argc, &argv, OSTREE_ADMIN_BUILTIN_FLAG_SUPERUSER | OSTREE_ADMIN_BUILTIN_FLAG_UNLOCKED, invocation, &sysroot, cancellable, error)) - goto out; + return FALSE; if (!ot_admin_require_booted_deployment_or_osname (sysroot, opt_osname, cancellable, error)) - goto out; + return FALSE; + + g_autoptr(OstreeDeployment) deployment = NULL; if (opt_osname != NULL) { deployment = ostree_sysroot_get_merge_deployment (sysroot, opt_osname); @@ -73,28 +64,24 @@ ot_admin_builtin_diff (int argc, char **argv, OstreeCommandInvocation *invocatio { g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, "No deployment for OS '%s'", opt_osname); - goto out; + return FALSE; } } else deployment = g_object_ref (ostree_sysroot_get_booted_deployment (sysroot)); - deployment_dir = ostree_sysroot_get_deployment_directory (sysroot, deployment); - - orig_etc_path = g_file_resolve_relative_path (deployment_dir, "usr/etc"); - new_etc_path = g_file_resolve_relative_path (deployment_dir, "etc"); - - modified = g_ptr_array_new_with_free_func ((GDestroyNotify) ostree_diff_item_unref); - removed = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); - added = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); + g_autoptr(GFile) deployment_dir = ostree_sysroot_get_deployment_directory (sysroot, deployment); + g_autoptr(GFile) orig_etc_path = g_file_resolve_relative_path (deployment_dir, "usr/etc"); + g_autoptr(GFile) new_etc_path = g_file_resolve_relative_path (deployment_dir, "etc"); + g_autoptr(GPtrArray) modified = g_ptr_array_new_with_free_func ((GDestroyNotify) ostree_diff_item_unref); + g_autoptr(GPtrArray) removed = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); + g_autoptr(GPtrArray) added = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); if (!ostree_diff_dirs (OSTREE_DIFF_FLAGS_IGNORE_XATTRS, orig_etc_path, new_etc_path, modified, removed, added, cancellable, error)) - goto out; + return FALSE; ostree_diff_print (orig_etc_path, new_etc_path, modified, removed, added); - ret = TRUE; - out: - return ret; + return TRUE; } diff --git a/src/ostree/ot-builtin-commit.c b/src/ostree/ot-builtin-commit.c index a8eb79aa..c24e06c7 100644 --- a/src/ostree/ot-builtin-commit.c +++ b/src/ostree/ot-builtin-commit.c @@ -51,6 +51,7 @@ static gboolean opt_no_xattrs; static char *opt_selinux_policy; static gboolean opt_canonical_permissions; static gboolean opt_consume; +static gboolean opt_devino_canonical; static char **opt_trees; static gint opt_owner_uid = -1; static gint opt_owner_gid = -1; @@ -98,6 +99,7 @@ static GOptionEntry options[] = { { "no-xattrs", 0, 0, G_OPTION_ARG_NONE, &opt_no_xattrs, "Do not import extended attributes", NULL }, { "selinux-policy", 0, 0, G_OPTION_ARG_FILENAME, &opt_selinux_policy, "Set SELinux labels based on policy in root filesystem PATH (may be /)", "PATH" }, { "link-checkout-speedup", 0, 0, G_OPTION_ARG_NONE, &opt_link_checkout_speedup, "Optimize for commits of trees composed of hardlinks into the repository", NULL }, + { "devino-canonical", 'I', 0, G_OPTION_ARG_NONE, &opt_devino_canonical, "Assume hardlinked objects are unmodified. Implies --link-checkout-speedup", NULL }, { "tar-autocreate-parents", 0, 0, G_OPTION_ARG_NONE, &opt_tar_autocreate_parents, "When loading tar archives, automatically create parent directories as needed", NULL }, { "tar-pathname-filter", 0, 0, G_OPTION_ARG_STRING, &opt_tar_pathname_filter, "When loading tar archives, use REGEX,REPLACEMENT against path names", "REGEX,REPLACEMENT" }, { "skip-if-unchanged", 0, 0, G_OPTION_ARG_NONE, &opt_skip_if_unchanged, "If the contents are unchanged from previous commit, do nothing", NULL }, @@ -480,6 +482,11 @@ ostree_builtin_commit (int argc, char **argv, OstreeCommandInvocation *invocatio flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS; if (opt_consume) flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME; + if (opt_devino_canonical) + { + opt_link_checkout_speedup = TRUE; /* Imply this */ + flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL; + } if (opt_canonical_permissions) flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS; if (opt_generate_sizes) diff --git a/src/ostree/ot-builtin-remote.c b/src/ostree/ot-builtin-remote.c index 0be878cc..dfb07d03 100644 --- a/src/ostree/ot-builtin-remote.c +++ b/src/ostree/ot-builtin-remote.c @@ -86,12 +86,8 @@ remote_option_context_new_with_commands (void) gboolean ostree_builtin_remote (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { - OstreeCommand *subcommand; const char *subcommand_name = NULL; - g_autofree char *prgname = NULL; - gboolean ret = FALSE; - int in, out; - + int in,out; for (in = 1, out = 1; in < argc; in++, out++) { /* The non-option is the command, take it out of the arguments */ @@ -115,7 +111,7 @@ ostree_builtin_remote (int argc, char **argv, OstreeCommandInvocation *invocatio argc = out; - subcommand = remote_subcommands; + OstreeCommand *subcommand = remote_subcommands; while (subcommand->name) { if (g_strcmp0 (subcommand_name, subcommand->name) == 0) @@ -150,18 +146,15 @@ ostree_builtin_remote (int argc, char **argv, OstreeCommandInvocation *invocatio help = g_option_context_get_help (context, FALSE, NULL); g_printerr ("%s", help); - goto out; + return FALSE; } - prgname = g_strdup_printf ("%s %s", g_get_prgname (), subcommand_name); + g_autofree char *prgname = g_strdup_printf ("%s %s", g_get_prgname (), subcommand_name); g_set_prgname (prgname); OstreeCommandInvocation sub_invocation = { .command = subcommand }; if (!subcommand->fn (argc, argv, &sub_invocation, cancellable, error)) - goto out; + return FALSE; - ret = TRUE; - - out: - return ret; + return TRUE; } diff --git a/src/ostree/ot-builtin-static-delta.c b/src/ostree/ot-builtin-static-delta.c index d053500a..d91acd20 100644 --- a/src/ostree/ot-builtin-static-delta.c +++ b/src/ostree/ot-builtin-static-delta.c @@ -149,77 +149,63 @@ ot_static_delta_builtin_list (int argc, char **argv, OstreeCommandInvocation *in static gboolean ot_static_delta_builtin_show (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - g_autoptr(GOptionContext) context = NULL; + + g_autoptr(GOptionContext) context = g_option_context_new (""); + g_autoptr(OstreeRepo) repo = NULL; - const char *delta_id = NULL; - - context = g_option_context_new (""); - if (!ostree_option_context_parse (context, list_options, &argc, &argv, invocation, &repo, cancellable, error)) - goto out; + return FALSE; if (argc < 3) { g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, "DELTA must be specified"); - goto out; + return FALSE; } - delta_id = argv[2]; + const char *delta_id = argv[2]; if (!ostree_cmd__private__ ()->ostree_static_delta_dump (repo, delta_id, cancellable, error)) - goto out; - - ret = TRUE; - out: - return ret; + return FALSE; + + return TRUE; } static gboolean ot_static_delta_builtin_delete (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - g_autoptr(GOptionContext) context = NULL; + g_autoptr(GOptionContext) context = g_option_context_new (""); + g_autoptr(OstreeRepo) repo = NULL; - const char *delta_id = NULL; - - context = g_option_context_new (""); - if (!ostree_option_context_parse (context, list_options, &argc, &argv, invocation, &repo, cancellable, error)) - goto out; + return FALSE; if (argc < 3) { g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, "DELTA must be specified"); - goto out; + return FALSE; } - delta_id = argv[2]; + const char *delta_id = argv[2]; if (!ostree_cmd__private__ ()->ostree_static_delta_delete (repo, delta_id, cancellable, error)) - goto out; + return FALSE; - ret = TRUE; - out: - return ret; + return TRUE; } static gboolean ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - g_autoptr(GOptionContext) context = NULL; + g_autoptr(GOptionContext) context = g_option_context_new ("[TO]"); g_autoptr(OstreeRepo) repo = NULL; - - context = g_option_context_new ("[TO]"); if (!ostree_option_context_parse (context, generate_options, &argc, &argv, invocation, &repo, cancellable, error)) - goto out; + return FALSE; if (!ostree_ensure_repo_writable (repo, error)) - goto out; + return FALSE; if (argc >= 3 && opt_to_rev == NULL) opt_to_rev = argv[2]; @@ -228,7 +214,7 @@ ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation { g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, "TO revision must be specified"); - goto out; + return FALSE; } else { @@ -247,7 +233,7 @@ ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation { g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Cannot specify both --empty and --from=REV"); - goto out; + return FALSE; } from_source = NULL; } @@ -264,25 +250,24 @@ ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation if (from_source) { if (!ostree_repo_resolve_rev (repo, from_source, FALSE, &from_resolved, error)) - goto out; + return FALSE; } if (!ostree_repo_resolve_rev (repo, opt_to_rev, FALSE, &to_resolved, error)) - goto out; + return FALSE; if (opt_if_not_exists) { gboolean does_exist; g_autofree char *delta_id = from_resolved ? g_strconcat (from_resolved, "-", to_resolved, NULL) : g_strdup (to_resolved); if (!ostree_cmd__private__ ()->ostree_static_delta_query_exists (repo, delta_id, &does_exist, cancellable, error)) - goto out; + return FALSE; if (does_exist) { g_print ("Delta %s already exists.\n", delta_id); - ret = TRUE; - goto out; + return TRUE; } } - + if (opt_endianness) { if (strcmp (opt_endianness, "l") == 0) @@ -293,12 +278,12 @@ ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Invalid endianness '%s'", opt_endianness); - goto out; + return FALSE; } } else endianness = G_BYTE_ORDER; - + if (opt_swap_endianness) { switch (endianness) @@ -346,54 +331,47 @@ ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation from_resolved, to_resolved, NULL, params, cancellable, error)) - goto out; + return FALSE; } } - ret = TRUE; - out: - return ret; + return TRUE; } static gboolean ot_static_delta_builtin_apply_offline (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - const char *patharg; - g_autoptr(GFile) path = NULL; g_autoptr(GOptionContext) context = NULL; g_autoptr(OstreeRepo) repo = NULL; context = g_option_context_new (""); if (!ostree_option_context_parse (context, apply_offline_options, &argc, &argv, invocation, &repo, cancellable, error)) - goto out; + return FALSE; if (!ostree_ensure_repo_writable (repo, error)) - goto out; + return FALSE; if (argc < 3) { g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, "PATH must be specified"); - goto out; + return FALSE; } - patharg = argv[2]; - path = g_file_new_for_path (patharg); + const char *patharg = argv[2]; + g_autoptr(GFile) path = g_file_new_for_path (patharg); if (!ostree_repo_prepare_transaction (repo, NULL, cancellable, error)) - goto out; + return FALSE; if (!ostree_repo_static_delta_execute_offline (repo, path, FALSE, cancellable, error)) - goto out; + return FALSE; if (!ostree_repo_commit_transaction (repo, NULL, cancellable, error)) - goto out; + return FALSE; - ret = TRUE; - out: - return ret; + return TRUE; } gboolean diff --git a/src/ostree/ot-builtin-summary.c b/src/ostree/ot-builtin-summary.c index c6319f15..ba8f379b 100644 --- a/src/ostree/ot-builtin-summary.c +++ b/src/ostree/ot-builtin-summary.c @@ -210,7 +210,7 @@ ostree_builtin_summary (int argc, char **argv, OstreeCommandInvocation *invocati return FALSE; } } - else if (opt_view) + else if (opt_view || opt_raw) { g_autoptr(GBytes) summary_data = NULL; diff --git a/src/ostree/parse-datetime.c b/src/ostree/parse-datetime.c index c3005dd6..4e482d13 100644 --- a/src/ostree/parse-datetime.c +++ b/src/ostree/parse-datetime.c @@ -103,6 +103,7 @@ #include #include #include +#include /* There's no need to extend the stack, so there's no need to involve alloca. */ @@ -119,11 +120,11 @@ xmemdup (void const *p, size_t s) static void gettime (struct timespec *ts) { -#if HAVE_NANOTIME +#ifdef HAVE_NANOTIME nanotime (ts); #else -# if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME +# if defined(CLOCK_REALTIME) && defined(HAVE_CLOCK_GETTIME) if (clock_gettime (CLOCK_REALTIME, ts) == 0) return; # endif @@ -199,13 +200,6 @@ gettime (struct timespec *ts) #define HOUR(x) ((x) * 60) -/* long_time_t is a signed integer type that contains all time_t values. */ -#if TIME_T_FITS_IN_LONG_INT -typedef long int long_time_t; -#else -typedef time_t long_time_t; -#endif - /* Convert a possibly-signed character to an unsigned character. This is a bit safer than casting to unsigned char, since it catches some type errors that the cast doesn't. */ @@ -245,15 +239,11 @@ typedef struct long int day; long int hour; long int minutes; - long_time_t seconds; - long int ns; + intmax_t seconds; + int ns; } relative_time; -#if HAVE_COMPOUND_LITERALS -# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 }) -#else -static relative_time const RELATIVE_TIME_0; -#endif +#define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 }) /* Information passed to and from the parser. */ typedef struct @@ -371,7 +361,7 @@ set_hhmmss (parser_control *pc, long int hour, long int minutes, } -#line 375 "src/ostree/parse-datetime.c" /* yacc.c:339 */ +#line 365 "src/ostree/parse-datetime.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -452,14 +442,14 @@ extern int yydebug; union YYSTYPE { -#line 320 "src/ostree/parse-datetime.y" /* yacc.c:355 */ +#line 310 "src/ostree/parse-datetime.y" /* yacc.c:355 */ long int intval; textint textintval; struct timespec timespec; relative_time rel; -#line 463 "src/ostree/parse-datetime.c" /* yacc.c:355 */ +#line 453 "src/ostree/parse-datetime.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -475,7 +465,7 @@ int yyparse (parser_control *pc); /* Copy the second part of user declarations. */ -#line 479 "src/ostree/parse-datetime.c" /* yacc.c:358 */ +#line 469 "src/ostree/parse-datetime.c" /* yacc.c:358 */ #ifdef short # undef short @@ -774,16 +764,16 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 347, 347, 348, 352, 359, 361, 365, 367, 369, - 371, 373, 375, 377, 378, 379, 383, 387, 391, 396, - 401, 406, 410, 415, 420, 427, 429, 433, 441, 446, - 456, 458, 460, 463, 466, 468, 470, 475, 480, 485, - 490, 498, 503, 523, 531, 539, 544, 550, 555, 561, - 565, 575, 577, 579, 584, 586, 588, 590, 592, 594, - 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, - 616, 618, 620, 622, 624, 628, 630, 632, 634, 636, - 638, 643, 647, 647, 650, 651, 656, 657, 662, 667, - 678, 679 + 0, 337, 337, 338, 342, 349, 351, 355, 357, 359, + 361, 363, 365, 367, 368, 369, 373, 377, 381, 386, + 391, 396, 400, 405, 410, 417, 419, 423, 431, 436, + 446, 448, 450, 453, 456, 458, 460, 465, 470, 475, + 480, 488, 493, 513, 521, 529, 534, 540, 545, 551, + 555, 565, 567, 569, 574, 576, 578, 580, 582, 584, + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, + 606, 608, 610, 612, 614, 618, 620, 622, 624, 626, + 628, 633, 637, 637, 640, 641, 646, 647, 652, 657, + 668, 669 }; #endif @@ -1642,222 +1632,222 @@ yyreduce: switch (yyn) { case 4: -#line 353 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 343 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->seconds = (yyvsp[0].timespec); pc->timespec_seen = true; } -#line 1651 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1641 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 7: -#line 366 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 356 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->times_seen++; pc->dates_seen++; } -#line 1657 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1647 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 8: -#line 368 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 358 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->times_seen++; } -#line 1663 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1653 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 9: -#line 370 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 360 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->local_zones_seen++; } -#line 1669 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1659 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 10: -#line 372 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 362 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->zones_seen++; } -#line 1675 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1665 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 11: -#line 374 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 364 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->dates_seen++; } -#line 1681 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1671 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 12: -#line 376 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 366 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->days_seen++; } -#line 1687 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1677 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 18: -#line 392 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 382 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { set_hhmmss (pc, (yyvsp[-1].textintval).value, 0, 0, 0); pc->meridian = (yyvsp[0].intval); } -#line 1696 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1686 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 19: -#line 397 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 387 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { set_hhmmss (pc, (yyvsp[-3].textintval).value, (yyvsp[-1].textintval).value, 0, 0); pc->meridian = (yyvsp[0].intval); } -#line 1705 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1695 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 20: -#line 402 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 392 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { set_hhmmss (pc, (yyvsp[-5].textintval).value, (yyvsp[-3].textintval).value, (yyvsp[-1].timespec).tv_sec, (yyvsp[-1].timespec).tv_nsec); pc->meridian = (yyvsp[0].intval); } -#line 1714 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1704 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 22: -#line 411 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 401 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { set_hhmmss (pc, (yyvsp[-1].textintval).value, 0, 0, 0); pc->meridian = MER24; } -#line 1723 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1713 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 23: -#line 416 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 406 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { set_hhmmss (pc, (yyvsp[-3].textintval).value, (yyvsp[-1].textintval).value, 0, 0); pc->meridian = MER24; } -#line 1732 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1722 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 24: -#line 421 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 411 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { set_hhmmss (pc, (yyvsp[-5].textintval).value, (yyvsp[-3].textintval).value, (yyvsp[-1].timespec).tv_sec, (yyvsp[-1].timespec).tv_nsec); pc->meridian = MER24; } -#line 1741 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1731 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 27: -#line 434 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 424 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->zones_seen++; pc->time_zone = time_zone_hhmm (pc, (yyvsp[-1].textintval), (yyvsp[0].intval)); } -#line 1750 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1740 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 28: -#line 442 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 432 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->local_isdst = (yyvsp[0].intval); pc->dsts_seen += (0 < (yyvsp[0].intval)); } -#line 1759 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1749 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 29: -#line 447 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 437 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->local_isdst = 1; pc->dsts_seen += (0 < (yyvsp[-1].intval)) + 1; } -#line 1768 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1758 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 30: -#line 457 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 447 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->time_zone = (yyvsp[0].intval); } -#line 1774 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1764 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 31: -#line 459 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 449 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->time_zone = HOUR(7); } -#line 1780 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1770 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 32: -#line 461 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 451 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->time_zone = (yyvsp[-1].intval); apply_relative_time (pc, (yyvsp[0].rel), 1); } -#line 1787 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1777 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 33: -#line 464 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 454 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->time_zone = HOUR(7); apply_relative_time (pc, (yyvsp[0].rel), 1); } -#line 1794 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1784 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 34: -#line 467 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 457 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->time_zone = (yyvsp[-2].intval) + time_zone_hhmm (pc, (yyvsp[-1].textintval), (yyvsp[0].intval)); } -#line 1800 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1790 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 35: -#line 469 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 459 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->time_zone = (yyvsp[0].intval) + 60; } -#line 1806 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1796 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 36: -#line 471 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 461 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->time_zone = (yyvsp[-1].intval) + 60; } -#line 1812 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1802 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 37: -#line 476 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 466 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->day_ordinal = 0; pc->day_number = (yyvsp[0].intval); } -#line 1821 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1811 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 38: -#line 481 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 471 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->day_ordinal = 0; pc->day_number = (yyvsp[-1].intval); } -#line 1830 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1820 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 39: -#line 486 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 476 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->day_ordinal = (yyvsp[-1].intval); pc->day_number = (yyvsp[0].intval); } -#line 1839 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1829 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 40: -#line 491 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 481 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->day_ordinal = (yyvsp[-1].textintval).value; pc->day_number = (yyvsp[0].intval); } -#line 1848 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1838 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 41: -#line 499 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 489 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->month = (yyvsp[-2].textintval).value; pc->day = (yyvsp[0].textintval).value; } -#line 1857 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1847 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 42: -#line 504 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 494 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { /* Interpret as YYYY/MM/DD if the first value has 4 or more digits, otherwise as MM/DD/YY. @@ -1877,11 +1867,11 @@ yyreduce: pc->year = (yyvsp[0].textintval); } } -#line 1881 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1871 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 43: -#line 524 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 514 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { /* e.g. 17-JUN-1992. */ pc->day = (yyvsp[-2].textintval).value; @@ -1889,11 +1879,11 @@ yyreduce: pc->year.value = -(yyvsp[0].textintval).value; pc->year.digits = (yyvsp[0].textintval).digits; } -#line 1893 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1883 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 44: -#line 532 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 522 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { /* e.g. JUN-17-1992. */ pc->month = (yyvsp[-2].intval); @@ -1901,281 +1891,281 @@ yyreduce: pc->year.value = -(yyvsp[0].textintval).value; pc->year.digits = (yyvsp[0].textintval).digits; } -#line 1905 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1895 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 45: -#line 540 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 530 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->month = (yyvsp[-1].intval); pc->day = (yyvsp[0].textintval).value; } -#line 1914 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1904 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 46: -#line 545 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 535 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->month = (yyvsp[-3].intval); pc->day = (yyvsp[-2].textintval).value; pc->year = (yyvsp[0].textintval); } -#line 1924 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1914 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 47: -#line 551 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 541 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->day = (yyvsp[-1].textintval).value; pc->month = (yyvsp[0].intval); } -#line 1933 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1923 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 48: -#line 556 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 546 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { pc->day = (yyvsp[-2].textintval).value; pc->month = (yyvsp[-1].intval); pc->year = (yyvsp[0].textintval); } -#line 1943 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1933 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 50: -#line 566 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 556 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { /* ISO 8601 format. YYYY-MM-DD. */ pc->year = (yyvsp[-2].textintval); pc->month = -(yyvsp[-1].textintval).value; pc->day = -(yyvsp[0].textintval).value; } -#line 1954 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1944 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 51: -#line 576 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 566 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { apply_relative_time (pc, (yyvsp[-1].rel), (yyvsp[0].intval)); } -#line 1960 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1950 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 52: -#line 578 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 568 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { apply_relative_time (pc, (yyvsp[0].rel), 1); } -#line 1966 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1956 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 53: -#line 580 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 570 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { apply_relative_time (pc, (yyvsp[0].rel), 1); } -#line 1972 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1962 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 54: -#line 585 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 575 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[-1].intval); } -#line 1978 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1968 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 55: -#line 587 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 577 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[-1].textintval).value; } -#line 1984 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1974 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 56: -#line 589 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 579 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = 1; } -#line 1990 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1980 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 57: -#line 591 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 581 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[-1].intval); } -#line 1996 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1986 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 58: -#line 593 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 583 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[-1].textintval).value; } -#line 2002 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1992 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 59: -#line 595 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 585 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = 1; } -#line 2008 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 1998 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 60: -#line 597 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 587 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[-1].intval) * (yyvsp[0].intval); } -#line 2014 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2004 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 61: -#line 599 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 589 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[-1].textintval).value * (yyvsp[0].intval); } -#line 2020 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2010 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 62: -#line 601 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 591 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[0].intval); } -#line 2026 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2016 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 63: -#line 603 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 593 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[-1].intval); } -#line 2032 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2022 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 64: -#line 605 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 595 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[-1].textintval).value; } -#line 2038 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2028 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 65: -#line 607 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 597 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = 1; } -#line 2044 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2034 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 66: -#line 609 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 599 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[-1].intval); } -#line 2050 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2040 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 67: -#line 611 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 601 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[-1].textintval).value; } -#line 2056 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2046 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 68: -#line 613 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 603 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = 1; } -#line 2062 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2052 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 69: -#line 615 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 605 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[-1].intval); } -#line 2068 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2058 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 70: -#line 617 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 607 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[-1].textintval).value; } -#line 2074 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2064 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 71: -#line 619 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 609 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[-1].timespec).tv_sec; (yyval.rel).ns = (yyvsp[-1].timespec).tv_nsec; } -#line 2080 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2070 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 72: -#line 621 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 611 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[-1].timespec).tv_sec; (yyval.rel).ns = (yyvsp[-1].timespec).tv_nsec; } -#line 2086 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2076 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 73: -#line 623 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 613 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = 1; } -#line 2092 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2082 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 75: -#line 629 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 619 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[-1].textintval).value; } -#line 2098 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2088 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 76: -#line 631 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 621 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[-1].textintval).value; } -#line 2104 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2094 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 77: -#line 633 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 623 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[-1].textintval).value * (yyvsp[0].intval); } -#line 2110 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2100 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 78: -#line 635 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 625 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[-1].textintval).value; } -#line 2116 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2106 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 79: -#line 637 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 627 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[-1].textintval).value; } -#line 2122 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2112 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 80: -#line 639 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 629 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[-1].textintval).value; } -#line 2128 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2118 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 81: -#line 644 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 634 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[0].intval); } -#line 2134 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2124 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 85: -#line 652 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 642 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.timespec).tv_sec = (yyvsp[0].textintval).value; (yyval.timespec).tv_nsec = 0; } -#line 2140 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2130 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 87: -#line 658 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 648 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.timespec).tv_sec = (yyvsp[0].textintval).value; (yyval.timespec).tv_nsec = 0; } -#line 2146 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2136 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 88: -#line 663 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 653 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { digits_to_date_time (pc, (yyvsp[0].textintval)); } -#line 2152 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2142 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 89: -#line 668 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 658 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { /* Hybrid all-digit and relative offset, so that we accept e.g., "YYYYMMDD +N days" as well as "YYYYMMDD N days". */ digits_to_date_time (pc, (yyvsp[-1].textintval)); apply_relative_time (pc, (yyvsp[0].rel), 1); } -#line 2163 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2153 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 90: -#line 678 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 668 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.intval) = -1; } -#line 2169 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2159 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; case 91: -#line 680 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ +#line 670 "src/ostree/parse-datetime.y" /* yacc.c:1646 */ { (yyval.intval) = (yyvsp[0].textintval).value; } -#line 2175 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2165 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ break; -#line 2179 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ +#line 2169 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2403,7 +2393,7 @@ yyreturn: #endif return yyresult; } -#line 683 "src/ostree/parse-datetime.y" /* yacc.c:1906 */ +#line 673 "src/ostree/parse-datetime.y" /* yacc.c:1906 */ static table const meridian_table[] = @@ -2679,7 +2669,8 @@ lookup_zone (parser_control const *pc, char const *name) return NULL; } -#if ! HAVE_TM_GMTOFF +// #if ! HAVE_TM_GMTOFF +#if 1 // Always true for us /* Yield the difference between *A and *B, measured in seconds, ignoring leap seconds. The body of this function is taken directly from the GNU C Library; @@ -3304,10 +3295,10 @@ parse_datetime (struct timespec *result, char const *p, time_t t1 = t0 + d1; long int d2 = 60 * pc.rel.minutes; time_t t2 = t1 + d2; - long_time_t d3 = pc.rel.seconds; - long_time_t t3 = t2 + d3; + intmax_t d3 = pc.rel.seconds; + intmax_t t3 = t2 + d3; long int d4 = (sum_ns - normalized_ns) / BILLION; - long_time_t t4 = t3 + d4; + intmax_t t4 = t3 + d4; time_t t5 = t4; if ((d1 / (60 * 60) ^ pc.rel.hour) @@ -3335,39 +3326,3 @@ parse_datetime (struct timespec *result, char const *p, free (tz0); return ok; } - -#if TEST - -int -main (int ac, char **av) -{ - char buff[BUFSIZ]; - - printf ("Enter date, or blank line to exit.\n\t> "); - fflush (stdout); - - buff[BUFSIZ - 1] = '\0'; - while (fgets (buff, BUFSIZ - 1, stdin) && buff[0]) - { - struct timespec d; - struct tm const *tm; - if (! parse_datetime (&d, buff, NULL)) - printf ("Bad format - couldn't convert.\n"); - else if (! (tm = localtime (&d.tv_sec))) - { - long int sec = d.tv_sec; - printf ("localtime (%ld) failed\n", sec); - } - else - { - int ns = d.tv_nsec; - printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n", - tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec, ns); - } - printf ("\t> "); - fflush (stdout); - } - return 0; -} -#endif /* TEST */ diff --git a/src/ostree/parse-datetime.y b/src/ostree/parse-datetime.y index 50917354..e1ce3057 100644 --- a/src/ostree/parse-datetime.y +++ b/src/ostree/parse-datetime.y @@ -38,6 +38,7 @@ #include #include #include +#include /* There's no need to extend the stack, so there's no need to involve alloca. */ @@ -54,11 +55,11 @@ xmemdup (void const *p, size_t s) static void gettime (struct timespec *ts) { -#if HAVE_NANOTIME +#ifdef HAVE_NANOTIME nanotime (ts); #else -# if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME +# if defined(CLOCK_REALTIME) && defined(HAVE_CLOCK_GETTIME) if (clock_gettime (CLOCK_REALTIME, ts) == 0) return; # endif @@ -134,13 +135,6 @@ gettime (struct timespec *ts) #define HOUR(x) ((x) * 60) -/* long_time_t is a signed integer type that contains all time_t values. */ -#if TIME_T_FITS_IN_LONG_INT -typedef long int long_time_t; -#else -typedef time_t long_time_t; -#endif - /* Convert a possibly-signed character to an unsigned character. This is a bit safer than casting to unsigned char, since it catches some type errors that the cast doesn't. */ @@ -180,15 +174,11 @@ typedef struct long int day; long int hour; long int minutes; - long_time_t seconds; - long int ns; + intmax_t seconds; + int ns; } relative_time; -#if HAVE_COMPOUND_LITERALS -# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 }) -#else -static relative_time const RELATIVE_TIME_0; -#endif +#define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 }) /* Information passed to and from the parser. */ typedef struct @@ -955,7 +945,8 @@ lookup_zone (parser_control const *pc, char const *name) return NULL; } -#if ! HAVE_TM_GMTOFF +// #if ! HAVE_TM_GMTOFF +#if 1 // Always true for us /* Yield the difference between *A and *B, measured in seconds, ignoring leap seconds. The body of this function is taken directly from the GNU C Library; @@ -1580,10 +1571,10 @@ parse_datetime (struct timespec *result, char const *p, time_t t1 = t0 + d1; long int d2 = 60 * pc.rel.minutes; time_t t2 = t1 + d2; - long_time_t d3 = pc.rel.seconds; - long_time_t t3 = t2 + d3; + intmax_t d3 = pc.rel.seconds; + intmax_t t3 = t2 + d3; long int d4 = (sum_ns - normalized_ns) / BILLION; - long_time_t t4 = t3 + d4; + intmax_t t4 = t3 + d4; time_t t5 = t4; if ((d1 / (60 * 60) ^ pc.rel.hour) @@ -1611,39 +1602,3 @@ parse_datetime (struct timespec *result, char const *p, free (tz0); return ok; } - -#if TEST - -int -main (int ac, char **av) -{ - char buff[BUFSIZ]; - - printf ("Enter date, or blank line to exit.\n\t> "); - fflush (stdout); - - buff[BUFSIZ - 1] = '\0'; - while (fgets (buff, BUFSIZ - 1, stdin) && buff[0]) - { - struct timespec d; - struct tm const *tm; - if (! parse_datetime (&d, buff, NULL)) - printf ("Bad format - couldn't convert.\n"); - else if (! (tm = localtime (&d.tv_sec))) - { - long int sec = d.tv_sec; - printf ("localtime (%ld) failed\n", sec); - } - else - { - int ns = d.tv_nsec; - printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n", - tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec, ns); - } - printf ("\t> "); - fflush (stdout); - } - return 0; -} -#endif /* TEST */ diff --git a/src/rofiles-fuse/main.c b/src/rofiles-fuse/main.c index 97c91b60..9e04274b 100644 --- a/src/rofiles-fuse/main.c +++ b/src/rofiles-fuse/main.c @@ -284,18 +284,11 @@ callback_truncate (const char *path, off_t size) } static int -callback_utime (const char *path, struct utimbuf *buf) +callback_utimens (const char *path, const struct timespec tv[2]) { - struct timespec ts[2]; - path = ENSURE_RELPATH (path); - ts[0].tv_sec = buf->actime; - ts[0].tv_nsec = UTIME_OMIT; - ts[1].tv_sec = buf->modtime; - ts[1].tv_nsec = UTIME_OMIT; - - if (utimensat (basefd, path, ts, AT_SYMLINK_NOFOLLOW) == -1) + if (utimensat (basefd, path, tv, AT_SYMLINK_NOFOLLOW) == -1) return -errno; return 0; @@ -506,7 +499,7 @@ struct fuse_operations callback_oper = { .chmod = callback_chmod, .chown = callback_chown, .truncate = callback_truncate, - .utime = callback_utime, + .utimens = callback_utimens, .create = callback_create, .open = callback_open, .read_buf = callback_read_buf, diff --git a/tests/ostree-grub-generator b/tests/ostree-grub-generator index 5673b264..82e66bd7 100644 --- a/tests/ostree-grub-generator +++ b/tests/ostree-grub-generator @@ -61,7 +61,12 @@ read_config() populate_menu() { - boot_prefix="${OSTREE_BOOT_PARTITION}" + # Default to /boot if OSTREE_BOOT_PARTITION is not set and /boot is on the same device than ostree/repo + if [ -z ${OSTREE_BOOT_PARTITION+x} ] && [ -d /boot/ostree ] && [ -d /ostree/repo ] && [ $(stat -c '%d' /boot/ostree) -eq $(stat -c '%d' /ostree/repo) ]; then + boot_prefix="/boot" + else + boot_prefix="${OSTREE_BOOT_PARTITION}" + fi for config in $(ls ${entries_path}); do read_config ${config} menu="${menu}menuentry '${title}' {\n" diff --git a/tests/pull-test.sh b/tests/pull-test.sh index 3f8030e0..c09feb30 100644 --- a/tests/pull-test.sh +++ b/tests/pull-test.sh @@ -381,6 +381,12 @@ fi ${CMD_PREFIX} ostree --repo=repo fsck done +# Test no-op with deltas: https://github.com/ostreedev/ostree/issues/1321 +cd ${test_tmpdir} +repo_init --no-gpg-verify +${CMD_PREFIX} ostree --repo=repo pull origin main +${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin main + cd ${test_tmpdir} repo_init --no-gpg-verify ${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev} diff --git a/tests/test-basic-user.sh b/tests/test-basic-user.sh index bc08b65a..7f970b5c 100755 --- a/tests/test-basic-user.sh +++ b/tests/test-basic-user.sh @@ -25,7 +25,7 @@ skip_without_user_xattrs setup_test_repository "bare-user" -extra_basic_tests=5 +extra_basic_tests=6 . $(dirname $0)/basic-test.sh # Reset things so we don't inherit a lot of state from earlier tests @@ -99,3 +99,23 @@ assert_file_has_content ls.txt '^-007.. 0 0 .*/usr/bin/systemd' $OSTREE ls rootfs /usr/lib/dbus-daemon-helper >ls.txt assert_file_has_content ls.txt '^-007.. 0 81 .*/usr/lib/dbus-daemon-helper' echo "ok bare-user link-checkout-speedup maintains uids" + +cd ${test_tmpdir} +rm -rf test2-checkout +$OSTREE checkout -H -U test2 test2-checkout +# With --link-checkout-speedup, specifying --owner-uid should "win" by default. +myid=$(id -u) +newid=$((${myid} + 1)) +$OSTREE commit ${COMMIT_ARGS} --owner-uid ${newid} --owner-gid ${newid} \ + --link-checkout-speedup -b test2-linkcheckout-test --tree=dir=test2-checkout +$OSTREE ls test2-linkcheckout-test /baz/cow > ls.txt +assert_file_has_content ls.txt "^-006.. ${newid} ${newid} .*/baz/cow" + +# But --devino-canonical should override that +$OSTREE commit ${COMMIT_ARGS} --owner-uid ${newid} --owner-gid ${newid} \ + -I -b test2-devino-test --tree=dir=test2-checkout +$OSTREE ls test2-devino-test /baz/cow > ls.txt +assert_file_has_content ls.txt "^-006.. ${myid} ${myid} .*/baz/cow" + +$OSTREE refs --delete test2-{linkcheckout,devino}-test +echo "ok commit with -I" diff --git a/tests/test-pull-mirrorlist.sh b/tests/test-pull-mirrorlist.sh index 22d3950b..93b97eec 100755 --- a/tests/test-pull-mirrorlist.sh +++ b/tests/test-pull-mirrorlist.sh @@ -60,7 +60,7 @@ cat > ${test_tmpdir}/ostree-srv/mirrorlist <ref_to_checksum), ==, 2); g_assert_true (g_hash_table_contains (result->ref_to_checksum, &ref0)); g_assert_true (g_hash_table_contains (result->ref_to_checksum, &ref1)); + g_assert_cmpstr (ostree_remote_get_url (result->remote), ==, collection0_uri); } else if (g_strcmp0 (ostree_remote_get_name (result->remote), "remote1") == 0) { g_assert_cmpuint (g_hash_table_size (result->ref_to_checksum), ==, 1); g_assert_true (g_hash_table_contains (result->ref_to_checksum, &ref3)); + g_assert_cmpstr (ostree_remote_get_url (result->remote), ==, collection1_uri); } else { diff --git a/tests/test-summary-view.sh b/tests/test-summary-view.sh index 52ac8926..6e421079 100755 --- a/tests/test-summary-view.sh +++ b/tests/test-summary-view.sh @@ -55,7 +55,7 @@ assert_file_has_content_literal summary.txt "Timestamp (ostree.commit.timestamp) echo "ok view summary" # Check the summary can be viewed raw too. -${OSTREE} summary --view --raw > raw-summary.txt +${OSTREE} summary --raw > raw-summary.txt assert_file_has_content_literal raw-summary.txt "('main', (" assert_file_has_content_literal raw-summary.txt "('other', (" assert_file_has_content_literal raw-summary.txt "{'ostree.summary.last-modified': released-sha256.txt <