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 = $(NULL)
ENUM_TYPES += $(srcdir)/src/libostree/ostree-fetcher.h 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) src/libostree/ostree-enumtypes.h: src/libostree/ostree-enumtypes.h.template $(ENUM_TYPES)
$(AM_V_GEN) $(GLIB_MKENUMS) \ $(AM_V_GEN) $(GLIB_MKENUMS) \
--template $< \ --template $< \
$(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ $(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) \ $(AM_V_GEN) $(GLIB_MKENUMS) \
--template $< \ --template $< \
$(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ $(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_EXPORT_PACKAGES = ostree-1
OSTree_1_0_gir_INCLUDES = Gio-2.0 OSTree_1_0_gir_INCLUDES = Gio-2.0
OSTree_1_0_gir_CFLAGS = $(libostree_1_la_CFLAGS) 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_LIBS = libostree-1.la
OSTree_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=Ostree --symbol-prefix=ostree $(GI_SCANNERFLAGS) 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)) 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}} \ LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && pwd)$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}} \
PATH=$$(cd $(top_builddir)/tests && pwd):$${PATH} \ PATH=$$(cd $(top_builddir)/tests && pwd):$${PATH} \
OSTREE_FEATURES="$(OSTREE_FEATURES)" \ OSTREE_FEATURES="$(OSTREE_FEATURES)" \
PYTHONUNBUFFERED=1 \
$(NULL) $(NULL)
if BUILDOPT_ASAN if BUILDOPT_ASAN
AM_TESTS_ENVIRONMENT += OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc AM_TESTS_ENVIRONMENT += OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc
endif endif
uninstalled_test_data = tests/ostree-symlink-stamp tests/ostree-prepare-root-symlink-stamp \ 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 dist_uninstalled_test_scripts = tests/test-symbols.sh tests/coccinelle.sh
@ -143,6 +144,7 @@ endif
if BUILDOPT_FUSE if BUILDOPT_FUSE
_installed_or_uninstalled_test_scripts += tests/test-rofiles-fuse.sh _installed_or_uninstalled_test_scripts += tests/test-rofiles-fuse.sh
uninstalled_test_data += tests/rofiles-fuse-symlink-stamp
else else
EXTRA_DIST += tests/test-rofiles-fuse.sh EXTRA_DIST += tests/test-rofiles-fuse.sh
endif endif

View File

