New upstream version 2017.14

This commit is contained in:
Simon McVittie 2017-12-10 19:02:31 +00:00
commit 84beec3c14
77 changed files with 1754 additions and 1343 deletions

View File

@ -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))

View File

@ -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

View File

@ -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 \

View File

@ -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 $@

53
aclocal.m4 vendored
View File

@ -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 <stdlib.h>
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,

View File

@ -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
@ -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

View File

@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="OSTree API references">
<link rel="next" href="reference.html" title="API Reference">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -14,7 +14,7 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">OSTree API references</p></th></tr></table></div>
<div><p class="releaseinfo">for OSTree 2017.13</p></div>
<div><p class="releaseinfo">for OSTree 2017.14</p></div>
</div>
<hr>
</div>
@ -68,6 +68,6 @@
</dl></div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="reference.html" title="API Reference">
<link rel="next" href="ostree-OstreeRepo.html" title="OstreeRepo: Content-addressed object store">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -1823,9 +1823,12 @@ allocated buffer.</p>
</tr>
<tr>
<td class="parameter_name"><p>path</p></td>
<td class="parameter_description"><p>Subpath
<em class="parameter"><code>stbuf</code></em>
(allow-none): Optional stat buffer</p></td>
<td class="parameter_description"><p>Subpath</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>stbuf (allow-none)</p></td>
<td class="parameter_description"><p>Optional stat buffer</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@ -1835,9 +1838,12 @@ allocated buffer.</p>
</tr>
<tr>
<td class="parameter_name"><p>flags</p></td>
<td class="parameter_description"><p>Flags
<em class="parameter"><code>out_checksum</code></em>
(out) (transfer full): Return location for hex checksum</p></td>
<td class="parameter_description"><p>Flags</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>out_checksum (out) (transfer full)</p></td>
<td class="parameter_description"><p>Return location for hex checksum</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@ -2492,6 +2498,6 @@ Unix epoch in UTC, big-endian) when the commit was committed</p></li></ul></div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-Simple-upgrade-class.html" title="Simple upgrade class">
<link rel="next" href="ostree-ostree-bootconfig-parser.html" title="ostree-bootconfig-parser">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -560,8 +560,6 @@ These may be returned by any API which creates or verifies signatures.</p>
<hr>
<div class="refsect2">
<a name="OstreeGpgVerifyResult"></a><h3>OstreeGpgVerifyResult</h3>
<pre class="programlisting">typedef struct OstreeGpgVerifyResult OstreeGpgVerifyResult;
</pre>
<p>Private instance structure.</p>
</div>
<hr>
@ -707,6 +705,6 @@ for future variations.</p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-OstreeRepo.html" title="OstreeRepo: Content-addressed object store">
<link rel="next" href="ostree-Root-partition-mount-point.html" title="Root partition mount point">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -358,13 +358,11 @@ ostree_mutable_tree_get_files (<em class="parameter"><code><a class="link" href=
<a name="ostree-In-memory-modifiable-filesystem-tree.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="OstreeMutableTree"></a><h3>OstreeMutableTree</h3>
<pre class="programlisting">typedef struct OstreeMutableTree OstreeMutableTree;
</pre>
<p>Private instance structure.</p>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-Core-repository-independent-functions.html" title="Core repository-independent functions">
<link rel="next" href="ostree-In-memory-modifiable-filesystem-tree.html" title="In-memory modifiable filesystem tree">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -3858,7 +3858,7 @@ refspecs which have <em class="parameter"><code>refspec_prefix</code></em>
<tr>
<td class="parameter_name"><p>out_all_refs</p></td>
<td class="parameter_description"><p>Mapping from ref to checksum. </p></td>
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 utf8]</span></td>
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 utf8][<a href="http://foldoc.org/transfer%20container"><span class="acronym">transfer container</span></a>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
@ -3914,7 +3914,7 @@ name.</p>
<tr>
<td class="parameter_name"><p>out_all_refs</p></td>
<td class="parameter_description"><p>Mapping from ref to checksum. </p></td>
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 utf8]</span></td>
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 utf8][<a href="http://foldoc.org/transfer%20container"><span class="acronym">transfer container</span></a>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>flags</p></td>
@ -3966,7 +3966,7 @@ ostree_repo_remote_list_refs (<em class="parameter"><code><a class="link" href="
<tr>
<td class="parameter_name"><p>out_all_refs</p></td>
<td class="parameter_description"><p>Mapping from ref to checksum. </p></td>
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 utf8]</span></td>
<td class="parameter_annotations"><span class="annotation">[<a href="http://foldoc.org/out"><span class="acronym">out</span></a>][<a href="http://foldoc.org/element-type"><span class="acronym">element-type</span></a> utf8 utf8][<a href="http://foldoc.org/transfer%20container"><span class="acronym">transfer container</span></a>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
@ -7396,8 +7396,6 @@ order.</p>
<a name="ostree-OstreeRepo.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="OstreeRepo"></a><h3>OstreeRepo</h3>
<pre class="programlisting">typedef struct OstreeRepo OstreeRepo;
</pre>
<p>Private instance structure.</p>
</div>
<hr>
@ -7639,6 +7637,8 @@ in bytes, counting only content objects.</p></td>
<hr>
<div class="refsect2">
<a name="OstreeRepoCommitState"></a><h3>enum OstreeRepoCommitState</h3>
<p>Flags representing the state of a commit in the local repository, as returned
by <a class="link" href="ostree-OstreeRepo.html#ostree-repo-load-commit" title="ostree_repo_load_commit ()"><code class="function">ostree_repo_load_commit()</code></a>.</p>
<div class="refsect3">
<a name="OstreeRepoCommitState.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@ -7647,13 +7647,27 @@ in bytes, counting only content objects.</p></td>
<col class="enum_members_description">
<col width="200px" class="enum_members_annotations">
</colgroup>
<tbody><tr>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="OSTREE-REPO-COMMIT-STATE-NORMAL:CAPS"></a>OSTREE_REPO_COMMIT_STATE_NORMAL</p></td>
<td class="enum_member_description">
<p>Commit is complete. This is the default.
(Since: 2017.14.)</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="OSTREE-REPO-COMMIT-STATE-PARTIAL:CAPS"></a>OSTREE_REPO_COMMIT_STATE_PARTIAL</p></td>
<td> </td>
<td> </td>
</tr></tbody>
<td class="enum_member_description">
<p>One or more objects are missing from the
local copy of the commit, but metadata is present. (Since: 2015.7.)</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: 2015.7</p>
</div>
<hr>
<div class="refsect2">
@ -7688,8 +7702,6 @@ in bytes, counting only content objects.</p></td>
<hr>
<div class="refsect2">
<a name="OstreeRepoCommitModifier"></a><h3>OstreeRepoCommitModifier</h3>
<pre class="programlisting">typedef struct OstreeRepoCommitModifier OstreeRepoCommitModifier;
</pre>
<p>A structure allowing control over commits.</p>
</div>
<hr>
@ -7746,6 +7758,13 @@ in bytes, counting only content objects.</p></td>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="OSTREE-REPO-COMMIT-MODIFIER-FLAGS-DEVINO-CANONICAL:CAPS"></a>OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL</p></td>
<td class="enum_member_description">
<p>If a devino cache hit is found, skip modifier filters (non-directories only); Since: 2017.14</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
@ -8092,6 +8111,6 @@ as - List of pack file checksums in which this object appears</p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-Root-partition-mount-point.html" title="Root partition mount point">
<link rel="next" href="ostree-SELinux-policy-management.html" title="SELinux policy management">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -540,12 +540,10 @@ events will be queued.</p>
<a name="ostree-Progress-notification-system-for-asynchronous-operations.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="OstreeAsyncProgress"></a><h3>OstreeAsyncProgress</h3>
<pre class="programlisting">typedef struct OstreeAsyncProgress OstreeAsyncProgress;
</pre>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-In-memory-modifiable-filesystem-tree.html" title="In-memory modifiable filesystem tree">
<link rel="next" href="ostree-Progress-notification-system-for-asynchronous-operations.html" title="Progress notification system for asynchronous operations">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -1686,8 +1686,6 @@ later, instead.</p>
<a name="ostree-Root-partition-mount-point.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="OstreeSysroot"></a><h3>OstreeSysroot</h3>
<pre class="programlisting">typedef struct OstreeSysroot OstreeSysroot;
</pre>
</div>
<hr>
<div class="refsect2">
@ -1738,6 +1736,6 @@ later, instead.</p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-Progress-notification-system-for-asynchronous-operations.html" title="Progress notification system for asynchronous operations">
<link rel="next" href="ostree-Simple-upgrade-class.html" title="Simple upgrade class">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -447,8 +447,6 @@ ostree_sepolicy_fscreatecon_cleanup (<em class="parameter"><code><span class="ty
<a name="ostree-SELinux-policy-management.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="OstreeSePolicy"></a><h3>OstreeSePolicy</h3>
<pre class="programlisting">typedef struct OstreeSePolicy OstreeSePolicy;
</pre>
</div>
<hr>
<div class="refsect2">
@ -484,6 +482,6 @@ ostree_sepolicy_fscreatecon_cleanup (<em class="parameter"><code><span class="ty
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-SELinux-policy-management.html" title="SELinux policy management">
<link rel="next" href="ostree-GPG-signature-verification-results.html" title="GPG signature verification results">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -642,8 +642,6 @@ with /etc, and update the bootloader configuration.</p>
<a name="ostree-Simple-upgrade-class.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="OstreeSysrootUpgrader"></a><h3>OstreeSysrootUpgrader</h3>
<pre class="programlisting">typedef struct OstreeSysrootUpgrader OstreeSysrootUpgrader;
</pre>
</div>
<hr>
<div class="refsect2">
@ -710,6 +708,6 @@ with /etc, and update the bootloader configuration.</p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-GPG-signature-verification-results.html" title="GPG signature verification results">
<link rel="next" href="ostree-ostree-chain-input-stream.html" title="ostree-chain-input-stream">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -256,6 +256,6 @@ ostree_bootconfig_parser_get (<em class="parameter"><code><a class="link" href="
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-bootconfig-parser.html" title="ostree-bootconfig-parser">
<link rel="next" href="ostree-ostree-checksum-input-stream.html" title="ostree-checksum-input-stream">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -84,6 +84,6 @@ ostree_chain_input_stream_new (<em class="parameter"><code><span class="type">GP
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-chain-input-stream.html" title="ostree-chain-input-stream">
<link rel="next" href="ostree-ostree-deployment.html" title="ostree-deployment">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -85,6 +85,6 @@ ostree_checksum_input_stream_new (<em class="parameter"><code><span class="type"
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-checksum-input-stream.html" title="ostree-checksum-input-stream">
<link rel="next" href="ostree-ostree-diff.html" title="ostree-diff">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -522,6 +522,6 @@ ostree_deployment_unlocked_state_to_string
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-deployment.html" title="ostree-deployment">
<link rel="next" href="ostree-ostree-repo-file.html" title="ostree-repo-file">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -363,6 +363,6 @@ ostree_diff_print (<em class="parameter"><code><span class="type">GFile</span> *
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="OSTree API references">
<link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-diff.html" title="ostree-diff">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -255,12 +255,10 @@ ostree_repo_file_tree_query_child (<em class="parameter"><code><a class="link" h
<a name="ostree-ostree-repo-file.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="OstreeRepoFile"></a><h3>OstreeRepoFile</h3>
<pre class="programlisting">typedef struct OstreeRepoFile OstreeRepoFile;
</pre>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -216,7 +216,7 @@
<keyword type="struct" name="struct OstreeRepoTransactionStats" link="ostree-OstreeRepo.html#OstreeRepoTransactionStats"/>
<keyword type="enum" name="enum OstreeRepoResolveRevExtFlags" link="ostree-OstreeRepo.html#OstreeRepoResolveRevExtFlags"/>
<keyword type="enum" name="enum OstreeRepoListRefsExtFlags" link="ostree-OstreeRepo.html#OstreeRepoListRefsExtFlags"/>
<keyword type="enum" name="enum OstreeRepoCommitState" link="ostree-OstreeRepo.html#OstreeRepoCommitState"/>
<keyword type="enum" name="enum OstreeRepoCommitState" link="ostree-OstreeRepo.html#OstreeRepoCommitState" since="2015.7"/>
<keyword type="enum" name="enum OstreeRepoCommitFilterResult" link="ostree-OstreeRepo.html#OstreeRepoCommitFilterResult"/>
<keyword type="typedef" name="OstreeRepoCommitModifier" link="ostree-OstreeRepo.html#OstreeRepoCommitModifier"/>
<keyword type="enum" name="enum OstreeRepoCommitModifierFlags" link="ostree-OstreeRepo.html#OstreeRepoCommitModifierFlags"/>
@ -404,6 +404,7 @@
<keyword type="constant" name="OSTREE_REPO_LIST_REFS_EXT_NONE" link="ostree-OstreeRepo.html#OSTREE-REPO-LIST-REFS-EXT-NONE:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_LIST_REFS_EXT_ALIASES" link="ostree-OstreeRepo.html#OSTREE-REPO-LIST-REFS-EXT-ALIASES:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_LIST_REFS_EXT_EXCLUDE_REMOTES" link="ostree-OstreeRepo.html#OSTREE-REPO-LIST-REFS-EXT-EXCLUDE-REMOTES:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_COMMIT_STATE_NORMAL" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-STATE-NORMAL:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_COMMIT_STATE_PARTIAL" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-STATE-PARTIAL:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_COMMIT_FILTER_ALLOW" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-FILTER-ALLOW:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_COMMIT_FILTER_SKIP" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-FILTER-SKIP:CAPS"/>
@ -413,6 +414,7 @@
<keyword type="constant" name="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-MODIFIER-FLAGS-CANONICAL-PERMISSIONS:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_ERROR_ON_UNLABELED" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-MODIFIER-FLAGS-ERROR-ON-UNLABELED:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-MODIFIER-FLAGS-CONSUME:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL" link="ostree-OstreeRepo.html#OSTREE-REPO-COMMIT-MODIFIER-FLAGS-DEVINO-CANONICAL:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_CHECKOUT_MODE_NONE" link="ostree-OstreeRepo.html#OSTREE-REPO-CHECKOUT-MODE-NONE:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_CHECKOUT_MODE_USER" link="ostree-OstreeRepo.html#OSTREE-REPO-CHECKOUT-MODE-USER:CAPS"/>
<keyword type="constant" name="OSTREE_REPO_CHECKOUT_OVERWRITE_NONE" link="ostree-OstreeRepo.html#OSTREE-REPO-CHECKOUT-OVERWRITE-NONE:CAPS"/>

View File

@ -8,7 +8,7 @@
<link rel="up" href="index.html" title="OSTree API references">
<link rel="prev" href="index.html" title="OSTree API references">
<link rel="next" href="ostree-Core-repository-independent-functions.html" title="Core repository-independent functions">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<meta name="generator" content="GTK-Doc V1.26 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -1572,6 +1572,6 @@ OSTREE_YEAR_VERSION, macro in ostree-version
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
<hr>Generated by GTK-Doc V1.26</div>
</body>
</html>

View File

@ -19,6 +19,9 @@ OstreeRemote
ostree_remote_ref
ostree_remote_unref
ostree_remote_get_name
ostree_remote_get_url
<SUBSECTION Standard>
ostree_remote_get_type
</SECTION>
<SECTION>

View File

@ -1 +1 @@
2017.13
2017.14

View File

@ -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 <tromey@cygnus.com>.
#
# 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:

View File

@ -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
@ -1311,6 +1315,13 @@ EOF
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 <<EOF
$0: unable to guess system type
This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite
config.guess and config.sub with the latest versions from:
operating system you are using. If your script is old, overwrite *all*
copies of config.guess and config.sub with the latest versions from:
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and

27
build-aux/config.sub vendored
View File

@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright 1992-2016 Free Software Foundation, Inc.
# Copyright 1992-2017 Free Software Foundation, Inc.
timestamp='2016-09-05'
timestamp='2017-04-02'
# 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
@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
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
;;

View File

@ -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:

View File

@ -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:

View File

@ -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 <pinard@iro.umontreal.ca>, 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:

View File

@ -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:

View File

@ -1,6 +1,9 @@
AC_DEFUN([LIBGLNX_CONFIGURE],
[
AC_CHECK_DECLS([renameat2, memfd_create],
AC_CHECK_DECLS([
renameat2,
memfd_create,
copy_file_range],
[], [], [[
#include <sys/types.h>
#include <unistd.h>

View File

@ -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 <dlfcn.h> 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 <string.h> 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 <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> 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 <unistd.h> 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 <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME
/* Define if using internal ostree-grub-generator */
#undef USE_BUILTIN_GRUB2_MKCONFIG

217
configure vendored
View File

@ -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 <walters@verbum.org>.
#
@ -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 :
@ -5893,6 +5950,7 @@ else
-Werror=overflow \
-Werror=int-conversion \
-Werror=parenthesis \
-Werror=undef \
-Werror=incompatible-pointer-types \
-Werror=misleading-indentation \
-Werror=missing-include-dirs -Werror=aggregate-return \
@ -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 <sys/types.h>
#include <unistd.h>
#include <sys/mount.h>
#include <fcntl.h>
#include <sched.h>
#include <linux/loop.h>
#include <linux/random.h>
"
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 <sys/types.h>
#include <time.h>
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 <sys/types.h>
#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 <time.h>
"
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 <time.h>
#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 <stdlib.h>
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\\"

View File

@ -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
@ -44,6 +44,7 @@ CC_CHECK_FLAGS_APPEND([WARN_CFLAGS], [CFLAGS], [\
-Werror=overflow \
-Werror=int-conversion \
-Werror=parenthesis \
-Werror=undef \
-Werror=incompatible-pointer-types \
-Werror=misleading-indentation \
-Werror=missing-include-dirs -Werror=aggregate-return \
@ -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],

View File

@ -81,8 +81,8 @@ $(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:
@ -99,15 +99,14 @@ setup-build.stamp:
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)
@ -138,8 +137,8 @@ $(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
@ -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)

View File

@ -30,6 +30,7 @@
Add abstraction model for BPF programs
*/
#include "config.h"
#if !HAVE_DECL_RENAMEAT2
# ifndef __NR_renameat2

View File

@ -1,6 +1,9 @@
AC_DEFUN([LIBGLNX_CONFIGURE],
[
AC_CHECK_DECLS([renameat2, memfd_create],
AC_CHECK_DECLS([
renameat2,
memfd_create,
copy_file_range],
[], [], [[
#include <sys/types.h>
#include <unistd.h>

View File

@ -61,7 +61,12 @@ read_config()
populate_menu()
{
# 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"

View File

@ -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

View File

@ -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;

View File

@ -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.
*/

View File

@ -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);
}

View File

@ -18,9 +18,7 @@
* Boston, MA 02111-1307, USA.
*/
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include "config.h"
#include <string.h>
#include "ostree-enumtypes.h"

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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

View File

@ -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,
_ostree_repo_bare_content_open (OstreeRepo *self,
const char *expected_checksum,
guint64 content_len,
GLnxTmpfile *out_tmpf,
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,
_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)
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,57 +1505,41 @@ 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.
*/
if (g_str_has_prefix (dent->d_name, self->stagedir_prefix))
continue;
else if (g_str_has_prefix (dent->d_name, OSTREE_REPO_TMPDIR_STAGING))
{
/* 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...
/* 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.
*/
/* Ignore files from the future */
if (stbuf.st_mtime > curtime_secs)
continue;
/* Now, we're pruning content based on the expiry, which
/* 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;
guint64 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,25 +2793,57 @@ 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 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);
/* See if we have a devino hit; this is used below in a few places. */
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 && 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;
@ -2721,22 +2851,13 @@ write_directory_content_to_mtree_internal (OstreeRepo *self,
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);
/* 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);
if (filter_result != OSTREE_REPO_COMMIT_FILTER_ALLOW)
{
g_ptr_array_remove_index (path, path->len - 1);

View File

@ -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 collectionref pairs
* to checksums provided by this result
* @ref_to_checksum: (element-type OstreeCollectionRef utf8) (transfer none):
* map of collectionref 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
*

View File

@ -365,22 +365,39 @@ _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,
_ostree_repo_bare_content_open (OstreeRepo *self,
const char *checksum,
guint64 content_len,
GLnxTmpfile *out_tmpf,
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,
_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);

View File

@ -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));
}
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,19 +3135,18 @@ 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)
{
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;
@ -3102,6 +3154,27 @@ initiate_request (OtPullData *pull_data,
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 if (ref != NULL)
{
/* Are we doing a delta via a ref? In that case we can fall back to the older

View File

@ -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 collectionref to checksum
* @out_all_refs: (out) (element-type OstreeCollectionRef utf8) (transfer container):
* Mapping from collectionref 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 collectionref to checksum
* @out_all_refs: (out) (element-type OstreeCollectionRef utf8) (transfer container):
* Mapping from collectionref to checksum
* @flags: Options controlling listing behavior
* @cancellable: Cancellable
* @error: Error

View File

@ -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.
@ -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)
{
if (!sizename_is_delta_candidate (from_sizenames))
continue;
}
if (from_sizenames->size < min_threshold)
{

View File

@ -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,7 +458,8 @@ dispatch_bspatch (OstreeRepo *repo,
&stream) < 0)
return FALSE;
if (!content_out_write (repo, state, buf, state->content_size,
if (!_ostree_repo_bare_content_write (repo, &state->content_out,
buf, state->content_size,
cancellable, error))
return FALSE;
}
@ -493,25 +467,6 @@ dispatch_bspatch (OstreeRepo *repo,
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,17 +544,15 @@ 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,
if (!_ostree_repo_bare_content_write (repo, &state->content_out,
state->payload_data + content_offset,
state->content_size,
cancellable, error))
@ -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,7 +691,8 @@ 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,
if (!_ostree_repo_bare_content_write (repo, &state->content_out,
(guint8*)buf, bytes_read,
cancellable, error))
return FALSE;
@ -753,7 +705,8 @@ 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,
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 (!g_output_stream_flush (state->content_out, cancellable, error))
return FALSE;
if (state->content_checksum.initialized)
if (state->content_out.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,
if (!_ostree_repo_bare_content_commit (repo, &state->content_out, actual_checksum,
sizeof (actual_checksum),
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;

View File

@ -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;
}

View File

@ -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
{
/* 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)
{
/* 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;
}

View File

@ -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;
/**

View File

@ -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

View File

@ -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

View File

@ -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))

View File

@ -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;
}

View File

@ -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)

View File

@ -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;
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;
}

View File

@ -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;
return FALSE;
ret = TRUE;
out:
return ret;
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,22 +250,21 @@ 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;
}
}
@ -293,7 +278,7 @@ 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
@ -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

View File

@ -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;

View File

@ -103,6 +103,7 @@
#include <stdlib.h>
#include <sys/time.h>
#include <glib.h>
#include <stdint.h>
/* 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
/* 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 */

View File

@ -38,6 +38,7 @@
#include <stdlib.h>
#include <sys/time.h>
#include <glib.h>
#include <stdint.h>
/* 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
/* 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 */

View File

@ -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,

View File

@ -61,7 +61,12 @@ read_config()
populate_menu()
{
# 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"

View File

@ -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}

View File

@ -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"

View File

@ -60,7 +60,7 @@ cat > ${test_tmpdir}/ostree-srv/mirrorlist <<EOF
# comment with empty lines around
http://example.com/nonexistent
$(cat ${test_tmpdir}/content_mirror1-address)/ostree/non-existent-repo
$(cat ${test_tmpdir}/content_mirror1-address)/ostree/gnomerepo
$(cat ${test_tmpdir}/content_mirror2-address)/ostree/gnomerepo

View File

@ -284,11 +284,13 @@ test_repo_finder_config_mixed_configs (Fixture *fixture,
g_assert_cmpuint (g_hash_table_size (result->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
{

View File

@ -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': <uint64"

View File

@ -52,7 +52,7 @@ echo 'ok documented symbols'
# ONLY update this checksum in release commits!
cat > released-sha256.txt <<EOF
f8c387ff263f46ac5b8f56c05d37385fb0001a0494998925fd5e992399360386 ${released_syms}
1e2c6b529bc2d940ff8969eaf0377d78d472d41ec2a2fc96e1c79efd7b95d241 ${released_syms}
EOF
sha256sum -c released-sha256.txt