@ -29,8 +29,8 @@ AM_CPPFLAGS += -DDATADIR='"$(datadir)"' -DLIBEXECDIR='"$(libexecdir)"' \
-DOSTREE_COMPILATION \ -DOSTREE_COMPILATION \
-DG_LOG_DOMAIN=\"OSTree\" \ -DG_LOG_DOMAIN=\"OSTree\" \
-DOSTREE_GITREV='"$(OSTREE_GITREV)"' \ -DOSTREE_GITREV='"$(OSTREE_GITREV)"' \
-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_50 \ -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=SOUP_VERSION_2_48 -DSOUP_VERSION_MIN_REQUIRED=SOUP_VERSION_2_40 '-DSOUP_VERSION_MAX_ALLOWED=G_ENCODE_VERSION(2,48)'
AM_CFLAGS += -std=gnu99 $(WARN_CFLAGS) AM_CFLAGS += -std=gnu99 $(WARN_CFLAGS)
AM_DISTCHECK_CONFIGURE_FLAGS += \ AM_DISTCHECK_CONFIGURE_FLAGS += \
--enable-gtk-doc \ --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@ # @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 # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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_LIBMOUNT_TRUE@am__append_40 = $(OT_DEP_LIBMOUNT_LIBS)
@USE_SELINUX_TRUE@am__append_41 = $(OT_DEP_SELINUX_CFLAGS) @USE_SELINUX_TRUE@am__append_41 = $(OT_DEP_SELINUX_CFLAGS)
@USE_SELINUX_TRUE@am__append_42 = $(OT_DEP_SELINUX_LIBS) @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_44 = OSTree-1.0.gir
@BUILDOPT_INTROSPECTION_TRUE@am__append_45 = OSTree-1.0.typelib @BUILDOPT_INTROSPECTION_TRUE@am__append_45 = OSTree-1.0.gir
@BUILDOPT_INTROSPECTION_TRUE@am__append_46 = $(gir_DATA) $(typelib_DATA) @BUILDOPT_INTROSPECTION_TRUE@am__append_46 = OSTree-1.0.typelib
@ENABLE_EXPERIMENTAL_API_TRUE@am__append_47 = \ @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-create-usb.c \
@ENABLE_EXPERIMENTAL_API_TRUE@ src/ostree/ot-builtin-find-remotes.c \ @ENABLE_EXPERIMENTAL_API_TRUE@ src/ostree/ot-builtin-find-remotes.c \
@ENABLE_EXPERIMENTAL_API_TRUE@ $(NULL) @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-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-builtin-list-cookies.c \
@USE_CURL_OR_SOUP_TRUE@ src/ostree/ot-remote-cookie-util.h \ @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 @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 # 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 = src/ostree/ot-builtin-trivial-httpd.c
@USE_LIBSOUP_TRUE@am__append_50 = ostree-trivial-httpd @USE_LIBSOUP_TRUE@am__append_51 = ostree-trivial-httpd
# This is necessary for the cookie jar bits # 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_CFLAGS)
@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_52 = $(OT_INTERNAL_SOUP_LIBS) @USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_53 = $(OT_INTERNAL_SOUP_LIBS)
@USE_LIBARCHIVE_TRUE@am__append_53 = $(OT_DEP_LIBARCHIVE_CFLAGS) @USE_LIBARCHIVE_TRUE@am__append_54 = $(OT_DEP_LIBARCHIVE_CFLAGS)
@USE_LIBARCHIVE_TRUE@am__append_54 = $(OT_DEP_LIBARCHIVE_LIBS) @USE_LIBARCHIVE_TRUE@am__append_55 = $(OT_DEP_LIBARCHIVE_LIBS)
@BUILDOPT_SYSTEMD_TRUE@am__append_55 = ostree-remount @BUILDOPT_SYSTEMD_TRUE@am__append_56 = ostree-remount
# It is built anyway as a side-effect of having the symlink in tests/, # 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 # and if we declare it here, it gets cleaned up properly
@BUILDOPT_SYSTEMD_FALSE@am__append_56 = ostree-remount @BUILDOPT_SYSTEMD_FALSE@am__append_57 = ostree-remount
@BUILDOPT_USE_STATIC_COMPILER_FALSE@am__append_57 = ostree-prepare-root @BUILDOPT_USE_STATIC_COMPILER_FALSE@am__append_58 = ostree-prepare-root
# This is the "new mode" of using a generator for /var; see # This is the "new mode" of using a generator for /var; see
# https://github.com/ostreedev/ostree/issues/855 # 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_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@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 # Allow the distcheck install under $prefix test to pass
@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_61 = --with-systemdsystemgeneratordir='$${libdir}/systemd/system-generators' @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_62 = --with-systemdsystemgeneratordir='$${libdir}/systemd/system-generators'
@BUILDOPT_FUSE_TRUE@am__append_62 = rofiles-fuse @BUILDOPT_FUSE_TRUE@am__append_63 = rofiles-fuse
@BUILDOPT_ASAN_TRUE@am__append_63 = OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc @BUILDOPT_ASAN_TRUE@am__append_64 = 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 = $(experimental_test_scripts)
@ENABLE_EXPERIMENTAL_API_TRUE@am__append_65 = tests/repo-finder-mount @ENABLE_EXPERIMENTAL_API_TRUE@am__append_66 = tests/repo-finder-mount
@ENABLE_EXPERIMENTAL_API_FALSE@am__append_66 = $(experimental_test_scripts) @ENABLE_EXPERIMENTAL_API_FALSE@am__append_67 = $(experimental_test_scripts)
@BUILDOPT_FUSE_TRUE@am__append_67 = tests/test-rofiles-fuse.sh @BUILDOPT_FUSE_TRUE@am__append_68 = tests/test-rofiles-fuse.sh
@BUILDOPT_FUSE_FALSE@am__append_68 = tests/test-rofiles-fuse.sh @BUILDOPT_FUSE_TRUE@am__append_69 = tests/rofiles-fuse-symlink-stamp
@USE_LIBSOUP_TRUE@am__append_69 = tests/test-remote-cookies.sh @BUILDOPT_FUSE_FALSE@am__append_70 = tests/test-rofiles-fuse.sh
@BUILDOPT_GJS_TRUE@am__append_70 = $(js_tests) $(js_installed_tests) @USE_LIBSOUP_TRUE@am__append_71 = tests/test-remote-cookies.sh
@BUILDOPT_GJS_FALSE@am__append_71 = $(js_tests) @BUILDOPT_GJS_TRUE@am__append_72 = $(js_tests) $(js_installed_tests)
@BUILDOPT_GJS_FALSE@am__append_72 = $(js_installed_tests) @BUILDOPT_GJS_FALSE@am__append_73 = $(js_tests)
@ENABLE_INSTALLED_TESTS_FALSE@am__append_73 = -rpath $(abs_builddir) @BUILDOPT_GJS_FALSE@am__append_74 = $(js_installed_tests)
@ENABLE_EXPERIMENTAL_API_TRUE@am__append_74 = \ @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-bloom \
@ENABLE_EXPERIMENTAL_API_TRUE@ tests/test-repo-finder-config \ @ENABLE_EXPERIMENTAL_API_TRUE@ tests/test-repo-finder-config \
@ENABLE_EXPERIMENTAL_API_TRUE@ tests/test-repo-finder-mount \ @ENABLE_EXPERIMENTAL_API_TRUE@ tests/test-repo-finder-mount \
@ENABLE_EXPERIMENTAL_API_TRUE@ $(NULL) @ENABLE_EXPERIMENTAL_API_TRUE@ $(NULL)
@ENABLE_EXPERIMENTAL_API_TRUE@@USE_AVAHI_TRUE@am__append_75 = tests/test-repo-finder-avahi @ENABLE_EXPERIMENTAL_API_TRUE@@USE_AVAHI_TRUE@am__append_77 = tests/test-repo-finder-avahi
@USE_LIBARCHIVE_TRUE@am__append_76 = tests/test-libarchive-import @USE_LIBARCHIVE_TRUE@am__append_78 = tests/test-libarchive-import
@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_77 = $(_installed_or_uninstalled_test_scripts) @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_79 = $(_installed_or_uninstalled_test_scripts)
@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_78 = $(_installed_or_uninstalled_test_programs) @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_80 = $(_installed_or_uninstalled_test_programs)
@ENABLE_INSTALLED_TESTS_TRUE@am__append_79 = install-installed-tests-extra @ENABLE_INSTALLED_TESTS_TRUE@am__append_81 = install-installed-tests-extra
# Allow the distcheck install under $prefix test to pass # 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 # 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_83 = src/boot/grub2/grub2-15_ostree
@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_82 = install-grub2-config-hook @BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_84 = install-grub2-config-hook
@BUILDOPT_TRIVIAL_HTTPD_TRUE@@ENABLE_MAN_TRUE@am__append_83 = ostree-trivial-httpd.1 @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 # 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_TRIVIAL_HTTPD_FALSE@@ENABLE_MAN_TRUE@am__append_86 = man/ostree-trivial-httpd.xml
@BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_85 = rofiles-fuse.1 @BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_87 = rofiles-fuse.1
@ENABLE_MAN_TRUE@am__append_86 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml) @ENABLE_MAN_TRUE@am__append_88 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml)
@ENABLE_MAN_TRUE@am__append_87 = \ @ENABLE_MAN_TRUE@am__append_89 = \
@ENABLE_MAN_TRUE@ $(man1_MANS) \ @ENABLE_MAN_TRUE@ $(man1_MANS) \
@ENABLE_MAN_TRUE@ $(man5_MANS) \ @ENABLE_MAN_TRUE@ $(man5_MANS) \
@ENABLE_MAN_TRUE@ $(NULL) @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-switchroot.sh tests/test-pull-contenturl.sh \
tests/test-pull-mirrorlist.sh tests/test-summary-update.sh \ tests/test-pull-mirrorlist.sh tests/test-summary-update.sh \
tests/test-summary-view.sh $(am__EXEEXT_2) $(am__EXEEXT_22) \ 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_26 = \
@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@ $(am__EXEEXT_25) @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@ $(am__EXEEXT_25)
am__EXEEXT_27 = $(am__EXEEXT_2) $(am__EXEEXT_26) 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 \ -DOSTREE_FEATURES='"$(OSTREE_FEATURES)"' -DOSTREE_COMPILATION \
-DG_LOG_DOMAIN=\"OSTree\" -DOSTREE_GITREV='"$(OSTREE_GITREV)"' \ -DG_LOG_DOMAIN=\"OSTree\" -DOSTREE_GITREV='"$(OSTREE_GITREV)"' \
-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 \ -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_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) AM_CFLAGS = -std=gnu99 $(WARN_CFLAGS)
# Allow the distcheck install under $prefix test to pass # Allow the distcheck install under $prefix test to pass
AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man \ AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man \
--disable-maintainer-mode $(NULL) $(am__append_61) \ --disable-maintainer-mode $(NULL) $(am__append_62) \
$(am__append_80) \ $(am__append_82) \
BASH_COMPLETIONSDIR='$${datadir}/bash-completion/completions' BASH_COMPLETIONSDIR='$${datadir}/bash-completion/completions'
SUBDIRS = . $(am__append_14) SUBDIRS = . $(am__append_14)
NULL = NULL =
BUILT_SOURCES = $(nodist_libostree_1_la_SOURCES) BUILT_SOURCES = $(nodist_libostree_1_la_SOURCES)
MANPAGES = 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 \ src/ostree/parse-datetime.c tests/libreaddir-rand.so \
tests/ostree-symlink-stamp \ tests/ostree-symlink-stamp \
tests/ostree-prepare-root-symlink-stamp \ tests/ostree-prepare-root-symlink-stamp \
tests/ostree-remount-symlink-stamp \ tests/ostree-remount-symlink-stamp \
tests/rofiles-fuse-symlink-stamp tests/ostree \ tests/rofiles-fuse-symlink-stamp tests/ostree \
tests/ostree-prepare-root tests/ostree-remount \ 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 \ EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) autogen.sh \
COPYING README.md $(am__append_15) libglnx/README.md \ COPYING README.md $(am__append_15) libglnx/README.md \
libglnx/COPYING libglnx/libglnx.m4 $(NULL) \ 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-repo-deprecated.h \
src/libostree/ostree-version.h src/ostree/parse-datetime.y \ src/libostree/ostree-version.h src/ostree/parse-datetime.y \
buildutil/tap-driver.sh buildutil/tap-test tests/glib.supp \ buildutil/tap-driver.sh buildutil/tap-test tests/glib.supp \
tests/ostree.supp $(NULL) $(am__append_66) $(am__append_68) \ tests/ostree.supp $(NULL) $(am__append_67) $(am__append_70) \
$(am__append_71) tests/libtest.sh $(am__append_72) \ $(am__append_73) tests/libtest.sh $(am__append_74) \
tests/libostreetest.h tests/libtest.sh \ tests/libostreetest.h tests/libtest.sh \
tests/gpg-verify-data/README.md $(NULL) \ tests/gpg-verify-data/README.md $(NULL) \
src/boot/dracut/module-setup.sh src/boot/dracut/ostree.conf \ src/boot/dracut/module-setup.sh src/boot/dracut/ostree.conf \
src/boot/mkinitcpio/ostree \ src/boot/mkinitcpio/ostree \
src/boot/ostree-prepare-root.service \ src/boot/ostree-prepare-root.service \
src/boot/ostree-remount.service src/boot/grub2/grub2-15_ostree \ src/boot/ostree-remount.service src/boot/grub2/grub2-15_ostree \
src/boot/grub2/ostree-grub-generator $(NULL) $(am__append_84) \ src/boot/grub2/ostree-grub-generator $(NULL) $(am__append_86) \
$(am__append_86) $(am__append_88)
bin_SCRIPTS = bin_SCRIPTS =
lib_LTLIBRARIES = libostree-1.la lib_LTLIBRARIES = libostree-1.la
pkglibexec_SCRIPTS = $(am__append_81) pkglibexec_SCRIPTS = $(am__append_83)
noinst_LTLIBRARIES = $(am__append_1) libglnx.la libbsdiff.la \ noinst_LTLIBRARIES = $(am__append_1) libglnx.la libbsdiff.la \
libotutil.la libostree-kernel-args.la $(am__append_18) \ libotutil.la libostree-kernel-args.la $(am__append_18) \
libostreetest.la libostreetest.la
@ -2075,11 +2078,11 @@ privlibdir = $(pkglibdir)
privlib_LTLIBRARIES = privlib_LTLIBRARIES =
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = src/libostree/ostree-1.pc pkgconfig_DATA = src/libostree/ostree-1.pc
INTROSPECTION_GIRS = $(am__append_43) INTROSPECTION_GIRS = $(am__append_44)
girdir = $(datadir)/gir-1.0 girdir = $(datadir)/gir-1.0
gir_DATA = $(am__append_44) gir_DATA = $(am__append_45)
typelibdir = $(libdir)/girepository-1.0 typelibdir = $(libdir)/girepository-1.0
typelib_DATA = $(am__append_45) typelib_DATA = $(am__append_46)
gsettings_SCHEMAS = gsettings_SCHEMAS =
ostree_bootdir = $(prefix)/lib/ostree ostree_bootdir = $(prefix)/lib/ostree
@ -2097,7 +2100,8 @@ AM_TESTS_ENVIRONMENT = G_TEST_SRCDIR="$(abs_srcdir)" \
LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && \ LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && \
pwd)$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}} PATH=$$(cd \ pwd)$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}} PATH=$$(cd \
$(top_builddir)/tests && pwd):$${PATH} \ $(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_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/buildutil/tap-driver.sh
LOG_COMPILER = $(top_srcdir)/buildutil/tap-test LOG_COMPILER = $(top_srcdir)/buildutil/tap-test
installed_test_LTLIBRARIES = $(am__append_12) 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 initializes some more variables
# This is a special facility to chain together hooks easily # This is a special facility to chain together hooks easily
INSTALL_DATA_HOOKS = install-mkdir-remotes-d-hook $(am__append_79) \ INSTALL_DATA_HOOKS = install-mkdir-remotes-d-hook $(am__append_81) \
$(am__append_82) $(am__append_84)
ALL_LOCAL_RULES = tests/libreaddir-rand.so ALL_LOCAL_RULES = tests/libreaddir-rand.so
shortened_sysconfdir = $$(echo "$(sysconfdir)" | sed -e 's|^$(prefix)||' -e 's|^/||') 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) 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} ACLOCAL_AMFLAGS = -I buildutil -I libglnx ${ACLOCAL_FLAGS}
GITIGNOREFILES = aclocal.m4 build-aux/ buildutil/*.m4 config.h.in \ 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_CFLAGS = $(OT_DEP_GIO_UNIX_CFLAGS)
OT_INTERNAL_GIO_UNIX_LIBS = $(OT_DEP_GIO_UNIX_LIBS) OT_INTERNAL_GIO_UNIX_LIBS = $(OT_DEP_GIO_UNIX_LIBS)
OT_INTERNAL_SOUP_CFLAGS = $(OT_DEP_SOUP_CFLAGS) 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) 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_EXPORT_PACKAGES = ostree-1
@BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_INCLUDES = Gio-2.0 @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_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_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)) @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-main.c src/ostree/ot-dump.h src/ostree/ot-dump.c \
src/ostree/ot-editor.c src/ostree/ot-editor.h \ src/ostree/ot-editor.c src/ostree/ot-editor.h \
src/ostree/parse-datetime.h src/ostree/parse-datetime.c \ 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-diff.c \
src/ostree/ot-admin-builtin-deploy.c \ src/ostree/ot-admin-builtin-deploy.c \
src/ostree/ot-admin-builtin-undeploy.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-show-url.c \
src/ostree/ot-remote-builtin-refs.c \ src/ostree/ot-remote-builtin-refs.c \
src/ostree/ot-remote-builtin-summary.c $(NULL) \ 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 \ 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) \ -I$(builddir)/src/libostree -I$(srcdir)/src/ostree -I$(srcdir)/libglnx $(OT_INTERNAL_GIO_UNIX_CFLAGS) \
-DPKGLIBEXECDIR=\"$(pkglibexecdir)\" -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 \ ostree_bin_shared_ldadd = $(AM_LDFLAGS) libglnx.la libotutil.la libostree-1.la \
$(OT_INTERNAL_GIO_UNIX_LIBS) $(OT_INTERNAL_GIO_UNIX_LIBS)
ostree_CFLAGS = $(ostree_bin_shared_cflags) $(am__append_51) \ ostree_CFLAGS = $(ostree_bin_shared_cflags) $(am__append_52) \
$(am__append_53)
ostree_LDADD = $(ostree_bin_shared_ldadd) libbsdiff.la \
libostree-kernel-args.la $(LIBSYSTEMD_LIBS) $(am__append_52) \
$(am__append_54) $(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_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_CFLAGS = $(ostree_bin_shared_cflags) $(OT_INTERNAL_SOUP_CFLAGS)
@USE_LIBSOUP_TRUE@ostree_trivial_httpd_LDADD = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_SOUP_LIBS) @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 \ src/switchroot/ostree-prepare-root.c \
$(NULL) $(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 # We're using our internal generator
@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_TRUE@ostree_boot_SCRIPTS = src/boot/grub2/ostree-grub-generator @BUILDOPT_BUILTIN_GRUB2_MKCONFIG_TRUE@ostree_boot_SCRIPTS = src/boot/grub2/ostree-grub-generator
@ -2483,7 +2489,7 @@ ostree_remount_SOURCES = \
$(NULL) $(NULL)
ostree_remount_CPPFLAGS = $(AM_CPPFLAGS) -Isrc/switchroot \ 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@ostree_system_generator_SOURCES = src/switchroot/ostree-mount-util.h \
@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@ src/switchroot/ostree-system-generator.c @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_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_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) @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 \ uninstalled_test_data = tests/ostree-symlink-stamp \
tests/ostree-remount-symlink-stamp tests/rofiles-fuse-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 dist_uninstalled_test_scripts = tests/test-symbols.sh tests/coccinelle.sh
# This logic implements ENABLE_INSTALLED_TESTS_EXCLUSIVE; see below. # 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. # 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 # This overrides the glib-tap.mk emphasis on doing both, if we'd
# used e.g. `dist_test_scripts`. # used e.g. `dist_test_scripts`.
dist_test_scripts = $(NULL) $(am__append_77) dist_test_scripts = $(NULL) $(am__append_79)
test_programs = $(NULL) $(am__append_74) $(am__append_75) \ test_programs = $(NULL) $(am__append_76) $(am__append_77) \
$(am__append_78) $(am__append_80)
_installed_or_uninstalled_test_scripts = tests/test-basic.sh \ _installed_or_uninstalled_test_scripts = tests/test-basic.sh \
tests/test-basic-user.sh tests/test-basic-user-only.sh \ tests/test-basic-user.sh tests/test-basic-user-only.sh \
tests/test-basic-root.sh tests/test-pull-subpath.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-refs.sh tests/test-demo-buildsystem.sh \
tests/test-switchroot.sh tests/test-pull-contenturl.sh \ tests/test-switchroot.sh tests/test-pull-contenturl.sh \
tests/test-pull-mirrorlist.sh tests/test-summary-update.sh \ tests/test-pull-mirrorlist.sh tests/test-summary-update.sh \
tests/test-summary-view.sh $(NULL) $(am__append_64) \ tests/test-summary-view.sh $(NULL) $(am__append_65) \
$(am__append_67) $(am__append_69) $(am__append_70) $(am__append_68) $(am__append_71) $(am__append_72)
experimental_test_scripts = \ experimental_test_scripts = \
tests/test-create-usb.sh \ tests/test-create-usb.sh \
tests/test-find-remotes.sh \ tests/test-find-remotes.sh \
@ -2559,7 +2565,7 @@ experimental_test_scripts = \
tests/test-pull-collections.sh \ tests/test-pull-collections.sh \
$(NULL) $(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_SOURCES = tests/repo-finder-mount.c
tests_repo_finder_mount_CFLAGS = $(common_tests_cflags) tests_repo_finder_mount_CFLAGS = $(common_tests_cflags)
tests_repo_finder_mount_LDADD = $(common_tests_ldadd) libostreetest.la tests_repo_finder_mount_LDADD = $(common_tests_ldadd) libostreetest.la
@ -2617,7 +2623,7 @@ libreaddir_rand_la_LIBADD = \
$(NULL) $(NULL)
libreaddir_rand_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version \ libreaddir_rand_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version \
$(am__append_73) $(am__append_75)
_installed_or_uninstalled_test_programs = tests/test-varint \ _installed_or_uninstalled_test_programs = tests/test-varint \
tests/test-ot-unix-utils tests/test-bsdiff \ tests/test-ot-unix-utils tests/test-bsdiff \
tests/test-mutable-tree tests/test-keyfile-utils \ 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-gpg-verify-result tests/test-checksum \
tests/test-lzma tests/test-rollsum tests/test-basic-c \ tests/test-lzma tests/test-rollsum tests/test-basic-c \
tests/test-sysroot-c tests/test-pull-c tests/test-repo \ 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_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) 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 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-pull.1 ostree-refs.1 ostree-remote.1 \
@ENABLE_MAN_TRUE@ ostree-reset.1 ostree-rev-parse.1 \ @ENABLE_MAN_TRUE@ ostree-reset.1 ostree-rev-parse.1 \
@ENABLE_MAN_TRUE@ ostree-show.1 ostree-summary.1 \ @ENABLE_MAN_TRUE@ ostree-show.1 ostree-summary.1 \
@ENABLE_MAN_TRUE@ ostree-static-delta.1 $(am__append_83) \ @ENABLE_MAN_TRUE@ ostree-static-delta.1 $(am__append_85) \
@ENABLE_MAN_TRUE@ $(am__append_85) @ENABLE_MAN_TRUE@ $(am__append_87)
@ENABLE_MAN_TRUE@man5_files = ostree.repo.5 ostree.repo-config.5 @ENABLE_MAN_TRUE@man5_files = ostree.repo.5 ostree.repo-config.5
@ENABLE_MAN_TRUE@man1_MANS = $(addprefix man/,$(man1_files)) @ENABLE_MAN_TRUE@man1_MANS = $(addprefix man/,$(man1_files))
@ENABLE_MAN_TRUE@man5_MANS = $(addprefix man/,$(man5_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@$(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) @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) src/libostree/ostree-enumtypes.h: src/libostree/ostree-enumtypes.h.template $(ENUM_TYPES)
$(AM_V_GEN) $(GLIB_MKENUMS) \ $(AM_V_GEN) $(GLIB_MKENUMS) \
--template $< \ --template $< \
$(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ $(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) \ $(AM_V_GEN) $(GLIB_MKENUMS) \
--template $< \ --template $< \
$(ENUM_TYPES) > $@.tmp && mv $@.tmp $@ $(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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 # Configure paths for GLIB
# Owen Taylor 1997-2001 # 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 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 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 dnl gthread, or gio is specified in MODULES, pass to pkg-config
@ -115,7 +112,7 @@ dnl
#include <stdlib.h> #include <stdlib.h>
int int
main (void) main ()
{ {
unsigned int major, minor, micro; 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])]) [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
])dnl PKG_HAVE_DEFINE_WITH_MODULES ])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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -975,7 +972,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.15' [am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to 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. 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 [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. # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], 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_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1087,7 +1084,7 @@ fi[]dnl
# AM_CONDITIONAL -*- Autoconf -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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.]]) Usually this means the macro was only invoked conditionally.]])
fi])]) 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1582,7 +1579,7 @@ for _am_header in $config_headers :; do
done done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1603,7 +1600,7 @@ if test x"${install_sh+set}" != xset; then
fi fi
AC_SUBST([install_sh])]) 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1749,7 +1746,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1778,7 +1775,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION], AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) [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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1825,7 +1822,7 @@ AC_LANG_POP([C])])
# For backward compatibility. # For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1925,7 +1922,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -1985,7 +1982,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -2013,7 +2010,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])]) 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 -*- # 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 # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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@ # @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 # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # 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 @GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp
#### setup #### #### setup ####
GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_@AM_V@)
GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_@AM_DEFAULT_V@)
GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build";
#### scan #### #### scan ####
GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_@AM_V@)
GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_@AM_DEFAULT_V@)
GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; 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_V@)
GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@)
GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects";
#### xml #### #### xml ####
GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML = $(GTK_DOC_V_XML_@AM_V@)
GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_@AM_DEFAULT_V@)
GTK_DOC_V_XML_0 = @echo " DOC Building XML"; GTK_DOC_V_XML_0 = @echo " DOC Building XML";
#### html #### #### html ####
GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_@AM_V@)
GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_@AM_DEFAULT_V@)
GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; 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_V@)
GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_@AM_DEFAULT_V@)
GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references";
#### pdf #### #### pdf ####
GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_@AM_V@)
GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_@AM_DEFAULT_V@)
GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; GTK_DOC_V_PDF_0 = @echo " DOC Building PDF";
all: all-am 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) cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
-@test "x$(HTML_IMAGES)" = "x" || \ -@test "x$(HTML_IMAGES)" = "x" || \
for file in $(HTML_IMAGES) ; do \ for file in $(HTML_IMAGES) ; do \
if test -f $(abs_srcdir)/$$file ; then \ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \
fi; \
if test -f $(abs_builddir)/$$file ; then \
cp $(abs_builddir)/$$file $(abs_builddir)/html; \
fi; \
done; done;
$(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(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 $(AM_V_at)touch html-build.stamp

View File

@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"> <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="OSTree API references"> <link rel="home" href="index.html" title="OSTree API references">
<link rel="next" href="reference.html" title="API Reference"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -14,7 +14,7 @@
<div class="titlepage"> <div class="titlepage">
<div> <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><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> </div>
<hr> <hr>
</div> </div>
@ -68,6 +68,6 @@
</dl></div> </dl></div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

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

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-Simple-upgrade-class.html" title="Simple upgrade class"> <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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> <hr>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeGpgVerifyResult"></a><h3>OstreeGpgVerifyResult</h3> <a name="OstreeGpgVerifyResult"></a><h3>OstreeGpgVerifyResult</h3>
<pre class="programlisting">typedef struct OstreeGpgVerifyResult OstreeGpgVerifyResult;
</pre>
<p>Private instance structure.</p> <p>Private instance structure.</p>
</div> </div>
<hr> <hr>
@ -707,6 +705,6 @@ for future variations.</p>
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-OstreeRepo.html" title="OstreeRepo: Content-addressed object store"> <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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> <a name="ostree-In-memory-modifiable-filesystem-tree.other_details"></a><h2>Types and Values</h2>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeMutableTree"></a><h3>OstreeMutableTree</h3> <a name="OstreeMutableTree"></a><h3>OstreeMutableTree</h3>
<pre class="programlisting">typedef struct OstreeMutableTree OstreeMutableTree;
</pre>
<p>Private instance structure.</p> <p>Private instance structure.</p>
</div> </div>
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <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="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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> <tr>
<td class="parameter_name"><p>out_all_refs</p></td> <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_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>
<tr> <tr>
<td class="parameter_name"><p>cancellable</p></td> <td class="parameter_name"><p>cancellable</p></td>
@ -3914,7 +3914,7 @@ name.</p>
<tr> <tr>
<td class="parameter_name"><p>out_all_refs</p></td> <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_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>
<tr> <tr>
<td class="parameter_name"><p>flags</p></td> <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> <tr>
<td class="parameter_name"><p>out_all_refs</p></td> <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_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>
<tr> <tr>
<td class="parameter_name"><p>cancellable</p></td> <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> <a name="ostree-OstreeRepo.other_details"></a><h2>Types and Values</h2>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeRepo"></a><h3>OstreeRepo</h3> <a name="OstreeRepo"></a><h3>OstreeRepo</h3>
<pre class="programlisting">typedef struct OstreeRepo OstreeRepo;
</pre>
<p>Private instance structure.</p> <p>Private instance structure.</p>
</div> </div>
<hr> <hr>
@ -7639,6 +7637,8 @@ in bytes, counting only content objects.</p></td>
<hr> <hr>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeRepoCommitState"></a><h3>enum OstreeRepoCommitState</h3> <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"> <div class="refsect3">
<a name="OstreeRepoCommitState.members"></a><h4>Members</h4> <a name="OstreeRepoCommitState.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0"> <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 class="enum_members_description">
<col width="200px" class="enum_members_annotations"> <col width="200px" class="enum_members_annotations">
</colgroup> </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 class="enum_member_name"><p><a name="OSTREE-REPO-COMMIT-STATE-PARTIAL:CAPS"></a>OSTREE_REPO_COMMIT_STATE_PARTIAL</p></td>
<td> </td> <td class="enum_member_description">
<td> </td> <p>One or more objects are missing from the
</tr></tbody> local copy of the commit, but metadata is present. (Since: 2015.7.)</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div> </table></div>
</div> </div>
<p class="since">Since: 2015.7</p>
</div> </div>
<hr> <hr>
<div class="refsect2"> <div class="refsect2">
@ -7688,8 +7702,6 @@ in bytes, counting only content objects.</p></td>
<hr> <hr>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeRepoCommitModifier"></a><h3>OstreeRepoCommitModifier</h3> <a name="OstreeRepoCommitModifier"></a><h3>OstreeRepoCommitModifier</h3>
<pre class="programlisting">typedef struct OstreeRepoCommitModifier OstreeRepoCommitModifier;
</pre>
<p>A structure allowing control over commits.</p> <p>A structure allowing control over commits.</p>
</div> </div>
<hr> <hr>
@ -7746,6 +7758,13 @@ in bytes, counting only content objects.</p></td>
</td> </td>
<td class="enum_member_annotations"> </td> <td class="enum_member_annotations"> </td>
</tr> </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> </tbody>
</table></div> </table></div>
</div> </div>
@ -8092,6 +8111,6 @@ as - List of pack file checksums in which this object appears</p>
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <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="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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> <a name="ostree-Progress-notification-system-for-asynchronous-operations.other_details"></a><h2>Types and Values</h2>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeAsyncProgress"></a><h3>OstreeAsyncProgress</h3> <a name="OstreeAsyncProgress"></a><h3>OstreeAsyncProgress</h3>
<pre class="programlisting">typedef struct OstreeAsyncProgress OstreeAsyncProgress;
</pre>
</div> </div>
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <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="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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> <a name="ostree-Root-partition-mount-point.other_details"></a><h2>Types and Values</h2>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeSysroot"></a><h3>OstreeSysroot</h3> <a name="OstreeSysroot"></a><h3>OstreeSysroot</h3>
<pre class="programlisting">typedef struct OstreeSysroot OstreeSysroot;
</pre>
</div> </div>
<hr> <hr>
<div class="refsect2"> <div class="refsect2">
@ -1738,6 +1736,6 @@ later, instead.</p>
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <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="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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> <a name="ostree-SELinux-policy-management.other_details"></a><h2>Types and Values</h2>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeSePolicy"></a><h3>OstreeSePolicy</h3> <a name="OstreeSePolicy"></a><h3>OstreeSePolicy</h3>
<pre class="programlisting">typedef struct OstreeSePolicy OstreeSePolicy;
</pre>
</div> </div>
<hr> <hr>
<div class="refsect2"> <div class="refsect2">
@ -484,6 +482,6 @@ ostree_sepolicy_fscreatecon_cleanup (<em class="parameter"><code><span class="ty
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

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

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <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="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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-bootconfig-parser.html" title="ostree-bootconfig-parser"> <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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <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="prev" href="ostree-ostree-chain-input-stream.html" title="ostree-chain-input-stream">
<link rel="next" href="ostree-ostree-deployment.html" title="ostree-deployment"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

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

View File

@ -8,7 +8,7 @@
<link rel="up" href="reference.html" title="API Reference"> <link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-deployment.html" title="ostree-deployment"> <link rel="prev" href="ostree-ostree-deployment.html" title="ostree-deployment">
<link rel="next" href="ostree-ostree-repo-file.html" title="ostree-repo-file"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="OSTree API references"> <link rel="home" href="index.html" title="OSTree API references">
<link rel="up" href="reference.html" title="API Reference"> <link rel="up" href="reference.html" title="API Reference">
<link rel="prev" href="ostree-ostree-diff.html" title="ostree-diff"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> <a name="ostree-ostree-repo-file.other_details"></a><h2>Types and Values</h2>
<div class="refsect2"> <div class="refsect2">
<a name="OstreeRepoFile"></a><h3>OstreeRepoFile</h3> <a name="OstreeRepoFile"></a><h3>OstreeRepoFile</h3>
<pre class="programlisting">typedef struct OstreeRepoFile OstreeRepoFile;
</pre>
</div> </div>
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

@ -216,7 +216,7 @@
<keyword type="struct" name="struct OstreeRepoTransactionStats" link="ostree-OstreeRepo.html#OstreeRepoTransactionStats"/> <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 OstreeRepoResolveRevExtFlags" link="ostree-OstreeRepo.html#OstreeRepoResolveRevExtFlags"/>
<keyword type="enum" name="enum OstreeRepoListRefsExtFlags" link="ostree-OstreeRepo.html#OstreeRepoListRefsExtFlags"/> <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="enum" name="enum OstreeRepoCommitFilterResult" link="ostree-OstreeRepo.html#OstreeRepoCommitFilterResult"/>
<keyword type="typedef" name="OstreeRepoCommitModifier" link="ostree-OstreeRepo.html#OstreeRepoCommitModifier"/> <keyword type="typedef" name="OstreeRepoCommitModifier" link="ostree-OstreeRepo.html#OstreeRepoCommitModifier"/>
<keyword type="enum" name="enum OstreeRepoCommitModifierFlags" link="ostree-OstreeRepo.html#OstreeRepoCommitModifierFlags"/> <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_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_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_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_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_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"/> <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_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_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_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_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_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"/> <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="up" href="index.html" title="OSTree API references">
<link rel="prev" 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"> <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"> <link rel="stylesheet" href="style.css" type="text/css">
</head> </head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <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> </div>
<div class="footer"> <div class="footer">
<hr>Generated by GTK-Doc V1.25</div> <hr>Generated by GTK-Doc V1.26</div>
</body> </body>
</html> </html>

View File

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

View File

@ -1 +1 @@
2017.13 2017.14

View File

@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# Wrapper for compilers which do not understand '-c -o'. # 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>. # Written by Tom Tromey <tromey@cygnus.com>.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
@ -255,7 +255,8 @@ EOF
echo "compile $scriptversion" echo "compile $scriptversion"
exit $? 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... func_cl_wrapper "$@" # Doesn't return...
;; ;;
esac esac
@ -342,6 +343,6 @@ exit $ret
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
# End: # End:

View File

@ -1,8 +1,8 @@
#! /bin/sh #! /bin/sh
# Attempt to guess a canonical system name. # 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 # 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 # under the terms of the GNU General Public License as published by
@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp) GNU config.guess ($timestamp)
Originally written by Per Bothner. 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 This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 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:*:*) *:Sortix:*:*)
echo ${UNAME_MACHINE}-unknown-sortix echo ${UNAME_MACHINE}-unknown-sortix
exit ;; exit ;;
*:Redox:*:*)
echo ${UNAME_MACHINE}-unknown-redox
exit ;;
alpha:OSF1:*:*) alpha:OSF1:*:*)
case $UNAME_RELEASE in case $UNAME_RELEASE in
*4.0) *4.0)
@ -837,10 +840,11 @@ EOF
UNAME_PROCESSOR=`/usr/bin/uname -p` UNAME_PROCESSOR=`/usr/bin/uname -p`
case ${UNAME_PROCESSOR} in case ${UNAME_PROCESSOR} in
amd64) amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; UNAME_PROCESSOR=x86_64 ;;
*) i386)
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; UNAME_PROCESSOR=i586 ;;
esac esac
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;; exit ;;
i*:CYGWIN*:*) i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin echo ${UNAME_MACHINE}-pc-cygwin
@ -1311,6 +1315,13 @@ EOF
powerpc) UNAME_PROCESSOR=powerpc64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac esac
fi 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 fi
elif test "$UNAME_PROCESSOR" = i386 ; then elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub # Avoid executing cc on OS X 10.9, as it ships with a stub
@ -1334,15 +1345,18 @@ EOF
*:QNX:*:4*) *:QNX:*:4*)
echo i386-pc-qnx echo i386-pc-qnx
exit ;; exit ;;
NEO-?:NONSTOP_KERNEL:*:*) NEO-*:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE} echo neo-tandem-nsk${UNAME_RELEASE}
exit ;; exit ;;
NSE-*:NONSTOP_KERNEL:*:*) NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE} echo nse-tandem-nsk${UNAME_RELEASE}
exit ;; exit ;;
NSR-?:NONSTOP_KERNEL:*:*) NSR-*:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE} echo nsr-tandem-nsk${UNAME_RELEASE}
exit ;; exit ;;
NSX-*:NONSTOP_KERNEL:*:*)
echo nsx-tandem-nsk${UNAME_RELEASE}
exit ;;
*:NonStop-UX:*:*) *:NonStop-UX:*:*)
echo mips-compaq-nonstopux echo mips-compaq-nonstopux
exit ;; exit ;;
@ -1418,8 +1432,8 @@ cat >&2 <<EOF
$0: unable to guess system type $0: unable to guess system type
This script (version $timestamp), has failed to recognize the This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite operating system you are using. If your script is old, overwrite *all*
config.guess and config.sub with the latest versions from: 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 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and and

27
build-aux/config.sub vendored
View File

@ -1,8 +1,8 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # 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 # 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 # 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="\ version="\
GNU config.sub ($timestamp) 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 This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -263,7 +263,7 @@ case $basic_machine in
| fido | fr30 | frv | ft32 \ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \ | hexagon \
| i370 | i860 | i960 | ia64 \ | i370 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| k1om \ | k1om \
| le32 | le64 \ | le32 | le64 \
@ -301,6 +301,7 @@ case $basic_machine in
| open8 | or1k | or1knd | or32 \ | open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pru \
| pyramid \ | pyramid \
| riscv32 | riscv64 \ | riscv32 | riscv64 \
| rl78 | rx \ | rl78 | rx \
@ -314,6 +315,7 @@ case $basic_machine in
| ubicom32 \ | ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| visium \ | visium \
| wasm32 \
| we32k \ | we32k \
| x86 | xc16x | xstormy16 | xtensa \ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80) | z8k | z80)
@ -387,7 +389,7 @@ case $basic_machine in
| h8300-* | h8500-* \ | h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
| ip2k-* | iq2000-* \ | ip2k-* | iq2000-* \
| k1om-* \ | k1om-* \
| le32-* | le64-* \ | le32-* | le64-* \
@ -428,6 +430,7 @@ case $basic_machine in
| orion-* \ | orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pru-* \
| pyramid-* \ | pyramid-* \
| riscv32-* | riscv64-* \ | riscv32-* | riscv64-* \
| rl78-* | romp-* | rs6000-* | rx-* \ | rl78-* | romp-* | rs6000-* | rx-* \
@ -444,6 +447,7 @@ case $basic_machine in
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \ | vax-* \
| visium-* \ | visium-* \
| wasm32-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \ | xstormy16-* | xtensa*-* \
@ -946,6 +950,9 @@ case $basic_machine in
nsr-tandem) nsr-tandem)
basic_machine=nsr-tandem basic_machine=nsr-tandem
;; ;;
nsx-tandem)
basic_machine=nsx-tandem
;;
op50n-* | op60c-*) op50n-* | op60c-*)
basic_machine=hppa1.1-oki basic_machine=hppa1.1-oki
os=-proelf os=-proelf
@ -1241,6 +1248,9 @@ case $basic_machine in
basic_machine=a29k-wrs basic_machine=a29k-wrs
os=-vxworks os=-vxworks
;; ;;
wasm32)
basic_machine=wasm32-unknown
;;
w65*) w65*)
basic_machine=w65-wdc basic_machine=w65-wdc
os=-none os=-none
@ -1395,7 +1405,7 @@ case $os in
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
@ -1407,7 +1417,7 @@ case $os in
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -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. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@ -1636,6 +1646,9 @@ case $basic_machine in
sparc-* | *-sun) sparc-* | *-sun)
os=-sunos4.1.1 os=-sunos4.1.1
;; ;;
pru-*)
os=-elf
;;
*-be) *-be)
os=-beos os=-beos
;; ;;

View File

@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# depcomp - compile a program generating dependencies as side-effects # 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 # 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 # 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) # eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
# End: # End:

View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# install - install a program, script, or datafile # 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 # This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the # later released in X11R6 (xc/config/util/install.sh) with the
@ -496,6 +496,6 @@ done
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
# End: # End:

View File

@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# Common wrapper for a few potentially missing GNU programs. # 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. # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify # 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) # eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
# End: # End:

View File

@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# test-driver - basic testsuite driver script. # 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 # 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 # 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) # eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion=" # time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC" # time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC" # time-stamp-end: "; # UTC"
# End: # End:

View File

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

View File

@ -21,7 +21,7 @@
/* Define if we should be compatible with wrpseudo */ /* Define if we should be compatible with wrpseudo */
#undef ENABLE_WRPSEUDO_COMPAT #undef ENABLE_WRPSEUDO_COMPAT
/* The system grub2-mkconfig executible name */ /* The system grub2-mkconfig executable name */
#undef GRUB2_MKCONFIG_PATH #undef GRUB2_MKCONFIG_PATH
/* Define to 1 if you have the `archive_read_support_filter_all' function. */ /* 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 */ /* Define if we have avahi-client.pc and avahi-glib.pc */
#undef HAVE_AVAHI #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 /* Define to 1 if you have the declaration of `memfd_create', and to 0 if you
don't. */ don't. */
#undef HAVE_DECL_MEMFD_CREATE #undef HAVE_DECL_MEMFD_CREATE
@ -38,6 +45,10 @@
don't. */ don't. */
#undef HAVE_DECL_RENAMEAT2 #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. */ /* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H #undef HAVE_DLFCN_H
@ -74,6 +85,9 @@
/* Define to 1 if you have the `mnt_unref_cache' function. */ /* Define to 1 if you have the `mnt_unref_cache' function. */
#undef HAVE_MNT_UNREF_CACHE #undef HAVE_MNT_UNREF_CACHE
/* Define to 1 if you have the `nanotime' function. */
#undef HAVE_NANOTIME
/* Define if we have openssl */ /* Define if we have openssl */
#undef HAVE_OPENSSL #undef HAVE_OPENSSL
@ -92,12 +106,23 @@
/* Define to 1 if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H #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. */ /* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H #undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */ /* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H #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. */ /* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
@ -128,6 +153,9 @@
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS #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 */ /* Define if using internal ostree-grub-generator */
#undef USE_BUILTIN_GRUB2_MKCONFIG #undef USE_BUILTIN_GRUB2_MKCONFIG

217
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # 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>. # Report bugs to <walters@verbum.org>.
# #
@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='libostree' PACKAGE_NAME='libostree'
PACKAGE_TARNAME='libostree' PACKAGE_TARNAME='libostree'
PACKAGE_VERSION='2017.13' PACKAGE_VERSION='2017.14'
PACKAGE_STRING='libostree 2017.13' PACKAGE_STRING='libostree 2017.14'
PACKAGE_BUGREPORT='walters@verbum.org' PACKAGE_BUGREPORT='walters@verbum.org'
PACKAGE_URL='' 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. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF 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]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1610,7 +1610,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of libostree 2017.13:";; short | recursive ) echo "Configuration of libostree 2017.14:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1851,7 +1851,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
libostree configure 2017.13 libostree configure 2017.14
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. 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 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_decl } # 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 cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. 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 generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -3134,7 +3191,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='libostree' PACKAGE='libostree'
VERSION='2017.13' VERSION='2017.14'
# Some tools Automake needs. # Some tools Automake needs.
@ -5868,9 +5925,9 @@ test -n "$YACC" || YACC="yacc"
YEAR_VERSION=2017 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 : if echo "$CFLAGS" | grep -q -E -e '-Werror($| )'; then :
@ -5893,6 +5950,7 @@ else
-Werror=overflow \ -Werror=overflow \
-Werror=int-conversion \ -Werror=int-conversion \
-Werror=parenthesis \ -Werror=parenthesis \
-Werror=undef \
-Werror=incompatible-pointer-types \ -Werror=incompatible-pointer-types \
-Werror=misleading-indentation \ -Werror=misleading-indentation \
-Werror=missing-include-dirs -Werror=aggregate-return \ -Werror=missing-include-dirs -Werror=aggregate-return \
@ -13750,6 +13808,25 @@ fi
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_MEMFD_CREATE $ac_have_decl #define HAVE_DECL_MEMFD_CREATE $ac_have_decl
_ACEOF _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. # 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" 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 : if test "x$ac_cv_header_sys_xattr_h" = xyes; then :
@ -14155,7 +14346,7 @@ else
#include <stdlib.h> #include <stdlib.h>
int int
main (void) main ()
{ {
unsigned int major, minor, micro; 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 # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" 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 generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -18234,7 +18425,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
libostree config.status 2017.13 libostree config.status 2017.14
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" 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 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. dnl another post-release commit to bump the version, and set is_release_build=no.
m4_define([year_version], [2017]) m4_define([year_version], [2017])
m4_define([release_version], [13]) m4_define([release_version], [14])
m4_define([package_version], [year_version.release_version]) m4_define([package_version], [year_version.release_version])
AC_INIT([libostree], [package_version], [walters@verbum.org]) AC_INIT([libostree], [package_version], [walters@verbum.org])
is_release_build=yes is_release_build=yes
@ -44,6 +44,7 @@ CC_CHECK_FLAGS_APPEND([WARN_CFLAGS], [CFLAGS], [\
-Werror=overflow \ -Werror=overflow \
-Werror=int-conversion \ -Werror=int-conversion \
-Werror=parenthesis \ -Werror=parenthesis \
-Werror=undef \
-Werror=incompatible-pointer-types \ -Werror=incompatible-pointer-types \
-Werror=misleading-indentation \ -Werror=misleading-indentation \
-Werror=missing-include-dirs -Werror=aggregate-return \ -Werror=missing-include-dirs -Werror=aggregate-return \
@ -83,6 +84,9 @@ AC_SUBST([OSTREE_FEATURES])
GLIB_TESTS GLIB_TESTS
LIBGLNX_CONFIGURE 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])]) 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])]) 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. dnl on some 'grub'. We default to grub2-mkconfig.
AC_CHECK_PROGS(GRUB2_MKCONFIG, [grub2-mkconfig grub-mkconfig], [grub2-mkconfig]) AC_CHECK_PROGS(GRUB2_MKCONFIG, [grub2-mkconfig grub-mkconfig], [grub2-mkconfig])
],[GRUB2_MKCONFIG=$with_grub2_mkconfig_path]) ],[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, AC_ARG_WITH(static-compiler,
AS_HELP_STRING([--with-static-compiler], AS_HELP_STRING([--with-static-compiler],

View File

@ -81,8 +81,8 @@ $(REPORT_FILES): sgml-build.stamp
#### setup #### #### setup ####
GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_@AM_V@)
GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_@AM_DEFAULT_V@)
GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; GTK_DOC_V_SETUP_0=@echo " DOC Preparing build";
setup-build.stamp: setup-build.stamp:
@ -99,15 +99,14 @@ setup-build.stamp:
fi fi
$(AM_V_at)touch setup-build.stamp $(AM_V_at)touch setup-build.stamp
#### scan #### #### scan ####
GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_@AM_V@)
GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_@AM_DEFAULT_V@)
GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; 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_V@)
GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@)
GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects";
scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) 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 #### #### xml ####
GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML=$(GTK_DOC_V_XML_@AM_V@)
GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_=$(GTK_DOC_V_XML_@AM_DEFAULT_V@)
GTK_DOC_V_XML_0=@echo " DOC Building XML"; 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 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 #### #### html ####
GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_@AM_V@)
GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_@AM_DEFAULT_V@)
GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; 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_V@)
GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_@AM_DEFAULT_V@)
GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references";
html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) 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) cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
-@test "x$(HTML_IMAGES)" = "x" || \ -@test "x$(HTML_IMAGES)" = "x" || \
for file in $(HTML_IMAGES) ; do \ for file in $(HTML_IMAGES) ; do \
if test -f $(abs_srcdir)/$$file ; then \ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \
fi; \
if test -f $(abs_builddir)/$$file ; then \
cp $(abs_builddir)/$$file $(abs_builddir)/html; \
fi; \
done; done;
$(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(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 $(AM_V_at)touch html-build.stamp
#### pdf #### #### pdf ####
GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_@AM_V@)
GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_@AM_DEFAULT_V@)
GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; GTK_DOC_V_PDF_0=@echo " DOC Building PDF";
pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) 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 Add abstraction model for BPF programs
*/ */
#include "config.h"
#if !HAVE_DECL_RENAMEAT2 #if !HAVE_DECL_RENAMEAT2
# ifndef __NR_renameat2 # ifndef __NR_renameat2

View File

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

View File

@ -61,7 +61,12 @@ read_config()
populate_menu() 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}" boot_prefix="${OSTREE_BOOT_PARTITION}"
fi
for config in $(ls ${entries_path}); do for config in $(ls ${entries_path}); do
read_config ${config} read_config ${config}
menu="${menu}menuentry '${title}' {\n" menu="${menu}menuentry '${title}' {\n"

View File

@ -18,8 +18,9 @@
***/ ***/
/* Add new symbols here. Release commits should copy this section into -released.sym. */ /* 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 /* 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 * 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_get_type;
ostree_repo_finder_override_new; ostree_repo_finder_override_new;
} LIBOSTREE_2017.12_EXPERIMENTAL; } 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; ostree_repo_checkout_at_options_set_devino;
} LIBOSTREE_2017.12; } LIBOSTREE_2017.12;
LIBOSTREE_2017.14 {
} LIBOSTREE_2017.13;
/* NOTE: Only add more content here in release commits! See the /* NOTE: Only add more content here in release commits! See the
* comments at the top of this file. * 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: * ostree_validate_collection_id:
* @rev: (nullable): A collection ID * @collection_id: (nullable): A collection ID
* @error: Error * @error: Error
* *
* Check whether the given @collection_id is valid. Return an error if it is * 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 *current_ts_str = g_date_time_format (current_dt, "%c");
g_autofree char *new_ts_str = g_date_time_format (new_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); new_rev, new_ts_str, current_rev, current_ts_str);
} }

View File

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

View File

@ -167,6 +167,7 @@ _ostree_fetcher_finalize (GObject *object)
{ {
OstreeFetcher *self = OSTREE_FETCHER (object); OstreeFetcher *self = OSTREE_FETCHER (object);
curl_multi_cleanup (self->multi);
g_free (self->remote_name); g_free (self->remote_name);
g_free (self->cookie_jar_path); g_free (self->cookie_jar_path);
g_free (self->proxy); g_free (self->proxy);
@ -177,7 +178,6 @@ _ostree_fetcher_finalize (GObject *object)
g_clear_pointer (&self->timer_event, (GDestroyNotify)destroy_and_unref_source); g_clear_pointer (&self->timer_event, (GDestroyNotify)destroy_and_unref_source);
if (self->mainctx) if (self->mainctx)
g_main_context_unref (self->mainctx); g_main_context_unref (self->mainctx);
curl_multi_cleanup (self->multi);
G_OBJECT_CLASS (_ostree_fetcher_parent_class)->finalize (object); 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_PROGRESSFUNCTION, prog_cb);
curl_easy_setopt (req->easy, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt (req->easy, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt (req->easy, CURLOPT_CONNECTTIMEOUT, 30L); curl_easy_setopt (req->easy, CURLOPT_CONNECTTIMEOUT, 30L);
curl_easy_setopt (req->easy, CURLOPT_LOW_SPEED_LIMIT, 1L); /* We used to set CURLOPT_LOW_SPEED_LIMIT and CURLOPT_LOW_SPEED_TIME
curl_easy_setopt (req->easy, CURLOPT_LOW_SPEED_TIME, 30L); * 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 */ /* closure bindings -> task */
curl_easy_setopt (req->easy, CURLOPT_PRIVATE, task); curl_easy_setopt (req->easy, CURLOPT_PRIVATE, task);

View File

@ -48,7 +48,6 @@ typedef struct
gchar *ref_name; /* (not nullable) */ gchar *ref_name; /* (not nullable) */
} OstreeCollectionRef; } OstreeCollectionRef;
#ifndef __GI_SCANNER__
_OSTREE_PUBLIC _OSTREE_PUBLIC
GType ostree_collection_ref_get_type (void); GType ostree_collection_ref_get_type (void);
@ -59,7 +58,6 @@ _OSTREE_PUBLIC
OstreeCollectionRef *ostree_collection_ref_dup (const OstreeCollectionRef *ref); OstreeCollectionRef *ostree_collection_ref_dup (const OstreeCollectionRef *ref);
_OSTREE_PUBLIC _OSTREE_PUBLIC
void ostree_collection_ref_free (OstreeCollectionRef *ref); void ostree_collection_ref_free (OstreeCollectionRef *ref);
#endif
_OSTREE_PUBLIC _OSTREE_PUBLIC
guint ostree_collection_ref_hash (gconstpointer ref); guint ostree_collection_ref_hash (gconstpointer ref);

View File

@ -180,3 +180,21 @@ ostree_remote_get_name (OstreeRemote *remote)
return remote->name; 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; typedef struct OstreeRemote OstreeRemote;
#endif #endif
#ifndef __GI_SCANNER__
_OSTREE_PUBLIC _OSTREE_PUBLIC
GType ostree_remote_get_type (void) G_GNUC_CONST; GType ostree_remote_get_type (void) G_GNUC_CONST;
_OSTREE_PUBLIC _OSTREE_PUBLIC
OstreeRemote *ostree_remote_ref (OstreeRemote *remote); OstreeRemote *ostree_remote_ref (OstreeRemote *remote);
_OSTREE_PUBLIC _OSTREE_PUBLIC
void ostree_remote_unref (OstreeRemote *remote); void ostree_remote_unref (OstreeRemote *remote);
#endif /* GI_SCANNER */
_OSTREE_PUBLIC _OSTREE_PUBLIC
const gchar *ostree_remote_get_name (OstreeRemote *remote); const gchar *ostree_remote_get_name (OstreeRemote *remote);
_OSTREE_PUBLIC
gchar *ostree_remote_get_url (OstreeRemote *remote);
G_END_DECLS G_END_DECLS

View File

@ -38,18 +38,33 @@
#include "ostree-checksum-input-stream.h" #include "ostree-checksum-input-stream.h"
#include "ostree-varint.h" #include "ostree-varint.h"
/* In most cases, we write into a staging dir for commit, but we also allow /* If fsync is enabled and we're in a txn, we write into a staging dir for
* direct writes into objects/ for e.g. hardlink imports. * commit, but we also allow direct writes into objects/ for e.g. hardlink
* imports.
*/ */
static int static int
commit_dest_dfd (OstreeRepo *self) commit_dest_dfd (OstreeRepo *self)
{ {
if (self->in_transaction) if (self->in_transaction && !self->disable_fsync)
return self->commit_stagedir.fd; return self->commit_stagedir.fd;
else else
return self->objects_dir_fd; 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 /* The objects/ directory has a two-character directory prefix for checksums
* to avoid putting lots of files in a single directory. This technique * to avoid putting lots of files in a single directory. This technique
* is quite old, but Git also uses it for example. * 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)); 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 /* Create a tmpfile for writing a bare file. Currently just used
* by the static delta code, but will likely later be extended * by the static delta code, but will likely later be extended
* to be used also by the dfd_iter commit path. * to be used also by the dfd_iter commit path.
*/ */
gboolean gboolean
_ostree_repo_open_content_bare (OstreeRepo *self, _ostree_repo_bare_content_open (OstreeRepo *self,
const char *checksum, const char *expected_checksum,
guint64 content_len, guint64 content_len,
GLnxTmpfile *out_tmpf, guint uid,
guint gid,
guint mode,
GVariant *xattrs,
OstreeRepoBareContent *out_regwrite,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
return glnx_open_tmpfile_linkable_at (self->tmp_dir_fd, ".", O_WRONLY|O_CLOEXEC, OstreeRealRepoBareContent *real = (OstreeRealRepoBareContent*) out_regwrite;
out_tmpf, error); 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 gboolean
_ostree_repo_commit_trusted_content_bare (OstreeRepo *self, _ostree_repo_bare_content_write (OstreeRepo *repo,
const char *checksum, OstreeRepoBareContent *barewrite,
GLnxTmpfile *tmpf, const guint8 *buf,
guint32 uid, size_t len,
guint32 gid,
guint32 mode,
GVariant *xattrs,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
/* I don't think this is necessary, but a similar check was here previously, OstreeRealRepoBareContent *real = (OstreeRealRepoBareContent*) barewrite;
* keeping it for extra redundancy. g_assert (real->initialized);
*/ ot_checksum_update (&real->checksum, buf, len);
if (!tmpf->initialized || tmpf->fd == -1) if (glnx_loop_write (real->tmpf.fd, buf, len) < 0)
return glnx_throw_errno_prefix (error, "write");
return TRUE; return TRUE;
}
return commit_loose_regfile_object (self, checksum, gboolean
tmpf, uid, gid, mode, xattrs, _ostree_repo_bare_content_commit (OstreeRepo *self,
cancellable, error); 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 /* 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) GError **error)
{ {
g_auto(GLnxTmpfile) tmpf = { 0, }; 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)) &tmpf, error))
return FALSE; return FALSE;
@ -597,7 +682,7 @@ write_content_object (OstreeRepo *self,
* *
* We use GLnxTmpfile for regular files, and OtCleanupUnlinkat for symlinks. * 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, }; g_auto(GLnxTmpfile) tmpf = { 0, };
goffset unpacked_size = 0; goffset unpacked_size = 0;
gboolean indexable = FALSE; gboolean indexable = FALSE;
@ -606,7 +691,7 @@ write_content_object (OstreeRepo *self,
{ {
/* This will not be hit for bare-user or archive */ /* 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); 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), g_file_info_get_symlink_target (file_info),
&tmp_unlinker.path, &tmp_unlinker.path,
cancellable, error)) cancellable, error))
@ -629,7 +714,7 @@ write_content_object (OstreeRepo *self,
if (self->generate_sizes) if (self->generate_sizes)
indexable = TRUE; 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)) &tmpf, error))
return FALSE; return FALSE;
temp_out = g_unix_output_stream_new (tmpf.fd, 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 * Note, this does not apply for bare-user repos, as they store symlinks
* as regular files. * 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)) uid, gid, AT_SYMLINK_NOFOLLOW) == -1))
return glnx_throw_errno_prefix (error, "fchownat"); return glnx_throw_errno_prefix (error, "fchownat");
if (xattrs != NULL) if (xattrs != NULL)
{ {
ot_security_smack_reset_dfd_name (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 (self->tmp_dir_fd, tmp_unlinker.path, if (!glnx_dfd_name_set_all_xattrs (tmp_unlinker.dfd, tmp_unlinker.path,
xattrs, cancellable, error)) xattrs, cancellable, error))
return FALSE; return FALSE;
} }
@ -968,7 +1053,7 @@ write_metadata_object (OstreeRepo *self,
/* Write the metadata to a temporary file */ /* Write the metadata to a temporary file */
g_auto(GLnxTmpfile) tmpf = { 0, }; 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)) &tmpf, error))
return FALSE; return FALSE;
if (!glnx_try_fallocate (tmpf.fd, 0, len, error)) 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"); 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; 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; return TRUE;
} }
@ -1376,15 +1493,9 @@ cleanup_tmpdir (OstreeRepo *self,
while (TRUE) while (TRUE)
{ {
guint64 delta;
struct dirent *dent; 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)) if (!glnx_dirfd_iterator_next_dent (&dfd_iter, &dent, cancellable, error))
return FALSE; return FALSE;
if (dent == NULL) if (dent == NULL)
break; break;
@ -1394,57 +1505,41 @@ cleanup_tmpdir (OstreeRepo *self,
if (strcmp (dent->d_name, "cache") == 0) if (strcmp (dent->d_name, "cache") == 0)
continue; continue;
struct stat stbuf;
if (!glnx_fstatat_allow_noent (dfd_iter.fd, dent->d_name, &stbuf, AT_SYMLINK_NOFOLLOW, error)) if (!glnx_fstatat_allow_noent (dfd_iter.fd, dent->d_name, &stbuf, AT_SYMLINK_NOFOLLOW, error))
return FALSE; return FALSE;
if (errno == ENOENT) /* Did another cleanup win? */ if (errno == ENOENT) /* Did another cleanup win? */
continue; continue;
/* First, if it's a directory which needs locking, but it's /* Handle transaction tmpdirs */
* busy, skip it.
*/
if (_ostree_repo_is_locked_tmpdir (dent->d_name)) if (_ostree_repo_is_locked_tmpdir (dent->d_name))
{ {
if (!_ostree_repo_try_lock_tmpdir (dfd_iter.fd, dent->d_name, if (!cleanup_txn_dir (self, dfd_iter.fd, dent->d_name, cancellable, error))
&lockfile, &did_lock, error))
return FALSE; return FALSE;
if (!did_lock) continue; /* We've handled this, move on */
continue;
} }
/* If however this is the staging directory for the *current* /* At this point we're looking at an unknown-origin file or directory in
* boot, then don't delete it now - we may end up reusing it, as * the tmpdir. This could be something like a temporary checkout dir (used
* is the point. * by rpm-ostree), or (from older versions of libostree) a tempfile if we
*/ * don't have O_TMPFILE for commits.
if (g_str_has_prefix (dent->d_name, self->stagedir_prefix))
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...
*/ */
/* Ignore files from the future */
if (stbuf.st_mtime > curtime_secs) if (stbuf.st_mtime > curtime_secs)
continue; 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 * defaults to a day. That's what we were doing before we
* had locking...but in future we can be smarter here. * 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 (delta > self->tmp_expiry_seconds)
{ {
if (!glnx_shutil_rm_rf_at (dfd_iter.fd, dent->d_name, cancellable, error)) 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 glnx_prefix_error (error, "Removing %s", dent->d_name);
} }
} }
}
return TRUE; return TRUE;
} }
@ -1675,6 +1770,12 @@ ostree_repo_commit_transaction (OstreeRepo *self,
if (!rename_pending_loose_objects (self, cancellable, error)) if (!rename_pending_loose_objects (self, cancellable, error))
return FALSE; 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)) if (!cleanup_tmpdir (self, cancellable, error))
return FALSE; return FALSE;
@ -1691,9 +1792,6 @@ ostree_repo_commit_transaction (OstreeRepo *self,
return FALSE; return FALSE;
g_clear_pointer (&self->txn_collection_refs, g_hash_table_destroy); 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; self->in_transaction = FALSE;
if (!ot_ensure_unlinked_at (self->repo_dir_fd, "transaction", 0)) 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); g_assert (dir_enum != NULL || dfd_iter != NULL);
GFileType file_type = g_file_info_get_file_type (child_info); GFileType file_type = g_file_info_get_file_type (child_info);
const char *name = g_file_info_get_name (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); /* Load flags into boolean constants for ease of readability (we also need to
* NULL-check modifier)
/* 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.
*/ */
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; const char *loose_checksum = NULL;
g_autoptr(GVariant) source_xattrs = NULL;
if (dfd_iter != NULL && (file_type != G_FILE_TYPE_DIRECTORY)) if (dfd_iter != NULL && (file_type != G_FILE_TYPE_DIRECTORY))
{ {
guint32 dev = g_file_info_get_attribute_uint32 (child_info, "unix::device"); guint32 dev = g_file_info_get_attribute_uint32 (child_info, "unix::device");
guint64 inode = g_file_info_get_attribute_uint64 (child_info, "unix::inode"); guint64 inode = g_file_info_get_attribute_uint64 (child_info, "unix::inode");
loose_checksum = devino_cache_lookup (self, modifier, dev, 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) if (loose_checksum && self->mode == OSTREE_REPO_MODE_BARE_USER)
{ {
child_info = NULL; child_info = NULL;
@ -2721,22 +2851,13 @@ write_directory_content_to_mtree_internal (OstreeRepo *self,
cancellable, error)) cancellable, error))
return FALSE; return FALSE;
} }
}
/* Call the filter */
g_autoptr(GFileInfo) modified_info = NULL; g_autoptr(GFileInfo) modified_info = NULL;
OstreeRepoCommitFilterResult filter_result = OstreeRepoCommitFilterResult filter_result =
_ostree_repo_commit_modifier_apply (self, modifier, child_relpath, child_info, &modified_info); _ostree_repo_commit_modifier_apply (self, modifier, child_relpath, child_info, &modified_info);
const gboolean child_info_was_modified = !_ostree_gfileinfo_equal (child_info, modified_info); const gboolean 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) if (filter_result != OSTREE_REPO_COMMIT_FILTER_ALLOW)
{ {
g_ptr_array_remove_index (path, path->len - 1); 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 * result
* @priority: static priority of the result, where higher numbers indicate lower * @priority: static priority of the result, where higher numbers indicate lower
* priority * priority
* @ref_to_checksum: (element-type OstreeCollectionRef utf8): map of collectionref pairs * @ref_to_checksum: (element-type OstreeCollectionRef utf8) (transfer none):
* to checksums provided by this result * map of collectionref pairs to checksums provided by this result
* @summary_last_modified: Unix timestamp (seconds since the epoch, UTC) when * @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 * 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, GCancellable *cancellable,
GError **error); 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 gboolean
_ostree_repo_open_content_bare (OstreeRepo *self, _ostree_repo_bare_content_open (OstreeRepo *self,
const char *checksum, const char *checksum,
guint64 content_len, guint64 content_len,
GLnxTmpfile *out_tmpf, guint uid,
guint gid,
guint mode,
GVariant *xattrs,
OstreeRepoBareContent *out_regwrite,
GCancellable *cancellable, GCancellable *cancellable,
GError **error); GError **error);
gboolean gboolean
_ostree_repo_commit_trusted_content_bare (OstreeRepo *self, _ostree_repo_bare_content_write (OstreeRepo *repo,
const char *checksum, OstreeRepoBareContent *barewrite,
GLnxTmpfile *tmpf, const guint8 *buf,
guint32 uid, size_t len,
guint32 gid, GCancellable *cancellable,
guint32 mode, GError **error);
GVariant *xattrs,
gboolean
_ostree_repo_bare_content_commit (OstreeRepo *self,
OstreeRepoBareContent *barewrite,
char *checksum_buf,
size_t buflen,
GCancellable *cancellable, GCancellable *cancellable,
GError **error); GError **error);

View File

@ -2325,19 +2325,39 @@ process_one_static_delta (OtPullData *pull_data,
return ret; return ret;
} }
/* Loop over the static delta data we got from the summary, /*
* and find the newest commit for @out_from_revision that * DELTA_SEARCH_RESULT_UNCHANGED:
* goes to @to_revision. * We already have the commit.
* *
* Additionally, @out_have_scratch_delta will be set to %TRUE * DELTA_SEARCH_RESULT_NO_MATCH:
* if there is a %NULL @to_revision delta, also known as * 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. * 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 static gboolean
get_best_static_delta_start_for (OtPullData *pull_data, get_best_static_delta_start_for (OtPullData *pull_data,
const char *to_revision, const char *to_revision,
gboolean *out_have_scratch_delta, DeltaSearchResult *out_result,
char **out_from_revision,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
@ -2348,7 +2368,28 @@ get_best_static_delta_start_for (OtPullData *pull_data,
g_assert (pull_data->summary_deltas_checksums != NULL); 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, /* Loop over all deltas known from the summary file,
* finding ones which go to to_revision */ * finding ones which go to to_revision */
@ -2366,9 +2407,17 @@ get_best_static_delta_start_for (OtPullData *pull_data,
continue; continue;
if (cur_from_rev) if (cur_from_rev)
{
g_ptr_array_add (candidates, g_steal_pointer (&cur_from_rev)); g_ptr_array_add (candidates, g_steal_pointer (&cur_from_rev));
}
else 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 */ /* 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; return TRUE;
} }
@ -3082,19 +3135,18 @@ initiate_request (OtPullData *pull_data,
/* If we have a summary, we can use the newer logic */ /* If we have a summary, we can use the newer logic */
if (pull_data->summary) if (pull_data->summary)
{ {
gboolean have_scratch_delta = FALSE; DeltaSearchResult deltares;
/* Look for a delta to @to_revision in the summary data */ /* Look for a delta to @to_revision in the summary data */
if (!get_best_static_delta_start_for (pull_data, to_revision, if (!get_best_static_delta_start_for (pull_data, to_revision, &deltares,
&have_scratch_delta, &delta_from_revision,
pull_data->cancellable, error)) pull_data->cancellable, error))
return FALSE; return FALSE;
if (delta_from_revision) /* Did we find a delta FROM commit? */ switch (deltares.result)
initiate_delta_request (pull_data, delta_from_revision, to_revision, ref); {
else if (have_scratch_delta) /* No delta FROM, do we have a scratch? */ case DELTA_SEARCH_RESULT_NO_MATCH:
initiate_delta_request (pull_data, NULL, to_revision, ref); {
else if (pull_data->require_static_deltas) /* No deltas found; are they required? */ if (pull_data->require_static_deltas) /* No deltas found; are they required? */
{ {
set_required_deltas_error (error, (ref != NULL) ? ref->ref_name : "", to_revision); set_required_deltas_error (error, (ref != NULL) ? ref->ref_name : "", to_revision);
return FALSE; return FALSE;
@ -3102,6 +3154,27 @@ initiate_request (OtPullData *pull_data,
else /* No deltas, fall back to object fetches. */ else /* No deltas, fall back to object fetches. */
queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); 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) else if (ref != NULL)
{ {
/* Are we doing a delta via a ref? In that case we can fall back to the older /* 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: * ostree_repo_list_refs:
* @self: Repo * @self: Repo
* @refspec_prefix: (allow-none): Only list refs which match this prefix * @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 * @cancellable: Cancellable
* @error: Error * @error: Error
* *
@ -750,7 +751,8 @@ ostree_repo_list_refs (OstreeRepo *self,
* ostree_repo_list_refs_ext: * ostree_repo_list_refs_ext:
* @self: Repo * @self: Repo
* @refspec_prefix: (allow-none): Only list refs which match this prefix * @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 * @flags: Options controlling listing behavior
* @cancellable: Cancellable * @cancellable: Cancellable
* @error: Error * @error: Error
@ -778,7 +780,8 @@ ostree_repo_list_refs_ext (OstreeRepo *self,
* ostree_repo_remote_list_refs: * ostree_repo_remote_list_refs:
* @self: Repo * @self: Repo
* @remote_name: Name of the remote. * @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 * @cancellable: Cancellable
* @error: Error * @error: Error
* *
@ -893,7 +896,8 @@ remote_list_collection_refs_process_refs (OstreeRepo *self,
* ostree_repo_remote_list_collection_refs: * ostree_repo_remote_list_collection_refs:
* @self: Repo * @self: Repo
* @remote_name: Name of the remote. * @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 * @cancellable: Cancellable
* @error: Error * @error: Error
* *
@ -1165,7 +1169,8 @@ _ostree_repo_update_collection_refs (OstreeRepo *self,
* ostree_repo_list_collection_refs: * ostree_repo_list_collection_refs:
* @self: Repo * @self: Repo
* @match_collection_id: (nullable): If non-%NULL, only list refs from this collection * @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 * @flags: Options controlling listing behavior
* @cancellable: Cancellable * @cancellable: Cancellable
* @error: Error * @error: Error

View File

@ -217,6 +217,37 @@ string_array_nonempty_intersection (GPtrArray *a,
return FALSE; 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, * Build up a map of files with matching basenames and similar size,
* and use it to find apparently similar objects. * 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 * const guint64 max_threshold = to_sizenames->size *
(1.0+similarity_percent_threshold/100.0); (1.0+similarity_percent_threshold/100.0);
/* Don't build candidates for the empty object */ if (!sizename_is_delta_candidate (to_sizenames))
if (to_sizenames->size == 0)
continue; continue;
for (fuzzy = 0; fuzzy < 2 && !found; fuzzy++) for (fuzzy = 0; fuzzy < 2 && !found; fuzzy++)
@ -286,12 +316,8 @@ _ostree_delta_compute_similar_objects (OstreeRepo *repo,
for (j = lower; j < upper; j++) for (j = lower; j < upper; j++)
{ {
OstreeDeltaContentSizeNames *from_sizenames = from_sizes->pdata[j]; OstreeDeltaContentSizeNames *from_sizenames = from_sizes->pdata[j];
if (!sizename_is_delta_candidate (from_sizenames))
/* Don't build candidates for the empty object */
if (from_sizenames->size == 0)
{
continue; continue;
}
if (from_sizenames->size < min_threshold) if (from_sizenames->size < min_threshold)
{ {

View File

@ -55,11 +55,9 @@ typedef struct {
GError **async_error; GError **async_error;
OstreeObjectType output_objtype; OstreeObjectType output_objtype;
GLnxTmpfile tmpf;
guint64 content_size; guint64 content_size;
GOutputStream *content_out;
OtChecksum content_checksum;
char checksum[OSTREE_SHA256_STRING_LEN+1]; char checksum[OSTREE_SHA256_STRING_LEN+1];
OstreeRepoBareContent content_out;
char *read_source_object; char *read_source_object;
int read_source_fd; int read_source_fd;
gboolean have_obj; gboolean have_obj;
@ -278,9 +276,7 @@ _ostree_static_delta_part_execute (OstreeRepo *repo,
ret = TRUE; ret = TRUE;
out: out:
glnx_tmpfile_clear (&state->tmpf); _ostree_repo_bare_content_cleanup (&state->content_out);
g_clear_object (&state->content_out);
ot_checksum_clear (&state->content_checksum);
return ret; return ret;
} }
@ -378,29 +374,6 @@ validate_ofs (StaticDeltaExecutionState *state,
return TRUE; 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 static gboolean
do_content_open_generic (OstreeRepo *repo, do_content_open_generic (OstreeRepo *repo,
StaticDeltaExecutionState *state, StaticDeltaExecutionState *state,
@ -485,7 +458,8 @@ dispatch_bspatch (OstreeRepo *repo,
&stream) < 0) &stream) < 0)
return FALSE; 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)) cancellable, error))
return FALSE; return FALSE;
} }
@ -493,25 +467,6 @@ dispatch_bspatch (OstreeRepo *repo,
return TRUE; 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 static gboolean
dispatch_open_splice_and_close (OstreeRepo *repo, dispatch_open_splice_and_close (OstreeRepo *repo,
StaticDeltaExecutionState *state, StaticDeltaExecutionState *state,
@ -589,17 +544,15 @@ dispatch_open_splice_and_close (OstreeRepo *repo,
if (!state->have_obj) 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->content_size,
&state->tmpf, state->uid, state->gid, state->mode,
state->xattrs,
&state->content_out,
cancellable, error)) cancellable, error))
goto out; goto out;
state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE); if (!_ostree_repo_bare_content_write (repo, &state->content_out,
if (!handle_untrusted_content_checksum (repo, state, cancellable, error))
goto out;
if (!content_out_write (repo, state,
state->payload_data + content_offset, state->payload_data + content_offset,
state->content_size, state->content_size,
cancellable, error)) cancellable, error))
@ -691,17 +644,15 @@ dispatch_open (OstreeRepo *repo,
if (!state->have_obj) 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->content_size,
&state->tmpf, state->uid, state->gid, state->mode,
state->xattrs,
&state->content_out,
cancellable, error)) cancellable, error))
return FALSE; 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; return TRUE;
} }
@ -740,7 +691,8 @@ dispatch_write (OstreeRepo *repo,
if (G_UNLIKELY (bytes_read == 0)) if (G_UNLIKELY (bytes_read == 0))
return glnx_throw (error, "Unexpected EOF reading object %s", state->read_source_object); 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)) cancellable, error))
return FALSE; return FALSE;
@ -753,7 +705,8 @@ dispatch_write (OstreeRepo *repo,
if (!validate_ofs (state, content_offset, content_size, error)) if (!validate_ofs (state, content_offset, content_size, error))
return FALSE; 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)) cancellable, error))
return FALSE; return FALSE;
} }
@ -818,34 +771,22 @@ dispatch_close (OstreeRepo *repo,
{ {
GLNX_AUTO_PREFIX_ERROR("opcode close", error); GLNX_AUTO_PREFIX_ERROR("opcode close", error);
if (state->content_out) if (state->content_out.initialized)
{
if (!g_output_stream_flush (state->content_out, cancellable, error))
return FALSE;
if (state->content_checksum.initialized)
{ {
char actual_checksum[OSTREE_SHA256_STRING_LEN+1]; char actual_checksum[OSTREE_SHA256_STRING_LEN+1];
ot_checksum_get_hexdigest (&state->content_checksum, actual_checksum, sizeof (actual_checksum)); if (!_ostree_repo_bare_content_commit (repo, &state->content_out, actual_checksum,
sizeof (actual_checksum),
if (strcmp (actual_checksum, state->checksum) != 0)
return glnx_throw (error, "Corrupted object %s (actual checksum is %s)",
state->checksum, actual_checksum);
}
if (!_ostree_repo_commit_trusted_content_bare (repo, state->checksum, &state->tmpf,
state->uid, state->gid, state->mode,
state->xattrs,
cancellable, error)) cancellable, error))
return FALSE; return FALSE;
g_clear_object (&state->content_out);
g_assert_cmpstr (state->checksum, ==, actual_checksum);
} }
if (!dispatch_unset_read_source (repo, state, cancellable, error)) if (!dispatch_unset_read_source (repo, state, cancellable, error))
return FALSE; return FALSE;
g_clear_pointer (&state->xattrs, g_variant_unref); 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->checksum_index++;
state->output_target = NULL; state->output_target = NULL;

View File

@ -56,10 +56,6 @@ ostree_repo_commit_traverse_iter_init_commit (OstreeRepoCommitTraverseIter *it
{ {
struct _OstreeRepoRealCommitTraverseIter *real = struct _OstreeRepoRealCommitTraverseIter *real =
(struct _OstreeRepoRealCommitTraverseIter*)iter; (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)); memset (real, 0, sizeof (*real));
real->initialized = TRUE; real->initialized = TRUE;
@ -68,21 +64,21 @@ ostree_repo_commit_traverse_iter_init_commit (OstreeRepoCommitTraverseIter *it
real->current_dir = NULL; real->current_dir = NULL;
real->idx = 0; real->idx = 0;
g_autoptr(GVariant) content_csum_bytes = NULL;
g_variant_get_child (commit, 6, "@ay", &content_csum_bytes); 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) if (!csum)
goto out; return FALSE;
ostree_checksum_inplace_from_bytes (csum, real->checksum_content); 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); g_variant_get_child (commit, 7, "@ay", &meta_csum_bytes);
csum = ostree_checksum_bytes_peek_validate (meta_csum_bytes, error); csum = ostree_checksum_bytes_peek_validate (meta_csum_bytes, error);
if (!csum) if (!csum)
goto out; return FALSE;
ostree_checksum_inplace_from_bytes (csum, real->checksum_meta); ostree_checksum_inplace_from_bytes (csum, real->checksum_meta);
ret = TRUE; return TRUE;
out:
return ret;
} }
/** /**
@ -312,8 +308,6 @@ traverse_iter (OstreeRepo *repo,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
gboolean ret = FALSE;
while (TRUE) while (TRUE)
{ {
g_autoptr(GVariant) key = NULL; 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_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
{ {
g_debug ("Ignoring not-found dirmeta"); 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) else if (iterres == OSTREE_REPO_COMMIT_ITER_RESULT_END)
break; break;
@ -371,16 +364,14 @@ traverse_iter (OstreeRepo *repo,
if (!traverse_dirtree (repo, content_checksum, inout_reachable, if (!traverse_dirtree (repo, content_checksum, inout_reachable,
ignore_missing_dirs, cancellable, error)) ignore_missing_dirs, cancellable, error))
goto out; return FALSE;
} }
} }
else else
g_assert_not_reached (); g_assert_not_reached ();
} }
ret = TRUE; return TRUE;
out:
return ret;
} }
static gboolean static gboolean
@ -391,12 +382,9 @@ traverse_dirtree (OstreeRepo *repo,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) 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(GError) local_error = NULL;
g_autoptr(GVariant) dirtree = NULL;
if (!ostree_repo_load_variant (repo, OSTREE_OBJECT_TYPE_DIR_TREE, checksum, if (!ostree_repo_load_variant (repo, OSTREE_OBJECT_TYPE_DIR_TREE, checksum,
&dirtree, &local_error)) &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_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
{ {
g_debug ("Ignoring not-found dirmeta %s", checksum); 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); 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, if (!ostree_repo_commit_traverse_iter_init_dirtree (&iter, repo, dirtree,
OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE, OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE,
error)) error))
goto out; return FALSE;
if (!traverse_iter (repo, &iter, inout_reachable, ignore_missing_dirs, cancellable, error)) if (!traverse_iter (repo, &iter, inout_reachable, ignore_missing_dirs, cancellable, error))
goto out; return FALSE;
ret = TRUE; return TRUE;
out:
return ret;
} }
/** /**
@ -446,28 +433,21 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
gboolean ret = FALSE;
g_autofree char *tmp_checksum = NULL; g_autofree char *tmp_checksum = NULL;
while (TRUE) while (TRUE)
{ {
gboolean recurse = FALSE; g_autoptr(GVariant) key =
g_autoptr(GVariant) key = NULL; g_variant_ref_sink (ostree_object_name_serialize (commit_checksum, OSTREE_OBJECT_TYPE_COMMIT));
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));
if (g_hash_table_contains (inout_reachable, key)) if (g_hash_table_contains (inout_reachable, key))
break; break;
g_autoptr(GVariant) commit = NULL;
if (!ostree_repo_load_variant_if_exists (repo, OSTREE_OBJECT_TYPE_COMMIT, if (!ostree_repo_load_variant_if_exists (repo, OSTREE_OBJECT_TYPE_COMMIT,
commit_checksum, &commit, commit_checksum, &commit,
error)) error))
goto out; return FALSE;
/* Just return if the parent isn't found; we do expect most /* Just return if the parent isn't found; we do expect most
* people to have partial repositories. * people to have partial repositories.
@ -476,10 +456,12 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo,
break; break;
/* See if the commit is partial, if so it's not an error to lack objects */ /* 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, if (!ostree_repo_load_commit (repo, commit_checksum, NULL, &commitstate,
error)) error))
goto out; return FALSE;
gboolean ignore_missing_dirs = FALSE;
if ((commitstate & OSTREE_REPO_COMMIT_STATE_PARTIAL) != 0) if ((commitstate & OSTREE_REPO_COMMIT_STATE_PARTIAL) != 0)
ignore_missing_dirs = TRUE; ignore_missing_dirs = TRUE;
@ -487,14 +469,17 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo,
key = NULL; key = NULL;
g_debug ("Traversing commit %s", commit_checksum); 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, if (!ostree_repo_commit_traverse_iter_init_commit (&iter, repo, commit,
OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE, OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE,
error)) error))
goto out; return FALSE;
if (!traverse_iter (repo, &iter, inout_reachable, ignore_missing_dirs, cancellable, error)) if (!traverse_iter (repo, &iter, inout_reachable, ignore_missing_dirs, cancellable, error))
goto out; return FALSE;
gboolean recurse = FALSE;
if (maxdepth == -1 || maxdepth > 0) if (maxdepth == -1 || maxdepth > 0)
{ {
g_free (tmp_checksum); g_free (tmp_checksum);
@ -511,9 +496,7 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo,
break; break;
} }
ret = TRUE; return TRUE;
out:
return ret;
} }
/** /**
@ -536,17 +519,12 @@ ostree_repo_traverse_commit (OstreeRepo *repo,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) 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, if (!ostree_repo_traverse_commit_union (repo, commit_checksum, maxdepth,
ret_reachable, cancellable, error)) ret_reachable, cancellable, error))
goto out; return FALSE;
ret = TRUE;
if (out_reachable) if (out_reachable)
*out_reachable = g_steal_pointer (&ret_reachable); *out_reachable = g_steal_pointer (&ret_reachable);
out: return TRUE;
return ret;
} }

View File

@ -1918,8 +1918,9 @@ ostree_repo_create (OstreeRepo *self,
g_variant_new_variant (g_variant_new_string (self->collection_id))); g_variant_new_variant (g_variant_new_string (self->collection_id)));
glnx_autofd int repo_dir_fd = -1; 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, if (!repo_create_at_internal (AT_FDCWD, repopath, mode,
g_variant_builder_end (builder), options,
&repo_dir_fd, &repo_dir_fd,
cancellable, error)) cancellable, error))
return FALSE; return FALSE;
@ -4903,7 +4904,16 @@ _ostree_repo_try_lock_tmpdir (int tmpdir_dfd,
} }
else 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; did_lock = TRUE;
else
glnx_release_lock_file (file_lock_out);
} }
*out_did_lock = did_lock; *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, if (!glnx_opendirat (dfd_iter.fd, dent->d_name, FALSE,
&target_dfd, &local_error)) &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; continue;
else else
{ {
@ -4978,6 +4989,8 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd,
(void)futimens (target_dfd, NULL); (void)futimens (target_dfd, NULL);
/* We found an existing tmpdir which we managed to lock */ /* 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.src_dfd = tmpdir_dfd;
ret_tmpdir.fd = glnx_steal_fd (&target_dfd); ret_tmpdir.fd = glnx_steal_fd (&target_dfd);
ret_tmpdir.path = g_strdup (dent->d_name); ret_tmpdir.path = g_strdup (dent->d_name);
@ -5000,8 +5013,18 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd,
error)) error))
return FALSE; return FALSE;
if (!did_lock) 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; continue;
}
g_debug ("Using new tmpdir %s", new_tmpdir.path);
ret_tmpdir = new_tmpdir; /* Transfer ownership */ ret_tmpdir = new_tmpdir; /* Transfer ownership */
new_tmpdir.initialized = FALSE; new_tmpdir.initialized = FALSE;
} }

View File

@ -539,7 +539,20 @@ gboolean ostree_repo_load_variant_if_exists (OstreeRepo *self,
GVariant **out_variant, GVariant **out_variant,
GError **error); 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 { typedef enum {
OSTREE_REPO_COMMIT_STATE_NORMAL = 0,
OSTREE_REPO_COMMIT_STATE_PARTIAL = (1 << 0), OSTREE_REPO_COMMIT_STATE_PARTIAL = (1 << 0),
} OstreeRepoCommitState; } 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_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_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_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 { typedef enum {
OSTREE_REPO_COMMIT_MODIFIER_FLAGS_NONE = 0, 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_CANONICAL_PERMISSIONS = (1 << 2),
OSTREE_REPO_COMMIT_MODIFIER_FLAGS_ERROR_ON_UNLABELED = (1 << 3), OSTREE_REPO_COMMIT_MODIFIER_FLAGS_ERROR_ON_UNLABELED = (1 << 3),
OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME = (1 << 4), OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME = (1 << 4),
OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL = (1 << 5),
} OstreeRepoCommitModifierFlags; } OstreeRepoCommitModifierFlags;
/** /**

View File

@ -82,7 +82,7 @@ encode_pair (GString *str, const char *name, const char *value)
/** /**
* soup_form_encode_hash: * 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) * name/value pairs (as strings)
* *
* Encodes @form_data_set into a value of type * 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: * soup_uri_set_query_from_form:
* @uri: a #SoupURI * @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 * information
* *
* Sets @uri's query to the result of encoding @form according to the * Sets @uri's query to the result of encoding @form according to the

View File

@ -43,7 +43,7 @@
* *
* Since: 2017.4 * Since: 2017.4
*/ */
#define OSTREE_RELEASE_VERSION (13) #define OSTREE_RELEASE_VERSION (14)
/** /**
* OSTREE_VERSION * OSTREE_VERSION
@ -52,7 +52,7 @@
* *
* Since: 2017.4 * Since: 2017.4
*/ */
#define OSTREE_VERSION (2017.13) #define OSTREE_VERSION (2017.14)
/** /**
* OSTREE_VERSION_S: * OSTREE_VERSION_S:
@ -62,7 +62,7 @@
* *
* Since: 2017.4 * Since: 2017.4
*/ */
#define OSTREE_VERSION_S "2017.13" #define OSTREE_VERSION_S "2017.14"
#define OSTREE_ENCODE_VERSION(year,release) \ #define OSTREE_ENCODE_VERSION(year,release) \
((year) << 16 | (release)) ((year) << 16 | (release))

View File

@ -43,29 +43,20 @@ static GOptionEntry options[] = {
gboolean gboolean
ot_admin_builtin_diff (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) ot_admin_builtin_diff (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error)
{ {
g_autoptr(GOptionContext) context = NULL; g_autoptr(GOptionContext) context = g_option_context_new ("");
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_option_context_add_main_entries (context, options, NULL); g_option_context_add_main_entries (context, options, NULL);
g_autoptr(OstreeSysroot) sysroot = NULL;
if (!ostree_admin_option_context_parse (context, options, &argc, &argv, if (!ostree_admin_option_context_parse (context, options, &argc, &argv,
OSTREE_ADMIN_BUILTIN_FLAG_SUPERUSER | OSTREE_ADMIN_BUILTIN_FLAG_UNLOCKED, OSTREE_ADMIN_BUILTIN_FLAG_SUPERUSER | OSTREE_ADMIN_BUILTIN_FLAG_UNLOCKED,
invocation, &sysroot, cancellable, error)) invocation, &sysroot, cancellable, error))
goto out; return FALSE;
if (!ot_admin_require_booted_deployment_or_osname (sysroot, opt_osname, if (!ot_admin_require_booted_deployment_or_osname (sysroot, opt_osname,
cancellable, error)) cancellable, error))
goto out; return FALSE;
g_autoptr(OstreeDeployment) deployment = NULL;
if (opt_osname != NULL) if (opt_osname != NULL)
{ {
deployment = ostree_sysroot_get_merge_deployment (sysroot, opt_osname); 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, g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
"No deployment for OS '%s'", opt_osname); "No deployment for OS '%s'", opt_osname);
goto out; return FALSE;
} }
} }
else else
deployment = g_object_ref (ostree_sysroot_get_booted_deployment (sysroot)); deployment = g_object_ref (ostree_sysroot_get_booted_deployment (sysroot));
deployment_dir = ostree_sysroot_get_deployment_directory (sysroot, deployment); 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");
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");
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);
modified = g_ptr_array_new_with_free_func ((GDestroyNotify) ostree_diff_item_unref); g_autoptr(GPtrArray) added = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_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);
if (!ostree_diff_dirs (OSTREE_DIFF_FLAGS_IGNORE_XATTRS, if (!ostree_diff_dirs (OSTREE_DIFF_FLAGS_IGNORE_XATTRS,
orig_etc_path, new_etc_path, modified, removed, added, orig_etc_path, new_etc_path, modified, removed, added,
cancellable, error)) cancellable, error))
goto out; return FALSE;
ostree_diff_print (orig_etc_path, new_etc_path, modified, removed, added); ostree_diff_print (orig_etc_path, new_etc_path, modified, removed, added);
ret = TRUE; return TRUE;
out:
return ret;
} }

View File

@ -51,6 +51,7 @@ static gboolean opt_no_xattrs;
static char *opt_selinux_policy; static char *opt_selinux_policy;
static gboolean opt_canonical_permissions; static gboolean opt_canonical_permissions;
static gboolean opt_consume; static gboolean opt_consume;
static gboolean opt_devino_canonical;
static char **opt_trees; static char **opt_trees;
static gint opt_owner_uid = -1; static gint opt_owner_uid = -1;
static gint opt_owner_gid = -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 }, { "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" }, { "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 }, { "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-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" }, { "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 }, { "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; flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS;
if (opt_consume) if (opt_consume)
flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_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) if (opt_canonical_permissions)
flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS; flags |= OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS;
if (opt_generate_sizes) if (opt_generate_sizes)

View File

@ -86,12 +86,8 @@ remote_option_context_new_with_commands (void)
gboolean gboolean
ostree_builtin_remote (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) ostree_builtin_remote (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error)
{ {
OstreeCommand *subcommand;
const char *subcommand_name = NULL; const char *subcommand_name = NULL;
g_autofree char *prgname = NULL;
gboolean ret = FALSE;
int in,out; int in,out;
for (in = 1, out = 1; in < argc; in++, out++) for (in = 1, out = 1; in < argc; in++, out++)
{ {
/* The non-option is the command, take it out of the arguments */ /* 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; argc = out;
subcommand = remote_subcommands; OstreeCommand *subcommand = remote_subcommands;
while (subcommand->name) while (subcommand->name)
{ {
if (g_strcmp0 (subcommand_name, subcommand->name) == 0) 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); help = g_option_context_get_help (context, FALSE, NULL);
g_printerr ("%s", help); 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); g_set_prgname (prgname);
OstreeCommandInvocation sub_invocation = { .command = subcommand }; OstreeCommandInvocation sub_invocation = { .command = subcommand };
if (!subcommand->fn (argc, argv, &sub_invocation, cancellable, error)) if (!subcommand->fn (argc, argv, &sub_invocation, cancellable, error))
goto out; return FALSE;
ret = TRUE; return TRUE;
out:
return ret;
} }

View File

@ -149,77 +149,63 @@ ot_static_delta_builtin_list (int argc, char **argv, OstreeCommandInvocation *in
static gboolean static gboolean
ot_static_delta_builtin_show (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) 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; 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)) if (!ostree_option_context_parse (context, list_options, &argc, &argv, invocation, &repo, cancellable, error))
goto out; return FALSE;
if (argc < 3) if (argc < 3)
{ {
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"DELTA must be specified"); "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)) if (!ostree_cmd__private__ ()->ostree_static_delta_dump (repo, delta_id, cancellable, error))
goto out; return FALSE;
ret = TRUE; return TRUE;
out:
return ret;
} }
static gboolean static gboolean
ot_static_delta_builtin_delete (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) ot_static_delta_builtin_delete (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error)
{ {
gboolean ret = FALSE; g_autoptr(GOptionContext) context = g_option_context_new ("");
g_autoptr(GOptionContext) context = NULL;
g_autoptr(OstreeRepo) repo = NULL; 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)) if (!ostree_option_context_parse (context, list_options, &argc, &argv, invocation, &repo, cancellable, error))
goto out; return FALSE;
if (argc < 3) if (argc < 3)
{ {
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"DELTA must be specified"); "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)) if (!ostree_cmd__private__ ()->ostree_static_delta_delete (repo, delta_id, cancellable, error))
goto out; return FALSE;
ret = TRUE; return TRUE;
out:
return ret;
} }
static gboolean static gboolean
ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error)
{ {
gboolean ret = FALSE; g_autoptr(GOptionContext) context = g_option_context_new ("[TO]");
g_autoptr(GOptionContext) context = NULL;
g_autoptr(OstreeRepo) repo = NULL; 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)) 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)) if (!ostree_ensure_repo_writable (repo, error))
goto out; return FALSE;
if (argc >= 3 && opt_to_rev == NULL) if (argc >= 3 && opt_to_rev == NULL)
opt_to_rev = argv[2]; 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, g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"TO revision must be specified"); "TO revision must be specified");
goto out; return FALSE;
} }
else 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, g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Cannot specify both --empty and --from=REV"); "Cannot specify both --empty and --from=REV");
goto out; return FALSE;
} }
from_source = NULL; from_source = NULL;
} }
@ -264,22 +250,21 @@ ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation
if (from_source) if (from_source)
{ {
if (!ostree_repo_resolve_rev (repo, from_source, FALSE, &from_resolved, error)) 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)) if (!ostree_repo_resolve_rev (repo, opt_to_rev, FALSE, &to_resolved, error))
goto out; return FALSE;
if (opt_if_not_exists) if (opt_if_not_exists)
{ {
gboolean does_exist; gboolean does_exist;
g_autofree char *delta_id = from_resolved ? g_strconcat (from_resolved, "-", to_resolved, NULL) : g_strdup (to_resolved); 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)) if (!ostree_cmd__private__ ()->ostree_static_delta_query_exists (repo, delta_id, &does_exist, cancellable, error))
goto out; return FALSE;
if (does_exist) if (does_exist)
{ {
g_print ("Delta %s already exists.\n", delta_id); g_print ("Delta %s already exists.\n", delta_id);
ret = TRUE; return TRUE;
goto out;
} }
} }
@ -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, g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Invalid endianness '%s'", opt_endianness); "Invalid endianness '%s'", opt_endianness);
goto out; return FALSE;
} }
} }
else else
@ -346,54 +331,47 @@ ot_static_delta_builtin_generate (int argc, char **argv, OstreeCommandInvocation
from_resolved, to_resolved, NULL, from_resolved, to_resolved, NULL,
params, params,
cancellable, error)) cancellable, error))
goto out; return FALSE;
} }
} }
ret = TRUE; return TRUE;
out:
return ret;
} }
static gboolean static gboolean
ot_static_delta_builtin_apply_offline (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) 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(GOptionContext) context = NULL;
g_autoptr(OstreeRepo) repo = NULL; g_autoptr(OstreeRepo) repo = NULL;
context = g_option_context_new (""); context = g_option_context_new ("");
if (!ostree_option_context_parse (context, apply_offline_options, &argc, &argv, invocation, &repo, cancellable, error)) 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)) if (!ostree_ensure_repo_writable (repo, error))
goto out; return FALSE;
if (argc < 3) if (argc < 3)
{ {
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"PATH must be specified"); "PATH must be specified");
goto out; return FALSE;
} }
patharg = argv[2]; const char *patharg = argv[2];
path = g_file_new_for_path (patharg); g_autoptr(GFile) path = g_file_new_for_path (patharg);
if (!ostree_repo_prepare_transaction (repo, NULL, cancellable, error)) 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)) 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)) if (!ostree_repo_commit_transaction (repo, NULL, cancellable, error))
goto out; return FALSE;
ret = TRUE; return TRUE;
out:
return ret;
} }
gboolean gboolean

View File

@ -210,7 +210,7 @@ ostree_builtin_summary (int argc, char **argv, OstreeCommandInvocation *invocati
return FALSE; return FALSE;
} }
} }
else if (opt_view) else if (opt_view || opt_raw)
{ {
g_autoptr(GBytes) summary_data = NULL; g_autoptr(GBytes) summary_data = NULL;

View File

@ -103,6 +103,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <sys/time.h> #include <sys/time.h>
#include <glib.h> #include <glib.h>
#include <stdint.h>
/* There's no need to extend the stack, so there's no need to involve /* There's no need to extend the stack, so there's no need to involve
alloca. */ alloca. */
@ -119,11 +120,11 @@ xmemdup (void const *p, size_t s)
static void static void
gettime (struct timespec *ts) gettime (struct timespec *ts)
{ {
#if HAVE_NANOTIME #ifdef HAVE_NANOTIME
nanotime (ts); nanotime (ts);
#else #else
# if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME # if defined(CLOCK_REALTIME) && defined(HAVE_CLOCK_GETTIME)
if (clock_gettime (CLOCK_REALTIME, ts) == 0) if (clock_gettime (CLOCK_REALTIME, ts) == 0)
return; return;
# endif # endif
@ -199,13 +200,6 @@ gettime (struct timespec *ts)
#define HOUR(x) ((x) * 60) #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 /* Convert a possibly-signed character to an unsigned character. This is
a bit safer than casting to unsigned char, since it catches some type a bit safer than casting to unsigned char, since it catches some type
errors that the cast doesn't. */ errors that the cast doesn't. */
@ -245,15 +239,11 @@ typedef struct
long int day; long int day;
long int hour; long int hour;
long int minutes; long int minutes;
long_time_t seconds; intmax_t seconds;
long int ns; int ns;
} relative_time; } relative_time;
#if HAVE_COMPOUND_LITERALS
#define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 }) #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. */ /* Information passed to and from the parser. */
typedef struct 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 # ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus # if defined __cplusplus && 201103L <= __cplusplus
@ -452,14 +442,14 @@ extern int yydebug;
union YYSTYPE 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; long int intval;
textint textintval; textint textintval;
struct timespec timespec; struct timespec timespec;
relative_time rel; 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; typedef union YYSTYPE YYSTYPE;
@ -475,7 +465,7 @@ int yyparse (parser_control *pc);
/* Copy the second part of user declarations. */ /* 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 #ifdef short
# undef short # undef short
@ -774,16 +764,16 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] = static const yytype_uint16 yyrline[] =
{ {
0, 347, 347, 348, 352, 359, 361, 365, 367, 369, 0, 337, 337, 338, 342, 349, 351, 355, 357, 359,
371, 373, 375, 377, 378, 379, 383, 387, 391, 396, 361, 363, 365, 367, 368, 369, 373, 377, 381, 386,
401, 406, 410, 415, 420, 427, 429, 433, 441, 446, 391, 396, 400, 405, 410, 417, 419, 423, 431, 436,
456, 458, 460, 463, 466, 468, 470, 475, 480, 485, 446, 448, 450, 453, 456, 458, 460, 465, 470, 475,
490, 498, 503, 523, 531, 539, 544, 550, 555, 561, 480, 488, 493, 513, 521, 529, 534, 540, 545, 551,
565, 575, 577, 579, 584, 586, 588, 590, 592, 594, 555, 565, 567, 569, 574, 576, 578, 580, 582, 584,
596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604,
616, 618, 620, 622, 624, 628, 630, 632, 634, 636, 606, 608, 610, 612, 614, 618, 620, 622, 624, 626,
638, 643, 647, 647, 650, 651, 656, 657, 662, 667, 628, 633, 637, 637, 640, 641, 646, 647, 652, 657,
678, 679 668, 669
}; };
#endif #endif
@ -1642,222 +1632,222 @@ yyreduce:
switch (yyn) switch (yyn)
{ {
case 4: 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->seconds = (yyvsp[0].timespec);
pc->timespec_seen = true; 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; break;
case 7: 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++; } { 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; break;
case 8: 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++; } { pc->times_seen++; }
#line 1663 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 1653 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 9: 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++; } { 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; break;
case 10: 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++; } { pc->zones_seen++; }
#line 1675 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 1665 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 11: 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++; } { pc->dates_seen++; }
#line 1681 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 1671 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 12: 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++; } { pc->days_seen++; }
#line 1687 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 1677 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 18: 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); set_hhmmss (pc, (yyvsp[-1].textintval).value, 0, 0, 0);
pc->meridian = (yyvsp[0].intval); 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; break;
case 19: 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); set_hhmmss (pc, (yyvsp[-3].textintval).value, (yyvsp[-1].textintval).value, 0, 0);
pc->meridian = (yyvsp[0].intval); 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; break;
case 20: 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); 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); 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; break;
case 22: 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); set_hhmmss (pc, (yyvsp[-1].textintval).value, 0, 0, 0);
pc->meridian = MER24; pc->meridian = MER24;
} }
#line 1723 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 1713 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 23: 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); set_hhmmss (pc, (yyvsp[-3].textintval).value, (yyvsp[-1].textintval).value, 0, 0);
pc->meridian = MER24; pc->meridian = MER24;
} }
#line 1732 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 1722 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 24: 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); set_hhmmss (pc, (yyvsp[-5].textintval).value, (yyvsp[-3].textintval).value, (yyvsp[-1].timespec).tv_sec, (yyvsp[-1].timespec).tv_nsec);
pc->meridian = MER24; pc->meridian = MER24;
} }
#line 1741 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 1731 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 27: 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->zones_seen++;
pc->time_zone = time_zone_hhmm (pc, (yyvsp[-1].textintval), (yyvsp[0].intval)); 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; break;
case 28: 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->local_isdst = (yyvsp[0].intval);
pc->dsts_seen += (0 < (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; break;
case 29: 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->local_isdst = 1;
pc->dsts_seen += (0 < (yyvsp[-1].intval)) + 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; break;
case 30: 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); } { 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; break;
case 31: 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); } { 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; break;
case 32: 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); { pc->time_zone = (yyvsp[-1].intval);
apply_relative_time (pc, (yyvsp[0].rel), 1); } 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; break;
case 33: 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); { pc->time_zone = HOUR(7);
apply_relative_time (pc, (yyvsp[0].rel), 1); } 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; break;
case 34: 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)); } { 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; break;
case 35: 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; } { 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; break;
case 36: 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; } { 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; break;
case 37: 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_ordinal = 0;
pc->day_number = (yyvsp[0].intval); 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; break;
case 38: 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_ordinal = 0;
pc->day_number = (yyvsp[-1].intval); 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; break;
case 39: 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_ordinal = (yyvsp[-1].intval);
pc->day_number = (yyvsp[0].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; break;
case 40: 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_ordinal = (yyvsp[-1].textintval).value;
pc->day_number = (yyvsp[0].intval); 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; break;
case 41: 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->month = (yyvsp[-2].textintval).value;
pc->day = (yyvsp[0].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; break;
case 42: 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, /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
otherwise as MM/DD/YY. otherwise as MM/DD/YY.
@ -1877,11 +1867,11 @@ yyreduce:
pc->year = (yyvsp[0].textintval); 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; break;
case 43: 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. */ /* e.g. 17-JUN-1992. */
pc->day = (yyvsp[-2].textintval).value; pc->day = (yyvsp[-2].textintval).value;
@ -1889,11 +1879,11 @@ yyreduce:
pc->year.value = -(yyvsp[0].textintval).value; pc->year.value = -(yyvsp[0].textintval).value;
pc->year.digits = (yyvsp[0].textintval).digits; 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; break;
case 44: 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. */ /* e.g. JUN-17-1992. */
pc->month = (yyvsp[-2].intval); pc->month = (yyvsp[-2].intval);
@ -1901,281 +1891,281 @@ yyreduce:
pc->year.value = -(yyvsp[0].textintval).value; pc->year.value = -(yyvsp[0].textintval).value;
pc->year.digits = (yyvsp[0].textintval).digits; 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; break;
case 45: 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->month = (yyvsp[-1].intval);
pc->day = (yyvsp[0].textintval).value; 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; break;
case 46: 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->month = (yyvsp[-3].intval);
pc->day = (yyvsp[-2].textintval).value; pc->day = (yyvsp[-2].textintval).value;
pc->year = (yyvsp[0].textintval); 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; break;
case 47: 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->day = (yyvsp[-1].textintval).value;
pc->month = (yyvsp[0].intval); 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; break;
case 48: 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->day = (yyvsp[-2].textintval).value;
pc->month = (yyvsp[-1].intval); pc->month = (yyvsp[-1].intval);
pc->year = (yyvsp[0].textintval); 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; break;
case 50: 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. */ /* ISO 8601 format. YYYY-MM-DD. */
pc->year = (yyvsp[-2].textintval); pc->year = (yyvsp[-2].textintval);
pc->month = -(yyvsp[-1].textintval).value; pc->month = -(yyvsp[-1].textintval).value;
pc->day = -(yyvsp[0].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; break;
case 51: 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)); } { 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; break;
case 52: 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); } { 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; break;
case 53: 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); } { 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; break;
case 54: 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); } { (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; break;
case 55: 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; } { (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; break;
case 56: 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; } { (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; break;
case 57: 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); } { (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; break;
case 58: 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; } { (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; break;
case 59: 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; } { (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; break;
case 60: 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); } { (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; break;
case 61: 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); } { (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; break;
case 62: 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); } { (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; break;
case 63: 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); } { (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; break;
case 64: 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; } { (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; break;
case 65: 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; } { (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; break;
case 66: 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); } { (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; break;
case 67: 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; } { (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; break;
case 68: 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; } { (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; break;
case 69: 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); } { (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; break;
case 70: 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; } { (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; break;
case 71: 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; } { (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; break;
case 72: 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; } { (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; break;
case 73: 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; } { (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; break;
case 75: 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; } { (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; break;
case 76: 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; } { (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; break;
case 77: 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); } { (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; break;
case 78: 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; } { (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; break;
case 79: 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; } { (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; break;
case 80: 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; } { (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; break;
case 81: 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); } { (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; break;
case 85: 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; } { (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; break;
case 87: 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; } { (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; break;
case 88: 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)); } { 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; break;
case 89: 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., /* Hybrid all-digit and relative offset, so that we accept e.g.,
"YYYYMMDD +N days" as well as "YYYYMMDD N days". */ "YYYYMMDD +N days" as well as "YYYYMMDD N days". */
digits_to_date_time (pc, (yyvsp[-1].textintval)); digits_to_date_time (pc, (yyvsp[-1].textintval));
apply_relative_time (pc, (yyvsp[0].rel), 1); 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; break;
case 90: 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; } { (yyval.intval) = -1; }
#line 2169 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 2159 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
break; break;
case 91: 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; } { (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; break;
#line 2179 "src/ostree/parse-datetime.c" /* yacc.c:1646 */ #line 2169 "src/ostree/parse-datetime.c" /* yacc.c:1646 */
default: break; default: break;
} }
/* User semantic actions sometimes alter yychar, and that requires /* User semantic actions sometimes alter yychar, and that requires
@ -2403,7 +2393,7 @@ yyreturn:
#endif #endif
return yyresult; 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[] = static table const meridian_table[] =
@ -2679,7 +2669,8 @@ lookup_zone (parser_control const *pc, char const *name)
return NULL; return NULL;
} }
#if ! HAVE_TM_GMTOFF // #if ! HAVE_TM_GMTOFF
#if 1 // Always true for us
/* Yield the difference between *A and *B, /* Yield the difference between *A and *B,
measured in seconds, ignoring leap seconds. measured in seconds, ignoring leap seconds.
The body of this function is taken directly from the GNU C Library; 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; time_t t1 = t0 + d1;
long int d2 = 60 * pc.rel.minutes; long int d2 = 60 * pc.rel.minutes;
time_t t2 = t1 + d2; time_t t2 = t1 + d2;
long_time_t d3 = pc.rel.seconds; intmax_t d3 = pc.rel.seconds;
long_time_t t3 = t2 + d3; intmax_t t3 = t2 + d3;
long int d4 = (sum_ns - normalized_ns) / BILLION; long int d4 = (sum_ns - normalized_ns) / BILLION;
long_time_t t4 = t3 + d4; intmax_t t4 = t3 + d4;
time_t t5 = t4; time_t t5 = t4;
if ((d1 / (60 * 60) ^ pc.rel.hour) if ((d1 / (60 * 60) ^ pc.rel.hour)
@ -3335,39 +3326,3 @@ parse_datetime (struct timespec *result, char const *p,
free (tz0); free (tz0);
return ok; 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 <stdlib.h>
#include <sys/time.h> #include <sys/time.h>
#include <glib.h> #include <glib.h>
#include <stdint.h>
/* There's no need to extend the stack, so there's no need to involve /* There's no need to extend the stack, so there's no need to involve
alloca. */ alloca. */
@ -54,11 +55,11 @@ xmemdup (void const *p, size_t s)
static void static void
gettime (struct timespec *ts) gettime (struct timespec *ts)
{ {
#if HAVE_NANOTIME #ifdef HAVE_NANOTIME
nanotime (ts); nanotime (ts);
#else #else
# if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME # if defined(CLOCK_REALTIME) && defined(HAVE_CLOCK_GETTIME)
if (clock_gettime (CLOCK_REALTIME, ts) == 0) if (clock_gettime (CLOCK_REALTIME, ts) == 0)
return; return;
# endif # endif
@ -134,13 +135,6 @@ gettime (struct timespec *ts)
#define HOUR(x) ((x) * 60) #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 /* Convert a possibly-signed character to an unsigned character. This is
a bit safer than casting to unsigned char, since it catches some type a bit safer than casting to unsigned char, since it catches some type
errors that the cast doesn't. */ errors that the cast doesn't. */
@ -180,15 +174,11 @@ typedef struct
long int day; long int day;
long int hour; long int hour;
long int minutes; long int minutes;
long_time_t seconds; intmax_t seconds;
long int ns; int ns;
} relative_time; } relative_time;
#if HAVE_COMPOUND_LITERALS
#define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 }) #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. */ /* Information passed to and from the parser. */
typedef struct typedef struct
@ -955,7 +945,8 @@ lookup_zone (parser_control const *pc, char const *name)
return NULL; return NULL;
} }
#if ! HAVE_TM_GMTOFF // #if ! HAVE_TM_GMTOFF
#if 1 // Always true for us
/* Yield the difference between *A and *B, /* Yield the difference between *A and *B,
measured in seconds, ignoring leap seconds. measured in seconds, ignoring leap seconds.
The body of this function is taken directly from the GNU C Library; 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; time_t t1 = t0 + d1;
long int d2 = 60 * pc.rel.minutes; long int d2 = 60 * pc.rel.minutes;
time_t t2 = t1 + d2; time_t t2 = t1 + d2;
long_time_t d3 = pc.rel.seconds; intmax_t d3 = pc.rel.seconds;
long_time_t t3 = t2 + d3; intmax_t t3 = t2 + d3;
long int d4 = (sum_ns - normalized_ns) / BILLION; long int d4 = (sum_ns - normalized_ns) / BILLION;
long_time_t t4 = t3 + d4; intmax_t t4 = t3 + d4;
time_t t5 = t4; time_t t5 = t4;
if ((d1 / (60 * 60) ^ pc.rel.hour) if ((d1 / (60 * 60) ^ pc.rel.hour)
@ -1611,39 +1602,3 @@ parse_datetime (struct timespec *result, char const *p,
free (tz0); free (tz0);
return ok; 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 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); path = ENSURE_RELPATH (path);
ts[0].tv_sec = buf->actime; if (utimensat (basefd, path, tv, AT_SYMLINK_NOFOLLOW) == -1)
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)
return -errno; return -errno;
return 0; return 0;
@ -506,7 +499,7 @@ struct fuse_operations callback_oper = {
.chmod = callback_chmod, .chmod = callback_chmod,
.chown = callback_chown, .chown = callback_chown,
.truncate = callback_truncate, .truncate = callback_truncate,
.utime = callback_utime, .utimens = callback_utimens,
.create = callback_create, .create = callback_create,
.open = callback_open, .open = callback_open,
.read_buf = callback_read_buf, .read_buf = callback_read_buf,

View File

@ -61,7 +61,12 @@ read_config()
populate_menu() 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}" boot_prefix="${OSTREE_BOOT_PARTITION}"
fi
for config in $(ls ${entries_path}); do for config in $(ls ${entries_path}); do
read_config ${config} read_config ${config}
menu="${menu}menuentry '${title}' {\n" menu="${menu}menuentry '${title}' {\n"

View File

@ -381,6 +381,12 @@ fi
${CMD_PREFIX} ostree --repo=repo fsck ${CMD_PREFIX} ostree --repo=repo fsck
done 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} cd ${test_tmpdir}
repo_init --no-gpg-verify repo_init --no-gpg-verify
${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev} ${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" setup_test_repository "bare-user"
extra_basic_tests=5 extra_basic_tests=6
. $(dirname $0)/basic-test.sh . $(dirname $0)/basic-test.sh
# Reset things so we don't inherit a lot of state from earlier tests # 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 $OSTREE ls rootfs /usr/lib/dbus-daemon-helper >ls.txt
assert_file_has_content ls.txt '^-007.. 0 81 .*/usr/lib/dbus-daemon-helper' assert_file_has_content ls.txt '^-007.. 0 81 .*/usr/lib/dbus-daemon-helper'
echo "ok bare-user link-checkout-speedup maintains uids" 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 # 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_mirror1-address)/ostree/gnomerepo
$(cat ${test_tmpdir}/content_mirror2-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_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, &ref0));
g_assert_true (g_hash_table_contains (result->ref_to_checksum, &ref1)); 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) 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_cmpuint (g_hash_table_size (result->ref_to_checksum), ==, 1);
g_assert_true (g_hash_table_contains (result->ref_to_checksum, &ref3)); g_assert_true (g_hash_table_contains (result->ref_to_checksum, &ref3));
g_assert_cmpstr (ostree_remote_get_url (result->remote), ==, collection1_uri);
} }
else else
{ {

View File

@ -55,7 +55,7 @@ assert_file_has_content_literal summary.txt "Timestamp (ostree.commit.timestamp)
echo "ok view summary" echo "ok view summary"
# Check the summary can be viewed raw too. # 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 "('main', ("
assert_file_has_content_literal raw-summary.txt "('other', (" assert_file_has_content_literal raw-summary.txt "('other', ("
assert_file_has_content_literal raw-summary.txt "{'ostree.summary.last-modified': <uint64" 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! # ONLY update this checksum in release commits!
cat > released-sha256.txt <<EOF cat > released-sha256.txt <<EOF
f8c387ff263f46ac5b8f56c05d37385fb0001a0494998925fd5e992399360386 ${released_syms} 1e2c6b529bc2d940ff8969eaf0377d78d472d41ec2a2fc96e1c79efd7b95d241 ${released_syms}
EOF EOF
sha256sum -c released-sha256.txt sha256sum -c released-sha256.txt